Was ist falsch?

OP #3247734
Lesenswert?
• ▲
▼
Hab nach langem mal wieder C programmiert:
1
‪#‎include‬ <stdio.h>
2

3
int main(){
4
int ro;
5
int erste;
6
int zweite;
7
int ergebnis;
8
printf("Welche Rechenoperation moechten sie durchfuehren?\n");
9
printf("1 fuer + 2 fuer /:");
10
scanf("%c", ro);
11

12
if(ro==1){
13

14
printf("1. Zahl:");
15
scanf("%c", erste);
16
printf("2. Zahl:");
17
scanf("%c", zweite);
18
printf("Ergebnis: ",ergebnis);
19
ergebnis=erste+zweite;
20

21
}else {
22
printf("Hallo");
23
}
24
return 0;
25
}
Aber immer nach der ersten Eingabe stürzt das Programm ab.
Was ist da falsch?
Danke und Gruß
Gast #3247787
Lesenswert?
• ▲
▼
Falsch ist: Einrückung fehlt.
1
#‎include‬ <stdio.h>
2

3
int main () {
4
  int ro;
5
  int erste;
6
  int zweite;
7
  int ergebnis;
8
  printf ("Welche Rechenoperation moechten sie durchfuehren?\n");
9
  printf ("1 fuer + 2 fuer /:");
10
  scanf ("%c", &ro);
11

12
  if (ro == 1) {
13

14
    printf ("1. Zahl:");
15
    scanf ("%c", &erste);
16
    printf ("2. Zahl:");
17
    scanf ("%c", &zweite);
18
    printf ("Ergebnis: ", ergebnis);
19
    ergebnis = erste + zweite;
20

21
  } else {
22
    printf ("Hallo");
23
  }
24
  return 0;
25
}
OP #3247841
Lesenswert?
• ▲
▼
Und jetzt: Geht auch nicht beim "modifiezieren":
1
#include <stdio.h>
2

3
int main(){
4
int ro;
5
int erste;
6
int zweite;
7
int ergebnis=erste + zweite;
8
printf("Welche Rechenoperation moechten sie durchfuehren?\n");
9
printf("1 fuer + 2 fuer /:");
10
scanf("%d", ro);
11

12
if(ro==1){
13
    printf("1. Zahl: ");
14
    scanf("%c", &erste);
15
    printf("2. Zahl: ");
16
    scanf("%c", &zweite);
17
    printf("Ergebnis: ",ergebnis);
18

19
}else {
20
    printf("Hallo");
21
}
22
return 0;
23
}
Gast #3247865
Lesenswert?
• ▲
▼
Sticht Dir das nicht ins Auge?
scanf("%d", ro);        hole ASCII-Zahl
scanf("%c", &erste);    hole ASCII-Zahl
scanf("%c", &zweite);   hole ASCII-Zahl

Wie bereits geschrieben: Mein Favorit ist scanf ( "%d",&ro );
Musst Du aber nicht machen.
#3247900
Lesenswert?
• ▲
▼
1
1.c: In function ‘main’:
2
1.c:11: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int’
3
1.c:16: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int’
4
1.c:18: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘int’
5
1.c:19: warning: too many arguments for format
6
1.c:11: warning: ‘ro’ is used uninitialized in this function
7
1.c:16: warning: ‘erste’ may be used uninitialized in this function
8
1.c:18: warning: ‘zweite’ may be used uninitialized in this function
9
1.c:19: warning: ‘ergebnis’ may be used uninitialized in this function

Wer Compilerwarnungen nicht auf die höchste Stufe stellt, hat entweder 
einen sehr guten Grund dafür oder eben kein Interesse an 
funktionierendem Code.
#3248013
Lesenswert?
• ▲
▼
Simon Name schrieb:
> Und jetzt: Geht auch nicht beim "modifiezieren":
>
1
> #include <stdio.h>
2
> 
3
> int main(){
4
> int ro;
5
> int erste;
6
> int zweite;
7
> int ergebnis=erste + zweite;
8
>

Würdest du mir mal erklären, wie du an dieser Stelle ein Ergebnis 
berechnen kannst, noch bevor die Werte überhaupt eingelesen wurden?
Das ist doch nicht Excel, das erst mal eine halbe Stunde darüber 
sinniert in welcher Reihenfolge welche Berechnungen gemacht werden 
müssen, damit dann hoffentlich das raus kommt, was du dir vorstellst!

>
1
> printf("Welche Rechenoperation moechten sie durchfuehren?\n");
2
> printf("1 fuer + 2 fuer /:");
3
> scanf("%d", ro);
4
>

Wo ist das & ?

>
1
> if(ro==1){
2
>     printf("1. Zahl: ");
3
>     scanf("%c", &erste);
4
>

%c ?
Echt?
erste ist ein char?

>
1
>     printf("2. Zahl: ");
2
>     scanf("%c", &zweite);
3
>

Selbiges nochmal

>
1
>     printf("Ergebnis: ",ergebnis);
2
>

Wo ist das Formatierzeichen für den auszugebenden Integer?
Schon angesprochen, was es mit ergebnis auf sich hat


Alles in allem: ein bischen mehr Sorgfalt!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.