Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Celem zajęć na kole olimpijskim jest przygotowanie uczniów do olimpiady informatycznej oraz do wszelkich innych konkursów, w których jest wymagana dobra umiejętność programowania komputerów w języku C++. Zajęcia będą obejmowały zakres materiału, który nie jest nauczany na lekcjach informatyki w szkole średniej. Wymaga zatem od uczestników dużo większej wiedzy od przeciętnego ucznia informatyki.
Zajęcia będą się odbywały w poniedziałki po 7-mej lekcji w sali komputerowej.
Podstawowym środowiskiem programowania będzie pakiet Code::Blocks, który jest ogólnie dostępny i darmowy w Internecie. Co więcej, pakiet ten daje się bez problemów zainstalować w środowisku Linux (takie jest w pracowni) oraz Windows (takie posiadają najczęściej uczniowie w swoich domach).
Przykładowe zadanie:
Pierwsza kaczka zostanie pożarta jako piąta z kolei, drugą kaczkę aligator zje jako czwartą z kolei, itd. Ciąg 5 4 6 1 3 8 7 2 kolejności zjadania kaczek całkowicie określa jadłospis aligatora. Napisz program, który określi ten ciąg dla danych n i m.
8 4
10 3
0 0
5 4 6 1 3 8 7 2
6 4 1 10 8 2 5 7 3 9
Teraz ustawiamy licznik zjedzonych kaczek lk = 0 oraz numer kaczki do zjedzenia nk = n - 1 (jest to ostatnia pozycja w kręgu – chodzi o to, aby odliczanie kaczek rozpoczęło się od następnej, czyli pierwszej w kręgu).
W pętli dopóki lk < n wykonujemy cyklicznie operacje:
Dla n = 8 i m = 4:
lk = 0
nk = 7
komórka | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 1
nk = 3
komórka | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 2
nk = 7
komórka | 0 | 0 | 0 | 1 | 3 | 0 | 0 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 3
nk = 4
komórka | 0 | 4 | 0 | 1 | 3 | 0 | 0 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 4
nk = 1
komórka | 5 | 4 | 0 | 1 | 3 | 0 | 0 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 5
nk = 0
komórka | 5 | 4 | 6 | 1 | 3 | 0 | 0 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 6
nk = 2
komórka | 5 | 4 | 6 | 1 | 3 | 0 | 7 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 7
nk = 2
komórka | 5 | 4 | 6 | 1 | 3 | 8 | 7 | 2 |
indeks | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
nk |
lk = 8 - koniec, tablica jest wypełniona.
// Koło Informatyczne I LO w Tarnowie // (C)2014 mgr Jerzy Wałaszek // ACM - Jadłospis Aligatora //----------------------------------- #include <iostream> #include <iomanip> using namespace std; int main() { int K[99],n,m,lk,nk,i; while(true) { cin >> n >> m; // Odczytujemy liczbę kaczek i krok if(!n || !m) break; // Zerujemy tablicę for(i = 0; i < n; i++) K[i] = 0; // Inicjujemy dane lk = 0; nk = n - 1; // W pętli wyznaczamy kolejno jedzone kaczki while(lk < n) { for(i = 0; i < m; i++) do { nk++; if(nk == n) nk = 0; } while(K[nk]); K[nk] = ++lk; } // Wyświetlamy zawartość tablicy for(i = 0; i < n; i++) cout << setw(3) << K[i]; cout << endl; } return 0; } |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe