Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » i nicht definiert ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.04.2008, 19:58 Uhr
orlandoo



Hallo, ich verstehe die Fehlermeldung nicht die angezeigt wird nicht so ganz..
und zwar Das Programm soll erstmal Umsätze einlesen und dann kann via Menü ausgabe Mittelwert , standardabweichung usw. ausgegeben werden.. Der Mittelwert wird nicht angezeigt es taucht eine Fehlermeldung mit i wurde nicht definiert .. obwohl Die Variable definiert wurde.. Die Variable soll nur dazu dienen dass das array funktioniert und nicht zur übergabe gedacht.. Lieb wenn mal jemand drüber schauen würde.



C++:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>



void eingabe(float umsatz_unternehmen[12][2], char monate[12][12]); //Übergabeparameter
void ausgabe(float umsatz_unternehmen[12][2], char monate[12][12]); //Übergabeparameter
void mw(float umsatz_unternehmen[12][2]); // Übergabeparameter
void minimum(float umsatz_unternehmen[12][2]); // Übergabeparameter
void maximum(float umsatz_unternehmen[12][2]); // Übergabeparameter






char first_use = 1;

int pruefung() {
    
    
   int m;

   while(1)
      {
          printf("\n\nMenue 1: Umsaetze\nMenue 2: Ausgabe Umsaetze\nMenue 3: Mittelwert\nMenue 4: Standardarabweichung\nMenue 5: Min/Max\nMenue 0: Beenden\nAuswahl: ");

          fflush(stdin);
          scanf("%i", &m);

        
            if( m<0 || m>5 ) // nicht innerhalb des auswahlbaren bereich
               {
                  printf("\nUngueltige Eingabe!\n\n");
               }
            else if( m != 0 && m != 1 && first_use  )
               {
                  printf("\nBitte geben sie erstmal die Umsaetze ein!\n\n");
               }
            else
               {
                  printf("\n");
                  return m;
               }

      }
}

int main(void) {

char monate[12][12] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };
float umsatz_unternehmen[12][2]; // zweidimensionales Umsatz
int input;


  


   while( 1 )
      {
         switch( pruefung() )
            {
               case 1:
                                
                  eingabe(umsatz_unternehmen,  monate);
                  printf("Danke fuer den Input!\n\n");
                  first_use = 0; //ok, funktion wurde genutzt, umsaetze sind drin, 2,3,4,5 können benutzt werden!
                  break;

               case 2:

                  ausgabe( umsatz_unternehmen, monate );
                  break;

               case 3:

                  printf("[Mittelwert]\n");
                  mw( umsatz_unternehmen );        // Merke: Bei funktionsaufruf kein Datentyp void && kein typ bsp int..
                  break;

               case 4:

                  printf("[Standardabweichung]\n");
                  printf("Funktionsaufruf fuer diesen Fall\n\n");
                  break;

               case 5:

                  printf("\t[Min/Max]\n");
                  printf("MIN Filiale |A| & |B| anzeigen (1/0)- ? -\n\n");
                  scanf("%i",&input);
                  if (input == 1)
                  
                    minimum( umsatz_unternehmen );

                  else
                    {
                          printf("Minimum Umsatz Filiale |A| & |B| werden nicht angezeigt! ");
                    }


                printf("\nMAX Filiale |A| & |B| anzeigen (1/0)- ? -\n\n");
                scanf("%c",&input);

                if (input == 1)
                        maximum( umsatz_unternehmen );
                
                    else
                          {
                            printf("\nMinimum Umsatz Filiale |A| & |B| werden nicht angezeigt! ");
                        }

                  break;

               case 0:
                  
                  printf("\n[Programm Ende!]");
                  return 0;

               default:
                  // <Funktionsaufruf zum saubermachen des Programms dann beenden!>
                  printf("\n\nFehler im Switch\n\n");
                  return 0;
            }
      }

   getchar(); // dient dazu das programm anzuhalten
  

}

void eingabe(float umsatz_unternehmen[12][2], char monate[12][12])
{

int i;
int j;
int n = 11;
printf("\n\nHandelsfirma A & B GmbH\n\n");

  for(j=1;j<=1;j++)
    {
printf( "\nBitte geben Sie die Daten fuer das 1. Unternehmen ein:\n" );


        for(i=0;i<=n;i++)
      {

            printf("Bitte %i -ten Umsatz fuer %s 2007\n",i+1,monate[i]);  // Eingabe
            printf("Eingabe:"); scanf("%f",&umsatz_unternehmen[i][0]);
            
        }

printf( "\nBitte geben Sie die Daten fuer das 2. Unternehmen ein:\n" );

        for(i=0;i<=n;i++)
      {

            printf("Bitte %i -ten Umsatz fuer %s 2007\n",i+1,monate[i]);  // Eingabe
            printf("Eingabe:");scanf("%f",&umsatz_unternehmen[i][1]);
      }

}





}


