Wiederholung mit j/n

zarqon

Grünschnabel
Hi Leute
Soll da ein Programm inC++ erstellen, das am Ende die Option hat:
Wiederholung der Befragung [j/n]
Nach dem Kompilieren erhalte ich ne Meldung:
j:"nichtdeklarierter Bezeichner"
n:"nichtdeklarierter Bezeichner"

Was muß da initialisiert werden bzw. als Anweisung geschrieben werden, damit die j/n Option auch funktioniert?
(Gefordert ist eine switch-Anweisung)

mfg zarqon
 
Code:
#include <iostream>

using namespace std;

void befragung() {
    char name[255], wohnort[255];

    cout << "Wie heissen Sie?" << endl;
    cin >> name;

    cout << "Wo wohnen Sie?" << endl;
    cin >> wohnort;
}

int main() {
    char var;

    befragung();

    bool exit=false;
    for( ;; ) {
        cout << "Befragung wiederholen? [j/n] ";
        cin >> var;

        switch(var) {
            case 'j':
                befragung();
                break;
            case 'n':
                exit=true;
                break;
            default:
                exit=true;
                break;
            }

        if(exit) {
            break;
        }
    }

    return 0;
}

ist zwar kein guter Stil, aber es funktioniert
 
Zuletzt bearbeitet:
Ähm ja. Meine Kristallkugel ist immer noch in Reparatur. Wäre also nett, wenn du deinen Quellcode posten würdest. Vermutung: du hast deine Char-Konstante nicht in Anführungszeichen gesetzt.

// edit: *grummel* Die von Kimble ist anscheinend voll funktionstüchtig :)
 
Zuletzt bearbeitet:
Hier mein Versuch:

char Wiederholung,j,n;


Beginn:
....
...
cout <<"Eine weitere Person befragen? [j/n]";

cin >>Wiederholung;

switch (Wiederholung)
{
case "j":
goto Beginn;break;
case "n":
break;
}
cout <<"\n\n";


Nach Kompilierung: "Case- Ausdruck ist keine Konstante"
 
Code:
#include <iostream.h>

void main()
{
	char Wiederholung;

	Beginn:

	//...

	cout <<"Eine weitere Person befragen? [j/n] ";

	cin >>Wiederholung;

	switch (Wiederholung)
	{
		case 'j':
			goto Beginn;
			break; 
		case 'n':
			break;
	}
	cout <<"\n\n";
}

so geht das :)
 
das funktioniert ja tatsächlich, aber komischerweise
meckert der Compiler wenn ich die normalen Hochhäkchen eintippe

aber danke trotzdem
 
Jup, das ist eben der Unterschied zwischen " und '. " brauchst du für Stringkonstanten, ' steht für eine Ganzzahlkonstante. D.h., der Compiler rechnet deinen Ausdruck 'j' in eine Ganzzahl um. Und bei switch/case-Anweisungen darfst du eben keine Strings verwenden.
 
hi,

also ich wuerde dir raten die Finger von goto zu lassen!!!
nimm entweder die Version von mir oder ueberleg dir, wie man das loesen kann.

Heutzeutage ist goto verbannt:
1. Spaghetti Code
2. alle goto Anweisungen kann man anders ausdruecken (bis auf ganz wenige Ausnahmen wo goto noch Sinn mache, hier aber nicht!)
3. kein guter Stil


HolyFly, usw. die als Programmierer arbeiten werden dir auch sagen, dass goto nicht mehr benutzt wird!

Ausserdem solltest du Standard C++ benutzen.
also:
Code:
#include <iostream>
using namespace std;

int main() {
    // code ...
    return 0;
}
 
Zuletzt bearbeitet:
Code:
#include <iostream.h>
#include <stdlib.h>

void befragung() {
    char name[255], wohnort[255];

    cout << "Wie heissen Sie?" << endl;
    cin >> name;

    cout << "Wo wohnen Sie?" << endl;
    cin >> wohnort;
}

void main()
{
    char var = 'j';
 
    do 
    {
        switch(var)
        {
           case 'j':   befragung();
                       break;

           case 'n':   exit(0);

        }
      
        cout << "Befragung wiederholen? [j/n] ";
        cin >> var;

    }while(1);
}

so hätte ich es gemacht, wär auch eine möglichkeit das ganze mit do-while zu lösen...


greetz
 
Zurück