Matura 2016 (maj). Zadanie 4. Liczba PI

Matura 2016 (maj). Zadanie 4. Liczba PI

W kartezjańskim układzie współrzędnych na płaszczyźnie narysowano kwadrat o boku długości 400 i środku symetrii w punkcie (200;200). Boki kwadratu są równoległe do osi układu współrzędnych. W kwadrat wpisano koło. Następnie wylosowano 10 000 punktów należących do kwadratu. Współrzędne (x,y) punktów zostały zapisane w pliku punkty.txt, każdy punkt w osobnym wierszu. Wiersz ma postać dwóch liczb całkowitych z zakresu <0;400>, rozdzielonych pojedynczym znakiem odstępu.

Korzystając z powyższych danych oraz dostępnych narzędzi informatycznych, wykonaj zadania. Wyniki zapisz w pliku tekstowym wyniki_4.txt. Odpowiedź do każdego zadania poprzedź numerem tego zadania.

Zadanie 4.1. (0–3)
Wypisz współrzędne tych punktów, które należą do brzegu koła (okręgu), oraz podaj liczbę punktów należących do wnętrza koła (brzeg koła nie należy do wnętrza koła).

Wskazówka:
Równanie okręgu o środku w punkcie S = (a , b) i promieniu r > 0 ma postać:
( x – a ) 2 + ( y – b) 2= r 2

Informacja:
W pliku wśród 100 pierwszych punktów 80 należy do wnętrza koła.

Rozwiązanie:
Układ współrzędnych z wrysowanym kwadratem i kołem.

Plik .cpp rozwiązania zadania:

#include <iostream>
#include <fstream>

#define N 10000

using namespace std;

int main()
{
 ifstream plik;
 ofstream wyniki;
 plik.open("punkty.txt");
 wyniki.open("wyniki_4_1.txt");
 // pobieranie danych do tablicy x i y
 int x[N];
 int y[N];
 for (int i=0; i<N; i++)
 plik >> x[i] >> y[i];

//srodek okregu S = ( a , b )
 int a = 200, b = 200;

//promien okregu
 int r = 200;

int ile = 0;

wyniki << "Wspolrzedne pkt nalezace do brzegu kola (okregu) : " << endl;
 long wynik;
 for (int i=0; i<N; i++) {
 wynik = ((x[i]-a)*(x[i]-a))+((y[i]-b)*(y[i]-b));
 //sprawdzam czy wspolrzedne naleza do brzegu kola
 if (wynik == r*r){
 wyniki << x[i] << " " << y[i] << endl;
 }
 //sprawdzam czy wspolrzedne naleza do wewnatrz kola
 if (wynik < r*r)
 ile++;
 }
 wyniki << "Ilosc pkt nalezacych do okregu: " << endl << ile << endl;

// zamkniecie plikow
 plik.close();
 wyniki.close();

return 0;
}

Zadanie 4.2. (0–3)
Przy założeniu równomiernego rozkładu punktów w kwadracie, stosunek liczby punktów nk należących do koła do liczby punktów n należących do kwadratu jest w przybliżeniu równy stosunkowi pola koła Pk do pola kwadratu P:

Dla przypomnienia:

P = π * r 2

Wyznacz przybliżoną wartość liczby pi, biorąc pod uwagę punkty z pliku punkty.txt:

– pierwszych 1000 punktów,
– pierwszych 5000 punktów,
– wszystkie punkty.

Wyniki zaokrąglij do 4 miejsc po przecinku.

Informacja:
Przybliżona wartość liczby pi dla pierwszych 100 punktów z pliku wynosi 3,2000.

Rozwiązanie:

Ze stosunku podanego powyżej wynik, iż nk/n * 4 = pi.

#include <iostream>
#include <fstream>
#include <iomanip>

#define N 10000

using namespace std;

int main()
{
 ifstream plik;
 ofstream wyniki;
 plik.open("punkty.txt");
 wyniki.open("wyniki_4.txt");
 // pobieranie danych do tablicy x i y
 int x[N];
 int y[N];
 for (int i=0; i<N; i++)
 plik >> x[i] >> y[i];

//srodek okregu S = ( a , b )
 int a = 200, b = 200;

//promien okregu
 int r = 200;

int ile1000 = 0;
 int ile5000 = 0;
 int ile = 0;

long wynik;
 for (int i=0; i<1000; i++) {
 wynik = ((x[i]-a)*(x[i]-a))+((y[i]-b)*(y[i]-b));
 if (wynik <= r*r) ile1000++;
 }
 for (int i=0; i<5000; i++) {
 wynik = ((x[i]-a)*(x[i]-a))+((y[i]-b)*(y[i]-b));
 if (wynik <= r*r) ile5000++;
 }
 for (int i=0; i<N; i++) {
 wynik = ((x[i]-a)*(x[i]-a))+((y[i]-b)*(y[i]-b));
 if (wynik <= r*r) ile++;
 }
 wyniki << "Ze wzoru wynika, iz stosunke Nk do N nalezy przemnozyc o 4." << endl;
 wyniki << "Przyblizona wartosc liczby pi (pierwszych 1000 pkt): ";
 wyniki << fixed; 
 //ustawia wyswietlana liczbe zmiennoprzecinkowa na notacje stala, potrzebna do tego biblioteka iomanip
 wyniki << setprecision(4); 
 //ustawia dokladnosc wyswietlanej liczby na liczbe w nawiasie np. 4 to 0,0001
 wyniki << (double(ile1000) / 1000) * 4 << endl;
 wyniki << "Przyblizona wartosc liczby pi (pierwszych 5000 pkt): ";
 wyniki << fixed; 
 wyniki << setprecision(4);
 wyniki << (double(ile5000) / 5000) * 4 << endl;
 wyniki << "Przyblizona wartosc liczby pi (wszystkich pkt): ";
 wyniki << fixed; 
 wyniki << setprecision(4); 
 wyniki << (double(ile) / N) * 4 << endl;

// zamkniecie plikow
 plik.close();
 wyniki.close();

return 0;
}

Zadanie 4.3. (0−5)
Błąd bezwzględny przybliżonej wartości liczby pi, wyznaczonej z n punktów, definiujemy następująco:

gdzie:

π – wartość liczby pi, będąca wynikiem standardowej funkcji z narzędzia informatycznego, z którego korzystasz;

pin – przybliżona wartość liczby pi wyznaczona z n kolejnych punktów, poczynając od pierwszego punktu z pliku punkty.txt, np. pi1000 – liczba wyznaczona z pierwszego tysiąca punktów.

Oblicz   εn dla n = 1, 2, 3, …, 1700. Na podstawie powyższego zestawienia utwórz wykres liniowy ilustrujący zmiany dokładności wyznaczanej liczby pi. Zadbaj o czytelność wykresu. Wartości dla ε1000 oraz ε1700 (zaokrąglone do czterech miejsc po przecinku) zapisz do pliku wyniki_4.txt.

Rozwiązanie:

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <math.h>

#define N 1700

using namespace std;

int main()
{
 ifstream plik;
 ofstream wyniki;
 plik.open("punkty.txt");
 wyniki.open("wyniki_4.txt");
 // pobieranie danych do tablicy x i y
 int x[N];
 int y[N];
 long n[N];
 double w[N];
 //srodek okregu S = ( a , b )
 int a = 200, b = 200;
 //promien okregu
 int r = 200;
 //ilosc punktow nalezacych do kola
 int ile = 0;
 //tmp wynik
 long wynik;

for (int i=0; i<N; i++) {
 plik >> x[i] >> y[i];
 ile = 0;
 for (int j=0; j<=i; j++) {
 wynik = ((x[j]-a)*(x[j]-a))+((y[j]-b)*(y[j]-b));
 if (wynik <=r*r) ile++;
 }
 n[i] = ile;
 w[i] = fabs( M_PI - (double(ile) / i) * 4 ); // wartosc bezwzgledna liczby zmiennoprzecinkowej

}
 for (int a=1; a<N; a++) {
 wyniki << fixed;
 wyniki << setprecision(4);
 wyniki << w[a] << endl;
 }
 // zamkniecie plikow
 plik.close();
 wyniki.close();

return 0;
}

Część druga zadania (wykres):

  1. Pobieramy z pliku textowego dane do excela.
  2. Dane, które pobraliśmy są w formie tekstowej. Rozdzielone są kropką zamiast przecinkiem.
  3. Należy zamienić (CTR+H) kropkę (.) na przecinek (,).
  4. Zaznaczamy wszystkie dane pobrane z pliku txt i tworzymy wykres liniowy. Poprawiamy wygląd wykresu i gotowe!

 

