Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C - switch ..

Ahoj, začínám se učit programovat v jazyce C.. Dnes jsem chtěl vyzkoušet switch.
Problém je, že po zadání volby mi program spadne..

#include <stdio.h>
#include <conio.h>
int main()

{
    float kc,celkemeuro,celkem,celkemkc,euro,eurozadani,kczadan,konec; /* Deklarace promennych */
    int volba; /* Deklarace promennych */
    euro = 25.7051452; /* Definice eura */
    printf("Zadejte pocet korun: ");
    scanf("%f",&kc); /* Zadani mnozstvi kc */
    getchar();
    celkem = kc/euro; /* Vypocet kc na eura */
    printf("%5.2f korun je %5.2f €uro",kc,celkem); /* Vypise vypocet */
    getchar();
    printf("Stisknutim pozadovaneho cisla si vyberte z nabidky:\n 1 - Koruny -> Eura \n 2 - Eura -> Koruny \n"); /* Info o menu */
    scanf("%d",volba); /* Vyber volby */
    switch(volba)
    {
    case 1: printf("Vybrali jste si Koruny -> Eura"); break; /* Kdyz volba 1 ..*/
    case 2: printf("Vybrali jste si Eura -> Koruny"); break; /* Kdyz volba 2 ..*/ 
    default: printf("Zadal jste spatnou volbu ..."); /* Kdyz ani volba 1 nebo 2 */
    }
    getchar();
    return 0;
}

Zacatek mam prevod ciste KC na eura, to bylo na rozproudění krve do mozku, to pak odstraním..
Něco v tom switchi mám asi špatně, akorát nevím co, snad někdo zkušenější to uvidí ihned jakmile na to mrkne.

Děkuji za rady.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
scanf("%d", &volba); ?
Wikan 13.11.2011 15:11
Wikan
Možná jsem to pochopil špatně. Ale myslel jsem to tak - Pokud zmáčkneš jedničku, vyhodí ti to první…
Michael04 13.11.2011 15:16
Michael04
Pochopil jsi to špatně, chybí ti tam &.
Wikan 13.11.2011 15:17
Wikan
Tak jsem si s tím pohrál, funguje mi to tak, jak jsem chtěl. Jen bych se chtěl ještě zeptat, nějaký…
Michael04 13.11.2011 15:46
Michael04
das si tam cykus do{ }while a u toho while si budes testovat neco co si nastavis v tej default vetve…
MM.. 13.11.2011 15:54
MM..
Aha, do while vicemene chapu (udelej to, kdyz tamto..), ale takto to nechápu, hlavně teď nechápu s t…
Michael04 13.11.2011 16:08
Michael04
do while je cyklus, a ne udelej tamto kdyz tamto. Skus si to precitat este raz pomalsie, novu premen… nový
MM.. 13.11.2011 16:11
MM..
Díky moc :) Jdu to nastudovat a dodělat :) Takhle to stačí, Domací úkol jsem měl udělat pouze čistě… nový
Michael04 13.11.2011 16:18
Michael04
to ocenujem ;) neni to nic komplikovane precitaj si ten link co som dal a potom to uz urcite bude ja… poslední
MM.. 13.11.2011 18:02
MM..

Možná jsem to pochopil špatně.
Ale myslel jsem to tak - Pokud zmáčkneš jedničku, vyhodí ti to první volbu, když dvojku, druhou volbu.
A case 1 nebo 2 tedy určuje co o kterou volbu se jedná, ne ? Pokud ne, tak jsem to asi opravdu pochopil špatně :-/
Jak jinak tedy se zadá výběr volby ?

Tak jsem si s tím pohrál, funguje mi to tak, jak jsem chtěl.
Jen bych se chtěl ještě zeptat, nějaký jednoduchý způsob, který mě zpátky hodí na výběrové menu, když zadám špatnou volbu ?

/*domaci ukol: sestav program pro prevod
kc na euro */
#include <stdio.h>
#include <conio.h>
int main()

{
    float kc,celkemeuro,celkem,celkemkc,euro,eurozadani,kczadan,konec; /* Deklarace promennych */
    int volba; /* Deklarace promennych */
    euro = 25.7051452; /* Definice eura */
    printf("Stisknutim pozadovaneho cisla si vyberte z nabidky:\n 1 - Koruny -> Eura \n 2 - Eura -> Koruny \n"); /* Info o menu */
    scanf("%d",&volba); /* Vyber volby */
    getchar();
    switch(volba)
    {
    case 1: {
            printf("Vybrali jste si Koruny -> Eura \n");
            printf("Zadejte mnozstvi korun: ");
            scanf("%f",&kc);
            getchar();
            printf("%5.2f Korun je %5.2f Euro",kc,celkem);
            }; break; /* Kdyz volba 1 ..*/
    case 2: {
            printf("Vybrali jste si Eura -> Koruny \n");
            printf("Zadejte mnozstvi Euro: ");
            scanf("%f",&eurozadani);
            getchar();
            celkemeuro = eurozadani*euro;
            printf("%5.2f Euro je %5.2f Korun",eurozadani,celkemeuro);
            }break; /* Kdyz volba 2 ..*/ 
    default: printf("Zadal jste spatnou volbu ..."); /* Kdyz ani volba 1 nebo 2 */
    }
    getchar();
    return 0;
}

Díky moc :) Jdu to nastudovat a dodělat :)
Takhle to stačí, Domací úkol jsem měl udělat pouze čistě převod z kč na euro, ale já si prostě chci udělat něco navíc a být popředu :) Ale s tím hozením na začátek menu v případě špatné volby si dodělám, plus udělám více blbuvzdorný

Ještě jednou, díky oběma :)

Zpět do poradny Odpovědět na původní otázku Nahoru