NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Pomoc s cyklem

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
alexicek
Člen
Avatar
alexicek:21.9.2017 12:00

Zdravím,potřeboval bych pomoc s cyklem,resp. mám v programu cyklus for,ale potřebuji kvůli zadání ve škole ho změnit na while(na začátku)..pár lidí mi říkalo,že to není těžký,ale já programovat moc neumím takže bych se vás chtěl zeptat. Děkuji

#include<stdio.h>

int main()
{
int n, i = 3, count, c;

printf("Kolik prvocisel chcete vytisknout na obrazovku\n");
scanf("%d",&n);

if ( n >= 1 )
{
printf("Tady je %d prvocisel :\n",n);
printf("2\n");
}

for ( count = 2 ; count <= n ; )
{
for ( c = 2 ; c <= i - 1 ; c++ )
{
if ( i%c == 0 )
break;
}
if ( c == i )
{
printf("%d\n",i);
count++;
}
i++;
}

return 0;
}

 
Odpovědět
21.9.2017 12:00
Avatar
Matúš Olejník:21.9.2017 15:22

Na to by si asi mohol prísť sám, takže ak z toho chceš niečo mať nižšie je návod a ak ti to je jedno tu je kód :)

Cyklus

for(i = 0; i<10; i++){
  //tvoj kód
}

ti hovorí začiatočnú hodnotu danej premennej -> i = 0 potom dokým (dokud) sa bude cyklus vykonávať -> kým i < 10 a na koniec čo sa s touto premennou bude v každej iterácii robiť -> i++.
Teda začneš cyklus kde i je nula skontroluje sa či je nula menšia ako 10 a začne sa vykonávať kód v cykle. Keď príde na koniec inkrementuje i o 1, skontroluje podmienku atď atď.

Cyklus

while(i<10){
    //tvoj kód
}

ti tiež hovorí že sa bude opakovať kým i bude menšie ako 10. Keďže vo for cykle sme priamo do zátvorky dali počiatočnú hodnotu (mohli sme ju inicializovať aj skorej) tak potrebujeme túto hodnotu poznať aj pred začiatkom while cyklu takže kód upravíme takto

i = 0;
while(i<10){
    //tvoj kód
}

Takže máme začiatočnú hodnotu 0 skontrolujeme či je 0 < 10 to platí a teda začne sa cyklus. Nakoniec potrebujeme aby sa hodnota v i menila podľa toho ako chceme. Vo fore sme ju vždy inkrementovali o 1 a teda spravíme to aj v tomto cykle inak by sa nikdy neskončil a preto kód upravíme takto

i = 0;
while(i<10){
    //tvoj kód
    i++;
}

Keď pôjde všetko ako má tak nakoniec v premennej i sa zmení hodnota z 9 na 10, potom sa skontroluje či je 10 < 10 a keďže nie je cyklus skončí.
Podobným spôsobom môžme vytvoriť schválne nekonečný cyklus a kontrolovať podmienku priamo v ňom a keď nastane tak ho ukončíme.

i = 0;
while(1){ //nekonečný cyklus
    //tvoj kód
    i++;
    if(i == 10) //trochu pozmenená podmienka pretože teraz mu neprikazujeme do kedy má ísť ale kedy má skončiť
        break; //zrušenie cyklu
}
Editováno 21.9.2017 15:25
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět
21.9.2017 15:22
/* I am not sure why this works but it fixes the problem */
Avatar
alexicek
Člen
Avatar
Odpovídá na Matúš Olejník
alexicek:21.9.2017 22:00

Díky moc,super vysvětlené.

 
Nahoru Odpovědět
21.9.2017 22:00
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na alexicek
Petr Šťastný:22.9.2017 17:56

Jestli ti jeho řešení pomohlo, označ to jako řešení :-) Pak bude jasně vidět, že ti to pomohlo a vyřešilo to tvůj problém. Taky mu to dá bodík :D

 
Nahoru Odpovědět
22.9.2017 17:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.