 
                                INFORMATYKA Z MERMIDONEM
Programowanie
Moduł 5 / Notatki
Projekt współfinansowany ze środków Unii Europejskiej
w ramach Europejskiego Funduszu Społecznego.
Realizator projektu:
Opracowano w ramach projektu Nowa Era Informatyki
www.mermidon.edu.pl
2
.edu.pl
Moduł 5.
Tablice jedno i dwuwymiarowe
Notatki do wszystkich części
TWORZENIE TABLICY JEDNOWYMIAROWEJ
Tablicę tworzymy poprzez zdefiniowanie typu zmiennych, które będą przechowywane w tablicy,
jej nazwy i ilości elementów:
typ_zmiennej nazwa_tablicy [liczba elementów]
np.:
int mojaTablica[7];
char tab[20];
Tablicę możemy wypełnić w chwili deklaracji. Tego sposobu używamy, gdy wiemy, co dokładnie
będziemy chcieli przechowywać w tablicy.
int dniMesiaca[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
int imie[6] = {'m', 'i', 'c', 'h', 'a', 'l'};
OPERACJE NA TABLICY JEDNOWYMIAROWEJ
Do operowania na tablicy np. do wypisywania zawartości używamy pętli. Pętle pozwalają na przechodzenie od pierwszego elementu do ostatniego.
int tablica[100];
for (int a = 0; a < 100; a++)
{
cout << tablica[a]
<< " ";
}
Tablice indeksowane są od zera, pierwszy element ma indeks zero (nie jeden):
tablica[0]
– pierwszy element
tablica[1]
– drugi element
tablica[99]
– setny element – ostatni element w tablicy
Zadanie:
Rozważmy napisanie programu, który pobierze z klawiatury n liczb, umieści je w tablicy a następnie wyświetli. Program powinien wczytać liczbę „n” mówiącą ile liczb będziemy wczytywać a następnie je pobrać, zapisać i wypisać.
3
.edu.pl
Rozwiązanie:
Tworzymy tablicę np. 100 elementową („n” w tym przypadku jest w przedziale od 1 do 100).
Pobieramy z klawiatury liczbę „n”.
W pętli od zera do „n” pobieramy kolejne liczby i umieszczamy je w tablicy.
W kolejnej pętli od zera do „n” pobieramy kolejne elementy z tablicy i wypisujemy je na ekran.
Fragment kodu źródłowego, którego możemy użyć do pobierania zmiennej ilości danych z klawiatury:
int tablica[1000];
– rezerwujemy miejsce, nie koniecznie musimy całe użyć
int wielkosc;
cin >> wielkosc;
– wczytujemy ile liczb będziemy wczytywać (ile liczb oczekujemy)
for (int a = 0; a < wielkosc; a++)
– pętla od zera do „n”
{
cin >> tablica[a];
}
TWORZENIE TABLICY DWUWYMIAROWEJ
Tablice dwuwymiarowe tworzymy poprzez określenie typu tablicy, jej nazwy oraz dwóch wymiarów (ilości wierszy i kolumn):
typ_zmiennej nazwa_tablicy [wymiar1][wymiar2];
np.:
int tablica[10][10];
Tak jak w przypadku tablicy jednowymiarowej, dwuwymiarową również możemy wypełnić w chwili
tworzenia.
int tablica[3][2] = {{1,2}, {3,4}, {5,6}};
OPERACJE NA TABLICY DWUWYMIAROWEJ
Do operowania na tablicy dwuwymiarowej używamy dwóch pętli. Jedna jest odpowiedzialna za
iterowanie (przechodzenie) po wierszach a druga po kolumnach. Jedna jest zagnieżdżona w drugiej, – czyli na jeden obrót pierwszej pętli, druga zagnieżdżona przechodzi przez wszystkie elementy.
4
.edu.pl
int tablica[100][50];
for (int w = 0; w < 100; w++)
– iterujemy po wierszach
{
for (int k = 0; k < 100; k++)
– iterujemy po kolumnach
{
cout << tablica[w][k] << " ";
}
cout << endl;
– po wypisaniu wiersza z tablicy, przechodzimy do nowej linii
}
LICZBY PIERWSZE
Liczbą pierwszą jest liczba naturalna, która ma dokładnie dwa różne dzielniki naturalne i są nimi:
jeden,
ona sama.
Kolejne liczby pierwsze:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, itd.
Zadanie:
Rozważmy napisanie programu, który sprawdzi czy podana z klawiatury liczba jest liczbą pierwszą.
Rozwiązanie:
Pobieramy z klawiatury liczbę.
W pętli od 2 do „n” sprawdzamy czy któraś liczba dzieli „n” bez reszty.
Sprawdzamy, czy w poprzednim kroku znaleźliśmy dzielniki dla „n”, jeśli nie, to liczba „n” jest
liczbą pierwszą.
Fragmentu kodu źródłowego szukającego dzielników dla „n”:
for(int a=2; a<n; a++)
{
if(n % a == 0)
– dzielenie modulo
{
//znaleźliśmy dzielnik
}
}
5
.edu.pl
LICZBY DOSKONAŁE
Liczbą doskonałą jest liczba naturalna taka, że suma jej naturalnych dzielników jest równa jej samej.
6=1+2+3
Kolejne liczby doskonałe:
6, 28, 496, 8128, 33550336, 8589869056
Zadanie:
Rozważmy napisanie programu, który sprawdzi czy podana z klawiatury liczba jest liczbą doskonałą.
Rozwiązanie:
Pobieramy z klawiatury liczbę, którą będziemy sprawdzać.
Tworzymy tablicę o wielkości 100 (nie musimy całej wykorzystywać), w której będziemy trzymać dzielniki .
W pętli od 1 do „n” sprawdzamy czy któraś liczba dzieli „n” bez reszty, jeśli tak, liczbę zapisujemy w tablicy z kroku poprzedniego.
W kolejnej pętli od 1 do k, (gdzie k jest liczbą mówiącą ile znaleźliśmy dzielników) wykonujemy
sumowanie.
Sprawdzamy czy suma dzielników równa się wczytanej liczbie, jeśli tak to znaleźliśmy liczbę
doskonałą.
LICZBY BLIŹNIACZE
Liczbami bliźniaczymi są liczby pierwsze, różniące się między sobą o 2.
Przykład:
3 5, 5 7, 11 13, 17 19.
Zadanie:
Rozważmy napisanie programu, który wypisze wszystkie liczby bliźniacze w zbiorze od 1 do „n”.
Rozwiązanie:
Rozwiązań problemu jest co najmniej kilka:
Możemy szukać liczb bliźniaczych w tablicy z wartościami od 1 do n, przeszukując komórki
leżące w odległości dwóch indeksów od siebie.
Możemy przygotować sobie tablicę liczb pierwszych i to w niej szukać liczb bliźniaczych, porównując komórki leżące obok siebie.
6
.edu.pl
Tworzymy tablicę, w której będziemy poszukiwali liczb bliźniaczych (np. 100 elementową).
W pętli od 0 do 100 wpisujemy wartości poszczególnym komórkom w tablicy (dla indeksu 0,
wpisujemy wartość 1, itd.).
Tworzymy nową tablicę, do której przepiszemy liczby pierwsze.
W pętli od 0 do 100 sprawdzamy główną tablicę czy znajdują się w niej liczby pierwsze, jeśli
takową znajdziemy, przepisujemy do tablicy z liczbami pierwszymi.
W pętli od 1 do ilości liczb pierwszych w tablicy, porównujemy pola obok siebie, dany element
jest porównywalny z poprzednim. Jeśli różnica między nimi wynosi 2, oznacza to ze znaleźliśmy parę liczb bliźniaczych.
LICZBY CZWORACZE
Liczbami czworaczymi są liczby pierwsze, które można zapisać w postaci:
p, p+2, p+6, p+8
np.:
5, 7, 11, 13
821, 823, 827, 829
Zadanie:
Rozważmy napisanie programu, który wypisze wszystkie liczby czworacze w zbiorze od 1 do „n”.
Rozwiązanie:
Tworzymy tablicę, w której będziemy szukać liczb czworaczych (np. 100 elementową).
W pętli od 0 do 100 wpisujemy wartości poszczególnym komórkom w tablicy (dla indeksu 0,
wpisujemy wartość 1, itd.).
Tworzymy nową tablicę, do której przepiszemy liczby pierwsze.
W pętli od 0 do 100 sprawdzamy główną tablicę czy znajdują się w niej liczby pierwsze, jeśli
takową znajdziemy, przepisujemy do tablicy z liczbami pierwszymi.
W pętli będziemy sprawdzać czy znaleźliśmy liczby czworacze. W pętli będziemy przechodzić
od 1 do „n” – 8. Pobierzemy pierwszy element z tablicy, sprawdzimy czy jest liczbą pierwszą,
jeśli tak, sprawdzimy czy następny element w tablicy liczb pierwszych jest równy p+2, kolejny
p+6 i jeszcze jeden p+8.
Sprawdzamy czy wszystkie liczby (p, p+2, p+6, p+8) są liczbami pierwszymi. Jeśli tak, znaleźliśmy liczby czworacze.
7
.edu.pl
LICZBY GERMAIN
Liczbą Germain jest liczbą pierwszą, dla której 2·p+1 również jest liczbą pierwszą.
Kolejne liczby Germain:
2, 3, 5, 11, 23, 29, 41, 53, 83
sprawdźmy:
2·2+1=5
2·3+1=7
Zadanie:
Rozważmy napisanie programu, który sprawdzi czy liczba wczytana z klawiatury jest liczbą Germain.
Rozwiązanie:
Pobieramy liczbę z klawiatury.
Sprawdzamy czy wczytana liczba jest liczbą pierwszą.
Jeśli tak, podstawiamy wartość do wzoru.
Sprawdzamy czy wartość wyrażenia również jest liczbą pierwszą.
ROZKŁAD LICZBY NA CZYNNIKI PIERWSZE
Rozkład liczby na czynniki pierwsze polega na zapisaniu jej jako iloczynu liczb pierwszych.
np.:
14 = 2 · 7
15 = 3 · 5
Każda liczba naturalna większa od jeden jest albo liczbą pierwszą albo iloczynem liczb pierwszych
(liczbą złożoną).
Zadanie:
Rozważmy napisanie programu, który rozłoży liczbę na czynniki pierwsze
Rozwiązanie:
Pobieramy liczbę z klawiatury, którą chcemy rozłożyć, niech nią będzie liczba „k”.
Tworzymy tablicę, w której będziemy przechowywać czynniki pierwsze.
W pętli dzielimy liczbę „k” przez liczbę „p” i sprawdzamy czy otrzymaliśmy resztę z dzielenia
czy nie. Jeśli nie ma reszty, oznacza to, że znaleźliśmy czynnik pierwszy, więc przepisujemy go
8
.edu.pl
do odpowiedniej tablicy na liczby pierwsze. Kroki powtarzamy. W następnym obiegu pętli liczbą „k” będzie równa „k”/„p”.
Jeśli w pętli z poprzedniego kroku podczas dzielenia otrzymamy resztę z dzielenia to powiększamy liczbę „p” i krok powtarzamy.
Rozkład liczby 90 na czynniki pierwsze:
90 | 2 = 45
45 | 3 = 15
15 | 3 = 5
5|5 = 1
1
Czynnikami pierwszymi są 2, 3, 3, 5.
9
.edu.pl