www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - Zerlegung in beliebige Summen
Zerlegung in beliebige Summen < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Zerlegung in beliebige Summen: Problem in C++
Status: (Frage) beantwortet Status 
Datum: 15:43 Mo 25.08.2014
Autor: Cebalrai

Hallo, in der Hoffnung hier das richtige Subforum erwischt zu haben, hier mein Problem:

Ich muss in C++ eine beliebige natürliche Zahl in beliebig viele Summanden (ebenfalls [mm] $\in\IN$) [/mm] zerlegen.
Die Ergebnisse sollen als [mm] $\texttt{vector>}$ [/mm] abgespeichert werden, wobei eben [mm] $\texttt{vector}$ [/mm] konkret eine solche Zerlegung wäre. Durch die verschiedenen Längen der Vektoren, die die einzelnen Zerlegungen mit sich bringen, hab ich keine Ahnung, wie ich das bewerkstelligen soll. Es scheint aber irgendwie eine Rekursion da reinzugehören.
Ganz am Ende soll eine Liste dabei rauskommen, die der Größe nach geordnet ist und doppelt auftretende Tupel eliminiert sind, z.B. für 10 dann eben:
9   1
8   2
8   1   1
7   3
7   2   1
7   1   1   1
etc.

Vielen Dank schon mal vorab ;)

PS: Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Zerlegung in beliebige Summen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:51 Mo 25.08.2014
Autor: Diophant

Hallo,


deine Frage ist für meinen Geschmack aus zweierlei Hinsicht zu unkonkret:

- Welche Kenntnisse hast du hinsichtlich Programmmierung im Allgemeinen und C++ im Speziellen, insbesondere hinsichtlich Sortieralgorithmen und Zeigern?

- Welche algorithmischen Gedanken hast du dir schon gemacht?

Also ich persönlich wäre hier erst in dem Moment bereit, über mögliche Lösungen nachzudenken, wenn du auf die beiden oberen Punkte etwas näher eingehen köntest. Und selbst wenn sich ein Helfer/eine Helferin findet, der/die das nicht so eng sieht: so jemand würdest du es auch leichter machen, wenn a) dein Kenntnisstand bekannt und b) eigene Überlegungen von deiner Seite aus Überlegungen vorhanden wären.


Gruß, Diophant 

Bezug
                
Bezug
Zerlegung in beliebige Summen: Konkretisierung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:01 Mo 25.08.2014
Autor: Cebalrai

Nun ja, in Informatik hab ich eine Vorlesung gehabt, Numerisch noch ein paar weitere, und benötige i.d.R. auch Infokenntnisse nur für numerische Zwecke, wie man es als Phy-Student braucht.
Mit Pointern komm ich ganz gut klar, aber Verwirrung ist trotzdem immer mal gewährleistet. Zu den Zwecken, wozu ich C++ bisher so gebraucht habe, konnte man sich da aber auch vieles sparen - wie eben z.B. durch [mm] $\text{\texttt{vector}}$. [/mm] Von Algorithmik sonst hab ich keine Ahnung. Ich schätze, dass ich da auch etliche Tricks einfach nicht kenne, da ich sie nie gebraucht hab ....

Zu meinen Überlegungen:
Naja .... ich hab versucht die Problematik mithilfe von ein paar for-Schleifen, später auch einer while-Schleife irgendwie hinzukriegen, ohne dass ich [mm] $N^N$-Möglichkeiten [/mm] aufschreiben und sortieren muss. Woran das scheitert, ist die dynamische Länge der Vektoren, die meine Summanden repräsentieren, sodass man das nicht schön in Schleifen packen kann.
Dann hab ich versucht, da es micht irgendwie an Turm von Hanoi erinnert hat, mit Rekursionen da ranzugehen. Abgesehen von den Standardbeispielen für Übungsserien und Klausuren hab ich damit aber auch noch nicht hantiert, sodass ich absolut kein Gefühl dafür habe. Was bei meinen Ansätzen da oft das Problem war: bei einer Schleife mit Rekursion drin, die theoretisch hätte funktionieren können, konnte ich meine Ergebnisse nicht mehr sinnvoll abspeichern.

Bezug
        
Bezug
Zerlegung in beliebige Summen: Antwort
Status: (Antwort) fertig Status 
Datum: 22:25 Mo 25.08.2014
Autor: felixf

Moin!

Ich nehme mal an, dass die Zahlen in der Summe wie in deinem Beispiel absteigend (oder gleich) sein sollen, also $3 3 2 1 1$ ist in Ordnung, $3 2 3 1 1$ dagegen nicht.

Schreib doch eine Funktion, die folgendes bekommt:

* eine Referenz auf std::vector<std::vector<int>>;
* einen std::vector<int> (als Referenz oder als Value), der den Anfang einer Zahlenfolge darstellt;
* einen Wert $max$, so dass alle folgenden Werte in der Zahlenfolge [mm] $\le [/mm] max$ sein muessen;
* die Summe der verbleibenden Zahlen in der Folge.

Diese Funktion soll alle Folgen an die Ergebnisliste anhängen, die mit der gegebenen Teilfolge anfangen.
(Der Wert $max$ ist also das Minimum der Werte im std::vector<int> falls dieser nicht leer ist, und gleich dem letzten Parameter andernfalls.)

Wenn du diese Funktion implementiert hast (rekursiv!), musst du sie einmal richtig aufrufen, und schon erzeugt sie dir die komplette Liste.

LG Felix


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de