Zacyklení příkazem if a else – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zacyklení příkazem if a else – C / C++ – Fórum – Programujte.comZacyklení příkazem if a else – C / C++ – Fórum – Programujte.com

 

Jakub
~ Anonymní uživatel
905 příspěvků
8. 5. 2012   #1
-
0
-

Dobrý den,

mám problém se zacyklením podmínky níže program,když se uživatel netrefí do správného čísla,tak počítač napíše jen smula zkus to znovu,ale pritom by se nemel jen vypnout a poradit nam. Děkuji za odpovědi 

#include <stdio.h>

#define CISLO 5
#define MIN 0
#define MAX 10

  {
      int x = -1;
int navrat;
      printf("Na jake cislo myslim? Hadej mezi %2i a %2i: ", MIN, MAX);

    navrat = scanf("%i", &x);

      if (navrat == EOF) {
         printf("\ascanf nemuze cist. Je uzavren standardni vstup stdin\n");
         return 1;             
      } else if (navrat != 1) { 
  printf("\aNezadal jsi cislo!\n");
         return 1;
    }

     if(x<MIN)
   printf("Tak to bylo trochu malo kamarade!\n");
   else if(x>MAX)
        printf("Tak to bylo trochu moc!\n");
  else if(x==CISLO)
         printf("Uhadnul si, dobra prace \n");
    else
         printf("Smula. Zkus to znovu.\n");

     return 0;
  }
   break;
system("pause");
  return 0;

Nahlásit jako SPAM
IP: 91.187.35.–
Jakub
~ Anonymní uživatel
905 příspěvků
8. 5. 2012   #2
-
0
-

Omlouvam se je to vytažené ze switche aby to fungovalo musi tam byt navic int main(void) a na konci jeste  za returnem } ..má chyba omlouvam se

Nahlásit jako SPAM
IP: 91.187.35.–
ingiraxo+15
Grafoman
8. 5. 2012   #3
-
0
-

Předpokládám, že pro neregistrovaný to nejde editovat.. takže bych doporučil to sem vložit znova a celý, nějakej výtažek je k ničemu, když nevidíme ani cyklus a hlavně to vlož jako zdrojový kód a né text

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Jakub
~ Anonymní uživatel
905 příspěvků
8. 5. 2012   #4
-
0
-

#include <stdio.h>

#define CISLO 5
#define MIN 0
#define MAX 10
int main(void)
  {
      int x = -1;
int navrat;
      printf("Na jake cislo myslim? Hadej mezi %2i a %2i: ", MIN, MAX);

    navrat = scanf("%i", &x);

      if (navrat == EOF) {
         printf("\ascanf nemuze cist. Je uzavren standardni vstup stdin\n");
         return 1;            
      } else if (navrat != 1) {
  printf("\aNezadal jsi cislo!\n");
         return 1;
    }

     if(x<MIN)
   printf("Tak to bylo trochu malo kamarade!\n");
   else if(x>MAX)
        printf("Tak to bylo trochu moc!\n");
  else if(x==CISLO)
         printf("Uhadnul si, dobra prace \n");
    else
         printf("Smula. Zkus to znovu.\n");

     return 0;
}

Zde je cely program ktery by měl fungovat,jenže když nenapisete spravne cislo,vypise jen smula a vypne se,myslim,ze by mel napovedet a pote vypsat smula a vratit vas k zadavani cisla.

Nahlásit jako SPAM
IP: 91.187.35.–
Jakub
~ Anonymní uživatel
905 příspěvků
8. 5. 2012   #5
-
0
-

 Sem tady nový omlouvam se.

#include <stdio.h>

#define CISLO 5
#define MIN 0
#define MAX 10
int main(void)
  {
      int x = -1;
int navrat;
      printf("Na jake cislo myslim? Hadej mezi %2i a %2i: ", MIN, MAX);

    navrat = scanf("%i", &x);

      if (navrat == EOF) {
         printf("\ascanf nemuze cist. Je uzavren standardni vstup stdin\n");
         return 1;             
      } else if (navrat != 1) { 
  printf("\aNezadal jsi cislo!\n");
         return 1;
    }

     if(x<MIN)
   printf("Tak to bylo trochu malo kamarade!\n");
   else if(x>MAX)
        printf("Tak to bylo trochu moc!\n");
  else if(x==CISLO)
         printf("Uhadnul si, dobra prace \n");
    else
         printf("Smula. Zkus to znovu.\n");

     return 0;
}
Nahlásit jako SPAM
IP: 91.187.35.–
ingiraxo+15
Grafoman
8. 5. 2012   #6
-
0
-

Když nechceš aby se vypnul, tak úplně nakonec nad return 0; dej getchar();

Pokud jde o to, když zadáš špatný číslo, tak aby se to opět vrátilo k zadání čísla, tak to musíš dát do cyklu nebo by zde šlo i použít goto (doporučuju spíš cyklus, třeba do-while)

Pokud by jsi to chtěl přes goto, tak nad getchar(); kterej jsem ted napsal dáš "znova:" a nad ten scanf(..) dáš "goto znova;" a returnem z téhle smyčky vyskočíš

Hlavně pozor na to, když máš všechno ve funkci main(), tak jakýkoliv return ti ukončí program!

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Jakub
~ Anonymní uživatel
905 příspěvků
8. 5. 2012   #7
-
0
-

Děkuji mockrát za pomoc :)

Nahlásit jako SPAM
IP: 91.187.35.–
jano
~ Anonymní uživatel
85 příspěvků
8. 5. 2012   #8
-
0
-

#6 ingiraxo
hmm radit zaciatocnikovy goto je troska pritiahnute za vlasy, ale na druhu stranu rada zrejme splnila ucel, inak goto pouzivat len ked to inak nejde :)

Nahlásit jako SPAM
IP: 85.135.184.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 73 hostů

Podobná vlákna

Zacyklení — založil kotilion

C - scanf zacykleni — založil Remder

Pomoc s příkazem — založil lukas0123

Problém s příkazem "case" — založil konik123

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý