NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: ciferný součet

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

Aktivity
Avatar
David Kruntorád:2.1.2016 14:39

Dobrý den
prosím vás jak mám udělat, aby se program po stisknutí enteru neopakoval, ale skončil? Nějak mi to nejde :/
Děkuji :)

float  soucet(float);

int main()
{
        int c,cislo,vysledek,cis;

        do
        {
        printf("Ciferny soucet cisla");
        printf("Zadejte cislo: ");
        scanf("%d",&cislo);

        cis=cislo; vysledek=0;
        while(cislo)
        {
                c=cislo%10;
                vysledek+=c;
                cislo/=10;
        }
        printf("\Ciferny soucet cisla %d je %d\n",cis,vysledek);
        }
        while(()==13);
        return 0;
}
 
Odpovědět
2.1.2016 14:39
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na David Kruntorád
David Novák:2.1.2016 14:59

Proč tam máš ten podivný do .. while ?

Pokud chceš, aby se program vykonal pouze jednou, tak ho úplně odstraň. Pokud chceš, aby po svém vykonání čekal na stisknutí klávesy (což většinou chceš na Windows), tak můžeš myslím použít system("pause");

Jo a k čemu je float soucet(float); ??

Pro vytvoření proměnné použij (stejně jako to děláš u těch intů) jen float soucet;
Přičemž nechápu, k čemu ji tam máš, když ji nikde nepoužíváš - asi nějaký pozůstatek?

Nahoru Odpovědět
2.1.2016 14:59
Chyba je mezi klávesnicí a židlí.
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na David Kruntorád
David Novák:2.1.2016 15:04

Jinak pokud chceš řešení čekání na stisk enteru řešit nezávisle na platformě, tak se typicky používá jednoduchý getchar. Při tvém použití scanf ovšem musíš vyprázdnit vstupní buffer.

Uživatel typicky zadá: 12345 (nějaké číslo) a pak zmáčkne Enter. scanf("%d"); přečte číslice a v bufferu zůstane Enter, který si aplikace ještě nepřevzala. To se řeší třeba takto:

int main()
{
        int c,cislo,vysledek,cis;

        printf("Ciferny soucet cisla");
        printf("Zadejte cislo: ");
        scanf("%d",&cislo);

        while (getchar() != EOF)   // vyprazdni buffer (precte vsechny znaky a zahodi je)
        ;

        cis=cislo; vysledek=0;
        while(cislo)
        {
                c=cislo%10;
                vysledek+=c;
                cislo/=10;
        }
        printf("\Ciferny soucet cisla %d je %d\n",cis,vysledek);

        getchar();   // ceka se na stisk Enteru

        return 0;
}
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
2.1.2016 15:04
Chyba je mezi klávesnicí a židlí.
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 3 zpráv z 3.