Geschrieben von Whiss am 01.12.2015 um 03:12:
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"
;
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"
;
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.