ich hänge einfach fest
-
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.
-
drakon schrieb:
...Dann ist aber schon zu viel Arbeit reingesteckt worden. ...
definitiv!
hangman schrieb:
if (arabische_Ziffer == 0)
Unabhängig von Benutzer Eingaben?
Naja, ich weiss ja nicht.Schau Dir das Programm nochmal genau an ... Welche Ablaufpfade lässt der COmpiler wirklich übrig (mal von exceptions abgesehen) ?

Gruß,
Simon2.
-
hi danke für eure antworten hat mit dem switch suprer geklappt. habe nur jetzt wieder ein neues problem. ich würde gerne ein programm starten das ist mein quellcode:
#include "stdafx.h"
#include <process.h>
#include <stdio.h>
void _spawnl_example(void)
{
int result;
result = _spawnl(P_WAIT,"C:\\Programme\Winamp\winamp.exe", "C:\\Programme\Winamp\winamp.exe", NULL);
if (result == -1)
{
perror("Error from spawnl");
exit(1);
}
}
int main(void)
{
_spawnl_example();
return 0;
}die fehlermeldung die ich immer bekommen ist diese hier:
1>------ Erstellen gestartet: Projekt: programm öffnen, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>programm öffnen.cpp
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\programm öffnen\programm öffnen\programm öffnen.cpp(10) : warning C4129: 'W': Nicht erkannte Folge von Escapesequenz
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\programm öffnen\programm öffnen\programm öffnen.cpp(10) : warning C4129: 'w': Nicht erkannte Folge von Escapesequenz
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\programm öffnen\programm öffnen\programm öffnen.cpp(10) : warning C4129: 'W': Nicht erkannte Folge von Escapesequenz
1>c:\dokumente und einstellungen\maik\eigene dateien\visual studio 2008\projects\programm öffnen\programm öffnen\programm öffnen.cpp(10) : warning C4129: 'w': Nicht erkannte Folge von Escapesequenz
1>Verknüpfen...
1>Das Manifest wird eingebettet...
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Maik\Eigene Dateien\Visual Studio 2008\Projects\programm öffnen\programm öffnen\Debug\BuildLog.htm" gespeichert.
1>programm öffnen - 0 Fehler, 4 Warnung(en)
========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========und wenn ich es dann starte kommt immer:
Error from spawnl: No such file or directory
was mach ich da falsch und die andere frage ist kann ich damit auch lieder starten z.B. mp3 dateien oder nur exe ?
danke für eure antworten
maik
-
Ein einfaches '\' erkennt der Compiler nicht nur beim ersten Mal (nach dem "C:") nicht, sondern auch bei allen folgenden Malen ...
Gruß,
Simon2.
P.S.: Bei den Fehlermeldungen bezeichnet die Zahl in Klammern die Quellcodezeile, die Du Dir als erstes ansehen solltest. (genauer: ..., in der der Compiler Probleme bekommen hat.)