TRZY PĘTLE W JEDNYM PLIKU

0

Witam. Jak widać kod zawiera trzy rodzaje pętli, while, for oraz do while. Program ma wyznaczyć wartości kwadratów kolejnych liczb, ale nie większych niż 20.
Program działa poprawnie przy zastosowaniu pętli while, działa poprawnie przy wykorzystaniu pętli for ale nie działa przy zastosowaniu pętli do while. Sprawdziłem osobno samą pętle do while wklejając ją do nowego pliku i ... również działa poprawnie natomiast jeśli jest napisana razem z innymi pętlami (kod poniżej) to już nie działa. Co źle zrobiłem?

#include <stdio.h>
#include <stdlib.h>

int i=0;
float wynik;

int main()


{
    printf(" PETLA WHILE\n");
  while(i<=20)
{
    wynik=i*i;
printf("%2f\n",wynik);
i++;

}
{
 printf("PETLA FOR\n");
 for(i=0;i<=20;i++)

    printf("%2f\n",wynik=i*i);

}
printf("PETLA DO WHILE\n");
{
    do
    {
        printf("%2f\n",wynik=i*i)
;        i++;

    ;}while(i<=20)
;}

return 0;
}
5

Zapomniałeś ustawić wartość początkową dla i. Pierwsza pętla działa, bo i przypadkiem zostało zainicjowane zerem. Druga pętla działa, bo w for przypisałeś zero do i. Trzecia pętla nie działa, bo po zakończeniu for i == 20, więc wykonuje się jedna iteracja, a potem warunek nie jest spełniony.

PS. W formatowaniu Twojego kodu pomagał Ci chyba Stevie Wonder.

0

Faktycznie, nad słowem "do" a poniżej "{" napisałem, i=0; i... działa poprawnie

0
Cinek_Polska napisał(a):

Faktycznie, nad słowem "do" a poniżej "{" napisałem, i=0; i... działa poprawnie

Wlasnie miales okazje zaobserwowac jeden z powodow dla ktorych w wiekszosci przypadkow nie nalezy uzywac zmiennych globalnych. Zamiast latac delikatnie mowiac nieoptymalny kod popraw go - uzyj zmiennych lokalnych ograniczajac widocznosc tylko do miejsc gdzie dana zmienna jest wykorzystywana.

2

Co źle zrobiłem?

Nie użyłeś debugera. Stawiasz w kodzie breakpoint, uruchamiasz debugger i lecisz instrukcja po instrukcji aż zobaczysz w którym miejscu coś poszło nie tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1