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: Lichá čísla jsou 10x větší, než by měli být

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

Aktivity
Avatar
Josef Vondra
Člen
Avatar
Josef Vondra:20.10.2016 13:28

#include <stdio.h>

int main()

{
int a;
float cisla;
int pocetcisel;
int pocetkladnych;
int pocetzapornych;
float procentokladnych;
float procentozapornych;
int pocetsudych;
int pocetlichych;
float procentosudych;
float procentolichych;
double prumer;
int soucetcisel;
int min;
int max;

pocetcisel = 0;
pocetkladnych = 0;
pocetzapornych = 0;
cisla = 0;
min = 10001;
max = -10001;

while (scanf("%i",&a)==1)
{
if (a < -10000 || a > 10000)
{
printf("\nError: Vstup je mimo interval!");
return 100;
}
else

if (pocetcisel!=0)
printf(", ");

printf("%d",a);

pocetcisel++;

if (a > 0)
pocetkladnych++;
if (a < 0)
pocetzapornych++;
if ((a % 2) == 0)
pocetsudych++;
if ((a % 2) != 0)
pocetlichych++;
if (max < a)
max = a;
if (min > a)
min = a;

soucetcisel = (double)cisla + (double)a;
cisla = soucetcisel;

}

procentokladnych = (((int)pocetklad­nych / (double)pocet­cisel)*100);
procentozapornych = (((int)pocetza­pornych / (double)pocet­cisel)*100);
procentosudych = (((int)pocetsudych / (float)pocetci­sel)*100);
procentolichych = (((int)pocetlichych / (float)pocetci­sel)*100);
prumer = ((double)soucet­cisel / (int)pocetcisel);

printf("\nPocet cisel: %d",pocetcisel);
printf("\nPocet kladnych: %d",pocetkladnych);
printf("\nPocet zapornych: %d",pocetzapor­nych);
printf("\nProcento kladnych: %0.2f", procentokladnych);
printf("\nProcento zapornych: %0.2f", procentozapornych);
printf("\nPocet sudych: %d", pocetsudych);
printf("\nPocet lichych: %d", pocetlichych);
printf("\nProcento sudych: %0.2f", procentosudych);
printf("\nProcento lichych: %0.2f", procentolichych);
printf("\nPrumer: %0.2f", prumer);
printf("\nMaximum: %d", max);
printf("\nMinimum: %d", min);

return 0;
}

Ahojky, udělal jsem tento kód, všechno funguje atd, ale když tam zadám třeba 3 lichá čísla, tak na výstupu mi to vypíše, že jich je 30. Nevíte někdo prosím, proč to dělá? :)

 
Odpovědět
20.10.2016 13:28
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Josef Vondra
Martin Dráb:20.10.2016 13:38

Ahoj,

proměnnou pocetlichych (stejně jako další), zdá se, nikde neinicializuješ. Jedná se o lokální proměnnou, takže se ti o to překladač nepostará. Problém by mělo vyřešit její nastavení na nulu při deklaraci (podobně u ostatních).

Kód, co jsi jsem dal, je špatně čitelný. Příště prosím použij značky [ c o d e] a [ / c o d e] (bez mezer), aby vypadal více k světu.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
20.10.2016 13:38
2 + 2 = 5 for extremely large values of 2
Avatar
Josef Vondra
Člen
Avatar
Josef Vondra:20.10.2016 13:49

Ahojky, děkuji za odpověd, jdu to zkusit a děkuji za radu pro příště. :)

 
Nahoru Odpovědět
20.10.2016 13:49
Avatar
Josef Vondra
Člen
Avatar
Josef Vondra:20.10.2016 13:51

Ano, problém to vyřešilo, děkuji za pomoc. :)

 
Nahoru Odpovědět
20.10.2016 13:51
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.