Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Wiederhoungsanweisung (http://www.informatikerboard.de/board/thread.php?threadid=2641)


Geschrieben von Whiss am 29.11.2015 um 20:10:

  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?



Geschrieben von eulerscheZahl am 29.11.2015 um 20:23:

  RE: Wiederhoungsanweisung

Wenn man die Syntaxfehler behebt (z.B. printf( "\Bitte geben Sie einen Messwert ein \n \n");), ist es richtig, ja.



Geschrieben von Whiss am 29.11.2015 um 20:37:

  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.



Geschrieben von eulerscheZahl am 29.11.2015 um 20:51:

 

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);
}



Geschrieben von Whiss am 29.11.2015 um 21:19:

 

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.

--------------------------



Geschrieben von Karlito am 29.11.2015 um 21:24:

 

Bitte nciht immer im "Theoretische Infromatik" posten. Das hier ist praktische Infiormatik!



Geschrieben von Whiss am 29.11.2015 um 21:32:

 

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?



Geschrieben von Karlito am 29.11.2015 um 21:46:

 

Was genau verstehst Du denn nicht an der Aufgabe?

Gruß,

Karlito



Geschrieben von Whiss am 29.11.2015 um 21:54:

 

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

Kannst du mir mal quelltext schreiben, damit ich darauß dann studieren kann?



Geschrieben von Karlito am 29.11.2015 um 22:03:

 

Dazu fehlt mir heute leider die Zeit.

Gruß,

Karlito



Geschrieben von Whiss am 29.11.2015 um 23:03:

 

Schade, könntest du mir morgen so gegen 09:00 Uhr schon schicken?



Geschrieben von eulerscheZahl am 30.11.2015 um 07:11:

 

Du hast bereits eine Lösung ohne Array (den C Code).



Geschrieben von Whiss am 01.12.2015 um 02:55:

 

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.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH