Wiederhoungsanweisung

Neue Frage »

Auf diesen Beitrag antworten »
Whiss Wiederhoungsanweisung

Meine Frage:
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?


Meine Ideen:

#include <string>


using namespace std;

int main(){

int n=10;

int m[n];

int i;

int M_min=0;

int M_max=0;

int M_average=0;

for (i=1;i<=n;i++){

cin >> m[i];

}

for(i=1;i<=n;i++){

if(i==1) {

M_min=m[i];

M_max=m[i];

M_average=m[i];

}

if(i>1){

if(M_min > m[i])

M_min=m[i];

if(M_max < m[i])

M_max=m[i];

M_average=M_average+m[i];

}

}

cout << " Min: "<<M_min;

cout << " Max "<<M_max;

cout << " Average: "<<M_average/n;

}

-------------------------
Es ist aber so falsch, ich habe gehört ich soll ohne arrays arbeiten.

Wie soll ich es dann machen?
Einer hat mir gesagt, es soll so richtig sein:
#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: %\n", mittelwert);

}

while (1==1);
}


--------------
Was ist jetzt richtig?
 
Auf diesen Beitrag antworten »
eulerscheZahl RE: Wiederhoungsanweisung

Wenn man die Syntaxfehler behebt (z.B. printf( "\Bitte geben Sie einen Messwert ein \n \n");), ist es richtig, ja.
Auf diesen Beitrag antworten »
Whiss RE: Wiederhoungsanweisung

Danke, also das zweite ist richtig.


Warum ist das erste falsch?
Kannst du mir das erklären?

Ich hätte da noch eine Aufgabe, dürfte ich sie hier posten?

Sie ist quasi eine Erweiterung dieser Aufgabe.
Auf diesen Beitrag antworten »
eulerscheZahl

Der erste Code ist richtig so:
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:
#include <iostream>

using namespace std;

int main(){
    int n=10;
    int m[n];
    int i;
    int M_min=0;
    int M_max=0;
    int M_average=0;
    for (i=0;i<n;i++){ //bei 0 anfangen
        cin >> m[i];
    }
    for(i=0;i<n;i++){
        if(i==0) {
            M_min=m[i];
            M_max=m[i];
            M_average=m[i];
        }
        if(i>0){
            if(M_min > m[i])
                M_min=m[i];
            if(M_max < m[i])
                M_max=m[i];
                M_average=M_average+m[i];
        }
    }
    M_average /= n; //teilen nicht vergessen
    cout << " Min: "<<M_min << endl;
    cout << " Max "<<M_max << endl;
    cout << " Average: "<<M_average << endl;
}

Da werden aber Arrays verwendet, die du nicht haben wolltest.

und der zweite
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:
#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);
}
 
Auf diesen Beitrag antworten »
Whiss

Danke bis hier hin.
Hier ist eine fortsetzende Aufgabe, die ich irgendwie nicht verstehe.

--------------------------
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.

Zählen Sie auserdem mit, wie viele positive und negative Werte eingegeben wurden-

Die Ermittlung des Größten und kleinsten eingegebenen Wertes soll bereits ab dem ersten Wert und ohne eine Sonderbehandlung für diesen Wert erfolgen.
____________________________________________
Hier ist eine fortsetzende Aufgabe, die ich irgendwie nicht verstehe.

--------------------------
Auf diesen Beitrag antworten »
Karlito

Bitte nciht immer im "Theoretische Infromatik" posten. Das hier ist praktische Infiormatik!
Auf diesen Beitrag antworten »
Whiss

Ah okey, das wusste ich nicht.
Beim nächsten mal werde ich das in die praktische Informatik posten.

Aber jetzt kann ich das leider nicht mehr ändern. kannst du mir nun bei dieser Aufgabe helfen?
Auf diesen Beitrag antworten »
Karlito

Was genau verstehst Du denn nicht an der Aufgabe?

Gruß,

Karlito
Auf diesen Beitrag antworten »
Whiss

Ich verstehe nicht, wie ich das ohne arrays machen soll.

Kannst du mir mal quelltext schreiben, damit ich darauß dann studieren kann?
Auf diesen Beitrag antworten »
Karlito

Dazu fehlt mir heute leider die Zeit.

Gruß,

Karlito
Auf diesen Beitrag antworten »
Whiss

Schade, könntest du mir morgen so gegen 09:00 Uhr schon schicken?
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast bereits eine Lösung ohne Array (den C Code).
Auf diesen Beitrag antworten »
Whiss

Hallo eulerscheZahl,

diese Aufgabe bezieht sich ja auch auf den ersten Teil der Aufgabe, ich jedoch habe eine Frage zu der ERWEITERTEN 2. Aufgabe gestellt.
 
Neue Frage »
Antworten »


Verwandte Themen