Unbestimmte Anzahl von Werten aus Datei einlesen und damit rechnen



  • Hallo,

    ich stehe vor folgender Herausforderung:

    ich möchte gerne ein paar Zahlungen in meinem Programm erfassen, diese in einem Dokument speichern und dann aus den Werten die Summe berechnen. Genau hier kommt die Herausforderung: Ich kann im Vorhinein beim Schreiben des Quellcodes nicht wissen, wie viele Werte das sein werden!

    Mein Ansatz ist grundsätzlich, eine Leseschleife zu erstellen, innerhalb welcher er immer meinetwegen 3 Werte einliest und diese dann speichert und es dann bis zur Nichterfüllung der Abbruchbedingung immer so weiter geht. Am Schluss soll er dann wie gesagt alle Werte erfassen, egal wie viele dann im Dokument stehen und daraus die Summe errechnen und ausgeben.

    Gibt es hierzu eine Möglichkeit? Ich habe an Vektoren gedacht, aber wie rechne ich dann innerhalb einer Rechenfunktion mit diesen?

    Freue mich auf Lösungsvorschläge!

    Vielen Dank vorab und freundliche Grüße,

    Martin Pardatscher



  • Wenn es nur darum geht die summe zu bilden brauchst du keine vektoren.
    Da reicht eine variable (z.b. summe) und eine einlese schleife.
    Die Schleife liest die eine zahl ein und inkrementiert den wert der variable.
    Das macht sie so lange bis alle zahlen eingelesen wurden bzw. ein Fehler beim einlesen auftritt



  • Hallo,

    vielen Dank für deine Antwort, aber wird dann der Wert der Variable nicht jedes Mal überschrieben und wie sag ich dem Programm, dass er dann aus allen (z.B. 20) Werten die Summe bilden soll?

    LG



  • @venezianer27 Ja, der Wert wird überschrieben.
    Aber wozu brauchst du den alten Wert noch, wenn er schon addiert wurde?



  • Stimmt ich glaube ich weiß worauf ihr hinauswollt, bitte korrigiert mich, wenn ich falsch liege...

    Ich erstelle eine Schleife
    Innerhalb dieser Schleife passiert dann Folgendes:

    1. Zwei Wert werden eingelesen.
    2. Es wird aus diesen zwei Werten die Summe gebildet.
    3. Zu der errechneten Summe werden dann innerhalb einer neuen Variable die jeweils neu eingelesenen Werte addiert. Sprich Summe2=summe1+wert1+wert2

    Ich schließe die Schleife.

    LG



  • @venezianer27 Nein. Du brauchst immer nur einen Wert einlesen.

    Zwei Variablen: summe, wert
    summe = 0
    solange ((wert einlesen) erfolgreich)
       summe = summe + wert
    endsolange
    


  • @venezianer27
    Um auch deine ursprüngliche Frage

    Ich habe an Vektoren gedacht, aber wie rechne ich dann innerhalb einer Rechenfunktion mit diesen?

    zu beantworten: Mit einem Vektor könntest du es so machen:

    Vier variablen:
        alle_werte: Vektor von Zahl
        wert: Zahl
        index: Zahl 
        summe: Zahl 
    
    alle_werte = leer
    solange ((wert einlesen) erfolgreich)
       wert an Vektor alle_werte anhängen
    endsolange
    
    index = 0
    summe = 0
    solange (index kleiner als alle_werte.grösse)
        wert = alle_werte[index]
        summe = summe + wert
        index = index + 1
    endsolange
    

    Für die zweite Schleife gibt es eine fertiges Funktions-Template das sich std::accumulate nennt. Aber bevor du das verwendest, um zu verstehen wie es funktioniert, solltest du das erstmal selbst programmiert haben. Ist ja einfach genug.

    Die Variante die @firefly und @DirkB dir gezeigt haben ist mehr oder weniger das selbe, bloss ohne den unnötigen Umweg über den Vektor.


Log in to reply