Prikazi cijelu temu 28.12.2010 21:38
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Lokacija:Tuzla


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 kôd (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. }

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.