Centar za edukaciju-BiH



#1 28.12.2010 21:29
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:C rijeseni zadaci
Napravite C-program koji ucitava potrošnju elektricne energije u KWh (velika tarifa(VT) i mala tarifa(MT)) i pripadajuce cijene po KWh (cijena za malu tarifu i cijena za veliku tarifu).
Kao izlaz program daje:
- ukupnu potrošnju u KWh;
- novcani iznos racuna;
- udio velike tarife i male tarife u ukupnoj potrošnji. Na primjer, izlaz iz programa treba biti sljedeceg formata: Ukupna potrosnja je 234.25 KWh.
Udio velike tarife u ukupnoj potrosnji je 25 %.
Udio male tarife u ukupnoj potrosnji je 75%. Iznos racuna je 25.45 KM.

RJEŠENJE:

PreuzmiIzvorni kd (C#):
  1. # include <stdio.h>
  2. int main () {
  3. // Definisanje potrebnih varijabli
  4. float VT,MT,CV,CM,UKUPNO,RACUN,UDIOM,UDIOV;
  5. // Unos male tarife, velike tarife, cijene male tarife i cijene velike tarife printf("\n Unesi potrosnju po velikoj tarifi (KWh): ");
  6. scanf("%f", &VT);
  7. printf("\n Unesi potrosnju po maloj tarifi (KWh): ");
  8. scanf("%f", &MT);
  9. printf("\n Cijena za veliku tarifu po jednom Kwh: ");
  10. scanf("%f", &CV);
  11. printf("\n Cijena za malu tarifu po jednom Kwh: ");
  12. scanf("%f", &CM);
  13. // Racunanje ukupne potrosnje
  14. UKUPNO=VT+MT;
  15. // Racunanje cijene ukupne potrosnje (cijena po maloj tarifi + cijena po
  16. // velikoj tarifi) RACUN=VT*CV+MT*CM;
  17. // Izracunava udio velike i male tarife u ukupnoj potrosnji (procenat) UDIOM=(MT/UKUPNO)*100;
  18. UDIOV=(VT/UKUPNO)*100;
  19. // Ispis rezultata
  20. printf ("\n Ukupna potrosnja elektricne energije je: %.f KWh", UKUPNO); printf ("\n Ukupna cijena elektricne energije je: %.f KM", RACUN); printf ("\n Udio velike tarife u potrosnji je: %.f procenata", UDIOV); printf ("\n Udio male tarife u potrosnji je: %.f procenata", UDIOM);
  21. // Kraj programa getch(); return 0;
  22. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 28.12.2010 22:23 od strane zxz. ↑  ↓

#2 28.12.2010 21:32
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: C rijeseni zadaci
Napisati program koji ce izracunati presjek skupova S1 i S2. Skupovi S1 i S2 definirani su intervalima realnih brojeva:
S1=[A, B] S2=[C, D].
Na primjer, za slijedeci ulaz: A=3, B=9, C=7, D=11
program kao izlaz treba dati: Rezultantni interval je REZ=[7, 9].

RJEŠENJE:
PreuzmiIzvorni kd (C#):
  1. #include <stdio.h>
  2. main() {
  3. // Definisanje varijabli float A,B,C,D,MAX,MIN;
  4. // Unos skupova
  5. printf("\n Unesi prvi skup X[A,B] A>B: ");
  6. scanf("%f,%f", &A,&B);
  7. printf("\n Unesi drugi skup Y[C,D] C>D: ");
  8. scanf("%f,%f", &C,&D);
  9.  
  10. /* Logika zadatka je sljedeca: Prvo moramo pretpostaviti da je prvi broj intervala veci ili jednak drugom, A>=B i C>=D, jer ako ovo ne vrijedi interval nije matematicki ispravan (taj uslov nismo ispitivali da nebi komplikovali zadatak). Presjek skupa ce biti neki interval [MIN,MAX].
  11. Uslov da zadatak ima RJEŠENJE je da je B < C kao i D < A sto je i logicno jer
  12. u suprotnom presjeka nema!
  13. Broj MIN je ustvari jedan od brojeva A ili C (manji broj od ova 2 broja),
  14. a MAX je manji broj od brojeva B i D. Ako je A=C ili B=D uzima se vrijednost pod ELSE ali tada nam je svakako svejedno koja ce se uzeti vrijednost kao MIN ili MAX jer je tada A=C odnosno B=D */
  15.  
  16. if (A>C) MAX=A; else MAX=C;
  17. if (B<D) MIN=B; else MIN=D;
  18. if ((B<C)||(A>D)) printf("\n Nema presjeka!"); else {
  19. printf ("\n Presjek je: [%.f,%.f]", MAX, MIN); }
  20. // Kraj programa getch();
  21. return 0;
  22. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 08.01.2011 19:30 od strane zxz. ↑  ↓

#3 28.12.2010 21:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: C rijeseni zadaci
Napisati program koji ucitava koeficijente a, b i c realnog tipa. Ti koeficijenti definiraju funkciju f(x):
f(x)=ax +bx+c
Program zatim provjerava da li su ti keficijenti u rasponu -10 do
Ako nisu, program ispisuje poruku: Koeficijenti a, b i c nisu u zadanom rasponu.
Ako koeficijenti a, b i c jesu u zadanom rasponu, program kao izlaz daje vrijednost prve derivacije u tacki x. Tacka x se takodjer unosi sa standardnog ulaza.
Na primjer, ako je ulaz a=1, b=2, c=1, x=1 program kao izlaz
daje: Prva derivacija u tacki x=1 je 4.
RJEŠENJE:
PreuzmiIzvorni kd (C#):
  1. # include <stdio.h>
  2. int main () {
  3. // Definisanje varijabli float a,b,c,x,izvod;
  4. // Unos koeficijenata a,b,c
  5. printf ("Unesi koef. (a,b,c) funkcije f(x)=ax2+bx+c (-10<(a,b,c)<10):");
  6. scanf("%f,%f,%f", &a,&b,&c);
  7. // Unos vrijednosti x
  8. printf ("Unesi vrijednost x");
  9. scanf("%f", &x);
  10. // Ispit uslova
  11. if (a>-10&&a<10&&b>-10&&b<10&&c>-10&&c<10){
  12. // Izracunavanje izvoda po odredjenoj matematickoj formuli izvod=2*a*x+b;
  13. // Ispis izvoda
  14. printf("Prva derivacija u tacki x=%.f je %.f", x, izvod);
  15. // Ispis odgovarajuce poruke ukoliko uslov nije zadovoljen
  16. } else printf ("Koeficijenti nisu iz odgovarajuceg intervala!");
  17. // Kraj programa getch();
  18. return 0;
  19. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 08.01.2011 19:30 od strane zxz. ↑  ↓

#4 28.12.2010 21:34
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: C rijeseni zadaci
Napisati program koji ucitava tri cijela broja iz intervala od 50 do 200. Ako svi uneseni brojevi nisu iz tog intervala, program treba ispisati poruku "Svi brojevi nisu iz intervala 50 do 200” i završiti program. Ako su brojevi unutar tog intervala program treba ispisati ucitane brojeve po velicini od najmanjeg prema najvecem.

RJEŠENJE:

PreuzmiIzvorni kd (C#):
  1. #include <stdio.h>
  2. main() {
  3. // Definisanje varijabli int x[3], i, j, p;
  4. // Unos brojeva
  5. printf("\n Unesi tri broja u rasponu od 50 do 200 (U formatu: a, b, c): ");
  6. scanf("%d, %d, %d", &x[0], &x[1], &x[2]);
  7. // Provjera jesu li brojevi iz odgovarajuceg intervala
  8. if (x[0]>50&&x[1]>50&&x[2]>50&&x[0]<200&&x[1]<200&&x[2]<200) {
  9. /* Sortiranje brojeva
  10. Potrebne su nam dvije for petlje koje ce „listati“ brojeve koji se nalaze u nekom nizu. Ovaj tip sortiranja se uglavnom svodi na provjeru da li je prvi broj manji od drugog ili treceg, i ako jeste, onda mijenja mjesto sa tim brojem. Medjutim nakon ovoga nije zavrseno sortiranje. Ako npr. Unesemo brojeve 3, 2, 1, nakon prvog prolaska imamo 2, 3, 1 nakon drugog 2, 1, 3 ali jos uvijek nije zavrseno sortiranje, i zbog toga i postoji prva for petlja koja ce to ponoviti jos jednom i dobivamo 1, 2, 3 i niz je sortiran, i sada ga samo jos treba ispisati na ekran. */
  11. for (i=0;i<2;i++)
  12. for (j=0;j<2;j++)
  13. if (x[j]>x[i]) {
  14.  
  15.  
  16.  
  17. }
  18. // Ispis sortiranih brojeva
  19. p=x[i]; x[i]=x[j]; x[j]=p;
  20. printf("\n Sortirani brojevi: %d, %d, %d ", x[0], x[1], x[2]);
  21. // Ako brojevi nisu iz intervala, ispis odgovarajuce poruke
  22. } else { printf("\n Svi brojevi nisu iz intervala 50 do 200!!!");
  23. }
  24. // Kraj programa getch();
  25. return 0;
  26. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 08.01.2011 19:31 od strane zxz. ↑  ↓

#5 28.12.2010 21:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: C rijeseni zadaci
6. Napisati program koji ce ispisati brojeve djeljive sa 5, 7 ili 11, a manje ili jednake od nekog ucitanog broja n sa tastature. Brojeve treba ispisati od najveceg prema najmanjem. Obavezno koristiti for petlju. Na primjer, ako je korisnik za n unio broj 20 onda program treba ispisati:
20
15
14
11
10
7
5
RJEŠENJE:
PreuzmiIzvorni kd (C#):
  1. #include <stdio.h>
  2. int main()
  3. {
  4. // Definisanje varijabli int n, i;
  5. // Unos nekog prirodnog broja printf("Unesite broj: "); scanf("%d", &n);
  6. /* For petlja postavlja brojac „i“ na vrijednost unesenog broja, i provjerava
  7. se da li je taj broj djeljiv sa 5, 7 ili 11, i ako jeste printa ga na ekran i umanjuje brojac za jedan, ako broj nije djeljiv sa ovim brojevima, onda se samo brojac umanji na kraju for petlje bez printanja broja na ekranu. Isti se postupak ponavlja i za broj manji za jedan, kao i broj manji za dva... sve tako do broja 1 (mogli smo staviti i 4 jer brojevi ispod 5 svakako nisu djeljivi sa ovim brojevima! */
  8. for(i=n;i>0;i--)
  9. {
  10. if ((i % 5 == 0)||(i % 7 == 0)||(i % 11 == 0)) printf("\n Broj: %d", i);
  11. }
  12. // Kraj programa getch();
  13. return 0;
  14. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 08.01.2011 19:31 od strane zxz. ↑  ↓

#6 28.12.2010 21:38
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: C ijeseni zadaci
Napisati program koji ce izracunavati sumu prema slijedecoj formuli: suma=1-1/2+1/3-1/4+...+1/n
Broj n se unosi sa tastature(standardnog ulaza). Program treba ispisati vrijednost sume na standardnom izlazu (monitoru) koristeci slijedecu poruku:
Koristeci <n> clanova suma je <suma>.
(Na mjestu <n> se treba nalaziti konkretno uneseni broj n, a na mjestu <suma> se treba nalaziti konkretno izracunata suma.) Zadatak riješite koristeci while petlju.
RJEŠENJE:

PreuzmiIzvorni kd (C#):
  1. #include <stdio.h>
  2. int main()
  3. {
  4. // Definisanje varijabli float i=1,n,suma=0;
  5. // Unos prirodnog broja printf ("\n Unesi broj n:"); scanf("%f", &n);
  6. /* Racunanje sume
  7. While petlja vrti podprogam u okviru while petlje sve dok je brojac „i“ koji je na pocetku 1, manji od unesenog broja n. Ako je uneseni broj 1 ne ulazi se u petlju i na izlazu se ispisuje Suma je:1. Ako je broj veci od 1 onda se racuna suma prema matematickoj formuli. Grupisali smo formulu datu u zadatku tako da trazimo sume po dva broja (odnosno razlike), i zatim te razlike brojeva sabiramo, ali moramo paziti jer moramo brojac „i“ uvecati za 2 jer smo u formuli ukljucili odmah 2 broja.
  8. Ovaj nacin ima i dobru i losu stranu. Dobra strana je jer nemoramo uvoditi nikakvu pomocnu varijablu i citav kod za racunanje sume se sastoji od dva izraza, a losa strana je kad unesemo neparne brojeve sto necemo dobiti tacnu sumu i tako kad unesemo broj 3 program ce izracunati 1-1/2+1/3=0.5 sto nije tacno, a to smo dobili jer program nemoze grupisati clanove po 2 jer ih imamo tri i zadnji ostaje sam i ne racuna se. Ali ovaj mali nedostatak mozemo zanemariti jer se u ovakvim zadacima obicno unose veliki brojevi da se sve svodi na preciznost nalazenja broja 0.69 pa nam je svejedno da li je zadnji clan uracunat ili ne, ali eto ako zelimo ipak 100% precizno uraditi, zadatak moze se uraditi i bez grupisanja sa mijenjanjem predznaka sume, ali to uradite sami :) */
  9. while ((i<n)&&(n>1)) { suma=suma+(1/i-1/(i+1)); i=i+2;
  10. }
  11. // Ispis sume
  12. if (n>1) printf ("\n Suma je: %f", suma); else if (n=1) printf ("Suma je: 1");
  13. // Kraj programa getch();
  14. return 0;
  15. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#7 03.10.2011 00:35
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Konverzija centimetara u ince - while petlja
PreuzmiIzvorni kd (C#):
  1. /* Konverzija centimetara u ince - while petlja*/
  2.  
  3. #include <stdio.h>
  4.  
  5. /* Definicija simbolickih konstanti preko #define direktiva */
  6. /* U fazi pretprocesiranja se vrsi doslovna zamena konstanti
  7.    njihovim vrednostima */
  8.  
  9. #define POCETAK 0
  10. #define KRAJ 100
  11. #define KORAK 10
  12.  
  13.  
  14. int main()
  15. {
  16.     int a;
  17.     a = POCETAK;
  18.     while (a <= KRAJ)
  19.     {
  20.         printf("%4d cm = %4.2f in\n", a, a/2.54);
  21.         a += KORAK; /* isto sto i a = a + KORAK; */
  22.     }
  23.     return 0;
  24. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 03.10.2011 00:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Pokazivaci - osnovni pojam
PreuzmiIzvorni kd (C#):
  1. /* Pokazivaci - osnovni pojam */
  2. #include <stdio.h>
  3. main()
  4. {
  5.         int x = 3;
  6.        
  7.         /* Adresu promenjive x zapamticemo u novoj promeljivoj.
  8.            Nova promenljiva je tipa pokazivaca na int (int*) */
  9.         int* px;
  10.  
  11.         printf("Adresa promenljive x je : %p\n", &x);
  12.         printf("Vrednost promenljive x je : %d\n", x);
  13.        
  14.            
  15.         px = &x;       
  16.         printf("Vrednost promenljive px je (tj. px) : %p\n", px);
  17.         printf("Vrednost promenljive na koju ukazuje px (tj. *px) je : %d\n", *px);
  18.        
  19.         /* Menjamo vrednost promenljive na koju ukazuje px */
  20.         *px = 6;
  21.         printf("Vrednost promenljive na koju ukazuje px (tj. *px) je : %d\n", *px);
  22.        
  23.         /* Posto px sadrzi adresu promenljive x, ona ukazuje na x tako da je
  24.            posredno promenjena i vrednost promenljive x */
  25.         printf("Vrednost promenljive x je : %d\n", x);
  26.        
  27.  
  28. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#9 03.10.2011 00:41
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Rekurzija: funkcija koja pronalazi maksimum niza brojeva
PreuzmiIzvorni kd (C#):
  1. /* Rekurzija: funkcija koja pronalazi maksimum niza brojeva */
  2.  
  3. #include <stdio.h>
  4.  
  5. /* Maximum cijelog niza je veci od dva broja:
  6.    pocetnog elementa niza i maksimuma ostalih elemenata niza.
  7.    Funkcija ispisuje dodatne informacije kako bi se razumjelo
  8.    funkcionisanje rekurzije.
  9. */
  10. int max_rek1(int a[], int n, int i) {
  11.         int rezultat;
  12.  
  13.         printf("Pozvana funkcija max za i = %d, n = %d\n", i, n);
  14.  
  15.         if (i == n-1) {
  16.                         printf("Jednoclan niz, max = %d\n", a[i]);
  17.                         rezultat = a[i];
  18.         } else {
  19.                 int max_ostatka = max_rek1(a, n, i+1);
  20.                 printf("a[i] = %d, ", a[i]);
  21.                 printf("max_ostatka = %d\n", max_ostatka);
  22.                 rezultat =  a[i] > max_ostatka ? a[i] : max_ostatka;
  23.         }
  24.         printf("zavrsen poziv za i = %d, n = %d\n", i, n);
  25.         printf("rezultat je: %d\n", rezultat);
  26.         return rezultat;
  27. }
  28.  
  29. /*
  30.         Umjesto na prvi element i rep niza, niz mozemo da razlozimo
  31.         tako sto posmatramo pocetni odsjecak i posljednji element. */
  32. int max_rek2(int a[], int n) {
  33.         if (n == 0) {
  34.                 /* Jednoclan niz */
  35.                 return a[n];
  36.         } else {
  37.                 int max_pocetka = max_rek2(a, n-1);
  38.                 return a[n] > max_pocetka ? a[n] : max_pocetka;
  39.         }
  40. }
  41.  
  42. main() {
  43.         int a[] = {2, 8, 3, 7, 9, 6, 4, 5, 1, 2};
  44.         int n = sizeof(a)/sizeof(int);
  45.         printf("%d\n", max_rek1(a, n, 0));

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 9: 56 pm.