[C++] Char und (x) * char Hilfe benötigt!
-
Hallo und zwar mach ich seit 4 Tagen eine Ausbildung , und wollte hier im Forum die "Profis" nachfragen ob sie mir villeicht Helfen könnten..
Von meinem Chef habe ich folgende Aufgabe bekommen;" Der Benutzer gibt ein Buchstaben ein a,b,c oder d " a = Multiplikation b= Addition c= Subtraktion d= Division Der Benutzer soll 2 Zahlen eingeben = ErgebnissEs ist sehr Wichtig , hab allerdings schon etwa 2 Stunden drangehuckt , und komme einfach nicht weiter ..
Hier mal mein " Kunstwerk":// egal.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung. // #include "stdafx.h" #include <iostream.h> #include <iomanip.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> int main(int argc, char* argv[]) { // Deklaration i,b vom Datentyp int. Initialisierung mit dem wert 0. char a = 'a' , b = 'b', c = 'c', d = 'd'; cout << "Hallo bitte geben Sie Buchstaben von A bis D ein:\n"; cin >> a; if (a==a) { cout << "Sie haben die Buchstabe a eingegeben."; } if (a==b) { cout << "Sie haben die Buchstabe b eingegeben."; } if (a==c) { cout << "Sie haben die Buchstabe c eingegeben."; } if (a==d) { cout << "Sie haben die Buchstabe d eingegeben"; } int zahl; cout << "Bitte geben sie 2 Zahlen ein:!\n"; cin >> zahl; //if () //{} // Programm läuft einwandfrei , es gibt daher 0 zurück. return 0;Danke an alle.
-
Ist ja nett, dass du es nochmals versuchst, immerhin ist schon der Titel besser.

Aber die konkrete Frage fehlt leider nach wie vor. Vielleicht hilft es deinem Problem allerdings, wenn du für die Eingabe eine andere Variable als
animmst, die ist nämlich schon besetzt und somit überschreibst du sie.P.S. Nimm statt der [code]-Tags lieber die [cpp]-Tags (erste Schaltfläche), das macht den ganzen Code noch farbig.

-
Du weist a zuerst 'a' zu, aber überschreibst es dann mit der Benutzereingabe.
Daher: eigene Variable, z.B. char eingabe; und dann if (eingabe==a).
a, b, c und d sind aber eigentlich überflüssig, weil du ja auch gleich if (eingabe=='a') schreiben kannst.
-
HeHe
also naya , die Frage lautet ja , wie kann es den weiter gehen , hab schon nachgelesen das ich char net mit == vergleichen kann ..
-
Danke euch sehr für die schnellen Antworten
Hab jetzt 1 Fehler , der Code sieht so aus// Deklaration i,b vom Datentyp int. Initialisierung mit dem wert 0. char eingabe; cout << "Hallo bitte geben Sie Buchstaben von A bis D ein:\n"; cin >> eingabe; if (eingabe==a) { cout << "Sie haben die Buchstabe a eingegeben."; }C:\Programme\Microsoft Visual Studio\MyProjects\Test1\Test1.cpp(27) : error C2065: 'a' : nichtdeklarierter Bezeichner Fehler beim Ausführen von cl.exe.
-
Gracjan schrieb:
HeHe
also naya , die Frage lautet ja , wie kann es den weiter gehen , hab schon nachgelesen das ich char net mit == vergleichen kann ..Doch, kannst du. Was du wahrscheinlich meinst, sind char-Strings, welche man mit strcmp vergleichen muss. Du hast aber lediglich ein einziges Zeichen, das kannst du sehr wohl mit == vergleichen.
char-Strings sind übrigens C und werden in C++ ohne guten Grund nicht verwendet, dafür gibt es std::string. strings kannst du ebenfalls problemlos mit == vergleichen.Außerdem brauchst du nur zwei Header:
#include <iostream>
#include <cstdlib>Die anderen haben da nichts zu suchen. iostream.h gibt es seit gut 11 Jahren nicht mehr, bzw. gab es noch nie, wenn man die Zeit vor dem ersten C++-Standard nicht berücksichtigt. Einen halbwegs aktuellen C++-Compiler zu benutzen, der sowas nicht mehr zulässt, wäre durchaus empfehlenswert.
Edit: die Fehlermeldung sollte dir schon alles sagen. Du hast keine Variable a deklariert, also kannst du sie auch nicht verwenden. Wenn du mit dem Zeichen a vergleichen willst, muss es 'a' lauten.
-
aist für den Compiler ein Symbol, u.a. für eine Variable. Dieses Symbol hast du nirgends, z.B. mitchar a;, definiert. Du willst die Variableeingabemit einem Char-Literal vergleichen. Diese Literale schreibst du innerhalb von single quotes:if(eingabe == 'a')
-
Ok mit dem Lesen von den Buchstaben hats geklapt , wenn ich jetzt a eintippe sagt der mir das ich die buchstabe A eingetippt habe, wie kann ich den jetzt machen das die buchstabe A Multiplikation sein soll ? und das dann mit den 2 Zahlen multipliziert die der Benutzer eingibt ?
-
Gracjan schrieb:
Ok mit dem Lesen von den Buchstaben hats geklapt , wenn ich jetzt a eintippe sagt der mir das ich die buchstabe A eingetippt habe, wie kann ich den jetzt machen das die buchstabe A Multiplikation sein soll ? und das dann mit den 2 Zahlen multipliziert die der Benutzer eingibt ?
Versteh nicht ganz, wo es da Probleme gibt, da du if ja anzuwenden weisst.
if (eingabe=='a') { cout << "Sie haben den Buchstaben a eingegeben. "; cout << zahl1*zahl2 << endl; }Macht natürlich Sinn, das ganze erst nach dem Einlesen der beiden Zahlen zu machen...
-
Mein Code sieht jetzt so aus
int main(int argc, char* argv[]) { // Deklaration i,b vom Datentyp int. Initialisierung mit dem wert 0. char eingabe; cout << "Hallo bitte geben Sie Buchstaben von A bis D ein:\n"; cin >> eingabe; if (eingabe == 'a' ) { cout << "Sie haben die Buchstabe a eingegeben."; } if (eingabe == 'b' ) { cout << "Sie haben die Buchstabe b eingegeben."; } if (eingabe == 'c' ) { cout << "Sie haben die Buchstabe c eingegeben."; } if (eingabe == 'd' ) { cout << "Sie haben die Buchstabe d eingegeben."; } int zahl;; cout << "Hallo bitte geben Sie 2 Zahlen ein:\n"; cin >> zahl; // Programm läuft einwandfrei , es gibt daher 0 zurück. return 0; }
-
Okey, habe mir jetzt Registriert damit ich die Posts Editieren kann..
// egal.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung. // #include "stdafx.h" #include <iostream.h> #include <iomanip.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> int main(int argc, char* argv[]) { // Deklaration i,b vom Datentyp int. Initialisierung mit dem wert 0. char eingabe; cout << "Hallo bitte geben Sie Buchstaben von A bis D ein:\n"; cin >> eingabe; if (eingabe == 'a' ) { cout << "Sie haben die Buchstabe a eingegeben."; cout << zahl1*zahl2 << endl; } if (eingabe == 'b' ) { cout << "Sie haben die Buchstabe b eingegeben."; cout << zahl1+zahl2 << endl; } if (eingabe == 'c' ) { cout << "Sie haben die Buchstabe c eingegeben."; cout << zahl1-zahl2 << endl; } if (eingabe == 'd' ) { cout << "Sie haben die Buchstabe d eingegeben."; cout << zahl1/zahl2 << endl; } int zahl;; cout << "Hallo bitte geben Sie 2 Zahlen ein:\n"; cin >> zahl; // Programm läuft einwandfrei , es gibt daher 0 zurück. return 0; }@Edit
bekomme am ende ein ErrorC:\Programme\Microsoft Visual Studio\MyProjects\Test1\Test1.cpp(64) : fatal error C1004: Unerwartetes Dateiende gefunden Fehler beim Ausführen von cl.exe.die letzte >Zeile
-
// egal.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung. // #include "stdafx.h" #include <iostream.h> #include <iomanip.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h>Reduziere das auf
#include <iostream>
<iostream.h> gibt es nicht mehr (schlechter Stil) und die anderen Inclusions sind total sinnfrei, mit Ausnahme von "stdafx.h"
if (eingabe == 'a' ) { cout << "Sie haben die Buchstabe a eingegeben."; cout << zahl1*zahl2 << endl; } if (eingabe == 'b' ) { cout << "Sie haben die Buchstabe b eingegeben."; cout << zahl1+zahl2 << endl; } if (eingabe == 'c' ) { cout << "Sie haben die Buchstabe c eingegeben."; cout << zahl1-zahl2 << endl; } if (eingabe == 'd' ) { cout << "Sie haben die Buchstabe d eingegeben."; cout << zahl1/zahl2 << endl; }Und wo wurde zahl1 bzw zahl2 definiert?
Und selbst wenn, hat der User überhaupt scchon etwas eingegeben? Offensichtlich nicht.Außerdem würde es so doch schöner aussehen:
cout << "Sie haben den Buchstaben " << eingabe << " eingegeben."; switch(eingabe) { case 'a': cout << zahl1*zahl2 << endl; break; case 'b': ....... }Der Code ist imo (sorry, nicht böse gemeint) schlecht, allein schon das Header inkludieren zeigt dass du nicht wirklich weißt was du da machst...
-
Ja danke dir (:
Aber mit SWITCH Arbeite ich lieber noch nicht , sonst denkt der Chef ich kann das schon:-P
Aktueller Code:
#include <cstdlib> #include <stdlib.h> int main(int argc, char* argv[]) { // Deklaration i,b vom Datentyp int. Initialisierung mit dem wert 0. int zahl, zahl1, zahl2; char eingabe; cout << "Hallo bitte geben Sie Buchstaben von A bis D ein:\n"; cin >> eingabe; if (eingabe == 'a' ) { cout << "Sie haben die Buchstabe a eingegeben."; cout << zahl1*zahl2 << endl; } if (eingabe == 'b' ) { cout << "Sie haben die Buchstabe b eingegeben."; cout << zahl1+zahl2 << endl; } if (eingabe == 'c' ) { cout << "Sie haben die Buchstabe c eingegeben."; cout << zahl1-zahl2 << endl; } if (eingabe == 'd' ) { cout << "Sie haben die Buchstabe d eingegeben."; cout << zahl1/zahl2 << endl; cout << "Hallo bitte geben Sie 2 Zahlen ein:\n"; cin >> zahl; // Programm läuft einwandfrei , es gibt daher 0 zurück. return(0); }
-
#include <cstdlib> #include <stdlib.h>1. header brauchst du nicht
2. gibt es nicht
3. hast du den vergessen, den du brauchst->
#include <iostream>falls du mit vorkompiliertem header arbeitest, fehlt ganz oben noch ein
#include "stdafx.h"int main(int argc, char* argv[])brauchst du nicht
int main()reicht da
if (eingabe == 'd' ) { cout << "Sie haben die Buchstabe d eingegeben."; cout << zahl1/zahl2 << endl;hier fehlt ne klammer (
})...return(0);die klammern da sind unnötig - und das return 0 in der main-fkt ist auch unnötig...
das wars zwar noch lange nicht, aber vorerst sind das wohl genug fehler^^
bb