C++ Anfängerfehler?

estre

Commander
Registriert
Dez. 2005
Beiträge
3.006
Nabend,

hey ich übe gerade mit switch-Anweisungen in C++, ansich nicht schwer, jetzt habe ich aber folgenden Code programmiert und erhalte dabei immer die Ausgabe der default-Anweisung, auch wenn ich irgend eine Zahl aus den Case-Anweisungen eingebe, ich hoffe mir kann jemand weiterhelfen.

Hier mal der Code:

#include<iostream>
#include<cstdlib>

using namespace std;

int main ()

{

int zahl;
char note;

cout<<"Note in Ziffer eingeben: "<<endl;
cin>>zahl;

switch (note)
{
case '1': cout<<"Note: sehr gut!"<<endl; break;
case '2': cout<<"Note: gut!"<<endl; break;
case '3': cout<<"Note: befriedigend!"<<endl; break;
case '4': cout<<"Note: ausreichend!"<<endl; break;
case '5': cout<<"Note: mangelhaft!"<<endl; break;
case '6': cout<<"Note: ungenügend!"<<endl; break;

default: cout<<"Keine gültige Note!"<<endl;
}

}
 
stimmt hast recht .... geht trotzdem nicht :D

müssen die Zahlen eigtl. nicht in Hochkammas, da ich ja die Zahlen an sich haben möchte und nicht der Wert der dahintersteckt ?! ?!
..also so quasi:

case '1': cout<<"Note. sehr gut!"<<endl;
 
Zuletzt bearbeitet:
hmm habs jetzt mal so gemacht, geht aber trotzdem nicht:

#include<iostream>
#include<cstdlib>

using namespace std;

int main ()

{

int zahl;


cout<<"Note in Ziffer eingeben: "<<endl;
cin>>zahl;


switch (zahl)
{
case '1': cout<<"Note: sehr gut!"<<endl; break;
case '2': cout<<"Note: gut!"<<endl; break;
case '3': cout<<"Note: befriedigend!"<<endl; break;
case '4': cout<<"Note: ausreichend!"<<endl; break;
case '5': cout<<"Note: mangelhaft!"<<endl; break;
case '6': cout<<"Note: ungenügend!"<<endl; break;

default: cout<<"Keine gültige Note!"<<endl;
}

system("pause");
}




edit: ok es klappt wenn ich die Hochkammas bei den Zahlen wegmache, kann mir jmd erklären warum man die hier weglassen muss ?!


Danke

Gruß
 
Zuletzt bearbeitet:
Da "zahl" ein Integer ist, liest du mit "cin" auch einen Integer ein, im "switch" jedoch hast du auf einmal ASCII-Werte nach denen du suchst.
Also entweder du liest ein "char" ein und verwendest die Hochkommas, oder du liest einen Integer ein und verwendest sie nicht.

Gruß
BlackMark
 
Zur näheren Erläuterung zu BlackMarks Post:

'1' == 49

49 ist der ASCII-Wert des Zeichens '1'
 
Hochkommata nimmt du nur, wenn du mit Zeichenketten arbeitest. Ansonsten nicht, da du dann direkt mit Zahlen arbeitest.

Eine Zeichenkette ist ein Array aus ASCII-Werten. Intern werden dann nur die ASCII-Werte gespeichert.
Über die ASCII-Tabelle kann dann das Zeichen identifiziert werden.

Wenn du jetzt '1' schreibst, meinst du damit das Zeichen '1', was nach der ASCII-Tabelle den Dezimalwert 49 hat. Da aber, wie schon gesagt, du direkt Zahlen einliest, darfst du die Hochkommata nicht schreiben.
 
So gehts:

Code:
#include<iostream.h>
#include<stdio.h>

void main ()

{

int zahl;


cout<<"Note in Ziffer eingeben: "<<endl;
cin>>zahl;


switch (zahl)
{
case 1: cout<<"Note: sehr gut!"<<endl; break;
case 2: cout<<"Note: gut!"<<endl; break;
case 3: cout<<"Note: befriedigend!"<<endl; break;

default: cout<<"Keine gültige Note!"<<endl;
}

}

Habs mit Microsoft Visual C++ geproggt.

Gruß Telekoma89
 
Richtig, Hochkomma verwendetest du bei einzelnen Zeichen.
Diese Zeichen sind vom Datentyp char.

Gruß Telekoma89
 
Zurück
Oben