matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

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:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++Zerlegung in beliebige Summen
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
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.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]