Kleine Programmierung (kein hohes Niveau)

Neue Frage »

Auf diesen Beitrag antworten »
Whiss Kleine Programmierung (kein hohes Niveau)

Meine Frage:
Hallo,
mir wurde hier bereits geholfen, aber das Präsentierte erschien für meine Lehrer falsch zu sein.
Meine Aufgabe besteht aus zwei Teilen. Es gibt also eine Aufgabe 1 und eine Aufgabe 2, und die sollen unabhängig voneinander programmiert werden, heißt, nicht zusammen in ein Quellcode schreiben.
Hier die 1. Aufgabe:
------------------------
Wiederholungsanweisung

Es sollen N Messwerte eingelesen und verarbeitet werden. Bei jeder Eingabe soll angegeben werden, der wievielte Messwert eingegeben wird. Nach der Eingabe soll der aktuelle Messwert, der größte Messwert, der kleinste Messwert und der Mittelwert der Messwerte berechnet und angezeigt werden.

Welche Wiederholungsanweisung eignet sich für diese Aufgabe besonders?
-----------------------

eulerscheZahl ( Member hier) meinte, das die Folgende Programmierung richtig gewesen ist(war sie laut den Lehrer nicht):
---------------------------
#include <stdio.h>
#include <stdlib.h>

int main (){
float eingabe;
float summe =0;
float mittelwert;
int zaehler = 0;
float min ;
float max;
do{
printf( "Bitte geben Sie einen Messwert ein \n \n"Augenzwinkern ;
scanf ("%f", & eingabe);
zaehler = zaehler +1;
summe = summe + eingabe;
printf("\n Anzahl der eingegebenen Messwerte:%i \n", zaehler);
printf("\n Aktueller Messwert:%f \n", eingabe);
if (zaehler == 1) {
max = eingabe;
min = eingabe;
}
else if (eingabe < min){
min = eingabe;
}
else if ( eingabe > max) {
max = eingabe;
}
printf("\n Minimaler Messwert : %f \n", min);
printf("\n Maximaler Messwert: %f \n", max);
mittelwert= summe/zaehler;
printf("\n Mittelwert: %f\n", mittelwert);
}
while (1==1);
}
-----------------------------------
Viel mehr wäre der richtige Weg:
------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main (){
float eingabe;
float summe =0;
float mittelwert;
int i=1;
float min ;
float wert;
float max;

printf( "Bitte geben Sie die Anzahl der Messwert ein! \n \n"Augenzwinkern ;
scanf ("%f", & eingabe);
for(i=1;i<=eingabe;i++)
{
printf("Bitte geben sie den %d. Wert ein\n",i);
scanf("%f",&wert);
if(i==1)

min=wert;
max=wert;
mittelwert=wert;

summe=summe+wert;
mittelwert=summe/i;
if(wert>=max)
max=wert;
else
min=wert;



printf("Der groeste Wert ist %.1f\n",max);
printf("der kleinste Wert ist \n",min);
printf("Der Mittelwert ist %.1f\n", mittelwert);

}

}
-----------------------------
So, jetzt kommt die Aufgabe 2 (Erweiterung der 1. Aufgabe)
-----------------------------
Sichere Eingabe

Erweitern Sie Ihr Programm zu Einlesen von N Messwerten um eine sichere Eingabe. D.h. bei der Eingabe der Zahl der Messwerte soll nur eine positive ganze Zahl akzeptiert werden. Fehleingaben sollen zu einem Hinweis und zu einer weiteren Eingabemöglichkeit führen.

Erstellen Sie vor dem Beginn der Programmierarbeit bitte ein Struktogramm!

Zählen Sie außerdem mit, wie viele positive und negative Werte eingegeben wurden.

Die Ermittlung des größten und kleinsten eingegebene Wertes soll bereits ab dem ersten Wert und ohne eine Sonderbehandlung für diesen Wert erfolgen. Wie belegt man die Werte für den Größten und kleinsten Wert sinnvoll vor?
--------------

Meine Ideen:
Ich denke mir, dass die Programmierung der 1. Aufgabe nicht großartig verändert werden muss, aber sie muss teilweise verändert werden, denn sie baut ja auf auf die 2. Aufgabe.
Ich habe zu der 1. schon die Lösung. Die Programmierung sieht bei der ersten Aufgabe etwas ,,amateurhaft'' also anfängerisch aus, und das soll auch so sein! ;-)
Kann mir einer bei der 5 helfen, und sich dabei an die einfache Programmierung der 1. Aufgabe halten, also auf dessen Struktur.
 
Auf diesen Beitrag antworten »
eulerscheZahl RE: Kleine Programmierung (kein hohes Niveau)

Dann führe das Programm doch aus und bilde dein eigenes Urteil. Die "richtige" Lösung liefert:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Bitte geben Sie die Anzahl der Messwert ein! 
 
3
Bitte geben sie den 1. Wert ein
5
Der groeste Wert ist 5.0
der kleinste Wert ist 5.0
Der Mittelwert ist 5.0
Bitte geben sie den 2. Wert ein
3
Der groeste Wert ist 3.0
der kleinste Wert ist 5.0
Der Mittelwert ist 4.0
Bitte geben sie den 3. Wert ein
7
Der groeste Wert ist 7.0
der kleinste Wert ist 5.0
Der Mittelwert ist 5.0

Der größte Wert wird jedes mal überschrieben, egal was eingegeben wird.
Auf diesen Beitrag antworten »
Whiss RE: Kleine Programmierung (kein hohes Niveau)

Welches Programm soll ich ausführen?
das richtige oder was?


Mein Urteil zählt nicht, sondern der Urteil des Lehrers, da kann ich nichts machen.

Kannst du mir helfen?
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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
#include <stdio.h>
#include <stdlib.h>

int main () {
	float eingabe;
	float summe = 0;
	float mittelwert;
	int i = 1;
	float min;
	float wert;
	float max;
	int positiv = 0;
	int negativ = 0;

	printf("Bitte geben Sie die Anzahl der Messwert ein!\n\n");
	scanf ("%f", &eingabe);
	while (i <= eingabe) {
		printf("Bitte geben sie den %d. Wert ein\n",i);
		scanf("%f",&wert);
		if (wert > 0) {
			if(i == 1) {
				min = wert;
				max = wert;
				mittelwert = wert;
			}
			summe = summe + wert;
			mittelwert = summe / i;
			if (wert >= max)
				max = wert;
			else if (wert <= min)
				min = wert;
			positiv++;

			printf("Der groeste Wert ist %.1f\n",max);
			printf("der kleinste Wert ist %.1f\n",min);
			printf("Der Mittelwert ist %.1f\n", mittelwert);
			printf("Anzahl positiver Eingaben: %d\n", positiv);
			printf("Anzahl negativer Eingaben: %d\n", negativ);
			i++;
		}
		else {
			printf("Der Wert muss positiv sein\n");
			negativ++;
			printf("Anzahl positiver Eingaben: %d\n", positiv);
			printf("Anzahl negativer Eingaben: %d\n", negativ);
		}
	}
}
 
Auf diesen Beitrag antworten »
Whiss

Danke erstmal.

Ist das der Quellcode zu der erweiterten Aufgabe "Sichere Eingabe''?
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
Erweitern Sie Ihr Programm zu Einlesen von N Messwerten um eine sichere Eingabe. D.h. bei der Eingabe der Zahl der Messwerte soll nur eine positive ganze Zahl akzeptiert werden. Fehleingaben sollen zu einem Hinweis und zu einer weiteren Eingabemöglichkeit führen.

Erstellen Sie vor dem Beginn der Programmierarbeit bitte ein Struktogramm!

Zählen Sie außerdem mit, wie viele positive und negative Werte eingegeben wurden.

Die Ermittlung des größten und kleinsten eingegebene Wertes soll bereits ab dem ersten Wert und ohne eine Sonderbehandlung für diesen Wert erfolgen. Wie belegt man die Werte für den Größten und kleinsten Wert sinnvoll vor?

grün: ist erledigt
gelb: teilweise
rot: musst du noch machen

Es wird auf negative Eingaben geprüft. Es kann aber auch passieren, dass der Nutzer als Messwert "achtzehn" oder "1,6" (mit Komma) schreibt, das wird nicht abgefangen.

Statt des if(i == 1) { kannst du dem Minimum den größtmöglichen Wert zuweisen und dem Maximum den kleinsten. Dann werden die ohnehin wieder überschrieben.
Auf diesen Beitrag antworten »
Whiss

Danke soweit, ich werde versuchen das zu machen, und dann schreibe ich dir die Tage.
Obowhl mir das Struktogramm super schwer fällt.
Auf diesen Beitrag antworten »
Whiss

Hallo, ich weiß jetzt nicht, wie ich das Struktogramm anfangen soll, das ist echt kompliziert.


Messwerte einlesen würde oben hinkommen.
.
.
.
.
usw..


---------------------
Die Ermittlung des größten und kleinsten eingegebene Wertes soll bereits ab dem ersten Wert und ohne eine Sonderbehandlung für diesen Wert erfolgen.

Ich verstehe nicht, wie das gemeint ist, geschweige denn, dass noch zu Programmieren , q.q

Bitte hilf mir traurig verwirrt
</body> </html>
 
Neue Frage »
Antworten »


Verwandte Themen

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