void ausgabe(float umsatz_unternehmen[12][2], char monate[12][12])
{
int i;


printf("\n--------------------------------------------------------------------------------");
printf("\n:::::::::::::::::::::Filiale 1:::::::::::::::::::Filiale 2::::::::::::::::::::::");
printf("\n--------------------------------------------------------------------------------");
    for (i=0;i<=11;i++)
    {

        printf("%5i. %10s 2007 %10.2f",i+1 ,monate[i],umsatz_unternehmen[i][0]);  //Ausgabe Umsatz, Monat
        printf("%5i. %10s 2007 %10.2f",i+1 ,monate[i],umsatz_unternehmen[i][1]);  //Ausgabe Umsatz, Monat
        printf("\n");
    }


}

void mw(float umsatz_unternehmen[12][2])
{    
    int i;
    int n = 12;
    float summe;
    float mittelwert;
    float summe_2;
    float mittelwert2;

    summe +=umsatz_unternehmen[i][0];
    mittelwert = summe/=12;

    summe_2 +=umsatz_unternehmen[i][1];
    mittelwert = summe_2/=12;

    printf("Mittelwert Filiale |A|:%f",mittelwert);
    printf("Mittelwert Filiale |B|:%f",mittelwert2);
}

void minimum(float umsatz_unternehmen[12][2])
{
int i;
float min;
min = umsatz_unternehmen[i][0];

    for (i=0; i <=11; i++)
            {

        if (min < umsatz_unternehmen[i][0])
            umsatz_unternehmen[i][0] = min;

        if (min < umsatz_unternehmen[i][1])
            umsatz_unternehmen[i][1] = min;

            }

printf("Minimal Umsatz Filiale |A|: %f ",umsatz_unternehmen[i][0]);
printf("Minimal Umsatz Filiale |B|: %f ",umsatz_unternehmen[i][1]);

}

void maximum(float umsatz_unternehmen[12][2])
{
int i;
float max;
umsatz_unternehmen[i][0] = max;

for (i=0; i <=11; i++)
        {
    if (umsatz_unternehmen[i][0] > max)
        max = umsatz_unternehmen[i][0];

    if (umsatz_unternehmen[i][1] > max)
        max = umsatz_unternehmen[i][1];
        }
printf("Maximal Umsatz Filiale |A|: %f ",umsatz_unternehmen[i][0]);
printf("Maximal Umsatz Filiale |B|: %f ",umsatz_unternehmen[i][1]);

}






Lg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.04.2008, 20:30 Uhr
Suba Esel



Naja, der Fehler sagt doch genau was los ist: in der Funktion Mittelwert ist i nicht definiert.

C++:
void mw(float umsatz_unternehmen[12][2])
{    
    int i; // Achtung, nicht definiert, i kann jeder beliebige Wert sein
    int n = 12;
    float summe;
    float mittelwert;
    float summe_2;
    float mittelwert2;

    summe +=umsatz_unternehmen[i][0]; // du greifst auf umsatz_unternehmen[i][0] zu, was irgendwo im Speicher liegt => undefiniertes Verhalten
    mittelwert = summe/=12;

    summe_2 +=umsatz_unternehmen[i][1]; //s.o.
    mittelwert = summe_2/=12;

    printf("Mittelwert Filiale |A|:%f",mittelwert);
    printf("Mittelwert Filiale |B|:%f",mittelwert2);
}



Übrigens sind deine Kommentare C++ - Stil, dein Quellcode aber C.
--
Simon

Dieser Post wurde am 25.04.2008 um 20:33 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.04.2008, 22:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


dann sind diverse Variablen nicht initialisiert.



C++:
float summe;
/* ... */
summe += ... <-- undefinierter inhalt in summe


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.04.2008, 14:05 Uhr
~orlandoo
Gast



Zitat von Suba Esel:
Naja, der Fehler sagt doch genau was los ist: in der Funktion Mittelwert ist i nicht definiert.

C++:
void mw(float umsatz_unternehmen[12][2])
{    
    int i; // Achtung, nicht definiert, i kann jeder beliebige Wert sein
    int n = 12;
    float summe;
    float mittelwert;
    float summe_2;
    float mittelwert2;

    summe +=umsatz_unternehmen[i][0]; // du greifst auf umsatz_unternehmen[i][0] zu, was irgendwo im Speicher liegt => undefiniertes Verhalten
    mittelwert = summe/=12;

    summe_2 +=umsatz_unternehmen[i][1]; //s.o.
    mittelwert = summe_2/=12;

    printf("Mittelwert Filiale |A|:%f",mittelwert);
    printf("Mittelwert Filiale |B|:%f",mittelwert2);
}



Übrigens sind deine Kommentare C++ - Stil, dein Quellcode aber C.



Danke war nicht so ganz im klaren Was mit dem Definiert gemeint ist.

Das Programm ist fertig .


Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.04.2008, 14:56 Uhr
Suba Esel



Da sind noch mehrere andere Fehler drin, siehe FloSofts Post...
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: