Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Nefunkční program

Aktivity
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
Tvůrce
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í
+2,50 Kč
Ř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.
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
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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.