Matura 2016 (maj). Zadanie 3. Test

Matura 2016 (maj). Zadanie 3. Test

Oceń, czy poniższe zdania są prawdziwe. Zaznacz P, jeśli zdanie jest prawdziwe, albo F – jeśli zdanie jest fałszywe. W każdym zadaniu cząstkowym punkt uzyskasz tylko za komplet poprawnych odpowiedzi.

Zadanie 3.1. (0–1)
Po wpisaniu w pasku adresu przeglądarki http://81.219.47.83 otwiera się strona Centralnej Komisji Egzaminacyjnej, ale po wpisaniu http://cke.edu.pl pojawia się błąd „Nie można odnaleźć podanej strony”. Możliwe przyczyny tego stanu rzeczy to:

1. awaria serwera SMTP Centralnej Komisji Egzaminacyjnej F
2. awaria serwera poczty użytkownika F
3. awaria serwera DNS P
4. brak prawidłowego klucza szyfrującego w przeglądarce F

Wyjaśnienie:

Wpisując adres domenowy w pasku adresu przeglądarki wyświetli się błąd, oznacza, że jest problem z serwerem DNS. Domain Name System (DNS, pol. „system nazw domenowych”) – system serwerów, protokół komunikacyjny oraz usługa obsługująca rozproszoną bazę danych adresów sieciowych. Pozwala na zamianę adresów znanych użytkownikom Internetu na adresy zrozumiałe dla urządzeń tworzących sieć komputerową. Dzięki DNS nazwa mnemoniczna, np. pl.wikipedia.org jest tłumaczona na odpowiadający jej adres IP, czyli 91.198.174.192.

Serwer SMTP – (ang. Simple Mail Transfer Protocol) – protokół komunikacyjny opisujący sposób przekazywania poczty elektronicznej w Internecie.

Zadanie 3.2. (0–1)

Dana jest funkcja f określona wzorem rekurencyjnym:

matura 2016 maj zadanie 3

Wtedy:

1. f(8) = 1/3 F
2. f(9) = 3/4 P
3. f(10) = 4 P
4. f(100) = -1/3 F

 

Działanie funkcji rekurencyjnej podanej powyżej to wyniki:
f(1) = 4
f(2) = -1/3
f(3) = 3/4
f(4) = 4 itd.
Wynik się powtarzają: co daje dla elementu 1,4,7,10,13,16 daje wynik 4, dla elementu 2,5,8,11,14,17 daje wynik -1/3, zaś dla elementów 3,6,9,12,15,18 daje wynik 3/4.

Zadanie 3.3. (0–1)

Dla dwóch liczb 1111(2) i 101(2), ich

1. suma jest równa 10110(2)   P   F
2. różnica jest równa 1010(2)  P F
3. iloczyn jest mniejszy od 110000(2) P F
4. iloraz jest większy od 10(2) P F

 

Suma liczb binarnych:

Liczby w systemie dwójkowym dodajemy podobnie, jak w systemie dziesiętnym. Gdy po dodaniu dwóch cyfr uzyskujemy wartość niemożliwą do zapisania pojedynczą cyfrą, zachodzi tzw. przeniesienie. Odejmujemy wtedy od wyniku podstawę systemu, a do następnej (starszej) pozycji dodajemy 1. W przypadku liczb dwójkowych przeniesienie wystąpi już wtedy, gdy wynik dodawania dwóch cyfr jest większy od 1. Poniższa tabliczka dodawania obrazuje wyżej omówione zasady:

 0
 +  0
 0
 0
 +  1
 1
 1
 +  0
 1
 1
  +  1
  1  0

 

Rozwiązanie:

 1   1   1 
 1  1  1  1
 +  1  0  1
 1  0  1  0  0

Różnica liczb binarnych:

Przy odejmowaniu korzystamu z tabliczki przedstawionej poniżej. Przy wykonywaniu działania 0-1 otrzymujemy wynik 1, ale należy pamiętać o odjęciu (1) z kolejnej kolumny.

 0
 –  0
 0
 1
 –  0
 1
 1
 –  1
 0
 (1)  0
  –  1
 0

 

Rozwiązanie:

 1  1  1  1
 –  1  0  1
 1  0  1  0

Iloczyn liczb binarnych:

