Variablen auch außerhalb von if und else
-
antstatt mehrere arrays zu schreiben nimm doch einfach eins.. z.B:
char Test[4][2]; Test[1][1]='Eingabe'; Test[2][1]='Status'; Test[3][1]='BlaBlaBla'; Test[1][2]='10';//Wert von Eingabe Test[2][2]='20';//Wert von Status Test[3][2]='30';//Wert von BlaBlaBla Test[4][2]='\0';
-
Das klingt ja alles sehr gut, aber nutzen tut es mir nichts, oder ich verstehe es falsch. zeige euch mal die ganze Funktion, vielleicht wird mein Problem dann deutlicher. Ihe seht ja das Transfer eine Variable übergeben bekommt, die entschiedet darüber was zugewiesen werden soll.
[cpp] //Methode die den eigentlich Transfer ausführt void Bankautomat::Transfer(char auswahl) { bool wahl = false; do { if(auswahl == 'e') { char ausgabe[] = "Einzahlung"; //Erscheint in der Überschrift char ausgabeText[] = " einzahlen"; //erscheint bei gewünschtem Betrag char ausgabeFunktion[] = " wird auf Ihr Konto gebucht!"; //Erscheint in der Statusmeldung } else if(auswahl == 'a') { char ausgabe[] = "Auszahlung"; char ausgabeText[] = " abheben"; char ausgabeFunktion[] = " wird von Ihrem Konto abgebucht!"; } //Variable in der, der Einzahlungsbetrag gespeichert wird int zahlung; cout << endl << endl; cout << "\t" << ausgabe << endl; cout << "\t-----------" << endl; cout << endl << endl; cout << "\tWelchen Betrag moechten Sie " << ausgabeText << " ? " << endl << endl; cout << "\t-------------------" << endl; cout << "\tIhr Betrag: "; cin >> zahlung; cout << "\t-------------------" << endl << endl; //Hier wird der Betrag auf Bedingungen getestet if(zahlung < GetminEinzahlung()) { cout << "\tDer Betrag muss mindestens " << GetminEinzahlung() << " EUR betragen! " << endl; system("cls"); } else if (zahlung > GetmaxEinzahlung()) { cout << "\tDer Betrag darf nicht mehr als " << GetmaxEinzahlung() << " EUR sein! " << endl; system("cls"); } else { cout << "\tDer Betrag von " << zahlung << " EUR " << ausgabeFunktion << endl << endl; cout << "\tBitte haben Sie einen Moment gedult"; Warten(); cout << endl << endl; cout << "\tIhr Auftrag wurde erfolgreich ausgefuehrt" << endl << endl; //Neuer Kontostand wird ausgegeben cout << "\t--------------------------------" << endl; cout << "\tAktueller Kontostand: " << GetKontostand(zahlung) << " EUR" << endl; cout << "\t--------------------------------" << endl; cout << endl << endl << endl; cout << "\tGeben Sie 'z' ein um zurueck zu kehren."; //Eingabe wird abgewartet, wenn erfolgt getestet switch(getch()) { case 'z': system("cls"); wahl = true; break; default: Fehlermeldung(); break; } } } while(!wahl); } [/cpp]Nun seht ihr warum ich den Variablen verschiedene Texte zuweisen möchte.
Danke für eure Mühen!
-
Deklariere die Variablen vor deinem if-else-Konstrukt und kopiere dann, je nach Auswahl, mittels strcpy(..) die String-Literale in deine Variablen.
//Methode die den eigentlich Transfer ausführt void Bankautomat::Transfer(char auswahl) { char ausgabe[128] = ""; //Erscheint in der Überschrift char ausgabeText[128] = ""; //erscheint bei gewünschtem Betrag char ausgabeFunktion[128] = ""; //Erscheint in der Statusmeldung if(auswahl == 'e') { strcpy(ausgabe, "Einzahlung"); strcpy(ausgabeText, " einzahlen"); strcpy(ausgabeFunktion, " wird auf Ihr Konto gebucht!"); } else if(auswahl == 'a') { // Analog zum if } //...Hier sollen die eben erstellten chars zu verfügung stehen }@Baltur: Das ist aber falsch
char Test[4][2]; Test[1][1]='Eingabe'; Test[2][1]='Status'; Test[3][1]='BlaBlaBla'; Test[1][2]='10';//Wert von Eingabe Test[2][2]='20';//Wert von Status Test[3][2]='30';//Wert von BlaBlaBla Test[4][2]='\0';Erstens beginnt in C++ die Array-Nummerierung bei 0. Zweitens werden String-Literale in doppelte Anführungszeichen eingeschlossen. Drittens ist es nicht notwendig einen String-Literal extra mit NUL zu terminieren (Abgesehen davon macht das '\0' in deinem Beispiel keinen Sinn). Viertens müsste dein Array eigentlich dreidimensional sein (für die Zeichen der Strings)
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also ich würde doch zwei unterschiedliche Funktionen nehmen. Einzahlung und Auszahlung unterscheiden sich doch eigentlich schon sehr von einander. Zum Beispiel prüfst du den Zahlungsbetrag auf einen Mindesteinzahlungsbetrag, obwohl es auch eine Auszahlung sein könnte.
-
Jawoll, recht herzlichen Dank!
So hatte ich mir das vorgestellt. Allerdings bekomme ich jetzt Warnungen angezeigt.
kann ich das mit der Kontruktion auch machen, wenn ich mit einer Variablen zwei unterschiedliche FUnktionen aufrugen möchte?
-
timkon schrieb:
Jawoll, recht herzlichen Dank!
So hatte ich mir das vorgestellt. Allerdings bekomme ich jetzt Warnungen angezeigt.
Und diese Warnungen sollen wir jetzt mit Hilfe unserer Kristallkugeln erraten?

MfG SideWinder
-
meine meinung:
es gibt keinen string, der sich nicht mit sprintf() zusammenbasteln lässt...
-
nein sollt ihr nicht. Das will ich euch mal nicht zu muten :-).
habt ihr mein editierten beitrag schon gelesen?
tja das mit dem Tesen is so ne Sache, muss ich mal tesen vielleicht kann man das alles immer testen oder so mal sehen. Wenn nicht nehme ich vielleichtdoch zwei Funktionen, ist dann vielleicht verständlicher und übersihtlicher!
-
Andrey schrieb:
meine meinung:
es gibt keinen string, der sich nicht mit sprintf() zusammenbasteln lässt...Mag sein, aber sprintf() ist nicht typensicher. C++ verfolgt aber gerade in diesem Punkt einen sehr strengen Weg.
MfG SideWinder
-
Wie kann ich denn über eine Variable Kontostand zwei verschiedene Funktionen aufrufen?
Also vielelicht auch so wie mit dem strcpy?
einmal möchte ich haben neuerKontostand = Funktion1(); und dann neuerKontostand = Funktion2();
versteht ihr?
Hat sich schon erldeigt, hab es anders geregelt!