Anfänger am Werk / Bestimmte Anzahl vorher festlegen



  • Hallo,

    habe folgendes Problem. Ich soll ein Programm schreiben, welches Messwerte berechnet. Es soll die Eingabe von 5 bis 25 Messwerte erlaubt sein. Der Benutzer soll am Anfang des Programmes festlegen können wieviele Werte er eingeben möchte. Wie kann man dies am besten realisieren? D.h. dass wenn der Benutzer 5 Werte eingelesen haben möchte, auch nur 5 Abfragen kommen? Bin schon die ganze Zeit am Überlegen. Evtl. mit einer for-Schleife?

    Danke!!



  • Du gibst die Antwort doch schon selbst.

    max Wert einlesen
    for(i = 0; i < max; i++)
    werte einlesen und in nem Array speichern



  • Also irgendwie komme ich damit nicht wirklich klar. Ich bekomme es einfach nicht hin, dass aus der angegebenen Anzahl der gewünschten Messwerte dann auch noch die einzelnen Messwerte eingelesen werden und dabei der Bereich zwischen 5 und 25 liegt. 😞



  • Abfragen, ob die gewünschte Anzahl im richtigen Bereich liegt, kannst du mit if() (oder du packst die Frage in eine Schleife, die erst beendet wird, wenn der Wert stimmt).

    Die Eingabewerte selber kannst du dann z.B. in einem Array unterbringen.



  • Also das mit den Eingabewerten ist klar, allerdings komm ich an einem Punkt nicht weiter. Mir will einfach nicht in den Kopf, auf welchem Wege ich die einzulesenden Messwerte von der vorher angegebenen Anzahl der MW abhänig machen kann.

    Beispielsweise gebe ich als Anzahl der Messwerte 3 an. Nun soll eine Schleife dafür sorgen, dass auch nur 3 Messwerte eingelesen werden und danach die Programmausgaben starten.

    Sorry, bin noch ziemlich am Anfang was Programmieren angeht. 😞



  • Wenn du die Werte mitzählen willst, bietet sich eine for()-Schleife an:

    for(i=0;i<anzahl;++i)
    {
      lies Wert i ein und verarbeite ihn
    }
    

    Wenn du noch viel mit allen Werten machen willst, solltest du den nötigen Speicher per malloc() anfordern, nachdem du die Anzahl hast.



  • Hallo,

    habe mein problem in den Griff bekommen, jedoch steh ich jetzt vor dem nächsten.

    Es sollen Messwerte zwischen -5000 und 5000 zugelassen werden. Eine entsprechende Prüfung habe ich mit if vorgenommen, allerdings will dies nicht so recht.

    Die Ober- und Unter-Grenze habe ich per #define festgelegt. Die if-Anweisung lautet folgendermaßen:

    if(werte[i] > UPPER || werte[i] < LOWER)
                   printf("\nUngueltiger Bereich!");
    

    Bin mir ziemlich sicher, dass es mit dem Array werte (in dem die Messwerte gespeichert werden) zusammenhängt. Ich dachte, dass man so gespeicherte Arraywerte kontrollieren kann, aber da liege ich wohl falsch.

    Gruß



  • Zeig doch mal etwas mehr Code 😉

    (ich tippe ja darauf, daß du den Wertebereich kontrolliert hast, bevor du einen Wert eingegeben hast)



  • do {
             printf("\nMesswert # %i: ", i+1);
             scanf("%f", &werte[i]);
             i++;
    
                if(werte[i] > UPPER || werte[i] < LOWER)
                   printf("\nUngueltiger Bereich!");
                   //error = 1;
                else
                  //error = 0;
    
          } while (i != nanz);
    


  • Da war CStolls Tip doch goldrichtig. Genauer gesagt: du solltest überlegen wo du i inkrementierst 😉


Anmelden zum Antworten