Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Programm für Min,Max und Mittelwert (C) (http://www.informatikerboard.de/board/thread.php?threadid=2668)
Geschrieben von Lars am 06.12.2015 um 12:54:
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.
Geschrieben von Lars am 06.12.2015 um 14:37:
#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.
Geschrieben von Lars am 06.12.2015 um 15:10:
#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`?!
Geschrieben von eulerscheZahl am 06.12.2015 um 15:19:
Toll, wie sich die Probleme von selbst lösen, während man weg ist
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
[co
de]Quellcode hier[/co
de]
Geschrieben von Lars am 06.12.2015 um 15:35:
Ich hab mich verschrieben, es ist der empirische Mittelwert gesucht. Deswegen bin ich am Verzweifeln...
Ich erbitte deine Hilfe
Geschrieben von Lars am 06.12.2015 um 15:38:
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;
}
|
|
Geschrieben von eulerscheZahl am 06.12.2015 um 15:53:
| 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;
} |
|
Geschrieben von Lars am 06.12.2015 um 16:13:
Du hast mal wieder meinen Tag gerettet.
Ich danke dir eulerscheZahl, du machst deinem Titel alle Ehre

. 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.
Forensoftware: Burning Board, entwickelt von WoltLab GmbH