Lekcja usunięta zgodnie z podstawą programową z 2024 r.

Treści usunięte z lekcji zgodnie z podstawą programową
z 2024 r. sprawdź w e-booku podręcznika na eduranga.pl.

Ćwiczenie 0

Zaopatrzeniowiec dostaje listę zakupów. Martwi się, aby nie przekroczyć dopuszczalnego udźwigu po załadowaniu samochodu. Zdefiniuj funkcję zakupy(int c, int m, int z), której parametrami są liczby worków c – cukru, m – mąki i z – ziemniaków. Worki cukru ważą 2 kg, mąki 5 kg i ziemniaków 12 kg. Udźwig samochodu wynosi 500 kg. Wynikiem funkcji jest 1, gdy samochód może przewieźć zakupy, lub 0, gdy zostanie przekroczony udźwig. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zakupy(4, 9, 12) jest 1.
  • Wynikiem funkcji zakupy(12, 34, 43) jest 0.

Wskazówka
Należy znaleźć łączną wagę produktów, a potem porównać wynik z 500. Łączną wagę produktów obliczamy, mnożąc liczbę worków przez ich masy, potem poszczególne liczby dodajemy do siebie

#include <iostream> using namespace std; // zdefiniuj funkcję int zakupy(int c, int m, int z) { } int main() { // sprawdź działanie funkcji cout << zakupy(4, 9, 12) << " " << zakupy(12, 34, 43) << endl;     return 0; }
Wynikiem funkcji zakupy(4, 9, 38) jest 0
return zakupy(4, 9, 38)==0;
0
zakupy(4, 9, 38)
Wynikiem funkcji zakupy(5, 9, 37) jest 1
return zakupy(5, 9, 37)==1;
1
zakupy(5, 9, 37)
Wynikiem funkcji zakupy(6, 9, 37) jest 0
return zakupy(6, 9, 37)==0;
0
zakupy(6, 9, 37)
Rozwiąż ćwiczenie

FilmProgramowanie w C++. Sortowanie przez wstawianie

Film omawia sortowanie przez wstawianie oraz procedurę wstawiania danego elementu do posortowanej tablicy i jej realizację w C++.

Film 1Programowanie w C++. Liczby pierwsze

W filmie omówiono algorytm sprawdzający, czy dana liczba jest pierwsza, oraz pokazano jego implementację.

Film 2Programowanie w C++. Badanie własności liczb całkowitych. Suma dzielników liczby

Film prezentuje zagadnienie złożoności czasowej algorytmu na przykładzie badania własności liczb całkowitych, a konkretnie badania sumy dzielników danej liczby.

Ćwiczenie 0

Zdefiniuj funkcję czy_parzysta(int n), której wynikiem jest 1 w przypadku, gdy liczba podana jako parametr jest parzysta, lub 0, gdy jest nieparzysta. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji czy_parzysta(1) jest 0.
  • Wynikiem funkcji czy_parzysta(2) jest 1.

Wskazówka
Zauważ, że algorytm sprawdzania parzystości liczby opiera się na badaniu reszty z dzielenia liczby przez 2. Jeśli ta reszta równa jest 0, to liczba jest parzysta, w przeciwnym wypadku – nieparzysta.

#include <iostream> using namespace std; // zdefiniuj funkcję bool czy_parzysta(int n) { } int main() { // sprawdź działanie funkcji cout << czy_parzysta(1) << " " << czy_parzysta(2) << endl; return 0; }
Wynikiem funkcji czy_parzysta(8) jest 1
return czy_parzysta(8)==1;
1
czy_parzysta(8)
Wynikiem funkcji czy_parzysta(13) jest 0
return czy_parzysta(13)==0;
0
czy_parzysta(13)
Wynikiem funkcji czy_parzysta(2468086420) jest 1
return czy_parzysta(2468086420)==1;
1
czy_parzysta(2468086420)
Rozwiąż ćwiczenie

Ćwiczenie 1Czy liczba jest pierwsza?

Zdefiniuj funkcję logiczną czy_pierwsza(int n), której parametrem jest liczba naturalna n większa od 1,
a wynikiem wartość 1, gdy jest ona liczbą pierwszą, albo 0, gdy nią nie jest. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji czy_pierwsza(11) jest 1.
  • Wynikiem funkcji czy_pierwsza(99) jest 0.
