D
edit2: nee, ich denke, die Aufgebaenstellung ist viel einfacher gemeint
galube ich auch, siehe meine Punkt 2.
So und jetzt noch einige Verbesserungspunkte, wir sind hier übrignends in C++ nicht C:
#include<iostream>
#include<cmath>
using namespace std;
//nimm stat arrays std:.vector
//bitt keine globalen varaiblen
int arraygroesse1=50;
int arraygroesse2=100; // Wert 100 aus der Luft gegriffen
float array[50];
char wert[100];
int durchgaenge;
void maxmin(float array[], int durchgaenge, float *min, float *max);
float mittel(float array[]);
bool kontrolle(char array[], int arraygroesse2);
void main(void)
{
for(int r=0; r<5; ++r)
{
for(int p=0; p<arraygroesse2; ++p)
{wert[p]='\0';} // die geschweiften klammern sind überflüssig, aber was soll das hier überhaupt ?
cout << "Geben Sie die " << (r+1) << "te Gleitkommazahl ein. Abbruch mit <a>" << endl;
cin >> wert;
if(wert[0]=='a'){break;}
else if(kontrolle(wert, arraygroesse2)==1){cout << "Falscher Wert eingegeben. Bitte nochmal." << endl; --r; continue;}
else{array[r]=atof(wert);}
durchgaenge=(r+1);
}
//Würde ich so nicht verwenden. Außerdem sind die maximalen Werte von float schon vordefiniert verwendbar
float min=(3.4*(pow(10,38)));
float max=((-3.4)*(pow(10,38)));
float mittelwert=0;
maxmin(array, durchgaenge, &min, &max);
mittelwert=mittel(array);
cout << "Mittelwert: " << mittelwert << endl << "Minimum: " << min << endl << "Maximum: " << max << endl;
system("pause");
}
void maxmin(float array[], int durchgaenge, float *min, float *max) //bitte nim referezen statt pointer
{
for(int i=0; i<durchgaenge; ++i)
{
if(array[i]<(*min)){(*min)=array[i];}
else{;} //Leere Else-Blöcke - wozu ?
if(array[i]>(*max)){(*max)=array[i];}
else{;} //Leere Else-Blöcke - wozu ?
}
}
float mittel(float array[])
{
float temp1=0;
for(int j=0; j<durchgaenge; ++j)
{
temp1=(temp1+array[j]); // temp1 += array[j], sollte man aber auch einfach mit der STL erschlagen können (ein Funktionsaufruf der alle addiert)
}
return (temp1/durchgaenge);
}
//Alle Codepfade müssen einen Wert zurückgeben, als Anfänger Warnungen als Fehler betrachten!
bool kontrolle(char array[], int arraygroesse2)
{
for(int z=0; z<arraygroesse2; ++z)
{
if(array[z]!='0' && array[z]!='1' && array[z]!='2' && array[z]!='3' && array[z]!='4' && array[z]!='5' && array[z]!='6' && array[z]!='7' && array[z]!='8' && array[z]!='9' && array[z]!='.' && array[z]!='\0')//lürzeer wäre was wie "(array[z]>='0' && array[z]<='9' )"
{return 1;}
else{;} //Leere Else-Blöcke - wozu ?
}
}