C++ Programm umschreiben....
-
Aufgabe wurde gelöst, danke sehr an alle
-
C-Arrays. Ganz Blöd. copy hättest du für std::vector z.b. garnicht schreiben müssen.
-
Nimm vector und die algorithms statt manuellem Arraygefummel und halbgaren Eigenlösungen für Probleme die schon so oft gelöst wurden, dass sie sogar in der Standardbibliothek stehen. Dann wird das alles mehr oder weniger trivial. Hoffe ich. Denn so ganz ist mir nicht klar, was du überhaupt erreichen möchtest, da du nur sagst, wie du dir den Weg vorstellst (und dieser weg ist lang und umständlich), anstatt zu sagen, wo du hin möchtest.
-
Hacker schrieb:
C-Arrays. Ganz Blöd. copy hättest du für std::vector z.b. garnicht schreiben müssen.
Hätte er auch für Arrays nicht, deswegen ist std::copy ja auch ein Template.
@TE: WTF soll das eigentlich bringen? Einlesen, aufteilen, sortieren, mischen,
-
hallo, danke für die antworten
Um es direkt zu klären: ich muss es so machen, wie es in meinem code ist, kein vektor, kein alghoritmus usw,....
Wir sind gerade bei dem Thema und deswegen muss das so sein.
und das mit std:: vector hatten wir noch nicht.Warum ich das machen will? weil mein lehrer es so möchte, und wenn ich es nicht vorlege morgen, brauch ich da auch gar nicht mehr aufzutauchen,...
@ seppj: wieso lang und umständlich? ist es wirklich so schwer, das umzuschreiben? bin noch ein anfänger in c++, deswegen habe ich keine vorstellung davon, ob es machbar ist oder nicht ....
ich versuch das mal weiter so umzuändern dass es das macht, was ich verlange, ma schaun, was dabei rauskommt (ich hoffe doch was gutes
)
-
chestor00 schrieb:
@ seppj: wieso lang und umständlich? ist es wirklich so schwer, das umzuschreiben? bin noch ein anfänger in c++, deswegen habe ich keine vorstellung davon, ob es machbar ist oder nicht ....
Weil wir hier erst einmal davon ausgehen, dass du ein normales Programm zu einem normalem Problem schreiben möchtest. Und welches Problem auch immer dein Programm überhaupt lösen soll (das ist nicht ersichtlich), der Lösungsweg ist lang und umständlich (sonst wäre das Ziel ersichtlich). Wir können ja nicht ahnen, dass du uns hier deine Hausaufgaben zur Bearbeitung vorlegst.
Rest deines Beitrags
Und was ist jetzt überhaupt deine Frage?
-
@SeppJ: Meine Fragen waren:
1. Ist es überhaupt möglich, das programm so umzuschreiben.
2. Wie teile ich ein Array A (z.b. 6 zahlen) in ein Array B (3 Zahlen) und Array C (3 Zahlen).
Also was wäre der Code,...
3. Wie mache ich das mit delete?Nicht das ganze programm bearbeiten und mir die Lösung vorlegen, da hast du es wohl falsch verstanden....
Nur die paar teile (Frage 1-4) , die ich nicht hinbekomme. Den Rest (also das meiste) mache ich natürlich selber.4. Frage (neu ^^): Wie mache ich das denn mit dem Sortmerge? ...
MFG
-
chestor00 schrieb:
1. Ist es überhaupt möglich, das programm so umzuschreiben.
"So"?
chestor00 schrieb:
2. Wie teile ich ein Array A (z.b. 6 zahlen) in ein Array B (3 Zahlen) und Array C (3 Zahlen).
Gar nicht. Arrays kann man nich teilen. Man kann vielleicht die Werte kopieren, sortieren oder sonst irgendetwas machen, aber teilen geht nicht. Deshalb ja die Frage, was du überhaupt erreichen möchtest.
chestor00 schrieb:
Also was wäre der Code,...
3. Wie mache ich das mit delete?oO
Wahrscheinlich sollt ihr unbedingt new/delete nutzen. Das sieht dann so aus:int main() { int num; std::cin >> num; double *buf = new duble[num]; ... delete[] buf; }
Was aber extrem sinnlos ist, da std::vector das bereits kann:
int main() { int num; std::cin >> num; std::vector<double> buf(num); ... } // Destruktor gibt Speicher automatisch frei.
chestor00 schrieb:
4. Frage (neu ^^): Wie mache ich das denn mit dem Sortmerge? ...
Sortmerge? Meinst du vielleicht Mergesort? Das wäre ein Sortieralgorithmus.
-
Hallo chester00,
willkommen im C++-Forum.
chestor00 schrieb:
1. Ist es überhaupt möglich, das programm so umzuschreiben.
Ja sicher.
chestor00 schrieb:
2. Wie teile ich ein Array A (z.b. 6 zahlen) in ein Array B (3 Zahlen) und Array C (3 Zahlen).
Also was wäre der Code,...Die saubere Methode ist, zwei neue Arrays der gewünschten Länge anzulegen, und den Inhalt entsprechend um kopieren.
Ich kann Dir aber nur wärmstens empfehlen dafür eine kleine Klasse/struct Array zu schreiben, die das new und das delete aufnimmt. Was in der Art:struct Array { typedef int value_type; explicit Array( unsigned n ) : m_size( n ) // Hinweis: Ein neues Array mit dem Titel m_data und n Elementen lässt sich wie folgt erzeugen: double *m_data= new double[n] . , m_data( new value_type[n] ) {} ~Array() { delete[] m_data; std::clog<<"Array [" << this << "] geloescht"<<std::endl; } value_type& operator[]( unsigned idx ) { assert( idx < m_size ); return m_data[idx]; } unsigned size() const { return m_size; } private: // -- nicht kopierbar Array( const Array& ); Array& operator=( const Array& ); unsigned m_size; value_type* m_data; };
chestor00 schrieb:
3. Wie mache ich das mit delete?
siehe im Code oben Zeile 11
chestor00 schrieb:
4. Frage (neu ^^): Wie mache ich das denn mit dem Sortmerge? ...
da musst Du bitte erklären, was Du darunter verstehst.
:xmas2: Werner
-
Werner Salomon schrieb:
private: // -- nicht kopierbar Array( const Array& ); Array& operator=( const Array& ); unsigned m_size; value_type* m_data; };
Wär das nicht lustiger:
// -- nicht kopierbar Array( const Array& ) = delete; Array& operator=( const Array& ) = delete; private: unsigned m_size; value_type* m_data; };
Natürlich bräuchte man einen C++11 Kompatiblen Compiler... :xmas1: