Diskuze: ciferný součet

C++ C a C++ ciferný součet

Avatar
David Kruntorád:

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. ledna 14:39
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na David Kruntorád
David Novák:

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. ledna 14:59
Chyba je mezi klávesnicí a židlí.
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na David Kruntorád
David Novák:

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í
+1 bodů
Řešení problému
Nahoru Odpovědět 2. ledna 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.