Problem bei der Kompilierung: E2140 ...



  • Mein Quelltext sieht folgendermaßen aus:

    /************************************************************************
    * Titel:          aufgabe1.c                                            *
    * Datum:          2006-10-15                                            *
    *                                                                       *
    * Autor:                                                                *
    *                                                                       *
    * Beschreibung:   beliebig viele Nettobetraege werden mit MwST, Brutto, *
    *                 Gesamt ausgegeben                                     *
    ************************************************************************/
    
    #include <stdio.h>                  //Standard IO
    #include <conio.h>                  //Console IO
    #define MWST 0.16                   //aktueller MwSt-Satz
    
    void main()
      {
      clrscr();
    
      int max;                        //Anzahl Eingaben und Nettobetraege
    
      printf("Wie viele Nettobetraege moechten Sie eingeben: ");
      scanf("%d",&max);
    
      int j;                          //fuer die for-Schleife bei der Gesamtberechnung
      int i;                          //fuer die for Schleifen
      float netto[max];               //Array fuer die vom Benutzer eingegeben Nettobertaege
      float mwst[max];                //Array fuer die zugehoerigen MwSt-Betraege
      float brutto[max];              //Array fuer den sich daraus ergebenden Brutto-Betrag
      float snetto;                   //Gesamt-Netto
      float sbrutto;                  //Gesamt-Brutto
      float smwst;                    //Gesamt-MwSt
    
      clrscr();                       //Bildschirm loeschen
    
       for (i=1;i<=max;i++)              //Benutzereingaben: max Nettobetraege
    
        {
        printf("Geben Sie bitte den %d ten Betrag ein: ",i);
        scanf("%f",&netto[i-1]);           //Input
        mwst[i-1]=netto[i-1]*MWST;         //Berechnung der einzelnen MwSt
        brutto[i-1]=netto[i-1]+mwst[i-1];  //Berechnung der einzelnen Bruttobetraege
        }
    
      clrscr();                      //Bildschirm loeschen
    
      for (i=1;i<=max;i++)             //Ausgabe der max einzelnen Netto-/MwSt-/Brutto-Betraege
        {
        printf("%d ter Nettobetrag:  %f \n",i,netto[i-1]);
        printf("      MwSt:         %f \n",mwst[i-1]);
        printf("      Bruttobetrag: %f \n",brutto[i-1]);
        printf("-------------------------------------\n");
        }
    
      for (i=1;i<=max;i++)              //Berechnung der Gesamtsummen
        {                             
        snetto=snetto+netto[i-1];
        smwst=smwst+mwst[i-1];
        sbrutto=sbrutto+brutto[i-1];
        }
    
      printf("Gesamt Netto:       %f\n",snetto);            //Ausgabe Gesamt Netto
      printf("       MwSt:        %f\n",smwst);             //Ausgabe Gesamt MwSt
      printf("Gesamt Brutto:      %f\n",sbrutto);           //Ausgabe Gesamt Brutto
    
      }                                              //gehoert zu main ()
    

    Ich möchte, dass der Benutzer beliebig viele Nettobeträge eingegeben kann und diese dann am Ende mit MwSt und Brutto ausgegeben werden, wobei natürlich auch eine Gesamtsumme erscheinen muss.

    Ich bin noch ganz neu in der Programmierung und hoffe Ihr könnt was mit meinen Kommentaren anfangen.

    Mein Problem:
    Beim Kompilieren mit dem BCC32 erscheint folgender Fehler:
    Error E2140 aufgabe.c 22: Declaration is not allowed here in function main
    ...
    ...
    das bei jeder Variablendeklaration.

    Ich weiß ehrlich gesagt überhaupt nicht, wo da der Fehler liegen soll?

    Wäre für Ratschläge sehr dankbar.



  • Nach dem C89 Standard gehören Variablen an den anfang einer Funktion. Vor allen Funktionsaufrufen in der Funktion.



  • Ah, vielen Dank.

    Aber wie kann ich das dann mit der Variablen "max" realisieren, um die Größe des Array zu bestimmen?





  • Ich habe soeben dein script mit dem 'Dev-C++' getestet.
    Nach dem entfernen von "clrscr();" hat er es ohne fehler compiliert!

    Aber, dieser Gesammtwert ????

    Wie viele Nettobetraege moechten Sie eingeben: 2
    Geben Sie bitte den 1 ten Betrag ein: 12.2
    Geben Sie bitte den 2 ten Betrag ein: 22.12
    1 ter Nettobetrag:  12.200000
          MwSt:         1.952000
          Bruttobetrag: 14.151999
    -------------------------------------
    2 ter Nettobetrag:  22.120001
          MwSt:         3.539200
          Bruttobetrag: 25.659201
    -------------------------------------
    Gesamt Netto:       34.320000
           MwSt:        5.491200
    Gesamt Brutto:      7816123770170603600000000000000000.000000
    Drücken Sie eine beliebige Taste . . .
    


  • Geht auch mit VLAs, aber dafür brauchst du einen C99 compatiblen Compiler. Der BCC geht da z.B. nicht.

    Google: Variable Length Array


Anmelden zum Antworten