nested if fatter hat

Tags:    c++

Dette kode virker ikke som jeg vil have det til, please hjælp!

Fold kodeboks ind/udKode 




7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Selvom du ikke beskriver problemet, kan jeg udfra spørgsmålets titel se, at du forventer at det virker som en "nested if". Det er det bare ikke. Du har godt nok indrykket din anden if-block, men du afslutter jo den første inden du starter den anden, derfor er den ikke nested.
Jeg gætter på, at det skal se sådan her ud

Fold kodeboks ind/udKode 


Eller sådan her (det andet er bare pænere):

Fold kodeboks ind/udKode 


[Redigeret d. 09/06-05 11:41:54 af Ridefisken]



Det virker heller ikke... Ligesom før, vil den uanset hvilket tal jeg indtaster, returnere at 100 er max værdien..


Jeg er overbevist om at det ikke er i if sætningen det går galt!

Er du helt sikker på at der ligger den værdi som du forventer i variablen medister?
---
Simon



Det virker heller ikke... Ligesom før, vil den uanset hvilket tal jeg indtaster, returnere at 100 er max værdien..



1: Når du skal konvertere din streng (char array) til en int kan du bruge strtol:

int medister = strtol(userinput, 0, 10);

Det kræver stdlib.h. %d giver kun mening med printf og scanf

2: Du skal have:
if(...)
{
}
else if(...)
{
}
else
{
}

Den første else mangler. Jeg foretrækker at stille dem op på den måde, da de er sideordnede.

3: Den anden %s i den sidste printf skal være %d da medister er en int.

Tilsammen giver det:
Fold kodeboks ind/udKode 


[Redigeret d. 09/06-05 18:15:15 af Bertel Brander]



Så folkens... Ved lidt google søgning fandt jeg ud af at scanf er mange gange lettere end getchar i en while løkke...

Fold kodeboks ind/udKode 


Det ovenstående kodeeksempel virker nu helt efter hensigten...

Det hele startede egentlig med at jeg ville kombinere et par eksempler i en bog, bare for at få noget til at virke, men... AK, nu ved jeg altså at lærebøger ikke altid gør det let at lære, men derimod let at blive forvirret...

MEN, tak for alle de gode og konstruktive svar...

Edit:
Samtidig fandt jeg ud af at jeg havde lavet en mindre tastefejl i min if-struktur (som jeg i øvrigt forenklede med en AND operator), der skulle ikke stå %s%s men %s%d i den sidste printf sætning...
Ja ja, man lærer noget nyt hver dag...

Bertel, vil du lige komme med et svar så du kan få de 5 point?

[Redigeret d. 10/06-05 11:39:02 af C noob]



Der er ca. 1200 grunde til at undlade at bruge scanf, og kun én for at bruge den: dovenskab. Hvis du ikke vil læse en char af gangen kan du bruge fgets sammen med strtol.

09-06-05 18:14 skriv jeg under punkt 3 at du skulle rette %s til %d

Jeg samler ikke på point. Lave selv et svar og accepter det, så bliver spørgsmålet lukket og du får dine point tilbage.



Svar



t