#include <iostream> using namespace std; // zdefiniuj funkcję bool czy_pierwsza(int n) { } int main() { // sprawdź działanie funkcji cout << czy_pierwsza(11) << " " << czy_pierwsza(99) << endl; return 0; }
Wynikiem funkcji czy_pierwsza(2) jest 1
return czy_pierwsza(2)==1;
1
czy_pierwsza(2)
Wynikiem funkcji czy_pierwsza(15555) jest 0
return czy_pierwsza(15555)==0;
0
czy_pierwsza(15555)
Wynikiem funkcji czy_pierwsza(7) jest 1
return czy_pierwsza(7)==1;
1
czy_pierwsza(7)
Rozwiąż ćwiczenie

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 0

Zdefiniuj funkcję trzy(int a, int b, int c), której wynikiem jest największa z trzech liczb podanych jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji trzy(1, 9, 12) jest 12.
  • Wynikiem funkcji trzy(13, 4, 12) jest 13.

Wskazówka
Na początku za największą liczbę przyjmuje się pierwszą z trzech liczb podanych jako parametr. Następnie bada się, czy druga z liczb jest większa od niej, jeśli tak, to za największą przyjmuje się drugą liczbę. Następnie bada się, czy trzecia z liczb jest większa od niej, jeśli tak, to za największą przyjmuje się trzecią liczbę.

#include <iostream> using namespace std; // zdefiniuj funkcję int trzy(int a, int b, int c) { } int main() { // sprawdź działanie funkcji cout << trzy(1, 9, 12) << " " << trzy(13, 4, 12) << endl;     return 0; }
Wynikiem funkcji trzy(10, 10, 10) jest 10
return trzy(10, 10, 10)==10;
10
trzy(10, 10, 10)
Wynikiem funkcji trzy(112, 99, 112) jest 112
return trzy(112, 99, 112)==112;
112
trzy(112, 99, 112)
Wynikiem funkcji trzy(456, 456, 455) jest 456
return trzy(456, 456, 455)==456;
456
trzy(456, 456, 455)
Rozwiąż ćwiczenie

Ćwiczenie 2N-ta liczba pierwsza

Zdefiniuj funkcję pierwsza(int n), której parametrem będzie liczba naturalna n, a wynikiem – n-ta liczba pierwsza. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji pierwsza(7) jest 17.
  • Wynikiem funkcji pierwsza(25) jest 97.
#include <iostream> using namespace std; // zdefiniuj funkcję bool czy_pierwsza(int i) { } // zdefiniuj funkcję int pierwsza(int n) { } int main() { // sprawdź działanie funkcji cout << pierwsza(7) << " " << pierwsza(25) << endl; return 0; }
Wynikiem funkcji pierwsza(1) jest 2
return pierwsza(1)==2;
2
pierwsza(1)
Wynikiem funkcji pierwsza(17) jest 59
return pierwsza(17)==59;
59
pierwsza(17)
Wynikiem funkcji pierwsza(100) jest 541
return pierwsza(100)==541;
541
pierwsza(100)
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
  • 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 ”?
  • 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”?

Ćwiczenie 3Liczby bliźniacze

Liczby bliźniacze to liczby pierwsze różniące się o 2. W pierwszej setce jest osiem par takich liczb: 3 i 5, 5 i 7, 11 i 13, 17 i 19, 29 i 31, 41 i 43, 59 i 61, 71 i 73. Zdefiniuj funkcję blizniacze(int n), której parametrem jest liczba naturalna n, a wynikiem pierwsza liczba z n-tej pary liczb bliźniaczych. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji blizniacze(3) jest 11.
  • Wynikiem funkcji blizniacze(7) jest 59.
#include <iostream> using namespace std; // zdefiniuj funkcję int blizniacze(int n) { } int main() { // sprawdź działanie funkcji cout << blizniacze(3) << " " << blizniacze(7) << endl; return 0; }
Wynikiem funkcji blizniacze(1) jest 3
return blizniacze(1)==3;
3
blizniacze(1)
Wynikiem funkcji blizniacze(2) jest 5
return blizniacze(2)==5;
5
blizniacze(2)
Wynikiem funkcji blizniacze(10) jest 107
return blizniacze(10)==107;
107
blizniacze(10)
Rozwiąż ćwiczenie

Ćwiczenie 4Suma dzielników liczby

