wiedermal c++

  • Als neues Loginsystem benutzen wir die Wacken.ID. Damit du deinen jetzigen Account im Wacken Forum mit der Wacken.ID verknüpfen kannst, klicke bitte auf den Link und trage deine E-Mail Adresse ein, die du auch hier im Forum benutzt. Ein User mit deinem Benutzernamen und deiner E-Mail Adresse wird dann automatisch angelegt. Du bekommst dann eine E-Mail und musst deine Wacken.ID bestätigen.

    Sollte es Probleme geben, schreibt uns bitte.

    Klicke hier, um deinen Account in eine Wacken.ID zu migrireren.

S_dzha_Raidri

W:O:A Metalmaster
24 Nov. 2001
11.419
15
83
41
316xx
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?
 

Omegatherion

W:O:A Metalhead
14 Jan. 2002
1.488
0
61
44
Bremen
Website besuchen
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:
 

MasterOfPuppets

W:O:A Metalmaster
14 Aug. 2002
15.164
0
81
45
Schwelm bei Wuppertal
Website besuchen
Ää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.
 

S_dzha_Raidri

W:O:A Metalmaster
24 Nov. 2001
11.419
15
83
41
316xx
Original geschrieben von MasterOfPuppets
Ää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?

ja, hatte ich :D
hätte mich aber nich gewundert wenn ich´s vergessen hätte :D :D
 

S_dzha_Raidri

W:O:A Metalmaster
24 Nov. 2001
11.419
15
83
41
316xx
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*
 

grinsekatze666

<span style="color:black">Moderator</span>
15 Juni 2003
22.589
1
83
40
Münster
twitter.com
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;

}
 

MasterOfPuppets

W:O:A Metalmaster
14 Aug. 2002
15.164
0
81
45
Schwelm bei Wuppertal
Website besuchen
Original geschrieben von grinsekatze666
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;

}

Nee, bei cin müssen die Pfeile so >> aussehen...eben die umgekehrte Richtung von cout. ;)
 

S_dzha_Raidri

W:O:A Metalmaster
24 Nov. 2001
11.419
15
83
41
316xx
{
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*
 

S_dzha_Raidri

W:O:A Metalmaster
24 Nov. 2001
11.419
15
83
41
316xx
Original geschrieben von MasterOfPuppets
Nee, bei cin müssen die Pfeile so >> aussehen...eben die umgekehrte Richtung von cout. ;)

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