Hej, Finns en C++-forumdel. Detta passar nog bättre där. TACK! Ja, typ så. Jag skulle ha löst det enligt: Okej, får tänka utanför boxen. if för mig är "använd bara om du måste" :).Nybörjarhjälp C
Läser C på nybörjarnivå och klarar inte switch-begreppet.
Så här skulle jag skrivit i VB:
Select case belopp
Case <=1000
....
Case >1000 and <2000
....
Case >2000
....
Case else
End Select
Men när jag försöker med C:
Switch (belopp)
{
Case <=1000 :
....
Case ((bel >1000) && (<2000)) :
.....
Case >2000 :
.....
default case :
.....
}
Smäller det på första Caseraden med: primary expression before token
Har provat att flytta runt () och ; men inte fått något annat resultat.
Kan man inte använda det på detta sätt?
Kommit att tro det då jag inte hittat ett enda kodexempel när jag googlat.
boken jag har täcker inte det här, kan fråga läraren förstås men då jag studerar distans och arbetar på dagarna går dyrbar tid åt :).
För stunden så fuskar jag med if där jag tilldelar switchsatsen 1, 2, eller 3 beroende på det som stämmer i intervallet. Känns inte riktigt bra :)
Tack på förhand,
//AnnSv: Nybörjarhjälp C
switchsatsen fungerar inte riktigt på samma sätt i C/C++.
För det första är ju C case-sensitive, så du kan inte skriva Switch, utan måste skriva switch.
I övrigt är det ganska mycket fel. C-switch kan bara kontrollera mot enskilda, fasta, char/short/int-värden.
Alltså:
switch (bel)
{
0: 1: 2: 3: .. 10000:
...
...
}
Sålunda är det inte den lösningen du ska ha alls, det måste lösas med ifsatser.Sv:Nybörjarhjälp C
Det här är ren plain C, har inte ens koll på det där med C++ och C#.
Var osäker på var att skriva. Kör i fortsättningen där. Ska plugga till en tenta som är efter nyår och då behöver jag labba medan jag pluggar, troligt det blir frågor.
Tack för påpekandet om skiftlägeskänsligheten. Knåpar med parenteser, hakar och semikolon, ska komma ihåg detta också :)
Löst så här före frågan, ska jag lägga allt i if-satsen i stället?
if (bel <=100000)
{s=1;}
if (bel >=100000)
// utremmat för kontroll ska upp en rad && (bel <=200000));
{s=2;}
if (bel >=200000)
{s=3;}
printf( "nivå %d", s );
switch( s )
{
case 1 : diverse räkneoperationer
break;
case 2 : diverse andra räkneoperationer
break;
case 3 : ytterligare alternativa räkneoperationer
break;
default : printf( "Hur gick det här till?" );
break;
}
Tack på förhand,
//AnnSv: Nybörjarhjälp C
if (bel < 100000){
//...
;
}
else if (bel < 200000){
...
}
else{
}
Kort om C/C++/Obj-C/Java/C#:
C är "ursprungsspråket" till hela serien av språk som kallas just C-språk. Ganska maskinnära och i övrigt minimalt.
C++ är "C med klasser". Det är lite hårt uttryckt, själv gillar jag C++ väldigt mycket. Det är urtypen till hur klasser fungerar i de flesta mainstream-språken idag.
Obj-C är också "C med klasser", men en annan variant av det, som ofta beskrivs som en vettigare och renare modell än C++-varianten.
Java kommer från Sun och bygger till stor del på C++, men har löst vissa saker på ett annat sätt, till stor del för att skydda programmeraren från farliga grejer.
C# är från MS, bygger väldigt mycket på Javas modell, och skiljer sig därför radikalt från C++ på vissa områden, men ännu mer från alternativa vägar (Obj-C, CLOS, dynamiskt typade).
VB.NET har sen i sin tur snott väldigt mycket funktionalitet från/utvecklats tillsammans med C#.Sv:Nybörjarhjälp C
Tack för det extra kuriosavetandet!
Ses i C++ sen då hoppas jag :)
//Ann