MS Office week
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
50 % bodů zdarma na online výuku díky naší Slevové akci!
Avatar
Matěj Přerovský:5.4.2019 18:58

Ahoj,
naprogramoval jsem si převodník z AU na km, nefunguje mi, ale nechápu proč.

Zkusil jsem: Zkoušel jsem to různě opravovat, ale nepovedlo se mi to.

#include <stdio.h>
int main(void){
        float a;
        long double b=a*31536000;
        printf ("Zadejte AU: ");
        scanf ("%f", &a);
        printf ("To je %Lf km. \n", b);

}
Odpovědět
5.4.2019 18:58
42
Avatar
Radek Veverka
Redaktor
Avatar
Radek Veverka:5.4.2019 19:14

Ahoj

float a;
long double b=a*31536000;

Podívej se, co je proměnná a. Nic jsi do ní nepřiřadil, máš v ní tedy nepořádek ze zásobníku a výsledek výrazu je nesmysl.
Musíš prvně inicializovat proměnnou, teprve potom ji použít ve výpočtu. Tedy jednoduše - nejdřív použij scanf, až potom počítej b.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
5.4.2019 19:14
Avatar
Vít Vlach
Člen
Avatar
Odpovídá na Matěj Přerovský
Vít Vlach:5.4.2019 19:14

Ahoj, v Céčkách se nevyznám, ale podle mě by jsi měl nejdříve načíst vstup a až poté počítat počet km.

Nahoru Odpovědět
5.4.2019 19:14
My code doesn't work. Let's change nothing and run it again.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Matěj Přerovský
Matúš Olejník:5.4.2019 19:17

Ahoj, veď skús trocha viacej ešte nad tým porozmýšľať alebo aj tým náhodným upravovaním by sa ti to hádam podarilo :) Do premennej "b" ukladáš súčin premennej "a" a tej konštanty ešte pred tým než ti užívateľ vôbec zadá hodnotu pre "a" :)

Nahoru Odpovědět
5.4.2019 19:17
/* I am not sure why this works but it fixes the problem */
Avatar
Odpovídá na Matúš Olejník
Matěj Přerovský:5.4.2019 19:49

Díky moc, už to mám :-)

Nahoru Odpovědět
5.4.2019 19:49
42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Matěj Přerovský
DarkCoder:5.4.2019 19:58

Tři věci:

  1. Když už funkce main() má vracet hodnotu, je dobré tuto hodnotu skutečně vracet - používej return. Pokud nechceš hodnotu vracet, používej klíčové slovo void jako návratovou hodnotu funkce main()
  2. Nepoužívej v programu neznámá čísla. Pro definici konstanty využívej direktivu preprocesoru #define nebo klíčové slovo const.
  3. 1AU = 149 597 871 kilometrů
Nahoru Odpovědět
5.4.2019 19:58
"„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 6 zpráv z 6.