You are on page 1of 3

#include <iostream> using namespace std; // Deklaracija varijabli prije svih funkcija radi izbjegavanja 'undeclared identifier' errora

int br_redova = 0; int br_tab_tekuci; int error_izlaz = 0; int end_izlaz = 0; int tekuci_red; int i, k, j, a, y; // za for-petlje --> nista posebno znacajno int n; // redni broj znamenke retka (s lijeva na desno) // memoriranje znamenki prethodnog i tekueg reda /* drat na 0 radi onih nevidljivih nula na rubovima! */ int p[10]; int t[10]; int temp_p[10]; // privremeno spremiste za prethodne brojeve (da se tokom prebacivanja 't-->p' ne poremete 'p')

void alg_trokut() {

// KONACNO ISCRTAVANJE PREMA ALGORITMU TROKUTA /* REDOVI */ for (tekuci_red = 1; tekuci_red <= br_redova; tekuci_red++) { /* TABOVI (unutar reda) */ br_tab_tekuci = br_redova - tekuci_red; for (i = 1; i <= br_tab_tekuci; i++) // pazit da ne prominin inic. u i = 0 -

ubijanje logike

{ cout << "\t"; /* BROJEVI U RETKU

} */

// oce rec da je broj elemenata u redu jednak rednom broju reda n = tekuci_red; for (j = 1; j <= n; j++) { // rucno ispisivanje prvog i drugog reda; TABOVI su sredeni prijasnom 'for' if (tekuci_red == 1) { cout << "1"; break; } else if (tekuci_red == 2) { cout << "1\t\t1"; break; } else { // MATEMATIKO GENERIRANJE // default - 3. linija if (tekuci_red == 3) { p[1] = 1; p[2] = 1; } /* mat. logika t[j] = p[j-1] + */ p[j];

cout << t[j] << "\t\t"; temp_p[j] = t[j]; /* OBAVEZNO! upisivanje vrijednosti direktno u u p[j] --> overwrite preko prethodnih vrijednosti koje se koriste za --> prijenos vrijednosti po zavrsetku ispisa tekuceg } }

ispis ovog reda! retka! */

/* prijenos vrijednosti za slijedeci red */ if (tekuci_red >= 3) // nema potribe prije 3. retka { for (y = 1; y <= n; y++)

{ } }

p[y] = temp_p[y];

// KRAJ FOR-a ZA REDAK cout << endl << endl; // obavezno } } void g_trokut() // funkcija za generiranje trokuta { cout << endl << "-----------------------------------------------------------------------" << endl; switch (br_redova) { case 1: cout << "\t1" << endl; cout << "-----------------------------------------------------------------------" << endl; case 2: cout << "\t1" << endl << "1\t\t1" << endl; cout << "-----------------------------------------------------------------------" << endl; break; default: alg_trokut(); // kod za algoritamsko iscrtavanje je u funkciji --> preglednost break;

koda endl;

cout << "-----------------------------------------------------------------------" << // ...trokut je upravo iscrtan, idemo dalje - program se vraca u main() odakle je break;

pozvan g_trokut() } }

void main() { // workaround --> nizovi p[], t[], temp_p[] na '0' for (k = 0; k <= 10; k++){ p[k] = 0; t[k] = 0; temp_p[k] = 0; } /* ..:: POETAK PROGRAMA ::.. */ cout << "-- PROGRAM ZA GENERIRANJE PASCALOVOG TROKUTA --" << endl << endl; cout << "Unesite broj redova (od 1 do 9) za koje ce se generirati Pascalov trokut:" << endl << "[0 za izlaz iz programa]" << endl; cin >> br_redova; if (br_redova >=1 && br_redova <= 9) { g_trokut(); // izbjegavanje guve u kodu // ...nakon iscrtavanja -> cout << endl << "Trokut je iscrtan!" << endl << "Ukoliko zelite ponovno pokrenuti program unesite 1." << endl << "[Za izlaz unesite bilo sto drugo.]" << endl; cin >> end_izlaz; if (end_izlaz == 1){ system("cls"); main(); } } else if (br_redova != 0) { cout << endl << endl << "Broj koji ste unijeli ne odgovara zadnom rasponu." << endl << "Ukoliko zelite ponovno pokusati, unesite broj \"1\". Za izlaz unesite bilo koji drugi broj." << endl; cin >> error_izlaz; if (error_izlaz == 1) { system("cls"); main(); } } /* uvjet br_redova == 0 za izlazak nije potreban: main() ce sam po sebi zavrsit u tom slucaju --> kraj funkcije */

You might also like