Minimalen und Maximalen Wert bestimmen



  • #include <stdio.h>
    #include <iostream>
    using namespace::std;

    int main()
    {

    int wert;
    int awert = 10;
    int bwert = 20;
    int cwert = 30;
    double wertd;

    do { printf("\n Bitte geben Sie die Messwerte ein.");
    scanf("%d", &wert);
    }

    while(wert !=10, wert !=20, wert !=30);
    printf("Danke.\n");

    cout << "\n Bitte geben Sie die Messwerte fuer den Durchschnitt ein";
    cin >> awert >> bwert >> cwert;

    wertd = (awert + bwert + cwert) / 3;

    cout << wertd;
    cout << "Danke. Der Durchschnitt betraegt " << wertd << "." << endl;

    }

    Hallo,
    wie kann ich hier den minimalen und maximalen Wert bestimmen ?
    Ich komme da einfach nicht weiter ;/



  • wie kann ich hier den minimalen und maximalen Wert bestimmen ?

    Schon mal von Vergleichsoperatoren < , > , etc. gehört? Sonst vielleicht std::min, std::max?

    Es gibt hier btw auch ein C++ Forum.



  • 1. Soll das C oder C++ sein?
    2. Wenns bei 3 Werten bleibt gehts ganz einfach mit 3 if-Abfragen, ansonsten speicher alle Werte in einem Array, sortiere es,
    und lese den ersten und letzten Wert aus.
    Aber das Programm so wies jetzt ist kannst du in die Tonne kloppen 🙂



  • Bitmapper schrieb:

    ansonsten speicher alle Werte in einem Array, sortiere es,
    und lese den ersten und letzten Wert aus.

    Das ergibt nur dann Sinn wenn man das Array in sortierter Form später im Programm noch braucht.



  • Besser du speicherst deine Messwerte in ein Array. Alle Elemente dieses
    Arrays initialisierst du zuerst mit dem Wert Null. Dann liest du deine
    Messwerte ein. Danach den arithmetischen Mittelwert berechnen. Der ist
    wichtig, wenn man später die Standardabweichung einer Stichprobe berechnen
    will.
    Beispiel:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
    int anzahlwerte = 0, zaehler;
    double messwerte[5] = {0,0,0,0,0};
    double mittelwert, minwert, maxwert, range, s, di, q;
    
    minwert =  maxwert = range = mittelwert = s = di = q = 0;
    /* Messwerte einlesen*/
    while(anzahlwerte < 5)
     {
       printf("\n Eingabe Messwert_%d: ", anzahlwerte + 1);
       scanf("%lf", &messwerte[anzahlwerte]);
       mittelwert += messwerte[anzahlwerte];
       /* größten Wert feststellen*/
       if (messwerte[anzahlwerte] > maxwert) maxwert = messwerte[anzahlwerte];
       anzahlwerte++;
     }
    /* arithmetischen Mittelwert errechnen*/
    mittelwert /= (double)anzahlwerte;
    
    printf("\n\nAusgabe von %d Werten: ", anzahlwerte);
    
    zaehler = 0;
    minwert = maxwert;
    while(messwerte[zaehler] != 0)
     {
      printf("\nMesswert %d = %lf", (zaehler + 1), messwerte[zaehler]);
      /* kleinsten Wert festellen */
      if (messwerte[zaehler] < minwert) minwert = messwerte[zaehler];
      zaehler++;
     }
    /*Start Berechnung der Standardabweichung der Stichprobe */
     zaehler = 0;
     while(zaehler < anzahlwerte)
     {
      di = (messwerte[zaehler++] - mittelwert);
      q += (di * di);
     }
      q /= anzahlwerte - 1;
      s = sqrt(q);
    /* Ende der Berechung der Standardabweichung der Stichprobe*/
    
    printf("\n\nDurchschnitt.......: %lf  ",  mittelwert);
      printf("\nMinimalwert......:   %lf  ",  minwert);
      printf("\nMaximalwert.......:  %lf  ",  maxwert);
      printf("\nRange..............: %lf  ",  maxwert - minwert);
      printf("\nStandardabweichung:  %lf  ",  s);
    
    return 0;
    }
    

    Nachdem alle Werte eingelesen wurden wird vordem Minimalwert der
    Maximalwert bestimmt. Also zuerst mit

    Maximalwert = 0;
    

    initialisieren, danach den Maxwert mit jedem Messwert vergleichen ob
    ein größerer Wert vorliegt. Danach wird erst der Minimalwert gesucht,
    zuerst mit

    minwert = maxwert;
    

    initialisieren.
    Danach alle Elemente des Arrays mit dem Minwert vergleichen ob er
    kleiner ist, wenn ja, dann Zuweisung.
    Mit Hilfe des arithmetischen Mittelwertes wird dann die
    Standardabeweichung berechnet. Deshalb empfehle ich, die Anzahl der
    Messwerte einer Stichprobe immer extra in einer Variablen festzuhalten.
    Nach der Größe der Grundgesamtheit richtet sich die Größe der Stichprobe
    und nach der werden die Warn und Eingriffsgrenzen berechnet.
    Selbstverständlich abhängig von der anehmbaren Qualitätsgrenzlage AQL.
    Diese Faktoren bestimmen dann die Zahl, bei der man bei festgestellten
    Fehlern dann die Sendung zurückweist. Über Wahrscheinlichkeitsrechung
    werden auch die Wahrscheinlichkeit einer Rückweisung oder einer Annahme
    einer Lieferung bestimmt.
    Bevor ich von meinem Arbeitsplatz durch einen jüngen Spezel meines
    "Kollegen" verdrängt wurde(Es lebe die Vetternwirtschaft!!!!),
    habe ich als Qualitätsfachmann für Längenprüftechnik (mit IHK-Prüfung)
    viele Excel-Dateien fürden Qualitätssektor ins Netz gestellt.

    auf www.programmierer-forum.de

    in der VBA-Rubrik.
    Kannste mal reinschauen.
    Ich will dich auf keinem Fall zum Qualitätsfachmann ausbilden. Aber über
    den Tellerrand schauen lohnt sich auf jeden Fall.



  • Und, wen interessiert dein Müll?
    Vollkommener Pfusch, du scheinst auf Arbeit nicht ausgelastet damit zu sein, Schrott zu verbreiten.
    Dein Code enthält UB.
    Liebe Kinder, ignoriert diesen Pfusch.



  • Drück dich mal ein bisschen moderater aus, es gibt keinen Grund hier immer so einen Hass aufzubringen.

    Sachlich tut's auch.



  • Interessanter fände ich die Anwort auf die Frage:
    An welcher Stelle ist das Verhalten undefiniert?



  • Die while Schleife mit Überprüfung auf 0 ist wohl nicht so toll, da das ein möglicher Wert für die Eingabe sein kann - denke ich mal.



  • cvcv schrieb:

    Die while Schleife mit Überprüfung auf 0 ist wohl nicht so toll, da das ein möglicher Wert für die Eingabe sein kann - denke ich mal.

    rustyoldguy schrieb:

    Deshalb empfehle ich, die Anzahl der Messwerte einer Stichprobe immer extra in einer Variablen festzuhalten.



  • Bringt nur nix wenn sie in der entsprechenden Schleife nie verwendet wird.


  • Mod

    Alternativvorschlag: Wir sparen uns den Quatsch mit dem Array und machen einfach alles in einem Rutsch. Denn was bringt es uns, die Werte in einem Array zwischenzuspeichern, wenn wir hinterher sowieso nur über das Array iterieren? Das einzige, was uns das spart, ist über die Standardabweichung nachzudenken. Aber ein bisschen Hirnschmalz (oder in diesem Fall zugegebenermaßen: Schlaue Bücher) spart viel Programmieraufwand:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
      double value;
      unsigned int N = 0;
      double mean = 0;
      double m2 = 0;
      double min, max;
    
      while (scanf("%lf", &value) == 1)
        {
          ++N;
          double delta = value - mean;
          mean += delta / N;
          m2 += delta*(value - mean);
    
          if (N==1) min = max = value;
          else
            {
              if (min > value) min = value;
              if (max < value) max = value;
            }
        }
    
      if (N>0)
        {
          double S2 = m2 / (N - 1); 
          double lg1 = lgamma(0.5*N);
          double lg2 = lgamma((0.5*(N-1)));
          double Kn = sqrt(2./(N-1))*exp(lg1 - lg2);
          double sdev = Kn * sqrt(S2); 
    
          printf("\n\nAnzahl der Messwerte: %u",  N);
          printf("\nDurchschnitt........: %f",  mean);
          printf("\nMinimalwert.........: %f",  min);
          printf("\nMaximalwert.........: %f",  max);
          printf("\nRange...............: %f",  max - min);
          printf("\nStandardabweichung..: %f\n",  sdev);
        } 
    }
    

    edit: Niemals Code von Leuten kopieren, die nicht einmal printf beherrschen...



  • Der length modifier bei Gleitkommazahlen scheint gerade sehr en vogue zu sein... 🙂


  • Mod

    Furble Wurble schrieb:

    Der length modifier bei Gleitkommazahlen scheint gerade sehr en vogue zu sein... 🙂

    Nein, copy&Paste hier aus dem Forum. Ich sollte wohl besser aufpassen, wessen Code ich kopiere. Dass Leute nicht einmal printf richtig können...



  • SeppJ schrieb:

    Furble Wurble schrieb:

    Der length modifier bei Gleitkommazahlen scheint gerade sehr en vogue zu sein... 🙂

    Nein, copy&Paste hier aus dem Forum.

    Das war mir klar, dass das C&P war - ist ja sehr offensichtlich.

    SeppJ schrieb:

    Dass Leute nicht einmal printf richtig können...

    Der modifier ist übrigens auch nur überflüssig und nicht die geheimnisvolle UB...
    ("... has no effect on a following a, A, e, E, f, F, g, or G conversion specifier.")



  • Wie gesagt:

    Furble Wurble schrieb:

    Der modifier ist übrigens auch nur überflüssig und nicht die geheimnisvolle UB...

    while(messwerte[zaehler] != 0)
    


  • cvcv schrieb:

    Wie gesagt:

    Furble Wurble schrieb:

    Der modifier ist übrigens auch nur überflüssig und nicht die geheimnisvolle UB...

    while(messwerte[zaehler] != 0)
    

    Ahh. Ja. Das kann in der Tat zum Problem werden wenn keine 0 im Array ist..,


Anmelden zum Antworten