wiedermal c++

Dieses Thema im Forum "Talk" wurde erstellt von S_dzha_Raidri, 22. Januar 2004.

  1. S_dzha_Raidri

    S_dzha_Raidri W:O:A Metalmaster

    Registriert seit:
    24. November 2001
    Beiträge:
    11.404
    Zustimmungen:
    4
    also...
    ich soll´n kleines programm basteln, dass umfang und fläche von rechtecken etc. ermitteln kann.

    "menü" hab ich schon, was mit noch fehlt sind die eigentlichen rechnungen. und da liegt mein problem.

    wenn ich für "case 1"

    case '1': // Flache Quadrat


    {

    printf("\n Eingabe Seitenlaenge:");

    i = scanf("a");

    c = a*a;

    cout << c << endl;

    return 0;

    }

    eintippe, dann gibt er mir als warnung (!)
    "Lokale Variable 'a' wurde ohne Initialisierung verwendet"

    und als wert gibt er mir 687194768, und das unabhängig davon, ob ich für 'a' nun 4 oder 59484906 eintippe...

    und ja, ich bin der totale krüppel was C++ angeht, muss das aber trotzdem bis montag fertig haben.

    könnte mir wer sagen wo der fehler vermutlich liegt?
     
  2. Omegatherion

    Omegatherion W:O:A Metalhead

    Registriert seit:
    14. Januar 2002
    Beiträge:
    1.488
    Zustimmungen:
    0
    Vieleicht solltest du mal den gesamten Code reinkopieren.
    Ansonsten würd ich sagen: Dann initialisier doch erst a, bevor du sie verwendest.

    Und irgendwie benutzt du die Scanf Methode auch verkehrt.
    Hab eben mal danach gegoogled, weil ich die bisher auch nochnich kenne, aber es sollt etwa so aussehen:


    case '1': // Flache Quadrat

    {

    printf("\n Eingabe Seitenlaenge:");

    int a=0;
    scanf ("%d",a); //%d verweist auf Einlesen eines Int Wertes

    cout << a*a << endl;

    return 0;

    }

    Variable C brauchst du nicht, kannst die Quadrierung auch gleich in der cout anweisung machen.
    Wenn du das mit ner Zwischenvariable machen willst, musst du sie ebenfalls initialisieren, etwa so:

    int c = a*a;
    cout << c <<endl:
     
  3. MasterOfPuppets

    MasterOfPuppets W:O:A Metalmaster

    Registriert seit:
    14. August 2002
    Beiträge:
    15.164
    Zustimmungen:
    0
    Äähh...auch wenn ich Dir damit jetzt unterstelle _ganz_ blöd zu sein... Du hast a und c schon oben im Programm bekannt gemacht mit "int a, c", oder?

    Ausserdem müßte der scanf-Aufruf meines Erachtens dann so aussehen:

    scanf("%d", &a);

    beziehungsweise %f, wenn Du statt ner Integerzahl eine Variable vom Typ float verwenden möchtest.
     
  4. MasterOfPuppets

    MasterOfPuppets W:O:A Metalmaster

    Registriert seit:
    14. August 2002
    Beiträge:
    15.164
    Zustimmungen:
    0
    Oh, da war schon jemand schneller... ;)
     
  5. Omegatherion

    Omegatherion W:O:A Metalhead

    Registriert seit:
    14. Januar 2002
    Beiträge:
    1.488
    Zustimmungen:
    0
    Ich schreib ja auch in 1 Monat ne fiese c++ & Algorithmen Klausur :D
     
  6. grinsekatze666

    grinsekatze666 <span style="color:black">Moderator</span>

    Registriert seit:
    15. Juni 2003
    Beiträge:
    22.589
    Zustimmungen:
    0
    Warum benutzt du printf und scanf? Wenn du nur cin und cout verwendest, wäre der ganze kram doch viel einfacher, oder?
     
  7. S_dzha_Raidri

    S_dzha_Raidri W:O:A Metalmaster

    Registriert seit:
    24. November 2001
    Beiträge:
    11.404
    Zustimmungen:
    4
    ja, hatte ich :D
    hätte mich aber nich gewundert wenn ich´s vergessen hätte :D :D
     
  8. S_dzha_Raidri

    S_dzha_Raidri W:O:A Metalmaster

    Registriert seit:
    24. November 2001
    Beiträge:
    11.404
    Zustimmungen:
    4
    okay, hab jetzt mal ...

    {
    cout << endl << " 01.Eingabe der Seitenlaenge: ";

    i = cin.get();

    cout << i*i << endl;

    return 0;

    }

    versucht...
    meine hoffnung war, dass er mit i*i ausgibt,.. tut er leider nich, sondern nur irgendwelche (für mich) wirren zahlen, bei "4" z.b. 2704, für "5" 2809, für "6" 2916...
    so wirr sind die zahlen zwar auch nicht, aber das sind nich DIE zahlen, die ich gerne hätte, wie z.b. 16, 25 oder 36... *g*
     
  9. MasterOfPuppets

    MasterOfPuppets W:O:A Metalmaster

    Registriert seit:
    14. August 2002
    Beiträge:
    15.164
    Zustimmungen:
    0
    Warum nimmst Du nicht einfach

    cin >> i;

    irgendwie scheint mir dieser cin.get()-Aufruf nicht ganz koscher...
     
  10. grinsekatze666

    grinsekatze666 <span style="color:black">Moderator</span>

    Registriert seit:
    15. Juni 2003
    Beiträge:
    22.589
    Zustimmungen:
    0
    Ich hätte das so gelöst:

    {
    int i = 0 //nur falls die Variable noch nicht deklariert ist

    cout << "Eingabe der Seitenlänge: ";
    cin << i;

    /*um eine einzelne Variable einzulesen, genügt nur das cin. Auch endl wird danach nicht mehr benötigt, da durch cin automatisch ein CR-LF erfolgt. */

    cout << i*i << endl;

    return 0;

    }
     
  11. MasterOfPuppets

    MasterOfPuppets W:O:A Metalmaster

    Registriert seit:
    14. August 2002
    Beiträge:
    15.164
    Zustimmungen:
    0
    Nee, bei cin müssen die Pfeile so >> aussehen...eben die umgekehrte Richtung von cout. ;)
     
  12. S_dzha_Raidri

    S_dzha_Raidri W:O:A Metalmaster

    Registriert seit:
    24. November 2001
    Beiträge:
    11.404
    Zustimmungen:
    4
    {
    int i = 0;

    cout << "Eingabe der Seitenlaenge: ";
    cin >> i;

    cout << i*i << endl;

    return 0;

    }


    ...tut nu endlich... danke leute, ihr habt mir so in etwa den tag gerettet :D
    *fassbierreinroll*
     
  13. S_dzha_Raidri

    S_dzha_Raidri W:O:A Metalmaster

    Registriert seit:
    24. November 2001
    Beiträge:
    11.404
    Zustimmungen:
    4
    das hat mich auch anfangs etwas irritiert, weil das nämlich als fehler beanstandet wurde... so hab ich gelernt, dass >> nicht = << ist :D :D :D
     
  14. grinsekatze666

    grinsekatze666 <span style="color:black">Moderator</span>

    Registriert seit:
    15. Juni 2003
    Beiträge:
    22.589
    Zustimmungen:
    0
    *selbstslap*

    SCHEISSE, das passiert mir andauernd!
     
  15. MasterOfPuppets

    MasterOfPuppets W:O:A Metalmaster

    Registriert seit:
    14. August 2002
    Beiträge:
    15.164
    Zustimmungen:
    0
    Wenn die Belohnung doch immer so prompt käme... :)

    Na denn Prost!
     

Diese Seite empfehlen