Was ist falsch?

#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
}
#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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren