Fakultet elektrotehnike, strojarstva i brodogradnje Sveucilista u Splitu Studij racunarstva Kolegij: Programiranje 1 Sk.god. 2004/2005 Student/ica: Petar Šolić_____________________________ DOMACI RAD - VJEZBA 3 1. Kratko opisite a) Koja je razlika izmedju printf i puts funkcija? b) Koja je razlika izmedju scanf i gets funkcija? c) Sto omogucuju getchar i putchar funkcije? d) Koja je uloga upravljackog niza (engl. control string; npr. %7d) u printf funkciji? e) U cemu se razlikuje primjena upravljackog niza kod printf i scanf funkcija? 2. Odgovorite na sljedeca pitanja a) C program sadrzi: #include char a, b, c; Napisite getchar naloge koji ce omoguciti unos podataka za a, b i c. Napisite putchar naloge koji ce omoguciti ispis podataka za a, b i c. b) C program sadrzi: #include int i, j, k; Napisati scanf funkciju koja ce omoguciti ucitavanje ovih podataka, pretpostavljajuci da je i decimalni, j oktalni, a k heksadecimalni cijeli broj. c) C program sadrzi: #include int a, b; float x, y; Neka je a = 12, b = -8, x = 0.011 i y = -2.2x10^6 (puta deset na sestu). Napisite kako bi trebalo upisati podatke za sljedece scanf funkcije: scanf ("%d %d %f %f", &a, &b, &x, &y); scanf ("%2d %3d %8f %8e", &a, &b, &x, &y); d) C program sadrzi: float a = 2.5, B = 0.0005, c = 3000.0; Napisite izlazne rezultate za sljedece printf naloge: printf ("%f %f %f", a, b, c); printf ("%8f %8.4f %8.4f", a, b, c); printf ("%3e %12e %e", a, b, c); printf ("%-10f %010f %10f", a, b, c); printf ("%g %g %g", a, b, c); 3. Izradite racunalni program koji ce pretvarati iznose eura u kune. 4. Izradite racunalni program koji ce izracunavati obujam valjka polumjera r i visine h. ---------------------------------------------------------------------- ODGOVORI / RJESENJA ---------------------------------------------------------------------- 1. a) Glavna razlika izmedju printf i puts funkcije je u tome sto se u printf uz znakovni niz mogu stavljati opisnici formata,dok se u puts funkciju ne mogu stavljati opisnici formata vec samo znakovni niz.Nakon koristenja printf funkcije potrebno je na kraju znakovnog niza da bi presli u novi red upisati znak "\n", dok se nakon koristenja puts funkcije automatski prelazi u novi red. b) Razlika izmedju scanf i gets funkcije je u tome sto scanf uzima veci broj argumenata i sprema ih u odredjene memorijske lokacije koje smo inicijalizirali na pocetku programa,dok funkcija gets uzima cijeli znakovni niz do znaka "space" ili "return" te ih sprema na odredjenu memorijsku lokaciju takodjer inicijalizirana na pocetku programa. c) Getchar uzima znak i stavlja ga u tip podatka "char" inicijaliziran na pocetku , dok putchar uzima znak i stavlja ga u tip podatka "char". d) Uloga upravljackog niza (engl. control string) odnosno opisnika formata sastoji se u tome da se njegovim upisivanjem (npr. %7d) omogucuje ostavljanje mjesta na tom polozaju (u ovom slucaju 7 decimalnih mjesta za podatke tipa int(oznaka d)).Opisnici formata se koriste tako da se upisu kao dio znakovnog niza,no nakon kraja znakovnog niza se unose argumenti koji ce se upisati na mjesto opisnika formata. e) Upravljacki niz kod printf funkcije sluzi kao opisnik formata,dok je on u scanf sam argument. 2. a) #include main() { char a, b, c; a=getchar(); getchar(); b=getchar(); getchar(); c=getchar(); getchar(); putchar(a); putchar(b); putchar(c); return 0; } b) #include main() { int i, j, k; scanf("%i %j %k",&i,&j,&k); return 0; } c) #include int a, b; float x, y; Neka je a = 12, b = -8, x = 0.011 i y = -2.2x10^6 (puta deset na sestu). Napisite kako bi trebalo upisati podatke za sljedece scanf funkcije: 1.)scanf ("%d %d %f %f", &a, &b, &x, &y); 2.)scanf ("%2d %3d %8f %8e", &a, &b, &x, &y); 1.) Podaci a,b,x ce biti pohranjeni u obliku kao sto su i zadani,dok ce se y pohraniti u float obliku kao cijeli broj bez eksponenta odnosno kao -2200000. 2.) Podaci a,b,x ce biti pohranjeni u obliku kao sto su i zadani,dok ce se y pohraniti u eksponencijalnom obliku kao -2.2e+006 d) #include main() { float a = 2.5, b = 0.0005, c = 3000.0; printf ("%f %f %f\n", a, b, c); printf ("%8f %8.4f %8.4f\n", a, b, c); printf ("%3e %12e %e\n", a, b, c); printf ("%-10f %010f %10f\n", a, b, c); printf ("%g %g %g\n", a, b, c); return 0; } IZLAZ : 2.500000 0.000500 3000.000000 2.500000 0.0005 3000.0000 2.500000e+00 5.000000e-04 3.000000e+03 2.500000 000.000500 3000.000000 2.5 0.0005 3000 3) #include main () { float a ,c ,d ; const float b=7.52 ; printf("\n\n\tPROGRAM KOJI PRETVARA EURE U KUNE\n\n"); printf("\n\t unesite iznos u eurima\n\n"); scanf("%f" , &a); printf("\n\t iznos u kunama = %8.4f kn.\n\n",a*b); printf("\n Ako niste zadovoljni prilozenim tecajem onda\n"); printf("\t unesite prvo iznos u eurima pa potom zeljeni tecaj\n"); scanf("%f%f" , &c,&d); printf("\n\t iznos u kunama = %8.4f kn.",c*d); return 0 ; } 4) #include main () { float r,h; const float pi=3.14; printf("\n\t Program koji racuna volumen valjka\n"); printf("\n\n\t Unesite polumjer valjka\n"); scanf("%f",&r); printf("\n\n\t Unesite visinu valjka\n"); scanf("%f",&h); printf("\n\n\t Volumen valjka iznosi %f",2*r*pi*h); return 0; }