Was ist falsch?

OP #3247734
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.