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.
scanf("%d", &volba); ?
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 ?
Pochopil jsi to špatně, chybí ti tam &.
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 ?
das si tam cykus do{ }while a u toho while si budes testovat neco co si nastavis v tej default vetve napr. spatnavolba=TRUE apod. (pred tym switchom samozrejme spatnavolba inicializujes na FALSE)
Aha, do while vicemene chapu (udelej to, kdyz tamto..), ale takto to nechápu, hlavně teď nechápu s tou pravdou/nepravdou. :/
do while je cyklus, a ne udelej tamto kdyz tamto. Skus si to precitat este raz pomalsie, novu premennu BOOL spatnavolba snad zvladnes pridat, a testovat snad tiez. Ked tvoj prekladac nevie BOOL tak potom napr. pouzijes int spatnavolba, a hodnoty 0 a 1 namiesto FALSE a TRUE.
Cyklus_do-while
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 :)
to ocenujem ;) neni to nic komplikovane precitaj si ten link co som dal a potom to uz urcite bude jasne. Da sa to aj inymi sposobmi ale tak jak som pisal je to najprehladnejsie (najcitatelnejsi zdrojak).