Prezentacja 1Sposoby przedstawiania algorytmów

Prezentacja omawia zapis algorytmu za pomocą języka naturalnego, w postaci listy kroków (pseudokodu), schematu blokowego i programu.

Prezentacja 2C++ – powtórzenie

Prezentacja przedstawia najważniejsze konstrukcje stosowane w języku C++.

PlanszaC++ – podstawowe polecenia

Plansza zawiera podstawowe operatory działań i porównania oraz polecenia.

Ćwiczenie 0

Przećwicz posługiwanie się pętlą while. Zdefiniuj funkcję ile_cyfr(int liczba), której parametrem jest dodatnia liczba całkowita, a wynikiem będzie liczba cyfr danej liczby.

  • Wynikiem funkcji ile_cyfr(123) jest 3.
  • Wynikiem funkcji ile_cyfr(17923) jest 5.
#include <iostream> using namespace std; // zdefiniuj funkcję int ile_cyfr(int liczba) { } // testy int main() { cout << ile_cyfr(123) << " " << ile_cyfr(17923) << endl; return 0; }
Wynikiem funkcji ile_cyfr(12) jest 2
return ile_cyfr(12)==2;
2
ile_cyfr(12)
Wynikiem funkcji ile_cyfr(179233334) jest 9
return ile_cyfr(179233334)==9;
9
ile_cyfr(179233334)
Wynikiem funkcji ile_cyfr(1) jest 1
return ile_cyfr(1)==1;
1
ile_cyfr(1)
Rozwiąż ćwiczenie

Ćwiczenie 1Podział na rzędy

W międzynarodowej konferencji weźmie udział określona liczba gości z różnych krajów i określona liczba gospodarzy. Zaproszeni będą siedzieć w rzędach tak, aby każdy rząd był równoliczny i w każdym siedzieli albo tylko goście, albo tylko gospodarze. Jaka jest największa możliwa liczba osób w każdym rzędzie? Zdefiniuj funkcję rzad(int goscie, int gospodarze), której parametrami są liczba gości i liczba gospodarzy, a wynikiem jest liczebność rzędu. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji rzad(72, 90) jest 18.
  • Wynikiem funkcji rzad(24, 36) jest 12.
#include <iostream> using namespace std; // zdefiniuj funkcję int nwd(int a, int b) { } // zdefiniuj funkcję int rzad(int goscie, int gospodarze) { } // testy int main() { cout << rzad(72, 90) << " " << rzad(24, 36) << endl; return 0; }
Wynikiem funkcji rzad(100, 100) jest 100
return rzad(100, 100)==100;
100
rzad(100, 100)
Wynikiem funkcji rzad(51, 65) jest 1.
return rzad(51, 65)==1;
1
rzad(51, 65)
Wynikiem funkcji rzad(32, 48) jest 16
return rzad(32, 48)==16;
16
rzad(32, 48)
Rozwiąż ćwiczenie

Ćwiczenie 2Podział na grupy

Na potrzeby warsztatów należy podzielić gości i gospodarzy na możliwie małe zespoły tak, by w każdym zespole była jednakowa liczba osób (gości i gospodarzy). Zdefiniuj funkcję ile(int goscie, int gospodarze), której parametrami są liczba gości oraz liczba gospodarzy, a wynikiem jest liczebność każdego zespołu. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile(56, 42) jest 7.
  • Wynikiem funkcji ile(25, 35) jest 12.
#include <iostream> using namespace std; // zdefiniuj funkcję int nwd(int a, int b) { } // zdefiniuj funkcję int ile(int goscie, int gospodarze) { } int main() { // sprawdź działanie funkcji cout << ile(56, 42) << " " << ile(25, 35) << endl; return 0; }
Wynikiem funkcji ile(100, 100) jest 2
return ile(100, 100)==2;
2
ile(100, 100)
Wynikiem funkcji ile(51, 65) jest 116
return ile(51, 65)==116;
116
ile(51, 65)
Wynikiem funkcji ile(32, 48) jest 5
return ile(32, 48)==5;
5
ile(32, 48)
Rozwiąż ćwiczenie

Ćwiczenie 3Spotkania zespołów

