Początki programowania- kłopoty z pętlą w C


(Marekegg94) #1

Witam!

Mam problem z pętlami while i for. Szukalem w google, ale wszystko jest i tak skomplikowanie napisane. Czy mógłby ktoś pomóc i rozwiązać mi jedno zadanie? Wtedy analogicznie poradzę sobie z następnymi. Oto jaki ma powstać program.

obliczy i wypisze na ekran sumę liczb naturalnych od 1 do 20;

Pozdrawiam!


([alex]) #2

Do takiego zadania nie potrzebujesz pętli:

#include 


int main()

  {

   unsigned A=1,B=20;

   printf("suma liczb naturalnych %u..%u wynosi %u\n",A,B,((A+B)*(B-A+1))>>1);

   return 0;

  }

(mareczek_1988) #3

Dla for:

int sum=0;

for (int i = 1; 20 ; i++)

{

sum=sum+i;

}

Dla do … while:

int sum=0;

int i = 1;

do

{

sum = sum +1;

i++;

}while ( i < 21)

Dla while:

int sum = 0;

int i = 1;

While (i<21)

{

sum = sum + i;

i++;

}

Nie napisałeś o jaki język programowania chodzi, więc masz w c++:) Mam nadzieję że się nigdzie nie pomyliłem, ale najlepiej przekompiluj i sprawdz.

(oczywiście w moim kodzie brakuje bloku main oraz wypisania wyniku)


(Marekegg94) #4

Dzięki wam! Faktycznie zapomniałem o napisaniu jaki to język. Chodzi o C . Może ktoś jeszcze napisać jak wykorzystać printf, aby wyświetliło mi wynik?

Z góry thx.


([alex]) #5

Przecież dostałeś rozwiązanie w C.


(Marekegg94) #6

ale w tym pierwszym nie ma pętli, a to ma być pętla.


(rgabrysiak) #7

Dlatego też proszę, korzystając z przycisku zmien.gif

W przeciwnym razie, temat trafi do kosza.


([alex]) #8

Kto ci powiedział że ma tu być pętla?


(Marekegg94) #9

Na kartce z zadaniami. Pisze zadania z pętlą i jest wypisane to zadanie. Więc bardzo proszę o pomoc. Czy ktoś może napisać ten program w 100%? Wtedy ogarnę następne. Dopiero zaczynam programować…


([alex]) #10

Po pierwsze wśród zadań z pętlami specjalnie wstawia się zadanie które da się rozwiązać bez pętli aby wyłapać kretynów i więcej nimi się nie zajmować bo to tylko strata czasu.

Po drugie nic ci to nie pomoże bo rozwiązanie za pomocą pętli masz podane przez mareczek_1988 (owszem pełno tam błędów ale z grubsza jest opisane) a jak widać nie pomogło.

Może ci wytłumaczę jak działają for() i while() w sposób bardzo prosty:

while() działa prawie tak samo jak if() różnica jedynie taka że w przypadku while() jeżeli się wykonało ciało to po jego zakończeniu następuje tak jakby skok na początek i znowu się sprawdza warunek.

for() działa prawie tak samo jak while() różnica jedynie taka że w przypadku for() wokół (przed i po) warunku masz dwa średniki. Przed pierwszym średnikiem możesz (nie musisz) wstawić instrukcje która wykona się tylko raz (przed pierwszym sprawdzeniem warunku). Po drugim średniku możesz (nie musisz) wstawić instrukcje która wykona się po każdym zakończeniu wykonania ciała (przed ewentualnym kolejnym sprawdzeniem warunku). Dodatkowa różnica jest taka że w przypadku for() nawet samego warunku nie musisz wstawiać (np. for(;:wink: - pętla nieskończona).


(Marekegg94) #11

możesz wytlumaczyć mi ten wzór? ((A+B)*(B-A+1))>>1);


([alex]) #12

http://pl.wikipedia.org/wiki/Ci%C4%85g_ … metycznego

n=(B-A+1), r=1