ITnetwork Flashka zdarma C a C++ týden
Pouze tento týden sleva až 80 % na kurzy C a C++
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Matěj Přerovský:5. dubna 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. dubna 18:58
Avatar
Radek Veverka
Redaktor
Avatar
Radek Veverka:5. dubna 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. dubna 19:14
Avatar
Vít Vlach
Člen
Avatar
Odpovídá na Matěj Přerovský
Vít Vlach:5. dubna 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. dubna 19:14
My code doesn't work. Let's change nothing and run it again.
Avatar
Odpovídá na Matěj Přerovský
Matúš Olejník:5. dubna 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. dubna 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. dubna 19:49

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

 
Nahoru Odpovědět 5. dubna 19:49
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Matěj Přerovský
DarkCoder:5. dubna 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  +1 5. dubna 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.