1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

simple Frage

  • M.W.
  • 2. September 2008 um 10:10
  • Unerledigt
  • M.W.
    3
    M.W.
    Mitglied
    Punkte
    70
    Beiträge
    12
    • 2. September 2008 um 10:10
    • #1

    Hi,
    ich hab ein kleines Programm geschrieben welches sich einwandfrei kompilieren und ausführen lässt. Nun wollte ich eine Art Menü einbauen mit der switch Anweisung

    Code
    int a = 0;
    cin >> a;
     
    switch (a)
    {
        case 0: cout << "Hallo" << endl;
        break;
        case 1: cout << "Hallo2" << endl;
        break;
        default: cout << "falsche Eingabe" << endl;
    }
    Alles anzeigen



    Dies lässt sich auch kompilieren. Wenn ich jedoch das Programm ausführe und dann z.b. die 1 drücke (und dann enter) kommt die Fehlermeldung
    "Datenzugriffspeicherfehler". Weiss jemand womit das zu tun hat und wie man das beheben kann? In C gibts ja malloc und so...

    Gruss

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 2. September 2008 um 10:24
    • #2

    Bitte immer moeglichst kleine, aber vollstaendige Programme posten. Wie sollen wir dein Programm kompilieren und testen, wenn wir es nicht haben? Es ist gut, dass du dein Problem so weit isoliert hast, aber dann pack bitte auch eine main-Funktion drumherum. Das ist wichtig: Es mag sein, dass du glaubst, dass du nur unwichtige Einzelheiten weggelassen hast. Aber da kann man sich irren.

    Das hier kompiliert und laeuft so, wie es soll:

    Code
    #include <iostream>
    
    
    int main()
    {
        using namespace std;
    
    
        int a = 0;
        cin >> a;
     
        switch (a)
        {
            case 0: cout << "Hallo" << endl;
            break;
            case 1: cout << "Hallo2" << endl;
            break;
            default: cout << "falsche Eingabe" << endl;
        }
    }
    Alles anzeigen

    Bei dir nicht? Welchen Compiler verwendest du?

    Zitat von M.W.

    In C gibts ja malloc und so...


    Das ist C++, und da gibts new (und malloc). Ist hier aber nicht noetig.

    *plantsch*

  • M.W.
    3
    M.W.
    Mitglied
    Punkte
    70
    Beiträge
    12
    • 2. September 2008 um 10:45
    • #3

    ich verwende gcc version 4.2.1 (SUSE Linux). Meine main ist leider zu gross um hier zu posten.
    Wenn ich z.b. die 1 und enter drücke wird auch "Hallo2" ausgegeben jedoch folgt danach "Speicherzugriffsfehler" (nicht "Datenzugriffspeicherfehler" hab mich verguckt gehabt)
    Aber Speicher alloziieren und wieder frei geben dürfte hier eigentlich nicht (wie du schon sagtest) notwendig sein....
    Ansonsten müsste ich mal meine main verkleinern und doch posten...

  • M.W.
    3
    M.W.
    Mitglied
    Punkte
    70
    Beiträge
    12
    • 2. September 2008 um 10:52
    • #4

    hi, ich glaub ich hab das Problem gefunden. Ich hab die swich anweisung ja nur verkürzt angegeben, aber da lag grad der hacken: im case 1 fall erzeuge ein Objekt welches nach der switch anweisung benutzt wird. Das heisst wenn ich in alle andere Fälle reingehe kennt er das Objekt ja garnicht und versucht nach der Switch anweisung darauf zuzugreifen...
    Man das hätt ich auch eher sehen können...
    Trotzdem danke Plantschkuh
    Problem gelöst...

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern