Triko zdarma Triko zdarma
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: Sčítání hodnot

C a C++ C a C++ Sčítání hodnot American English version English version

Aktivity (1)
Avatar
Jan Michálek:31.10.2018 14:24

Zdravím,

mám napsat program, který by měl takhle fungovat:

Zadavejte cisla, posledni bude 1000:
1 -1 2 -2 3 -3 -1000 1000
Vysledek souctu cisel je: 0

Pokud program přečte na vstupu hodnotu 1000 tak se zastaví a sečte všechny čísla dohromady.

Mám použit funkci while, ale vůbec nevím jak to napsat. Vím jak funguje funkce while, ale co třeba nevím je jak můžu na jeden řádek, psát čísla bez omezení dokud nezadám 1000? A jak můžu zadat hodnotu a stisknu Enter a stále budu psát na jeden řádek? Přeci musím odentrovat aby program poznal že jsem zadal 1000 ne?

Mohl by mi někdo pomoct? Vůbec si už nevím rady.

Zkusil jsem: Google

Odpovědět 31.10.2018 14:24
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jan Michálek
DarkCoder:31.10.2018 16:07

Vytvoř si celočíselné proměnné uknum, num a sum. Sum inicializuj na nulu. Vyzvi uživatele o zadání uknum a načti uknum. Vytvoř do-while cyklus ve kterém uživatele vyzvi o zadání num. Zadej num. Přiřaď do sum pomocí += hodnotu num. V podmínce while testu na num != uknum. Za do-while cyklem vypiš hodnotu sum.

Nahoru Odpovědět  +1 31.10.2018 16:07
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Odpovídá na DarkCoder
Jan Michálek:1.11.2018 6:23

Tak z toho jsem vedle jak ta jedle :D ... Budu se muset ještě asi hoooooodně co učit :D

Nahoru Odpovědět 1.11.2018 6:23
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
Jan Michálek:1.11.2018 6:50

Tak nakonec jsem to dokázal napsat, jen nemůžu přijít na to. Jak psát hodnoty do jednoho řádku?

#include <iostream>

using namespace std;

int main()
{
 double vstup, hodnota, kontrola;
 vstup = 0;
 kontrola = 1000;
 cout << "Zadej cisla: ";
 do
 {
    cin >> vstup;
    hodnota += vstup;
 } while (vstup != kontrola);
 if (vstup = kontrola)
    cout << hodnota << endl;
 return (0);
 }
Nahoru Odpovědět 1.11.2018 6:50
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jan Michálek
DarkCoder:1.11.2018 9:12

Je důležité pochopit ze vstupní funkce běží v neblokujicim se cyklu s kontrolou. Pokud na vstupu je nějaká hodnota, je tato hodnota převzata vstupní funkci. Nenechat se zmást tím, že se načítá vždy jedna hodnota. Dále je třeba si uvědomit že vstup je bufferovany. Zadase-li několik hodnot oddělené bílým znakem, budou se tyto hodnoty postupně předávat do vstupu. Vždy však je prováděna podmínka řídící cyklus. Pokud není nalezena shoda, cyklus se ukončí. Pokud ve vstupním bufferu jsou stále nějaké hodnoty, budou tyto hodnoty převzaty následujícími vstupními funkcemi. Na to je třeba myslet.

Tedy závěrem: Můžeš zadat několik hodnot na jednom řádku oddělené bílým znakem které ukoncis znakem CR. Je však třeba myslet na to, že vyhodnotí-li se podmínka cyklu jako nepravdivá dříve nežli jsou načteny všechny hodnoty, zůstanou některé hodnoty ve vstupním bufferu.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 1.11.2018 9:12
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
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 5 zpráv z 5.