Organizacją konferencji zajmują się dwa zespoły: do spraw programowych i do spraw metodycznych. Pierwszy spotyka się co x dni, drugi co y. Dziś spotkały się oba zespoły. Zdefiniuj funkcję kiedy(int x, int y), w której jako parametry będziesz podawać, co ile dni spotykają się zespoły, a wynikiem będzie liczba dni, które upłyną do następnego wspólnego spotkania obu zespołów. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji kiedy(6, 4) jest 12.
  • Wynikiem funkcji kiedy(9, 12) jest 36.
#include <iostream> using namespace std; // zdefiniuj funkcję int nwd(int a, int b) { } // zdefiniuj funkcję int nww(int a, int b) { } // zdefiniuj funkcję int kiedy(int x, int y) { } int main() { // sprawdź działanie funkcji cout << kiedy(6, 4) << " " << kiedy(9, 12) << endl; return 0; }
Wynikiem funkcji kiedy(2, 5) jest 10
return kiedy(2, 5)==10;
10
kiedy(2, 5)
Wynikiem funkcji kiedy(3, 3) jest 3
return kiedy(3, 3)==3;
3
kiedy(3, 3)
Wynikiem funkcji kiedy(4, 7) jest 28
return kiedy(4, 7)==28;
28
kiedy(4, 7)
Rozwiąż ćwiczenie

Ćwiczenie 4Sprytne zakupy

Każdy gość powinien dostać taką samą liczbę długopisów, ołówków i flamastrów. Zdefiniuj funkcję flamastry(int x, int y, int z), której parametrami są liczba długopisów w paczce (x), liczba ołówków w paczce (y) i liczba sztuk flamastrów w paczce (z), a wynikiem jest najmniejsza liczba opakowań flamastrów, które gospodarze powinni kupić, aby nic nie zostało. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji flamastry(6, 8, 10) jest 12.
  • Wynikiem funkcji flamastry(39, 26, 52) jest 3.
#include <iostream> using namespace std; // zdefiniuj funkcję int nwd(int a, int b) { } // zdefiniuj funkcję int nww(int a, int b) { } // zdefiniuj funkcję int flamastry(int x, int y, int z) { } int main() { // sprawdź działanie funkcji cout << flamastry(6, 8, 10) << " " << flamastry(39, 26, 52) << endl; return 0; }
Wynikiem funkcji flamastry(5, 110, 15) jest 22
return flamastry(5, 110, 15)==22;
22
flamastry(5, 110, 15)
Wynikiem funkcji flamastry(5, 10, 15) jest 2
return flamastry(5, 10, 15)==2;
2
flamastry(5, 10, 15)
Wynikiem funkcji flamastry(7, 9, 7) jest 9
return flamastry(7, 9, 7)==9;
9
flamastry(7, 9, 7)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Przećwicz posługiwanie się pętlą while. Zdefiniuj funkcję suma_cyfr(int liczba), której wynikiem jest suma cyfr liczby. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji suma_cyfr(123) jest 6.
  • Wynikiem funkcji suma_cyfr(17923) jest 22.

Wskazówka
Zauważ, że algorytm sumowania cyfr opiera się na wyodrębnianiu cyfr od końca i kolejno ich sumowania. W każdym kroku wyliczana jest ostatnia cyfra jako reszta dzielenia przez 10 oraz liczba jest dzielona przez 10.

#include <iostream> using namespace std; // zdefiniuj funkcję int suma_cyfr(int liczba) { } int main() { // sprawdź działanie funkcji cout << suma_cyfr(123) << " " << suma_cyfr(17923) << endl; return 0; }
Wynikiem funkcji suma_cyfr(12) jest 3
return suma_cyfr(12)==3;
3
suma_cyfr(12)
Wynikiem funkcji suma_cyfr(179233334) jest 35
return suma_cyfr(179233334)==35;
35
suma_cyfr(179233334)
Wynikiem funkcji suma_cyfr(1) jest 1
return suma_cyfr(1)==1;
1
suma_cyfr(1)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Przećwicz posługiwanie się pętlą while. Zdefiniuj funkcję iledo6(string napis), której wynikiem jest liczba cyfr, które poprzedzają w napisie cyfrę 6. Przyjmij, że 6 występuje co najmniej raz. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji iledo6("1234567") jest 5.
  • Wynikiem funkcji iledo6("1635567") jest 1.
#include <iostream> using namespace std; // zdefiniuj funkcję int iledo6(string napis) { } int main() { // sprawdź działanie funkcji cout << iledo6("1234567") << " " << iledo6("1635567") << endl; return 0; }
Wynikiem funkcji iledo6("6") jest 0
return iledo6("6")==0;
0
iledo6("6")
Wynikiem funkcji iledo6("111156555666") jest 5
return iledo6("111156555666")==5;
5
iledo6("111156555666")
Wynikiem funkcji iledo6("00006") jest 4
return iledo6("00006")==4;
4
iledo6("00006")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 3

Przećwicz posługiwanie się pętlą while. Zdefiniuj funkcję suma(int liczba), której wynikiem jest suma cyfr, które poprzedzają w liczbie cyfrę 0. Przyjmij, że 0 występuje co najmniej raz. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji suma(1234067) jest 10.
  • Wynikiem funkcji suma(1204560) jest 3.
#include <iostream> using namespace std; // zdefiniuj funkcję int suma(int liczba) { } int main() { // sprawdź działanie funkcji cout << suma(1234067) << " " << suma(1204560) << endl; return 0; }
Wynikiem funkcji suma(241650) jest 18
return suma(241650)==18;
18
suma(241650)
Wynikiem funkcji suma(110116) jest 2
return suma(110116)==2;
2
suma(110116)
Wynikiem funkcji suma(0) jest 0
return suma(0)==0;
0
suma(0)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 4

Przećwicz posługiwanie się pętlą while. Zdefiniuj funkcję sumap(int liczba), której wynikiem jest suma cyfr parzystych, które poprzedzają w liczbie cyfrę 0. Przyjmij, że 0 występuje co najmniej raz. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji sumap(1234067) jest 6.
  • Wynikiem funkcji sumap(1204560) jest 2.
#include <iostream> using namespace std; // zdefiniuj funkcję int sumap(int liczba) { } int main() { // sprawdź działanie funkcji cout << sumap(1234067) << " " << sumap(1204560) << endl; return 0; }
Wynikiem funkcji sumap(241650) jest 12
return sumap(241650)==12;
12
sumap(241650)
Wynikiem funkcji sumap(220116) jest 4
return sumap(220116)==4;
4
sumap(220116)
Wynikiem funkcji sumap(0) jest 0
return sumap(0)==0;
0
sumap(0)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 5

Przećwicz posługiwanie się pętlą while. Zdefiniuj funkcję sumanp(int liczba), której wynikiem jest suma cyfr nieparzystych, które poprzedzają w liczbie cyfrę 0. Przyjmij, że 0 występuje co najmniej raz. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji sumanp(1234067) jest 4.
  • Wynikiem funkcji sumanp(1204560) jest 1.
#include <iostream> using namespace std; // zdefiniuj funkcję int sumanp(int liczba) { } int main() { // sprawdź działanie funkcji cout << sumanp(1234067) << " " << sumanp(1204560) << endl; return 0; }
Wynikiem funkcji sumanp(241650) jest 6
return sumanp(241650)==6;
6
sumanp(241650)
Wynikiem funkcji sumanp(320116) jest 3
return sumanp(320116)==3;
3
sumanp(320116)
Wynikiem funkcji sumanp(0) jest 0
return sumanp(0)==0;
0
sumanp(0)
Rozwiąż ćwiczenie

Pytania quizoweAlgorytm Euklidesa w praktyce

Twój wynik to: /3
  • Jeśli warunek pętli while zapisano jako x <= 10, przy czym w pętli tej nie jest modyfikowana wartość x, to ile razy wykona się pętla dla wartości początkowej
     x = 3?
  • Czy w algorytmie Euklidesa z odejmowaniem można zastąpić krok „Wynikiem jest a” krokiem „Wynikiem jest b”?
  • Czy przy dodawaniu dwóch ułamków zwykłych krok „Znajdź wspólny mianownik m = NWW(b, d)” można zastąpić krokiem „Znajdź wspólny mianownik m = b * d ”?