Programski jezik C++ - Vježbe - 5. dio Ak. god. 2017/2018 Doc. Dr. Sc. Marko Maliković
Zadatak Napišite program koji će za upisani cijeli broj ispisati koliko puta se u tom broju pojavljuje znamenka 0, koliko puta znamenka 1, koliko puta znamenka 2, ... i koliko puta znamenka 9
Rješenje (BEZ UPORABE NIZOVA JER IH JOŠ NISMO RADILI) 1. dio programa: #include <iostream> using namespace std; int main() { int nula, jedinica, dvojka, trojka, cetvorka, petica, sestica, sedmica, osmica, devetka; nula=0; jedinica=0; dvojka=0; trojka=0; cetvorka=0; petica=0; sestica=0; sedmica=0; osmica=0; devetka=0; int n; cout << "Upisite cijeli broj: "; cin >> n; while (n>0) { switch (n%10){ case 0: nula++;break; case 1: jedinica++;break; case 2: dvojka++;break; case 3: trojka++;break; case 4: cetvorka++;break; case 5: petica++;break; case 6: sestica++;break; case 7: sedmica++;break; case 8: osmica++;break; case 9: devetka++;break; } n=n/10;
Rješenje (BEZ UPORABE NIZOVA JER IH JOŠ NISMO RADILI) 2. dio programa: cout << "Nula ima " << nula << endl; cout << "Jedinica ima " << jedinica << endl; cout << "Dvojki ima " << dvojka << endl; cout << "Trojki ima " << trojka << endl; cout << "Cetvorki ima " << cetvorka << endl; cout << "Petica ima " << petica << endl; cout << "Sestica ima " << sestica << endl; cout << "Sedmica ima " << sedmica << endl; cout << "Osmica ima " << osmica << endl; cout << "Devetka ima " << devetka << endl; return 0; }
Zadatak Napišite program koji računa zbroj znamenki za neki cijeli broj
Rješenje #include <iostream> using namespace std; int main() { int n, zbroj; zbroj = 0; cout << "Upisite cijeli broj: "; cin >> n; while (n>0) { zbroj = zbroj+(n%10); // Zbroj povečavamo za prvu desnu znamenku n=n/10; // Broj skraćujemo za prvu desnu znamenku } cout << "Zbroj znamenki upisanog broja je " << zbroj << endl; return 0;
Zadatak - Tablica množenja - #include <iostream> using namespace std; int main() { int i, j; for (i = 1; i <= 10; ++i){ for (j = 1; j <= 10; ++j) {cout << i * j;} cout << endl;} return 0; } Međutim, gornji program će kao izlaz dati: 12345678910 2468101214161820 36912151821242730 481216202428323640 5101520253035404550 6121824303642485460 7142128354249566370 8162432404856647280 9182736455463728190 102030405060708090100 Zato jer nismo ni na koji način razdvojili izračunate brojeve
Rješenje Što trebamo? Upotrijebiti ćemo manipulator setw() Trebamo dobiti ispis brojeva u pravilnim stupcima (ne možemo razdvajati brojeve razmacima jer nisu svi brojevi jednake širine) Upotrijebiti ćemo manipulator setw() setw() određuje koliki je najmanji prostor predviđen za ispis podatka koji slijedi u izlaznom toku Varijanta setw(5) određuje da je taj prostor jednak 5 Manipulator setw() je definiran u datoteci iomanip Znači da na početku programa moramo uključiti i datoteku iomanip
Zadatak - Tablica množenja - #include <iostream> #include <iomanip> using namespace std; int main() { int i, j; for (i = 1; i <= 10; ++i){ for (j = 1; j <= 10; ++j) {cout << setw(5) << i * j;} cout << endl;} return 0; } 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 I sada program kao izlaz daje ovo
Zadatak Napišite program koji će ispisati tablicu množenja brojeva od 1 do 10 ali u slijedećem obliku: 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 10 20 30 40 50 60 70 80 90 100
Rješenje #include <iostream> #include <iomanip> using namespace std; int main() { int i, j; for (i = 1; i <= 10; ++i){ for (j = 1; j <= i; ++j) {cout << setw(5) << i * j;} cout << endl;} return 0; }
Zadatak Napišite program u kojem se računa približna vrijednost broja e (baze prirodnog logaritma) prema slijedećoj formuli: 𝑒= 1 0! + 1 1! + 1 2! + 1 3! + 1 4! +…+ 1 𝑛! +… Petlju za izračunavanje treba ponavljati sve do broja n kojeg upisuje korisnik
Zadatak Za prirodni broj d definiran je niz 𝑎 0 = 1, 𝑎 𝑛 +1= 𝑎 𝑛 2 𝑎𝑘𝑜 𝑗𝑒 𝑎 𝑛 𝑝𝑎𝑟𝑎𝑛, 𝑎 𝑛 +𝑑 𝑖𝑛𝑎č𝑒. Pronađite što više brojeva d takvih da postoji prirodni broj n za koji je 𝑎 𝑛 =1
Rješenje #include <iostream> #include <conio.h> using namespace std; int main() { int n, a0, a1, a2; bool nadjen_n; for (int d=1;d<=1000;d++) nadjen_n=false; n=1; a0=1; while (nadjen_n==false && n<1000000) if (a0%2==0) a2=a1; a1=a0/2; a0=a2; } else a1=a0+d; if (a1==1){ nadjen_n=true; cout << "Broj d = " << d << endl; n++; return 0;