Zdefiniuj funkcję suma_dzielnikow(int n), której parametrem jest liczba naturalna n, a wynikiem – suma dzielników tej liczby. Sformułuj dwa algorytmy i porównaj szybkość działania każdego z nich dla różnych danych. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji suma_dzielnikow(7) jest 8.
  • Wynikiem funkcji suma_dzielnikow(16) jest 31.

Algorytm sprawdzający podzielność danej liczby przez kolejne liczby naturalne – od 1 do niej samej.

#include <iostream> using namespace std; // zdefiniuj funkcję int suma_dzielnikow(int n) { } int main() { // sprawdź działanie funkcji cout << suma_dzielnikow(7) << " " << suma_dzielnikow(16) << endl; return 0; }
Wynikiem funkcji suma_dzielnikow(2) jest 3
return suma_dzielnikow(2)==3;
3
suma_dzielnikow(2)
Wynikiem funkcji suma_dzielnikow(5) jest 6
return suma_dzielnikow(5)==6;
6
suma_dzielnikow(5)
Wynikiem funkcji suma_dzielnikow(100) jest 217
return suma_dzielnikow(100)==217;
217
suma_dzielnikow(100)
Rozwiąż ćwiczenie

Algorytm sprawdzający podzielność danej liczby przez kolejne dzielniki od 2 do pierwiastka z tej liczby.

#include <iostream> #include <cmath> using namespace std; // zdefiniuj funkcję int suma_dzielnikow(int n) { } int main() { // sprawdź działanie funkcji cout << suma_dzielnikow(7) << " " << suma_dzielnikow(16) << endl; return 0; }
Wynikiem funkcji suma_dzielnikow(2) jest 3
return suma_dzielnikow(2)==3;
3
suma_dzielnikow(2)
Wynikiem funkcji suma_dzielnikow(5) jest 6
return suma_dzielnikow(5)==6;
6
suma_dzielnikow(5)
Wynikiem funkcji suma_dzielnikow(100) jest 217
return suma_dzielnikow(100)==217;
217
suma_dzielnikow(100)
Rozwiąż ćwiczenie

Ćwiczenie 5Liczby zaprzyjaźnione

Liczby zaprzyjaźnione to dwie liczby naturalne, z których każda jest równa sumie dzielników właściwych drugiej liczby (np. suma dzielników właściwych liczby 220 wynosi 284, a suma dzielników właściwych liczby 284 – 220). Zdefiniuj funkcję zaprzyjaznione(int n), której parametrem jest liczba naturalna n, a wynikiem – mniejsza liczba z n-tej pary liczb zaprzyjaźnionych. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zaprzyjaznione(1) jest 220.
  • Wynikiem funkcji zaprzyjaznione(3) jest 2620.
#include <iostream> #include <cmath> using namespace std; // zdefiniuj funkcję int suma_dzielnikow_w(int n) { } // zdefiniuj funkcję int zaprzyjaznione(int n) { } int main() { // sprawdź działanie funkcji cout << zaprzyjaznione(1) << " " << zaprzyjaznione(3) << endl; return 0; }
Wynikiem funkcji zaprzyjaznione(5) jest 6232
return zaprzyjaznione(5)==6232;
6232
zaprzyjaznione(5)
Wynikiem funkcji zaprzyjaznione(2) jest 1184
return zaprzyjaznione(2)==1184;
1184
zaprzyjaznione(2)
Wynikiem funkcji zaprzyjaznione(7) jest 12285
return zaprzyjaznione(7)==12285;
12285
zaprzyjaznione(7)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zdefiniuj funkcję parzyste(int liczba1, int liczba2), której parametrami są liczby całkowite dodatnie, przy czym liczba1 < liczba2, a ich różnica wynosi co najmniej 3. Wynikiem funkcji jest suma dwóch liczb – najmniejszej liczby parzystej większej od parametru liczba1 i największej liczby parzystej mniejszej od parametru liczba2. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji parzyste(4, 9) jest 14.
  • Wynikiem funkcji parzyste(9, 12) jest 20.
  • Wynikiem funkcji parzyste(14, 75) jest 90.
#include <iostream> using namespace std; // zdefiniuj funkcję int parzyste(int liczba1,int liczba2) { } int main() { // sprawdź działanie funkcji cout << parzyste(4, 9) << " " << parzyste(9, 12) << endl; return 0; }
Wynikiem funkcji parzyste(1, 9999) jest 10000
return parzyste(1, 9999)==10000;
10000
parzyste(1, 9999)
Wynikiem funkcji parzyste(89898, 89901) jest 179800
return parzyste(89898, 89901)==179800;
179800
parzyste(89898, 89901)
Wynikiem funkcji parzyste(10, 1000000) jest 1000010
return parzyste(10, 1000000)==1000010;
1000010
parzyste(10, 1000000)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zdefiniuj funkcję nieparzyste(int n), której wynikiem jest liczba liczb nieparzystych podzielnych przez 7 nie większych od parametru n. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji nieparzyste(30) jest 2.
  • Wynikiem funkcji nieparzyste(35) jest 3.
  • Wynikiem funkcji nieparzyste(100) jest 7.
#include <iostream> using namespace std; // zdefiniuj funkcję int nieparzyste(int n) { } int main() { // sprawdź działanie funkcji cout << nieparzyste(30) << " " << nieparzyste(35) << endl; return 0; }
Wynikiem funkcji nieparzyste(300) jest 21
return nieparzyste(300)==21;
21
nieparzyste(300)
Wynikiem funkcji nieparzyste(999) jest 71
return nieparzyste(999)==71;
71
nieparzyste(999)
Wynikiem funkcji nieparzyste(987621) jest 70544
return nieparzyste(987621)==70544;
70544
nieparzyste(987621)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 3

Zdefiniuj funkcję dwie(int liczba), której wynikiem jest suma cyfr jedności i dziesiątek danej liczby powiększona o 1, gdy suma okazała się liczbą nieparzystą, lub zmniejszona o 1, gdy suma okazała się liczbą parzystą. Parametr liczba przyjmuje wartości z zakresu od 10 do 1 000 000. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji dwie(1284456) jest 12.
  • Wynikiem funkcji dwie(892339) jest 11.
#include <iostream> using namespace std; // zdefiniuj funkcję int dwie(int liczba) { } int main() { // sprawdź działanie funkcji cout << dwie(1284456) << " " << dwie(892339) << endl; return 0; }
Wynikiem funkcji dwie(11) jest 1
return dwie(11)==1;
1
dwie(11)
Wynikiem funkcji dwie(1221) jest 4
return dwie(1221)==4;
4
dwie(1221)
Wynikiem funkcji dwie(3488677) jest 13
return dwie(3488677)==13;
13
dwie(3488677)
Rozwiąż ćwiczenie

Zadanie 1Liczby ciekawe

Zdefiniuj funkcję ciekawa(int n), której parametrem jest liczba naturalna n, a wynikiem – większa od podanego parametru pierwsza liczba nieparzysta, która ma nieparzystą liczbę dzielników. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ciekawa(4) jest 9.
  • Wynikiem funkcji ciekawa(19) jest 25.
#include <iostream> #include <cmath> using namespace std; // zdefiniuj funkcję int ciekawa(int n) { } int main() { // sprawdź działanie funkcji cout << ciekawa(4) << " " << ciekawa(19) << endl;     return 0; }
Wynikiem funkcji ciekawa(1) jest 9
return ciekawa(1)==9;
9
ciekawa(1)
Wynikiem funkcji ciekawa(2) jest 9
return ciekawa(2)==9;
9
ciekawa(2)
Wynikiem funkcji ciekawa(100) jest 121
return ciekawa(100)==121;
121
ciekawa(100)
Rozwiąż ćwiczenie

Zadanie 2Liczby czworacze

Liczby czworacze to liczby pierwsze mające postać: n, n + 2, n + 6 i n + 8. Zdefiniuj funkcję czworacze(int n), której parametrem jest liczba naturalna n, a wynikiem – pierwsza liczba z liczb czworaczych, która jest większa od podanego parametru. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji czworacze(9) jest 11.
  • Wynikiem funkcji czworacze(150) jest 191.
#include <iostream> using namespace std; // zdefiniuj funkcję bool czy_pierwsza(int n) { } // zdefiniuj funkcję int czworacze(int n) { } int main() { // sprawdź działanie funkcji cout << czworacze(9) << " " << czworacze(150) << endl;     return 0; }
Wynikiem funkcji czworacze(1) jest 5
return czworacze(1)==5;
5
czworacze(1)
Wynikiem funkcji czworacze(5) jest 11
return czworacze(5)==11;
11
czworacze(5)
Wynikiem funkcji czworacze(100) jest 101
return czworacze(100)==101;
101
czworacze(100)
Rozwiąż ćwiczenie

Zadanie 3Problem Collatza

Pierwsza liczba ciągu Collatza jest dowolną liczbą naturalną x, a każda kolejna wartość ciągu obliczana jest na podstawie poprzedniej według poniższych zasad:

  • jeśli poprzednia wartość była parzysta, to należy podzielić ją przez 2;
  • jeśli poprzednia wartość była nieparzysta, to należy pomnożyć ją przez 3 i dodać 1.

Przypuszcza się, że niezależnie od której liczby naturalnej zaczniemy, zawsze po pewnej skończonej liczbie kroków otrzymamy liczbę 1. (Udowodniono to dla liczb mniejszych niż kilka tryliardów).

Zdefiniuj funkcję collatz(int x), której parametrem jest liczba naturalna x, czyli wartość początkowa ciągu liczb Collatza, a wynikiem – liczba kroków, po których w ciągu pojawi się liczba 1. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji collatz(10) jest 6.
  • Wynikiem funkcji collatz(15) jest 17.
#include <iostream> using namespace std; // zdefiniuj funkcję int collatz(int x) { } int main() { // sprawdź działanie funkcji cout << collatz(10) << " " << collatz(15) << endl;     return 0; }
Wynikiem funkcji collatz(1) jest 0
return collatz(1)==0;
0
collatz(1)
Wynikiem funkcji collatz(2) jest 1
return collatz(2)==1;
1
collatz(2)
Wynikiem funkcji collatz(20) jest 7
return collatz(20)==7;
7
collatz(20)
Rozwiąż ćwiczenie

Zadanie 4Suma kwadratów cyfr

Polski matematyk Hugo Steinhaus zauważył, że jeśli zsumujemy kwadraty cyfr wybranej liczby naturalnej, a następnie będziemy sumować kwadraty cyfr kolejnych otrzymanych liczb, to w pewnym momencie zawsze otrzymamy 1 lub 4. Zdefiniuj funkcję suma_kwadratow(int n), której wynikiem będzie suma kwadratów cyfr liczby podanej jako parametr. Przetestuj działanie dla liczby 123 i kilku innych liczb początkowych.

#include <iostream> using namespace std; // zdefiniuj funkcję int suma_kwadratow(int n) { } int main() { // sprawdź działanie funkcji cout << suma_kwadratow(123) << " " << suma_kwadratow(14) << endl; cout << suma_kwadratow(17) << " " << suma_kwadratow(50) << endl;     return 0; }
Wynikiem funkcji suma_kwadratow(14) jest 17
return suma_kwadratow(14)==17;
17
suma_kwadratow(14)
Wynikiem funkcji suma_kwadratow(20) jest 4
return suma_kwadratow(20)==4;
4
suma_kwadratow(20)
Wynikiem funkcji suma_kwadratow(100) jest 1
return suma_kwadratow(100)==1;
1
suma_kwadratow(100)
Rozwiąż ćwiczenie

Pytania quizoweBadanie własności liczb całkowitych

Twój wynik to: /3
  • W jakim przedziale algorytm optymalny będzie szukał dzielników liczby 10 000?
  • Jak nazywa się algorytm znajdowania liczb pierwszych w podanym zakresie?
  • Co określa czasowa złożoność obliczeniowa?

Ćwiczenie 1Losowa tablica liczb

Zdefiniuj funkcję losuj(int a, int b) służącą do generowania wartości losowych z podanego zakresu <a, b> i zapisywania ich w 25-elementowej tablicy oraz funkcję wypisz(), która będzie wypisywała wszystkie elementy tablicy.

#include <iostream> #include <cstdlib> #include <ctime> using namespace std; // zdefiniuj funkcję void losuj(int a, int b) { } // zdefiniuj funkcję void wypisz() { } int main() { // sprawdź działanie funkcji losuj(1, 10); wypisz();     return 0; }
Rozwiąż ćwiczenie

Ćwiczenie 2Bąbelek

