Powrót do początku


(system) #1

Witam piszę program i chciałbym aby po wykonaniu obliczeń program nie wyłączał się ale wrócił do początku. Jak mam to zrobić. Pod spodem załączam kod

include

int main()

{

printf("Jak chcesz wykonac program \n 1.for\n 2.while \n 3 do while");

int ile;

scanf("%d", &ile);

printf("Podaj x, xk oraz dx \n");

int x, xk, dx;

scanf("%d", &x);

scanf("%d", &xk);

scanf("%d", &dx);

switch(ile)

{case 1:

for(x; x

{

int x1, x2;

x1=x*x;

x2=x*x*x;

printf("%d, %d, %d \n", x, x1, x2 );

return 0;

}

case 2:

while(x<=xk)

{

int x1, x2;

x1=x*x;

x2=x*x*x;

printf("%d, %d, %d \n", x, x1, x2 );

x=x+dx;

}

case 3:

do{

int x1, x2;

x1=x*x;

x2=x*x*x;

printf("%d, %d, %d \n", x, x1, x2 );

x=x+dx;

return 0;

}while(x

}

}


([alex]) #2

Wziąć to wszystko w pętle:

while(true)  {   ...  } [/code]

No i powywalać return 0; zamiast tego break; na końcu każdego case.

(scripter1) #3

A czy przypadkiem użycie break na końcu każdego case nie spowoduje przerwania wykonywania dalszej części kodu po przetworzeniu danego case i zakończenia działania całego programu?


(system) #4

Na końcu dałem return main(); i podziałało. Jest jeszcze jakaś możliwość?


([alex]) #5

To co zrobiłeś jest bez sensu, rekurencyjnie wywołujesz main(), będzie działać kilka razy dopóki stos się nie przepełni.

Opisałem wyżej jedyną sensowną możliwość, jak nie pasują ci sensowne to kombinuj w kierunku bezsensownych, np goto

scripter1 , break w ramach case oznacza zakończenie działania tego case.


(bl3) #6
int main()

{

do{

        ... 

cout<<"Kontynuowac? [T/n] ";

}while(toupper(getch())!='N');

return0;

}

i w case zamiast return 0 powinno byc break…

Jak coś toupper jest w bibliotece ctype.h


(system) #7

No z while(true) działa poprawnie

A dlaczego goto bezsensu?


([alex]) #8

Dla tego że to samo można zrobić w sposób czytelny.