Problem bei Berechnung von bestimmten Werten
-
Hi!
so ich hab leider nen kleines Problem in meinem Programm.
Wäre supi wenn mir da jemand helfen könnte^^Also erstmal die Aufgabenstellung:
Lese kontinuierlich Werte ein und gib dann den Durchschnitt, den min und den max Wert der letzten 5 Eingaben aus.
Das Programm wird nach der Eingabe -123 beendet.Nun hier mein bisheriges Programm:
#include "stdafx.h" int main(int argc, char* argv[]) { // Variablendeklaration int wert[5]; double durchschnitt; int i; int min; int max; // Erstellung printf("\t\t\t Me\xe1wertanalyse \n\n\n"); printf("\tZur Beendigung des Programmes Bitte -123 eingeben!!!\n\n\n\n"); do { printf("Bitte Wert eingeben: "); // Eingabe scanf("%i", & wert[4]); durchschnitt = (wert[0] + wert[1] + wert[2] + wert[3] + wert[4]) /5; // Berechnung des Durchschnittes printf("\n\nDer Durchschnitts betr\x84gt: %lf\n\n", durchschnitt); // Ausgabe des Durchschnittes min=0; int min = wert[4]; for(i=1; i<5; i++) // Herraussuchen des min Wertes { if(wert[i] <= min) { min = wert[i]; } } printf("min Wert betraegt: %i\n\n", min); // Ausgabe des min Wertes max=0; // Herraussuchen des max Wertes int max=wert[4]; for(i=1; i<5; i++) { if(wert[i] > max) { max = wert[i]; } } printf("max Wert betraegt: %i\n\n\n\n", max); // Ausgabe des max Wertes for(i=0; i<4; i++) // Array Werte Verschiebung { wert[i] = wert[i+1]; } } while(wert[4]!=-123); // Beendigung des Programmes bei der Eingabe von -123 printf("\n\n\n"); return 0; }So nun mein Problem ist, dass die Ersten 5 Eingaben beim Durchschnitt und beim min Wert nur blödsinn ausgben. Das ist ja weil die Variablen irgend nen Wert annehmen wenn nichts initalisiert wurde.
Doch wenn ich alle Arrywerte am Anfang auf Null setzen würde, hätt ich ja immer noch nen Problem mit dem min Wert bei den ersten 5 Eingaben.Hat da jemand vielleicht ne idee wie ich das hinkriegen könnte?
Schon mal danke XD
baba Tess
-
Du musst einen counter von 0 bis 5 mitlaufen lassen der dir sagt wieviele werte schon gültig sind.
Kurt
-
int main(){ double x; in>>x; double min=x; double max=x; double sum=x; double count=1; in>>x; while(x!=123){ if(x<min) min=x; if(x>max) max=x; sub+=x; ++count; } cout<<min<<' '<<sum/count<<' '<<max<<'\n; return 0; }ups, ich gebe ja die statistik für alle werte aus.
-
Und wie soll das funktionieren kann mir noch nichts drunter vorstellen
-
ungefähr so
#include <stdio.h> int main(int argc, char* argv[]){ // Variablendeklaration int wert[5]; double durchschnitt; int i; int min; int max; int numvals=0; // Anzahl der gültigen werte -1. // Erstellung printf("\t\t\t Me\xe1wertanalyse \n\n\n"); printf("\tZur Beendigung des Programmes Bitte -123 eingeben!!!\n\n\n\n"); do { printf("Bitte Wert eingeben: "); // Eingabe scanf("%i", & wert[numvals]); durchschnitt = 0; for ( i = 0; i <= numvals; ++i ) // Berechnung des Durchschnittes durchschnitt += wert[i]; durchschnitt = (double)durchschnitt / ( numvals+1 ); printf("\n\nDer Durchschnitts betr\x84gt: %lf\n\n", durchschnitt); // Ausgabe des Durchschnittes min = wert[0]; for(i=0; i<=numvals; i++) // Herraussuchen des min Wertes if(wert[i] < min) min = wert[i]; printf("min Wert betraegt: %i\n\n", min); // Ausgabe des min Wertes max=wert[0]; // Herraussuchen des max Wertes for(i=0; i<=numvals; i++) if(wert[i] > max) max = wert[i]; printf("max Wert betraegt: %i\n\n\n\n", max); // Ausgabe des max Wertes if ( numvals == 4 ) { // Array Werte Verschiebung for(i=0; i<4; i++) wert[i] = wert[i+1]; } if ( numvals < 4 ) numvals++; } while(wert[numvals]!=-123); // Beendigung des Programmes bei der Eingabe von -123 printf("\n\n\n"); return 0; }Kurt
-
oder ohne "Array Werte Verschiebung":
#include <iostream> using namespace std; int main() { const int EINGABE_ZAHL = 5; int index=0, eingabe=0, anzahlEingaben=0; int werte[EINGABE_ZAHL]; while(true) { cout << "Bitte gib eine Zahl ein.\nGib zum Beenden die Zahl -123 ein." << endl; cin >> eingabe; if(eingabe == -123) break; werte[index] = eingabe; index = (index + 1) % EINGABE_ZAHL; ++anzahlEingaben; } if(anzahlEingaben < EINGABE_ZAHL) cout << "Schade, das waren " << (EINGABE_ZAHL - anzahlEingaben) << " Eingaben zu wenig." << endl; else { int min,max,sum; double mittel; min = max = sum = werte[0]; for(index=1; index<EINGABE_ZAHL; ++index) { if(werte[index] < min) min = werte[index]; if(werte[index] > max) max = werte[index]; sum += werte[index]; } cout << "Minimum:\t" << min << endl; cout << "Maximum:\t" << max << endl; cout << "Mittelwert:\t" << sum << "/" << EINGABE_ZAHL << " = " << sum/static_cast<double>(EINGABE_ZAHL) << endl; } //cin.clear(); //hat nicht funktioniert! warum nur??? if(cin.peek()==10) cin.get(); cin.get(); }
-
Sehe gerade,
double mittel;ist überflüssig.