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:- Zwei Wert werden eingelesen.
- Es wird aus diesen zwei Werten die Summe gebildet.
- 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 FrageIch 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.