Naukę mnożenia w systemie binarnym rozpoczynamy od zapoznania się z „tabliczką mnożenia” (poniżej). Każdą cyfrę mnożnej mnożymy przez poszczególne cyfry mnożnika zapisując wyniki mnożeń w odpowiednich kolumnach. Działania są nawet prostsze niż w systemie dziesiętnym, ponieważ wynik mnożenia jest zawsze jednocyfrowy. Na końcu dodajemy do siebie wszystkie cyfry w kolumnach.

 0
 *  0
 0
 1
 *  0
 0
 0
 *  1
 0
 1
  *  1
 1

Rozwiązanie:

     1   1   1   1 
   *     1  0  1
 1  1  1  1
 0  0  0  0
 +  1  1  1  1
 1  0  0  1  0  1  1

Iloraz liczb binarnych:

Dzielenie w naturalnym systemie dwójkowym jest podobne do dzielenia w systemie dziesiętnym. Dzielimy dzielną przez dzielnik i wynik zapisujemy nad kreską. Następnie mnożymy otrzymany wynik przez dzielnik i dokonujemy odejmowania pod kreską.

Rozwiązanie:

   1  1          
 1   1   1  1  :   1  0   1 
 –  1 0 1
1  0  1 0
 – 1 0 1
0 0 0      

Zadanie 3.4. (0–1)

 1. Jednym z zadań systemu operacyjnego jest przydział pamięci działającym programom. P
2. Na jednym dysku twardym mogą być zainstalowane dwa systemy operacyjne. P
3. System operacyjny musi być przechowywany w pamięci ROM. F
4. System operacyjny musi być przechowywany na twardym dysku. F

 

Ad. 1. Zadania systemu operacyjnego:

1. Zapewnienie komunikacji między komputerem a użytkownikiem.
2. Obsługiwanie zasobów sprzętowych.
3. Regulowanie dostępu poszczególnych programów do zasobów sprzętowych.
4. Przydzielanie informacjom (plikom) pamięci.
5. Sterowanie przesyłaniem danych

Ad. 2. Dysk twardy
Dysk twardy może posiadać wiele partycji, na których mogą być zainstalowane różne systemy operacyjne.

Ad. 3. Pamięć ROM:

Pamięć stała ROM (ang. Read Only Memory – pamięć tylko do odczytu) jest stosowana w systemach procesorowych do przechowywania danych, które się nie zmieniają – np. różnego rodzaju tabele funkcji, parametry urządzeń, a także procedury startowe komputera i obsługa różnych urządzeń wejścia/wyjścia. Cechą charakterystyczną pamięci ROM jest przechowywanie zapisanych danych nawet po wyłączeniu zasilania. Dzięki temu są one od razu gotowe do użycia tuż po ponownym uruchomieniu systemu komputerowego. Drugą charakterystyczną cechą jest stałość zapisanych danych, których zwykle nie można zmieniać w trakcie normalnej pracy pamięci – gwarantuje to, iż przechowywana informacja przetrwa nienaruszona podczas różnego rodzaju błędów zapisu pamięci. Stąd bierze swój początek angielska nazwa ROM – Read Only Memory, czyli pamięć tylko do odczytu.

Ad. 4. System operacyjny:

System operacyjny (ang. operating system, skrót OS) – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika. System taki może być uruchomiony z różnych nośników, np. na CD-ROM, Pendrive, itp.

Matura 2016 (maj). Zadanie 2. Przestawienia w tablicy

Matura 2016 (maj). Zadanie 2. Przestawienia w tablicy

Parametrem podanej poniżej funkcji przestaw jest tablica A o długości n, indeksowana od 1, w której znajdują się liczby całkowite. Niech klucz będzie wartością pierwszego elementu tablicy A. Funkcja przestawia (zamienia wzajemnie) elementy tablicy A tak, aby po jej wykonaniu w lewej części tablicy były wszystkie elementy tablicy mniejsze od klucza, natomiast w prawej części – wszystkie większe lub równe kluczowi.

Specyfikacja:

Dane:

n – liczba całkowita dodatnia
A[1..n] – tablica liczb całkowitych

Wynik:

A[1..n] – tablica liczb całkowitych ułożona według podanej reguły

funkcja przestaw(A)
  klucz ← A[1]
  w ← 1
  dla k = 2, 3, ..., n wykonaj
    jeśli A[k] < klucz
      zamień(A[w], A[k])
      w ← w + 1

Uwaga:
Funkcja zamień(x,y) zamienia wzajemnie wartości zmiennych x i y – w powyższym przypadku zamienia wzajemnie dwa elementy tablicy A.

Zadanie 2.1. (0–2)
Dana jest liczba n = 6 oraz tablica A = [4,6,3,5,2,1]. Podaj kolejność elementów w tablicy A po wykonaniu funkcji przestaw(A).

Krok 1.
Podstawiamy pod klucz = A[1], czyli klucz = 4. Zmienna w = 1, w to jest nr elementu w tablicy, z którym będziemy zamieniać element mniejszy od klucza.

Krok 2.
Sprawdzamy czy A[2] < klucza, czyli czy 6<4, tu odpowiedź brzmi nie. Nie wykonujemy zamiany. Sprawdzamy kolejny element tablicy. Po wykonaniu tej czynności nasz tablica A = [4,6,3,5,2,1].

Krok 3.
Sprawdzamy czy A[3] < klucza, czyli czy 3<4, tu odpowiedź brzmi tak. Zamieniamy element tablicy A[1] z A[3], czyli 3 z 4. Po wykonaniu tej czynności nasz tablica A = [3,6,4,5,2,1]. Zwiększamy o 1 wartość zmiennej w, tj. w = 2. Sprawdzamy kolejny element tablicy.

Krok 4.
Sprawdzamy czy A[4] < klucz, czyli czy 5<4, tu odpowiedź brzmi nie. Nie wykonujemy zamiany. Sprawdzamy kolejny element tablicy.Po wykonaniu tej czynności nasz tablica A = [3,6,4,5,2,1].

Krok 5.
Sprawdzamy czy A[5] < klucza, czyli czy 2<4, tu odpowiedź brzmi tak. Zamieniamy element tablicy A[2] z A[5], czyli 6 z 2. Po wykonaniu tej czynności nasz tablica A = [3,2,4,5,6,1]. Zwiększamy o 1 wartość zmiennej w, tj. w = 3. Sprawdzamy kolejny element tablicy.

Krok 6.
Sprawdzamy czy A[6] < klucza, czyli czy 1<4, tu odpowiedź brzmi tak. Zamieniamy element tablicy A[3] z A[6], czyli 4 z 1. Po wykonaniu tej czynności nasz tablica A = [3,2,1,5,6,4]. Zwiększamy o 1 wartość zmiennej w, tj. w = 4. Koniec naszej tablicy.

Odpowiedź:
Tablica A = [3,2,1,5,6,4].

Kod w C++ sprawdzający poprawność działania algorytmu:

#include <iostream>
using namespace std;
int main()
{
 int n = 6;
 int A[n] = {4,6,3,5,2,1};
 int klucz = A[0];
 int w = 0;
 for (int k=1; k<n; k++)
 if (A[k] < klucz) {
 swap(A[w], A[k]);
 w++;
 }
 for (int i=0; i<n; i++)
 cout << A[i] << " ";
 cout << endl;
 cout << "Zamian = " << w << endl;
 return 0;
}

Zadanie 2.2. (0–1)
Podaj przykład siedmioelementowej tablicy A, dla której funkcja przestaw(A) dokładnie 5 razy wykona zamień.

Musi to być taka tablica, gdzie dokładnie 5 elementów będzie mniejszych od klucza. Kluczem jest pierwszy element tablicy. Przykładowa tablica to: A = [6,5,4,3,2,1,7].

Odpowiedź:
Tablica A = [5,4,3,2,1,6,7].

Zadanie 2.3. (0–3)
Tablica A[1..100] zawiera wszystkie liczby całkowite z przedziału <1, 100> w następującej kolejności:
A = [10, 20, 30, …, 100, 9, 19, 29, …, 99, 8, 18, 28, …, 98, …., 1, 11, 21, …, 91].
(najpierw rosnąco wszystkie liczby kończące się na 0, potem rosnąco liczby kończące się na 9, potem na 8 itd.)
Podaj wartość zmiennej w oraz wartości trzech pierwszych elementów tablicy A (A[1], A[2], A[3]), po wykonaniu funkcji przestaw(A).

Wartość zmiennej w jest równa ilości wykonanych zamian liczb, czyli tu będzie to 9 zmian, tak więc w = 9, ponieważ mniejszych liczb od klucz (A[1] = 10) jest 9 (tj. 9,8,7,6,5,4,3,2,1).  Jeśli chodzi o elementy to w zależności, który element jest pierwszy mniejszy od klucza, który jest równy 10. W podanym zapisie mamy że najpierw napotykamy 9, potem 8 itd. do 1.

