Ćwiczenie 0

W edytorze zakodowano w języku C++ algorytm wypisywania od końca cyfr danej liczby. Porównaj ten algorytm z zamieszczonym poniżej algorytmem zamiany liczby dziesiątkowej na system dwójkowy.

  1. Podaj liczbę w systemie dziesiątkowym.
  2. Jeżeli liczba jest równa 0, to wypisz 0 i zakończ działanie algorytmu.
  3. Przypisz do zmiennej pom (zapamiętywane kolejne cyfry) napis pusty.
  4. Dopóki liczba > 0, wykonuj:
    • dopisz do pom wartość liczba % 2;
    • przypisz do liczba wartość liczba // 2.
  5. Wypisz pom.
#include <iostream> using namespace std; void cyfry(int liczba) { while (liczba > 0) { cout << liczba % 10 << endl; liczba = liczba / 10; } cout << "\n"; } int main() { cyfry(1234); cyfry(243452141); return 0; }
Rozwiąż ćwiczenie

Ćwiczenie 1Z systemu dwójkowego na dziesiątkowy

Zdefiniuj funkcję na10(string dana), której parametrem jest liczba binarna w postaci napisu, a wynikiem – odpowiadająca jej liczba w systemie dziesiątkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na10("101010") jest 42.
  • Wynikiem funkcji na10("110101") jest 53.
#include <iostream> #include <cmath> using namespace std; int na10(string dana) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji na10("1001") jest 9
return na10("1001")==9;
9
na10("1001")
Wynikiem na10("10011") jest 19
return na10("10011")==19;
19
na10("10011")
Wynikiem funkcji na10("1111100111") jest 999
return na10("1111100111")==999;
999
na10("1111100111")
Rozwiąż ćwiczenie

Ćwiczenie 2Z systemu dziesiątkowego na dwójkowy

Zdefiniuj funkcję na2(int liczba), której parametrem jest liczba dziesiętna, a wynikiem – odpowiadająca jej liczba zapisana jako napis w systemie dwójkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na2(42) jest "101010".
  • Wynikiem funkcji na2(53) jest "110101".
#include <iostream> using namespace std; #include <cmath> string na2(int liczba) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji na2(9) jest 1001
return na2(9)=="1001";
1001
na2(9)
Wynikiem funkcji na2(19) jest 10011
return na2(19)=="10011";
10011
na2(19)
Wynikiem funkcji na2(999) jest 1111100111
return na2(999)=="1111100111";
1111100111
na2(999)
Rozwiąż ćwiczenie

Ćwiczenie 3Z systemu ósemkowego na dziesiątkowy

Zdefiniuj funkcję na10(string dana), której parametrem jest liczba zapisana w systemie ósemkowym, a wynikiem – odpowiadająca jej liczba zapisana w systemie dziesiątkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na10("174") jest 124.
  • Wynikiem funkcji na10("362374") jest 124156.
#include <iostream> #include <cmath> using namespace std; int na10(string dana) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji na10("11") jest 9
return na10("11")==9;
9
na10("11")
Wynikiem funkcji na10("23") jest 19
return na10("23")==19;
19
na10("23")
Wynikiem funkcji na10("1747") jest 999
return na10("1747")==999;
999
na10("1747")
Rozwiąż ćwiczenie

Ćwiczenie 4Z systemu dziesiątkowego na ósemkowy

Zdefiniuj funkcję na8(int liczba), której parametrem jest liczba dziesiętna, a wynikiem – odpowiadająca jej liczba zapisana w systemie ósemkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji na8(124) jest "174".
  • Wynikiem funkcji na8(124156) jest "362374".
#include <iostream> using namespace std; #include <cmath> string na8(int liczba) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji na8(9) jest 11.
return na8(9)=="11";
11
na8(9)
Wynikiem funkcji na8(19) jest 23.
return na8(19)=="23";
23
na8(19)
Wynikiem funkcji na8(999) jest 1747.
return na8(999)=="1747";
1747
na8(999)
Rozwiąż ćwiczenie

Zadanie 1Bintooc

Napisz funkcję bintooct(string dana), której parametrem jest liczba zapisana w systemie dwójkowym, a wynikiem – odpowiadająca jej liczba zapisana w systemie ósemkowym. Postaraj się wykorzystać fakt, że 8 jest potęgą dwójki. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji bintooct("101010") jest "52".
  • Wynikiem funkcji bintooct("110101") jest "65".
#include <iostream> using namespace std; string bintooct(string dana) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji bintooct("1001") jest 11.
return bintooct("1001")=="11";
11
bintooct("1001")
Wynikiem funkcji bintooct("10011") jest 23.
return bintooct("10011")=="23";
23
bintooct("10011")
Wynikiem funkcji bintooct("1111100111") jest 1747.
return bintooct("1111100111")=="1747";
1747
bintooct("1111100111")
Rozwiąż ćwiczenie

Zadanie 2Octtobin

Napisz funkcję octtobin(string dana), której parametrem jest liczba zapisana w systemie ósemkowym, a wynikiem – odpowiadająca jej liczba zapisana w systemie dwójkowym. Postaraj się wykorzystać fakt, że 8 jest potęgą dwójki. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji octtobin("52") jest "101010".
  • Wynikiem funkcji octtobin("65") jest "110101".
#include <iostream> using namespace std; string octtobin(string dana) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji octtobin("11") jest 1001.
return octtobin("11")=="1001";
1001
octtobin("11")
Wynikiem funkcji octtobin("23") jest 10011.
return octtobin("23")=="10011";
10011
octtobin("23")
Wynikiem funkcji octtobin("1747") jest 1111100111.
return octtobin("1747")=="1111100111";
1111100111
octtobin("1747")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Obrazki można zapisać za pomocą zer i jedynek jako napis złożony ze słów, np. litera H to „010 000 010”. Negatyw obrazka to napis z zerami pozamienianymi na jedynki i jedynkami pozamienianymi na zera, czyli „101 111 101”.

Napisz funkcję negatyw(string kod), której wynikiem będzie kod negatywu danego obrazka. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji negatyw("010 000 010") jest "101 111 101".
  • Wynikiem funkcji negatyw("101 111 101") jest "010 000 010".
#include <iostream> using namespace std; string negatyw(string kod) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji negatyw("1001") jest 0110.
return negatyw("1001")=="0110";
0110
negatyw("1001")
Wynikiem funkcji negatyw("10011") jest 01100.
return negatyw("10011")=="01100";
01100
negatyw("10011")
Wynikiem funkcji negatyw("1111100111") jest 0000011000.
return negatyw("1111100111")=="0000011000";
0000011000
negatyw("1111100111")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Napisz funkcję wieksza(string liczba1, string liczba2), której wynikiem jest większa z liczb podanych jako parametr lub dowolna z nich, gdy liczby są równe. Liczby są zapisane w systemie dwójkowym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji wieksza("101","11") jest "101".
  • Wynikiem funkcji wieksza("101","1111") jest "1111".
#include <iostream> using namespace std; string wieksza(string liczba1, string liczba2) { //zdefiniuj funkcję i sprawdź jej działanie
Wynikiem funkcji wieksza("101", "110") jest 110.
return wieksza("101", "110")=="110";
110
wieksza("101", "110")
Wynikiem funkcji wieksza("1011", "1011") jest liczby są równe.
return wieksza("1011", "1011")=="1011";
1011
wieksza("1011", "1011")
Wynikiem funkcji wieksza("110", "101") jest 110.
return wieksza("110", "101")=="110";
110
wieksza("110", "101")
Rozwiąż ćwiczenie