Was ist falsch?

Hallo ich bin neu hier und habe ein kleines c Programm geschrieben. Es komtm jedoch der Fehler syntax errror before „else“. Ich kann kein Fehler finden. Was mache ich falsch?

#include 

int main()
{
 int a;
 printf("Denken sie sich eine Zahl zwischen 1 und 1000 aus. Dann druecken sie Enter. \n ");
 getch();
 printf("Addieren sie 10 und druecken sie Enter. \n ");
 getch();
 printf("Teilen sie durch 2. \n ");
 getch();
 printf("Ziehen sie 2 ab. \n ");
 getch();
 printf("Addieren sie 28. \n ");
 getch();
 printf("Ziehen sie ihre urspruengliche Zahl ab. \n ");
 getch();
 printf("Verdoppeln sie die Zahl. \n ");
 getch();
 printf("Sie denken an die Zahl 36! \n ");
 getch();
 printf("Sind sie erstaunt? Ja ich auch... Nocheinmal? Dann drücke 1, wenn nicht eine andere Taste");
 scanf("%d", &a);
 if (a == 1)
 printf("Denken sie sich eine Zahl n. Dann druecken sie Enter. \n ");
 getch();
 printf("Addieren sie 12 und druecken sie Enter. \n ");
 getch(); 
 printf("Teilen sie durch 3. \n ");
 getch();
 printf("Ziehen sie 7 ab. \n ");
 getch();
 printf("Addieren sie 96. \n ");
 getch();
 printf("Teilen sie durch 7. \n ");
 getch();
 printf("Verdoppeln sie die Zahl. \n ");
 getch();
 else if (a == 2)
 printf("Das Programm wird nun geschlossen.\n");
 else
 printf("1 oder 2! Sonst nichts ! \n");
 getch();
 return 0;
}

[MOD:

-Tags inzugefügt]

Hallo,

Hallo ich bin neu hier und habe ein kleines c Programm
geschrieben. Es komtm jedoch der Fehler syntax errror before
„else“. Ich kann kein Fehler finden. Was mache ich falsch?

Du brauchst geschweifte Klammern um den Block hinter if und else. Wenn du die weglässt, wirkt das if nur auf die nächste Anweisung.

Bitte packe in Zukunft

-Tags um Code den du hier reinschreibst.

Moritz

Hallo Simon !

Was mache ich falsch?

if - Block gehört in geschwungene Klammern wenn er aus mehr als einer Zeile besteht !
Also:
if
{

}
else …

mfg
Christof

BTW
Hallo Fragewurm,

Hallo ich bin neu hier und habe ein kleines c Programm
geschrieben. Es komtm jedoch der Fehler syntax errror before
„else“. Ich kann kein Fehler finden. Was mache ich falsch?

Grundsätzlich gibt man auch an, an welcher Stelle der Fehler angegeben wird.
Bei deinem Beispiel war es jetzt noch zu erraten welche Stelle es sein muss.

MfG Peter(TOO)

Coding Style
Hallo Christof,

if - Block gehört in geschwungene Klammern wenn er aus mehr
als einer Zeile besteht !

Nein. Er gehört immer in geschwungene Klammern, auch wenn er nur aus einer Zeile besteht. Dann passieren dies hier nicht:

Ursprüngliches Programm

if (0 != myerrorno)
 exit(1);
dosomething();

Erweiterung:

if (0 != myerrorno)
 printf("Error %d encountered, terminating", myerrorno);
 exit(1);
dosomething();

Hier ist es noch recht einfach den Fehler zu finden, aber in anderen Fällen, wo nicht unbedingt gleich das Programm beendet wird kann das zu gröberem Kopfzerbrechen führen.
Ich hab’ übrigens gleich mein zweites Steckenpferd eingebaut: Bei Vergleichen die Konstante (falls vorhanden) immer links, dann kann nicht versehentlich „=“ statt „==“ verwendet werden - if (0 = myerrorno) ergibt einfach keinen Sinn!

Liebe Grüße vom Oberlehrer
Martin :wink: