Programm für Min,Max und Mittelwert (C)

Neue Frage »

Auf diesen Beitrag antworten »
Lars Programm für Min,Max und Mittelwert (C)

Meine Frage:
Hi, ich bin's nochmal. Mittlerweile alle Aufgaben geschafft, bis auf eine, an der ich mittlerweile einige Zeit sitze. Aufgabe befindet sich im Anhang.

Meine Ideen:
Mein Code:
#include <stdio.h>


int main()
{
int eingabe;
int max;
int min;
int mittel;
do
{
printf("Bitte gib Zahlen ein! ");
scanf("%u", &eingabe);

if (eingabe > max) max = eingabe;
if (eingabe < min) min = eingabe;

}
while(eingabe<100 && eingabe>0);
printf("Max: %i -- Min: %i", max, min);
return 0;
}

Das erste Problem ist folgendes:
max und min müssten erstmal den wert eingabe annehmen, das funktioniert aber nicht, denn sonst würden sie das immer wieder in der schleife tun. Zz. Nimmt min bzw. max auch immer den Wert an, wenn die Schleife abgebrochen wird, da sie ja noch einmal durchläuft. Wie kann ich das ändern (also die Schleife abbrechen lassen). Und wie ich den Mittelwert realisieren soll weiß ich überhaupt nicht. Arrays hatten wir nicht großartig bis jetzt.
 
Auf diesen Beitrag antworten »
Lars

#include <stdio.h>


int main()
{
int eingabe;
int max;
int min;
int mittel;
int i=0;
int f=0;
do
{
printf("Bitte gib Zahlen ein! ");
scanf("%u", &eingabe);

while(i==0)
{
min=eingabe;
max=eingabe;
i++;
};
if (eingabe > max) max = eingabe;
if (eingabe < min) min = eingabe;

}
while(eingabe<100 && eingabe>0);
printf("Max: %i -- Min: %i", max, min);
return 0;
}
Damit ist ein Problem behoben, aber ich weiß nicht, wie ich das Programm bei einer falschen Zahl direkt abbrechen lassen kann. break will nicht funktionieren.
Auf diesen Beitrag antworten »
Lars

#include <stdio.h>


int main()
{
int eingabe;
int max;
int min;
int mittel;
int i=0;
int f=0;
do
{
printf("Bitte gib Zahlen ein! ");
scanf("%u", &eingabe);
if(eingabe<0 || eingabe>100) break;
while(i==0)
{
min=eingabe;
max=eingabe;
i++;
};
if (eingabe > max) max = eingabe;
if (eingabe < min) min = eingabe;
}
while(eingabe<100 && eingabe>0);
printf("Max: %i -- Min: %i", max, min);
return 0;
}
Ok, max und min geht nun, wie realiser ich jetzt den Mittelwert`?!
Auf diesen Beitrag antworten »
eulerscheZahl

Toll, wie sich die Probleme von selbst lösen, während man weg ist smile
Ich greife trotzdem mal ein:
while(i==0) wird genau einmal durchlaufen, da du das i erhöhst. Folglich solltest das das while durch ein if ersetzen. Das macht es viel leserlicher.
Das i++ noch eine Zeile tiefer schieben und schon hast du die Gesamtzahl der Eingaben, durch die du für den Durchschnitt ja teilen musst.

edit:
ach, nutze doch bitte code tags, das macht die Sache viel leserlicher
[code]Quellcode hier[/code]
 
Auf diesen Beitrag antworten »
Lars

Ich hab mich verschrieben, es ist der empirische Mittelwert gesucht. Deswegen bin ich am Verzweifeln...
verwirrt
Ich erbitte deine Hilfe smile
Auf diesen Beitrag antworten »
Lars

Also der empirische Mittelwert der Zahlen, die ich eingebe. So verstehe ich es aus der Aufgabe heraus, sorry, dass mit dem Code hab ich total verpeilt.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
#include <stdio.h>


int main()
{
	int eingabe;
	int max;
	int min;
	int mittel;
	int i=0;
	do
	{
		printf("Bitte gib Zahlen von 1-99 ein. ");
		scanf("%u", &eingabe);
		if(eingabe<0 || eingabe>100) break;
		if(i==0)
		{
			min=eingabe;
			max=eingabe;
			i++;
		};
		if (eingabe > max) max = eingabe; 
        if (eingabe < min) min = eingabe; 
	}
	while(eingabe<100 && eingabe>0);
	printf("Max: %i -- Min: %i", max, min); 
    return 0; 
}
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
#include <stdio.h>

int main()
{
	int eingabe;
	int max;
	int min;
	int sum;
	int i=0;
	do
	{
		printf("Bitte gib Zahlen von 1-99 ein. ");
		scanf("%u", &eingabe);
		if(eingabe<0 || eingabe>100) break;
		if(i==0)
		{
			min=eingabe;
			max=eingabe;
		};
		i++; //Anzahl der Eingaben
		if (eingabe > max) max = eingabe; 
        if (eingabe < min) min = eingabe;
        sum += eingabe; //Summe aller Eingaben ausrechnen
	}
	while(1 == 1); //du brichst bereits oben mit break ab, kannst du dir hier sparen
	printf("Max: %i -- Min: %i -- Durchschnitt: %.3g\n", max, min, (float)sum/i); 
    return 0; 
}
Auf diesen Beitrag antworten »
Lars

Du hast mal wieder meinen Tag gerettet. Gott
Ich danke dir eulerscheZahl, du machst deinem Titel alle Ehre smile . Ich hab's jetzt verstanden, ich glaub ich war schon auf dem richtigen Weg, aber hätte sich noch ziehen können, bis ich das richtige gehabt hätte.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »