C Programm mit Return?
Hallo,
das Programm soll erst stoppen wenn die Zahl c > 20 ist jedoch wenn ich eine 1 eingeben wird diese euch zurückgegeben als e = 1 und wenn ich dann zb die 2 eingebe sollte eigentlich e = 3 raus kommen, es kommt aber e = 2 raus. Wieso werden die Zahlen nicht addiert. Wie müsste man es dann machen?
Als Abbrechbedingung schreibt man dann return 0 wenn quasi c > 20 ist oder wie macht man das?
3 Antworten
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
1) Definiere jede Variable, bevor du sie verwendest.
Beispiel:
int ergebnis = 0;
// ...
ergebnis = ergebnis + zahl;
2) Mit jedem Aufruf von rechnen wird die Variable e neu angelegt. Wenn du auf den Wert aus dem vorherigen Aufruf zurückgreifen möchtest, musst du die Variable global (außerhalb der Funktion) anlegen.
![](https://images.gutefrage.net/media/user/Rammstein53/1615404814643_nmmslarge__0_0_346_346_2e08198db203389692d6d8287572496d.png?v=1615404815000)
// globale Variable e (unsauber, aber zum testen reicht es)
int e;
int rechnen()
{
int a;
printf( // wie im original );
scanf( // wie im original );
e = e + a;
return e;
}
int ausgeben(int c)
{
printf("%i\n", c);
}
int main()
{
e = 0;
while(rechnen() < 20)
;
ausgeben(e);
}
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/Samuele987/1677862398523_nmmslarge__192_192_614_614_d9bec3cbce2dbceb5f07e821c2e1ccc2.jpg?v=1677862399000)
Ich kann zwar kein C, aber wenn ich mir den Code anschaue, faellt mir auf, dass bei Leine 74 "e = %i\n steht. Wird dann nicht einfach die Eingabe rausgegeben?
Sag mir falls ich falsch liege
![](https://images.gutefrage.net/media/user/Samuele987/1677862398523_nmmslarge__192_192_614_614_d9bec3cbce2dbceb5f07e821c2e1ccc2.jpg?v=1677862399000)
Aber 2 ist ja nicht ueber 20, dann wird natuerlich auch 2 ausgegeben
ja das soll es ja solange machen bis die zahl größer 20 ist