Porównaj kolejne pary elementów tablicy (pierwszy z drugim, drugi z trzecim itd.). Jeśli pierwszy z nich jest większy niż drugi, to zamień je miejscami. Przeanalizuj dane (czy widzisz pewną prawidłowość w tablicy wynikowej?) i zdefiniowaną poniżej funkcję babelek(), po której wywołaniu zostanie zmodyfikowana dana tablica liczb. Następnie znajdź i popraw błąd w funkcji.

  • Wynikiem funkcji dla int tab[5] = {16, 5, 12, 3, 12} jest {5, 12, 3, 12, 16}.
  • Wynikiem funkcji dla int tab[7] = {1, 16, 18, 3, 16, 9, 9} jest {1, 16, 3, 16, 9, 9, 18}.
#include <iostream> using namespace std; const int N = 7; int tab [N] = {1, 16, 18, 3, 16, 9, 9}; // zdefiniuj funkcję void wypisz() { for (int i = 0; i < N; i++) cout << tab[i] << " "; cout << endl; } // zdefiniuj funkcję void babelek() { for (int i = 0; i < N - 1 ; i++) if (tab[i] < tab[i + 1]) swap(tab[i], tab [i + 1]); } int main() { wypisz(); babelek(); wypisz(); return 0; }
Rozwiąż ćwiczenie

Ćwiczenie 3Sortowanie bąbelkowe

Zdefiniuj funkcję sort_b(), po której wywołaniu dana tablica liczb zostanie posortowana metodą bąbelkową w porządku rosnącym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji dla int tab[5] = {6, 3, 15, 9, 2} jest {2, 3, 6, 9, 15}.
  • Wynikiem funkcji dla int tab[7] = {11, 16, 8, 33, 6, 8, 1} jest {1, 6, 8, 8, 11, 16, 33}.
#include <iostream> using namespace std; // zdefiniuj funkcję void babelek() { } // zdefiniuj funkcję void wypisz() { } // zdefiniuj funkcję void sort_b() { } int main() { // sprawdź działanie funkcji sort_b(); wypisz();     return 0; }
Rozwiąż ćwiczenie

Ćwiczenie 4Wstawianie elementów

Zdefiniuj funkcję wstawianie(int x) wstawiającą odpowiednio parametr x będący liczbą całkowitą do posortowanej tablicy. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji dla
    int tab[6] = {6, 13, 15, 19, 22, 0} i wstawianie(18)  jest {6, 13, 15, 18, 19, 22}.
  • Wynikiem funkcji dla
    int tab[6] = {1, 9, 12, 33, 46, 0}wstawianie(57) jest [1, 9, 12, 33, 46, 57].
#include <iostream> using namespace std; // zdefiniuj funkcję void wstawianie(int x) { } // zdefiniuj funkcję void wypisz() { } int main() { // sprawdź działanie funkcji wstawianie(18); wypisz();     return 0; }
Rozwiąż ćwiczenie

Ćwiczenie 5Sortowanie przez wstawianie

Uzupełnij definicję funkcji sort_w(), po której uruchomieniu tablica tab zostanie posortowana metodą przez wstawianie w porządku rosnącym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji dla int tab[5] = {6, 3, 15, 9, 2} jest {2, 3, 6, 9, 15}.
  • Wynikiem funkcji dla int tab[7] = {11, 16, 8, 33, 6, 8, 1} jest {1, 6, 8, 8, 11, 16, 33}.
#include <iostream> using namespace std; const int N = 7; int tab[N] = {11, 16, 8, 33, 6, 8, 1}; void sort_w() { for(int j = N - 2; j >= 0; j--) { int x = tab[j]; int i = j + 1; while((i < N) and (x > tab[i])) { tab[i - 1] = tab[i]; i++; } tab[i - 1] = x; } } // zdefiniuj funkcję void wypisz() { } int main() { // sprawdź działanie funkcji wypisz(); sort_w(); wypisz(); return 0; }
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zdefiniuj funkcję minimum(int liczba), której wynikiem będzie najmniejsza cyfra liczby podanej jako parametr. Parametrem jest co najmniej dwucyfrowa liczba całkowita dodatnia. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem minimum(19) jest 1.
  • Wynikiem minimum(98989) jest 8.
#include <iostream> using namespace std; // zdefiniuj funkcję int minimum(int liczba) { } int main() { // sprawdź działanie funkcji cout << minimum(19) << " " << minimum(98989) << endl;     return 0; }
Wynikiem funkcji minimum(777777777) jest 7
return minimum(777777777)==7;
7
minimum(777777777)
Wynikiem funkcji minimum(9876543210) jest 0
return minimum(9876543210)==0;
0
minimum(9876543210)
Wynikiem funkcji minimum(12345678987654321) jest 1
return minimum(12345678987654321)==1;
1
minimum(12345678987654321)
Rozwiąż ćwiczenie

Zadanie 1Zliczanie

Zdefiniuj funkcję ile_liczb(), której wynikiem jest liczba różnych liczb w tablicy podanej jako parametr. Parametrem jest niepusta tablica co najwyżej 100 liczb z zakresu od 0 do 10. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile_liczb() dla tablicy {4, 1, 1, 4} jest 2.
  • Wynikiem funkcji ile_liczb() dla tablicy {6, 6, 3, 7, 1, 7, 4, 4, 0, 3} jest 6.
#include <iostream> using namespace std; // zdefiniuj funkcję int ile_liczb() { } int main() { // sprawdź działanie funkcji cout << ile_liczb();     return 0; }
Rozwiąż ćwiczenie

Pytania quizoweSortowanie bąbelkowe i przez wstawianie

Twój wynik to: /3
  • W programie zadeklarowano tablicę int tab[5] = {-3, 4, -12, 0, 3} oraz wykonano operację tab[1] = tab[0]. Jaką wartość ma pierwszy element tablicy?
  • W programie zadeklarowano tablicę int tab[5] = {-3, 4, -12, 0, 3}. Jaką wartość ma element o indeksie 3?
  • W programie wykonano poniższe operacje.

    int x, y;
    x = 5; y = 3;
    x = y; y = x;

    Ile wynoszą wartości zmiennych xy ?

Ćwiczenie 1Trzy monety

Dysponujesz nieograniczoną liczbą monet o nominałach 5, 3 i 1 i masz wydać resztę przy użyciu minimalnej liczby monet. Zdefiniuj funkcję trzy(int kwota), której wynikiem będzie minimalna liczba monet potrzebnych do wydania kwoty podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji trzy(11) jest 3.
  • Wynikiem funkcji trzy(99) jest 21.
#include <iostream> using namespace std; // zdefiniuj funkcję int trzy(int kwota) { } int main() { // sprawdź działanie funkcji cout << trzy(11) << " " << trzy(99) << endl;     return 0; }
Wynikiem funkcji trzy(1) jest 1
return trzy(1)==1;
1
trzy(1)
Wynikiem funkcji trzy(22) jest 6
return trzy(22)==6;
6
trzy(22)
Wynikiem funkcji trzy(35) jest 7
return trzy(35)==7;
7
trzy(35)
Rozwiąż ćwiczenie

Ćwiczenie 2Wiele monet

Dysponujesz nieograniczoną liczbą monet o nominałach 20, 10, 5, 2 i 1 i masz wydać resztę przy użyciu minimalnej ich liczby. Zdefiniuj funkcję wiele(int kwota), której wynikiem będzie minimalna liczba monet potrzebnych do wydania kwoty podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów. 

  • Wynikiem funkcji wiele(11) jest 2.
  • Wynikiem funkcji wiele(99) jest 8.
#include <iostream> using namespace std; // zdefiniuj funkcję int wiele(int kwota) { } int main() { // sprawdź działanie funkcji cout << wiele(11) << " " << wiele(99) << endl;     return 0; }
Wynikiem funkcji wiele(1) jest 1
return wiele(1)==1;
1
wiele(1)
Wynikiem funkcji wiele(22) jest 2
return wiele(22)==2;
2
wiele(22)
Wynikiem funkcji wiele(35) jest 3
return wiele(35)==3;
3
wiele(35)
Rozwiąż ćwiczenie

Ćwiczenie 3Ograniczona liczba monet

Dysponujesz podaną liczbą monet o nominałach 20, 10, 5, 2 i 1. Należy wydać resztę przy użyciu minimalnej ich liczby. Zdefiniuj funkcję monety(int kwota, int sztuki), której wynikiem będzie minimalna liczba monet potrzebnych do wydania kwoty podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji monety(11, 100) jest 2.
  • Wynikiem funkcji monety(99, 3) jest 9.
#include <iostream> using namespace std; // zdefiniuj funkcję int monety(int kwota, int sztuki) { } int main() { // sprawdź działanie funkcji cout << monety(11, 100) << " " << monety(99, 3) << endl;     return 0; }
Wynikiem funkcji monety(12, 90) jest 2
return monety(12, 90)==2;
2
monety(12, 90)
Wynikiem funkcji monety(109, 5) jest 8
return monety(109, 5)==8;
8
monety(109, 5)
Wynikiem funkcji monety(19, 7) jest 4
return monety(19, 7)==4;
4
monety(19, 7)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zaopatrzeniowiec ma kupić cukier, mąkę i ziemniaki. Chce załadować jak najwięcej do samochodu, ale tak, by nie przekroczyć jego udźwigu wynoszącego x kg i przewieźć jak najmniejszą liczbę opakowań. Zdefiniuj funkcję zakupy(int x), której parametrem jest udźwig, a wynikiem – łączna liczba opakowań towarów. Worki cukru ważą 2 kg, mąki 5 kg i ziemniaków 12 kg. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zakupy(127) jest 12.
  • Wynikiem funkcji zakupy(100) jest 10.
#include <iostream> using namespace std; // zdefiniuj funkcję int zakupy(int x) { } int main() { // sprawdź działanie funkcji cout << zakupy(127) << " " << zakupy(100) << endl;     return 0; }
Wynikiem funkcji zakupy(23) jest 3
return zakupy(23)==3;
3
zakupy(23)
Wynikiem funkcji zakupy(129) jest 13
return zakupy(129)==13;
13
zakupy(129)
Wynikiem funkcji zakupy(2) jest 1
return zakupy(2)==1;
1
zakupy(2)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zaopatrzeniowiec ma kupić cukier, mąkę i ziemniaki. Chce załadować jak najwięcej do samochodu, ale tak, by nie przekroczyć jego udźwigu wynoszącego x kg i przewieźć jak najmniejszą liczbę opakowań. Dodatkowo nie może kupić więcej niż ile opakowań jednego towaru. Zdefiniuj funkcję zakupy(int x, int ile), której parametrami są udźwig i maksymalna liczba opakowań jednego towaru, a wynikiem jest łączna liczba opakowań towarów. Worki cukru ważą 2 kg, mąki 5 kg i ziemniaków 12 kg. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zakupy(127, 9) jest 14.
  • Wynikiem funkcji zakupy(127, 12) jest 12.
#include <iostream> using namespace std; // zdefiniuj funkcję int zakupy(int x, int ile) { } int main() { // sprawdź działanie funkcji cout << zakupy(127, 9) << " " << zakupy(127, 12) << endl;     return 0; }
Wynikiem funkcji zakupy(23, 5) jest 3
return zakupy(23, 5)==3;
3
zakupy(23, 5)
Wynikiem funkcji zakupy(29, 3) jest 3
return zakupy(29, 3)==3;
3
zakupy(29, 3)
Wynikiem funkcji zakupy(2, 5) jest 1
return zakupy(2, 5)==1;
1
zakupy(2, 5)
Rozwiąż ćwiczenie

Pytania quizoweMetoda zachłanna i dynamiczna

Twój wynik to: /3
  • Czy dla każdego typu problemów algorytmy zachłanne dają optymalne rozwiązanie?
  • Na czym polega dynamiczne podejście do rozwiązania?
  • Na czym polega w algorytmice podejście zachłanne? Dokończ zdanie tak, aby było prawdziwe.

    W celu wyznaczenia rozwiązania w każdym kroku…

QuizAlgorytmika i programowanie w C++

Twój wynik to: /6
  • Wskaż zdania prawdziwe na temat pętli for i while.
  • Sito Eratostenesa to algorytm znajdowania liczb pierwszych z przedziału od 2 do n. Na początek wykreślamy wszystkie wielokrotności liczby 2 większe od niej samej. Powtarzamy wykreślanie wielokrotności kolejnej niewykreślonej liczby, czyli 3, 5 itd. Jak długo musimy kontynuować wykreślanie, aby zostały wszystkie liczby pierwsze z przedziału od 2 do n?

    Aż liczba, której wielokrotność wykreślamy, będzie większa niż

  • Funkcja, która sprawdza, czy liczba podana jako parametr jest liczbą pierwszą, nie daje prawidłowych wyników. W czym tkwi problem?

  • Dokończ zdanie tak, aby było prawdziwe.

    Podczas testowania algorytmów sortowania można wykorzystać

  • Jaki będzie wynik funkcji dla parametru 1234567987?

  • Jako rozwiązanie zadania uczniowie napisali poniższą funkcję.

    Co jest wynikiem działania funkcji dla danej liczby naturalnej?