C++ switch nicht sofort anzeigen lassen

Physically

Lt. Commander
Registriert
Nov. 2010
Beiträge
1.708
hey,

also ich habe folgendes problem, wenn ich das programm starte dann geben ich zB 2 ein dann zeitg er zwei sterne an, aber danach möchte ich noch mit einer switch-anweisung fragen, ob es weiter gehen soll (w) oder ende (e). wenn nicht w oder e eingegeben wird, soll "Falsch Taste, bitte wiederholen!" ausgegben werden. aber nachem ich 2 eingeben, kommt sofort "Falsch Taste, bitte wiederholen!"

was mach ich falsch?



Code:
#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{

//VARIABLEN

int wert1;
int next_close;

cout << "Bitte gib' die Anzahl der Sterne an, die angezeigt werden soll:" << endl;

cin >> wert1;

for(int i = 0; i < wert1; ++i)
    {
        cout << "*";

    }

cout << endl;
cout << endl;

cout << "Nun haben wir " << wert1 << " Sterne!" << endl << endl;



switch(next_close)
{

    case 'w': case 'W': cout << "Bitte geben Sie die zu addierende Zahl ein!" << endl; break;
    case 'e': case 'E': cout << "Okay, dann bleiben wir bei " << wert1 << " Sternen" << endl; break;
    default: cout << "Falsch Taste, bitte wiederholen!" << endl;
}





    getch();
}
 
Ich würde es eher in dieser Richtung programmieren (Pseudocode):

int main()
{
bool quit = false;
char wert;

while (!quit)
{
cout << "Bitte gib' die Anzahl der Sterne an, die angezeigt werden soll:" << endl;
cin >> wert;

for(char i = 0; i < wert - 65; ++i)
{
cout << "*";
}

switch (wert)
{
case 'w': case 'W':
// iBeenden
quit = true;
break;
default: cout << "Falsch Taste, bitte wiederholen!" << endl;
}
}

}
Der Knackpunkt ist hier, dass alles in einer Schleife steht. D. h. alles wiederholt sich, solange bis man hier zB w drückt.
Ich sehe bei deinem Code nicht, wie er zum Start zurückkehrt, damit man erneut * ausgeben kann.


Btw, wo wird die Variable next_close gefüllt? Du überprüfst ihren Inhalt, aber da steht doch gar nichts drin bzw. wird nie etwas rein getan.
 
Ja ich wollte den Code eigentlich so lassen und ncihts ändern...ich meinte der ausfüherer soll grefragt werden, ob eine weitere zahl von sternen addiert werden soll...warum gibt er den sofort aus, dass eine falsche taste gedrückt worden ist?
 
Jepp. ;)
Schau mal, wie viel du vom ASCII-Wert im Char abziehen musst, um auf die Zahlen zu kommen. 65 ist falsch, fällt mir gerade auf. 65 ist ein 'A'. ^^
 
int next_close
und dann nen switch

switch(next_close)
{
case 'w'
.
.
.
}

mach doch nen char draus dann kommen so fehler nciht vor ...

außerdem solltest du wei bereits gesagt deinen wert zuerst füllen
da er sonst "irgendeinen" wert erhält
 
Zuletzt bearbeitet:
Vor dem Switch fehlt erst einmal ein cin zum auslesen der eingabe und den lädst du direkt in ein char oder ähnliches und fertig. Weiß gar nicht wieso du ein int genommen hast.
 
Zurück
Oben