ich hänge einfach fest



  • 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 mit

    und
    

    ummanteln 👍



  • 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<<fahrheit
    

    Nä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.)



  • hi danke simon2 aber kannst du mir auch sagen was ich da anderst machen soll weil das ist ja der pfad zur datei. lg maik


Anmelden zum Antworten