Mehrere Werte in eine Variable eingeben...
-
Hallo,
ich will einfach ein durschnittsalter Berechnen, dafür benötige ich natürlich mehrere Werte.
Diese verschiedenen Werte, möchte ich in einer Variablen speichern.
hier "alter"
Es sollen unendlich viele Eingaben möglich sein.
Bisher habe ich noch nichts wirklich gutes Gefunden, was mir geholfen hat.
Ich hab zwar einiges von Listen bzw Arrays gelesen aber das hat mich noch nicht weitergebracht.
Ich hoffe Ihr könnt mir helfen.. . . Cout<<"Bitte geben Sie Ihr Alter ein!\n"; cin>>alter; . . . durchschnittsalter=alter/anzahl; . . . cout>> durschnittsalter;
Gibt es eine Möglichkeit, das "alter" mehrere Eingaben Addieren kann?
MfG und Danke
-
int summe_der_eingaben = 0, eingabe; while (std::cin >> eingabe) summe_der_eingaben += eingabe;
-
Gibt es eine Möglichkeit, das "alter" mehrere Eingaben Addieren kann?
Sozusagen schon. Es gibt einen Trick, mit den Stream-Iteratoren:
unsigned anzahl; for(; ... ; ++anzahl ) // Hier eine Bedingung deiner Wahl, bspw. einfach 'cin' für den Fehlerstatus { cout << "Bitte geben Sie ein Alter ein: "; alter += istream_iterator<unsigned int>(cin); /// Hier der Typ; ich nehme an, du willst nur positive Ganzzahlen? Oder willst du vielleicht, für die Bedingung in der While-Schleife, auch negative Eingaben zulassen? }
(Ungetestet)
Es ginge auch mit den Extraktions-Operatoren (
cin >> ...
), das erfordert aber eine weitere Variable zum Einlesen und draufaddieren (Edit: So wie SeppJ).P.S.: Bitte nicht meckern, falls mein Vorschlag schlicht und ergreifend bescheuert sein sollte
-
#include <vector> #include <algorithm> #include <iostream> int main(int argc, char *argv[]) { std::vector<double> vec; std::copy(std::istream_iterator<double>(std::cin), std::istream_iterator<double>(), std::back_inserter(vec)); double summe = std::accumulate(std::begin(vec), std::end(vec), 0.0); std::cout << "Durchschnitt: " << summe / vec.size() << std::endl; return 0x0; }
-
std::vector<double> vec; std::copy(std::istream_iterator<double>(std::cin), std::istream_iterator<double>(), std::back_inserter(vec)); double summe = std::accumulate(std::begin(vec), std::end(vec), 0.0);
... weil es üblich ist, Alter heutzutage auch als Fließkommazahl anzugeben
-
Das ging aber flott
Danke schonmal, werde es gleich mal ausprobieren!
-
Sone, klappe halten mit deinen 17,345235623432465436 Jahren.
Ich denke, der TE kann solche Kleinigkeiten selbst nach seinen Wünschen und Bedürfnissen anpassen
-
Skym0sh0 schrieb:
Sone, klappe halten mit deinen 17,345235623432465436 Jahren.
Ich denke, der TE kann solche Kleinigkeiten selbst nach seinen Wünschen und Bedürfnissen anpassen
War ja auch nur ein Witz.
Du hast mich aber gerade auf eine Idee gebracht, die sich mit Boost.Gregorian schön lösen lässt: Jemand gibt sein Geburtsdatum an, und dann wird je nach aktuellem Datum angezeigt, wie alt der User in Jahren ist. Mit Fließkommazahl.
(P.S.: Ich bin ca. 15.7)
-
Mh, ich hätte 16,256732837567 getippt
-
Sone schrieb:
Du hast mich aber gerade auf eine Idee gebracht, die sich mit Boost.Gregorian schön lösen lässt: Jemand gibt sein Geburtsdatum an, und dann wird je nach aktuellem Datum angezeigt, wie alt der User in Jahren ist. Mit Fließkommazahl.
Wieviele Tage hat ein Jahr?
-
volkard schrieb:
Sone schrieb:
Du hast mich aber gerade auf eine Idee gebracht, die sich mit Boost.Gregorian schön lösen lässt: Jemand gibt sein Geburtsdatum an, und dann wird je nach aktuellem Datum angezeigt, wie alt der User in Jahren ist. Mit Fließkommazahl.
Wieviele Tage hat ein Jahr?
Kannst du deine kryptischen Suggestivfragen bitte unterlassen?
-
Sone schrieb:
Kannst du deine kryptischen Suggestivfragen bitte unterlassen?
Dann mache ich das in volkards Namen als Aufforderung: Nenn doch mal alle Möglichkeiten die bei einer tagesgenauen Zeitauflösung vorkommen können.
-
SeppJ schrieb:
Sone schrieb:
Kannst du deine kryptischen Suggestivfragen bitte unterlassen?
Dann mache ich das in volkards Namen als Aufforderung: Nenn doch mal alle Möglichkeiten die bei einer tagesgenauen Zeitauflösung vorkommen können.
Ich hab schon verstanden, worauf er hinaus will. Das mindert doch nicht im Geringsten den Spaß an der Sache.
-
volkard schrieb:
Wieviele Tage hat ein Jahr?
365,24
-
So, hat alles geklappt! Danke für die Hilfe!
Hier der Code mit der Summe des Alters.#include<iostream> using namespace std; float alter=0; float summealter=0; int eingabe; int main() { marke:; cout<<"1=Eingabe;Alles andere Ausgabe!\n"; cin>>eingabe; if(eingabe==1) { do { cout<<"Bitte geben Sie Ihr Alter ein!\n"; cin >> alter; summealter += alter; } while ( alterl <=0 ); goto marke; } else cout<<alter<<"\n"; cout<<summealter; system("pause"); }
-
Tu dir doch selbst einen Gefallen und versuch dieses Programm noch einmal zu schreiben. Dieses mal benutzt du kein goto* und alle Variablen sind so lokal wie du sie nur irgendwie machen kannst.
*: Zur besseren Übung versuch auch ohne break oder continue auszukommen.
-
wo ist jetzt das durchschnittsalter?
-
Im Sinne der gestellten Frage sind einige Antworten hier Schrott.
Eine Variable hat momentan jeweils nur einen Wert. Für solche Aufgaben verwendet man besser mehrere Variable: Eingabe, Anzahl der Eingaben, Summe, Ergebnis. Man probiert es oder liest ein Einsteigerbuch!
Ist das überhaupt ein Thema für C++ ?Wenn als Durchschnittsalter 2375 geliefert wird, könnte ein Fehler vorliegen. daddeldu! :p
-
und schrieb:
wo ist jetzt das durchschnittsalter?
Natürlich nicht in dem Code
habe nur nach der Möglichkeit gesucht, mehrere Werte in einer Variablen einzugeben bspw für ein Durschnittsalter...Ich gucke mal nach dem goto und probiere es zu ändern.
Das ist aber auch nicht das Hauptprogramm, hab nur kurz aus meinem code die einzelnen Schnipsel zusammengesucht
-
Sone schrieb:
volkard schrieb:
Sone schrieb:
Du hast mich aber gerade auf eine Idee gebracht, die sich mit Boost.Gregorian schön lösen lässt: Jemand gibt sein Geburtsdatum an, und dann wird je nach aktuellem Datum angezeigt, wie alt der User in Jahren ist. Mit Fließkommazahl.
Wieviele Tage hat ein Jahr?
Kannst du deine kryptischen Suggestivfragen bitte unterlassen?
Daran war nichts kryptisch. Du hast selber sofort erkannt, daß man die Anzahl der Tage pro Jahr kaum noch sinnvoll angeben kann (sonst hättest du einfach das Ergenis hinschreiben können) und insbesondere nicht von boost.gregorian verraten bekommt. Damit ist die Aussage, es ließe sich mit boost.gregorian schön lösen völlig fölsch.