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).
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