Odpowiedź:
w = 10.
A[1] = 9, A[2] = 8, A[3] = 7.

Matura 2016 (maj). Zadanie 1. Liczby skojarzone

Matura 2016 (maj). Zadanie 1. Liczby skojarzone

Dwie różne liczby całkowite a i b większe od 1 nazwiemy skojarzonymi, jeśli suma wszystkich różnych dodatnich dzielników a mniejszych od a jest równa b+1, a suma wszystkich różnych dodatnich dzielników b mniejszych od b jest równa a+1.
Skojarzone są np. liczby 140 i 195, ponieważ:
  1. dzielnikami 140 są 1, 2, 4, 5, 7, 10, 14, 20, 28, 35, 70, a ich suma wynosi 196 = 195+1.
  2. dzielnikami 195 są 1, 3, 5, 13, 15, 39, 65, a suma tych liczb równa jest 141 = 140+1.

Zadanie 1.1. (0–1)

Zbadaj, które z następujących par liczb (a, b) są liczbami skojarzonymi, i wypełnij poniższą tabelę:
a b dzielniki a
(mniejsze od a)
dzielniki b
(mniejsze od b)
suma
dzielników
a
suma
dzielników
b
skojarzone
TAK/NIE
 78  64 1,2,3,6,13,26,39 1,2,4,8,16,32 90 63 NIE
 20  21 1,2,4,5,10 1,3,7  23 12 NIE
 75  48  1,3,5,15,25 1,2,3,4,6,8,12,16,24 49 76 TAK
Obliczenia:

Przykład 1.
a = 20;
Dzielniki a to: 1,2,4,5,10. 
Suma dzielników: 1+2+4+5+10 = 22
b = 21;
Dzielniki b to: 1,3,7.
Suma dzielników: 1+3+7 = 11

Sprawdzenie:
a + 1 = suma dzielników b ?
21 ≠ 11
i
b + 1 = suma dzielników a ?
22 = 22

Przykład 2.
a = 75;
Dzielniki a to: 1,3,5,15,25.
Suma dzielników: 1+3+5+15+25 = 49
b = 48;
Dzielniki b to: 1,2,3,4,6,8,12,16,24.
Suma dzielników: 1+2+3+4+6+8+12+16+24 = 76

Sprawdzenie:
a + 1 = suma dzielników b ?
76 = 76
i
b + 1 = suma dzielników a ?
49 = 49

Zadanie 1.2. (0–4)

Dana jest liczba całkowita a większa od 1. Ułóż i zapisz w wybranej przez siebie notacji algorytm, który znajdzie i wypisze liczbę b skojarzoną z a lub komunikat „NIE”, jeśli taka liczba nie istnieje.
W zapisie algorytmu możesz korzystać tylko z następujących operacji arytmetycznych: dodawania, odejmowania, mnożenia, dzielenia całkowitego i obliczania reszty z dzielenia.

Uwaga:
Przy ocenie algorytmu będzie brana pod uwagę liczba operacji arytmetycznych wykonywanych przez Twój algorytm.

Specyfikacja:
Dane: Liczba całkowita a > 1.
Wynik: Liczba całkowita b skojarzona z a lub komunikat „NIE”, jeśli taka liczba nie istnieje.

Algorytm:

int main()
{
 cout << "Zadnie 1. Matura 2016 - maj!" << endl;
 int a,b;
 cout << "Podaj a = ";
 cin >> a;
 cout << "Podaj b = ";
 cin >> b;
 int suma1 = 0;
 cout << " Dzielniki a: ";
 for (int i=1; i<a; i++)
 if ( a % i == 0 ) {
 cout << i << " ";
 suma1 += i;
 }
 cout << endl << " Suma dzilnikow = " << suma1 << endl;

int suma2 = 0;
cout << ” Dzielniki b: „;
for (int i=1; i<b; i++)
if ( b % i == 0 ) {
cout << i << ” „;
suma2 += i;
}
cout << endl << ” Suma dzielnikow = ” << suma2 << endl;
cout << ” Liczby skojarzone: „;
if (suma1==b+1 && suma2==a+1) cout << ” TAK ” << endl;
else cout << ” NIE ” << endl;
return 0;
}