Meherer Eingaben(Zahl) passend zum Gesamtwert ... ?
-
Ja, ich möchte es aber in C bzw. C++ schreiben. das wird doch n bissschen viel code oder ? !
Dann wäre es ja nur :if (zahl[1]+zahl[2]...==gesamtzahl) { cout << zahl[1] << "+" << zahl[12] << .... << "Ergeben: " << gesamtzahl; }
Hätte viell. erwähnen sollen, dass ich es programmieren möchte ... sry
clint
-
bau dir ein "(multi)set<int> paket;" für die aktuell ausgewählten Elemente, dann kannst du die Summe berechnen mit "std::accumulate(paket.begin(),paket.end(),0);" (außerdem hast du insert/erase zum Ein- bzw. Auspacken der Zahlen gleich mitgeliefert).
-
bau dir ein "(multi)set<int> paket;" für die aktuell ausgewählten Elemente, dann kannst du die Summe berechnen mit "std::accumulate(paket.begin(),paket.end(),0);" (außerdem hast du insert/erase zum Ein- bzw. Auspacken der Zahlen gleich mitgeliefert).
Danke für die Antwort, nur leider hab ich das noch nie gehört ! Kannst du mir bitte nähere Infos dazu geben, bzw, bsp. Code ! ?
mfg
-
Multi-Set und std::accumulate sind Bestandteile der C++ STL - lies dir die Erklärungen mal durch und versuch' dein Programm in Pseudo-Code darzustellen, dann dürfte die Umsetzung in C++ eher einfach sein.
-
ok, werd ich machen.
Danke erst mal für deine Antwort !
cu clint
-
hey !
Ich habs jetzt die ganze Zit versucht ! Das "FAQ" zu accumulate... hab ich
gelesen, aber irgendwie komm ich nicht weiter ! Ich versteh die Parameter der Funktion nicht, der ich iht übergebem soll ! ? und was sie mir bei meiner Aufgabe helfen soll !Ich brauch unbeding hilfe !
greetz clint
-
die ganzen STL-Algorithmen arbeiten mit sogenannten "Iteratoren" (Pointer-ähnliche Gebilde, die durch einen beliebigen Container laufen können) und benötigen normalerweise eine Bereichsangabe aus Startpunkt und "hinter dem Ende" - accumulate benötigt als dritten Parameter den Startwert der Summierung und als viertes die zu verwendende "Summierungsfunktion" (das ist optional - Default ist Addieren), also bleibt unter dem Strich:
container elems; //füllen mit Werten //Berechne Summe aller Elemente von 'elems': int summe=accumulate(elems.begin()/*Anfang*/,elems.end()/*Ende*/,0/*Startwert*/); //Berechne Produkt aller Elemente von 'elems': int produkt=accumulate(elems.begin(),elems.end()/*wieder der Bereich*/,1/*Startwert*/,multiplies<int>/*ich multipliziere*/);
PS: Die Container der STL stellen alle die Methoden begin() (Iterator auf Anfang des Inhaltes) und end() (Iterator hinter das Ende des Inhaltes) zur Verfügung - damit kannst du den benötigten Bereich definieren.
-
Ja, danke !
Aber wie füll ich den "container" den mit meinen Werten ? Also zahl1,zahl2,2 usw.
mfg clint
-
das ist leider für verschiedene Container unterschiedlich (Vektoren und Listen haben z.B. push_back() (Anhängen am Ende) und insert(pos,val) (einfügen an Stelle pos), Sets haben ein insert(val) (einfügen in Sortierungsreihenfolge). Die meisten Container können aber auch aus einem C-Array heraus initialisiert werden:
int werte[]={zahl1,zahl2,...,zahln}; size_t werte_len=sizeof(werte)/sizeof(werte[0]); container cont(werte,werte+werte_len);
PS: Von den Möglichkeiten, eigene Containerklassen mit der STL zu kombinieren, fange ich gar nicht erst an
-
jo danke ! Ich habs nun ....
thx @ cstoll
mfg clint