Przejdź do głównej zawartości

Matura próbna 2014 (organizator UMK)

Matura próbna UMK 2014
Dwa arkusze poziomu podstawowego oraz dane do drugiego arkusza spakowane w jedno archiwum ZIP: plik 

Klucze odpowiedzi


Poziom rozszerzony
Arkusz 2
Zadanie 4

Do stworzenia wyniku użyłem stringstream. Dzięki niemu nie miałem problemu z konwersją z int na string. Więcej informacji na ten temat we wpisie stringstream - konwersje.
W celu przechowania informacji o współrzędnych punktów wykorzystałem vector i pair.
Sam odczyt danych z pliku jest realizowany przez przekierowanie pliku na standardowe wejście. Przykład dla Windowsa:
program.exe < plik.txt
Dzięki temu można potraktować plik tekstowy jak użytkownika. Pętla WHILE w 15. linii posiadająca w warunku cin >> x umożliwia czytanie wszystkich danych z wejścia (nie trzeba wcześniej znać ilości danych).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;

vector <pair <long long,long long> > punkty;

int main() {
 int x, y, n;
 long long a, b, c;
 int licznik = 0;
 stringstream ss;
 
 cin >> n;
 while(cin >> x){
  cin >> y;
  punkty.push_back(make_pair(x,y)); 
 }
 
 for(int i = 0; i < n-2; i++)
  for(int j = i + 1; j < n-1; j++)
   for(int k = j + 1; k < n; k++){
    a = (punkty[i].first - punkty[j].first) * (punkty[i].first - punkty[j].first) + (punkty[i].second - punkty[j].second) * (punkty[i].second - punkty[j].second);
    b = (punkty[i].first - punkty[k].first) * (punkty[i].first - punkty[k].first) + (punkty[i].second - punkty[k].second) * (punkty[i].second - punkty[k].second);
    c = (punkty[j].first - punkty[k].first) * (punkty[j].first - punkty[k].first) + (punkty[j].second - punkty[k].second) * (punkty[j].second - punkty[k].second);
    if(a&&b&&c){
     if((a == b + c)||(b == a + c)||(c == a + b)){
      licznik++;
      ss << i <<", " << j <<", "<< k << endl;  
     }
    }
   }
 cout << licznik << endl;
 cout << ss.str();
 return 0;
}

Komentarze