ich hänge einfach fest
-
hi leute
ich hab hier was programmiert bin noch der totale anfänger und lerne fleißig aus meine c++ buch doch trotzdem bekomme ich es einfach nicht hin. villeicht könnt ihr mir ja helfen. hier der quellcode:#include "stdafx.h"
#include <iostream>int main()
{
int arabische_Ziffer;
char roemmische_Ziffer;
std::cout << "Gib eine roemische Ziffer ein\n";
std::cin >> roemische_Ziffer;if ("roemische_Ziffer" == "T") arabische_Ziffer = 1;
else if ("roemische_Ziffer" == "V") arabische_Ziffer = 5;
else if ("roemische_Ziffer" == "X") arabische_Ziffer = 10;
else if ("roemische_Ziffer" == "L") arabische_Ziffer = 50;
else if ("roemische_Ziffer" == "C") arabische_Ziffer = 100;
else if ("roemische_Ziffer" == "D") arabische_Ziffer = 500;
else if ("roemische_Ziffer" == "M") arabische_Ziffer = 1000;if (arabische_Ziffer == 0) std::cout << "Es wurde keine roemische Ziffer eingegeben!" << std::endl;
else std::cout << " Zugehörige arabische Ziffer:" << arabische_Ziffer << std::endl;
}vielen dank
maik
-
Du hättest vll. erwähnen sollen wo der fehler liegt;)
naja ich hab mal den quellcode überarbeitet:
#include "stdafx.h" #include <iostream> int main() { int arabische_Ziffer; char roemmische_Ziffer; std::cout << "Gib eine roemische Ziffer ein\n"; std::cin >> roemische_Ziffer; if (roemische_Ziffer == 'T') arabische_Ziffer = 1; else if (roemische_Ziffer == 'V') arabische_Ziffer = 5; else if (roemische_Ziffer == 'X') arabische_Ziffer = 10; else if (roemische_Ziffer == 'L') arabische_Ziffer = 50; else if (roemische_Ziffer == 'C') arabische_Ziffer = 100; else if (roemische_Ziffer == 'D') arabische_Ziffer = 500; else if (roemische_Ziffer == 'M') arabische_Ziffer = 1000; if (arabische_Ziffer == 0) std::cout << "Es wurde keine roemische Ziffer eingegeben!" << std::endl; else std::cout << " Zugehörige arabische Ziffer:" << arabische_Ziffer << std::endl; }der lange if-> else block könntest du mit switch case machen (google mal danach)
P.S.: Und du bist im MFC forum das was du da hast ist. C++
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) 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.
-
Sollte
if (roemische_Ziffer == 'T')
arabische_Ziffer = 1;nicht
if (roemische_Ziffer == 'I')
arabische_Ziffer = 1;sein?
-
int arabische_Ziffer;Variablen sollte man immer initialisieren:
int arabische_Ziffer = 0;mfg
-
pZy hat in diesem Fall ziemlich Recht! Stell dir mal vor was passiert, wenn jemand einen Buchstaben eingibt, den du nicht berücksichtigt hast! Welchen Wert hat arabische_Ziffer dann, wenn du sie vergleichst?
-
danke hab mal alles so geändert wie ihr mir das gesagt habt:
#include "stdafx.h"
#include <iostream>int main()
{
int arabische_Ziffer = 0;
char roemmische_Ziffer;
std::cout << "Gib eine roemische Ziffer ein\n";
std::cin >> roemische_Ziffer; /*zeile 13*/if ("roemische_Ziffer" == "I") arabische_Ziffer = 1;
else if ("roemische_Ziffer" == "V") arabische_Ziffer = 5;
else if ("roemische_Ziffer" == "X") arabische_Ziffer = 10;
else if ("roemische_Ziffer" == "L") arabische_Ziffer = 50;
else if ("roemische_Ziffer" == "C") arabische_Ziffer = 100;
else if ("roemische_Ziffer" == "D") arabische_Ziffer = 500;
else if ("roemische_Ziffer" == "M") arabische_Ziffer = 1000;if (arabische_Ziffer == 0) std::cout << "Es wurde keine roemische Ziffer eingegeben!" << std::endl;
else std::cout << " Zugehörige arabische Ziffer:" << arabische_Ziffer << std::endl;
}jetzt habe ich noch eine fehlermeldung und ich weis echt nicht was ich noch tun soll und ich bin einfach noch total grün hinter den ohren.
1>------ Erstellen gestartet: Projekt: römische zahlen, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>römische zahlen.cpp
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\römische zahlen\römische zahlen\römische zahlen.cpp**(13) : error C2065: 'roemische_Ziffer': nichtdeklarierter Bezeichner**1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Maik\Eigene Dateien\Visual Studio 2008\Projects\römische zahlen\römische zahlen\Debug\BuildLog.htm" gespeichert.
1>römische zahlen - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========vielleicht wisst ihr noch was
lg maik
-
Guck mal Zeile 11, "char roemmische_Ziffer;"
Es gibt übrigens die C++-Tags, damit ist der Code um einiges einfacher zu lesen. Einfach den Code mitundummanteln

-
Fehler liegt da:
std::cin >> roemische_Ziffer; /*zeile 13*/Rechtschreibung beachtet auch der Compiler.
Das hier solltest du aber auch nochmal übredenken:
if ("roemische_Ziffer" == "I") arabische_Ziffer = 1;
-
diese else if blöcke schreien doch nach einem switch...
switch(roemische_Ziffer) { case 'I' arabische_Ziffer = 1; case 'V' arabische_Ziffer = 5; case 'X' arabische_Ziffer = 10; case 'L' arabische_Ziffer = 50; case 'C' arabische_Ziffer = 100; case 'D' arabische_Ziffer = 500; case 'M' arabische_Ziffer = 1000; }
-
deine cases schreien doch nach einem : und einem break;
-
So funzt's:
#include "stdafx.h" #include <iostream> int main() { int arabische_Ziffer = 0; char roemische_Ziffer; std::cout << "Gib eine roemische Ziffer ein\n"; std::cin >> roemische_Ziffer; /*zeile 13*/ if ("roemische_Ziffer" == "I") arabische_Ziffer = 1; else if ("roemische_Ziffer" == "V") arabische_Ziffer = 5; else if ("roemische_Ziffer" == "X") arabische_Ziffer = 10; else if ("roemische_Ziffer" == "L") arabische_Ziffer = 50; else if ("roemische_Ziffer" == "C") arabische_Ziffer = 100; else if ("roemische_Ziffer" == "D") arabische_Ziffer = 500; else if ("roemische_Ziffer" == "M") arabische_Ziffer = 1000; if (arabische_Ziffer == 0) std::cout << "Es wurde keine roemische Ziffer eingegeben!" << std::endl; else std::cout << " Zugehörige arabische Ziffer:" << arabische_Ziffer << std::endl; } cin.get(); }
-
if ("roemische_Ziffer" == "I") arabische_Ziffer = 1; else if ("roemische_Ziffer" == "V") arabische_Ziffer = 5; else if ("roemische_Ziffer" == "X") arabische_Ziffer = 10; else if ("roemische_Ziffer" == "L") arabische_Ziffer = 50; else if ("roemische_Ziffer" == "C") arabische_Ziffer = 100; else if ("roemische_Ziffer" == "D") arabische_Ziffer = 500; else if ("roemische_Ziffer" == "M") arabische_Ziffer = 1000;
Und was macht das deiner Meinung nach?
-
JustAnotherNoob schrieb:
deine cases schreien doch nach einem : und einem break;
ach sch**** hab nicht aufgepasst, habs schnell dahingeschmissen, während ich was anderes gemacht habe...

so habs jetzt mal eingefuegt^^
switch(roemische_Ziffer) { case 'I': arabische_Ziffer = 1; break; case 'V': arabische_Ziffer = 5; break; case 'X': arabische_Ziffer = 10; break; case 'L': arabische_Ziffer = 50; break; case 'C': arabische_Ziffer = 100; break; case 'D': arabische_Ziffer = 500; break; case 'M': arabische_Ziffer = 1000; break; }
-
JustAnotherNoob schrieb:
deine cases schreien doch nach einem : und einem break;
Oder gleich
std::map<char, int>verwenden, dann kann man sich die Codeduplizierung (x Zuweisungen) sparen...Und um es nochmals klarzustellen:
if ("roemische_Ziffer" == "I")vergleicht die beiden Strings (bzw. deren Adressen) und ergibt folglich immer
false. Variablennamen werden nicht in Anführungszeichen geschrieben.
-
drakon schrieb:
if ("roemische_Ziffer" == "I") arabische_Ziffer = 1; else if ("roemische_Ziffer" == "V") arabische_Ziffer = 5; else if ("roemische_Ziffer" == "X") arabische_Ziffer = 10; else if ("roemische_Ziffer" == "L") arabische_Ziffer = 50; else if ("roemische_Ziffer" == "C") arabische_Ziffer = 100; else if ("roemische_Ziffer" == "D") arabische_Ziffer = 500; else if ("roemische_Ziffer" == "M") arabische_Ziffer = 1000;
Und was macht das deiner Meinung nach?
Immerhin funktioniert dieses Programm sogar unabhängig von den Benutzereingaben - kann man nicht von jedem Programm behaupten (sozusagen der Heilige Gral der stabilen Programmierung)

Gruß,
Simon2.
-
Simon2 schrieb:
Immerhin funktioniert dieses Programm sogar unabhängig von den Benutzereingaben - kann man nicht von jedem Programm behaupten (sozusagen der Heilige Gral der stabilen Programmierung)

Gruß,
Simon2.
:p
Dann ist aber schon zu viel Arbeit reingesteckt worden.

Das hier finde ich besser. Ist gerade noch so überschaubar und man kann noch weniger Fehler machen.

int main (){}
-
Ich habe auch ein Problem:
ich finde einfach den Fehler nicht... es kommt immer eine Fehlermedung dass versch. Sachen nicht gefunden werden können...// Gruss-Void #include <iostream> using namespace std; void gruss() { cout<<endl; cout<<"Hallo Programmierer!"<<endl; cout<<endl; } int main() { double fahrenheit; double celsius; gruss(); cout<<"Temperatur in Fahrenheit: "; cin<<fahrenheit; celsius =(fahrenheit - 32) * 5.0 / 9.0; cout<<fahrheit <<" Grad Fahrenheit entsprechen " <<celsius <<" Grad Celsius"<<endl; gruss(); return 0; }
-
Dann sag mal, was nicht gefunden werden kann.
-
cin<<fahrenheit;nochmal überdenken...
Du willst gerade den Wert von "fahrenheit" in die Ausgabe schieben...

edit: und: (Z.23)
cout<<fahrheitNächstes mal bitte mit Fehler:
$ g++ test1.cpp -o test1 test1.cpp:31:11: warning: no newline at end of file test1.cpp: In function ‘int main()’: test1.cpp:19: error: no match for ‘operator<<’ in ‘std::cin << fahrenheit’ test1.cpp:23: error: ‘fahrheit’ was not declared in this scope
-
if (arabische_Ziffer == 0)
Unabhängig von Benutzer Eingaben?
Naja, ich weiss ja nicht.