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

Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.