Sort Algorithmus



  • Kevin123 schrieb:

    der temp Wert wird in das ite Array kopiert ?

    Ach? Das ite Array? Hast du denn mehrere Arrays?
    Und wenn ich mal annehme dass du das "ite Array Element" meinst... von welchem Array denn?

    ~~Ansonsten... lies doch mal einfach die Fehlermeldungen. Da steht doch eh schon alles.~~OK, neh. Nicht alles. Wenn du die Meldungen gefixt hast kommen nochmal einige andere Fehler.



  • Von dem Array das ich hier erstellt hatte :

    CalendarEntry * newEntries = new CCalendarEntry [m_numberofEntries + 1];

    Oder blödsinn von mir ?



  • Habe jetzt noch ein wenig weiter probiert obwohl hier kaum Hilfestellungen kommen .

    Es handelt sich um keine Hausaufgabe will ich an dieser Stelle sagen .

    Aber ok.

    Ich habe noch probleme wie ich das mit dem zusammenfügen der richtigen Reihenfolge hin bekomme .

    Der Code sieht unvollständig so aus:

    /*
     * CCalendar.cpp
     *
     *  Created on: 21.08.2017
     *      Author: vaio
     */
    
    #include "CCalendar.h"
    
    CCalendar::CCalendar() {
    
    }
    
    CCalendar::~CCalendar() {
    	if( m_entries >=0 ){
    	delete m_entries;
    	}
    }
    
    Calendar& operator+=(const CCalendarEntry& entry){
    
    	CCalendarEntry * oldEntries = m_entries; 
    	CCalendarEntry * newEntries = new CCalendarEntry[m_numberofEntries+1];
    
    	for(i=1; i<m_numberofSize; i++){
    
    		oldEntries[i] = newEntries[i];.
    		newEntries [i] = newEntries[i+1]; 
    		}
    	m_entries = newEntries;  // m_entries auf das neue Array zeigen lassen
    	    delete [] oldEntries;  // das alte Array zerlegen
    
    	    }
    


  • Kevin123 schrieb:

    Es handelt sich um keine Hausaufgabe will ich an dieser Stelle

    Komisch, das sagen alle mit dieser Hausaufgabe.



  • Aber wie sieht es jetzt genau mit meinem Ansatz aus ?
    Es handelt sich doch um ein Forum ?

    AUch wenn es sich um ne Hausaufgabe handeln sollte kann man ja trotzdem helfen .

    Ich übe aber nur daran.



  • Wenn du üben willst such dir eine vernünftige Aufgabe ohne new/delete. Hinweis: wenn Klassennamen mit C<Name> geschrieben werden ist die Aufgabe Kernschrott.



  • Kevin123 schrieb:

    Von dem Array das ich hier erstellt hatte :

    CalendarEntry * newEntries = new CCalendarEntry [m_numberofEntries + 1];

    Oder blödsinn von mir ?

    Nein, kein Blödsinn.
    Ich hatte mir nur gedacht... wenn du als Beschreibung etwas schreibst wo "newEntries" drinnen vorkommt, dann fällt dir vielleicht auf dass in der Zeile die du geschrieben hast, mit der du das erreichen wolltest, "newEntries" eben gerade nicht vorkommt. Und dass dir dann vielleicht auch auffällt dass es evtl. daran liegen könnte.

    Was deinen operator+= angeht - also die neue Version... der ist leider völliger Unsinn.
    Überleg dir mal einen Algorithmus wie man das machen könnte. Ist nicht so schwer, das solltest du hinbekommen. Also ne Beschreibung auf Deutsch, aber halt exakt und detailiert. Dann formulierst du etwas daraus was "computergerecht" ist, also etwas das Variablen, Arrays, Vergleiche, Schleifen verwendet. Das kann ruhig auch immer noch auf Deutsch sein. Das schreibst du dir alles nieder.
    Und dann schreibst du einfach nur noch C++ Code der genau das macht.
    Falls du beim letzten Punkt Probleme hast, der Rest aber da ist, wird dir hier sicher jmd. weiterhelfen.



  • [CODE]
    
    [code]
    
    * CCalendar.cpp
     *
     *  Created on: 21.08.2017
     *      Author: vaio
     */
    
    #include "CCalendar.h"
    
    CCalendar::CCalendar() {
    
    }
    
    CCalendar::~CCalendar() {
            if( m_entries >=0 ){
            delete m_entries;
            }
    }
    
    Calendar& operator+=(const CCalendarEntry& entry){
    
            CCalendarEntry * oldEntries = m_entries; 
            CCalendarEntry * newEntries = new CCalendarEntry [
      (m_numberOfEntries + 1) - 1   ];     
            for(i=0; i<m_numberofSize; i++){
                    f( (entry.getDate() < m_entries[i].getDate())) {
                             entry = newEntries[i] ;
    
                    }
    
                    oldEntries[i] = entry;kopiere jedes einzelne Element vom m_entries Array in das neu angelegt Array um.
    
                    }
              newEntries[i+1]= entry ; D
            m_entries = newEntries;  // m_entries auf das neue Array zeigen lassen
                delete [] oldEntries;  // das alte Array zerlegen
    
                }
    

    Teilweise richtig denke ich ,aber habe noch probleme was ich machen muss das der grössere vom kleineren steht?



  • Dun rätst einfach in´s Blaue hinein und hoffst, dass das jemand hier im Forum für dich löst, oder? Und bitte formatier´ deinen Quelltext so, dass man ihn vernünftig lesen kann. Das betrifft insbesondere das Einrücken.

    1. dynamisch erzeugte Arrays werden mit delete[] zerstört, nicht mit delete . Musst du in deinem Code beheben.

    2. Du hast ein Array der Länge N und sollst ein weiteres Element hinzufügen. Wie groß muss das neue Array sein? Tipp: Es ist nicht N + 1 -1



    1. Du hast ein Array der Länge N und sollst ein weiteres Element hinzufügen. Wie groß muss das neue Array sein?

    m_numberOfSize+1 ?



  • Und was machst du in deinem Quelltext?

    Lass das Sortieren erst ein Mal außen vor und erzeuge ein neues Array, in das du den neuen Eintrag hinten einfügst. Danach sehen wir weiter.



  • Kevin123 schrieb:

    1. Du hast ein Array der Länge N und sollst ein weiteres Element hinzufügen. Wie groß muss das neue Array sein?

    m_numberOfSize+1 ?

    Sehr gut gemacht Kevin, wirklich top. Es bedarf schon einem scharfsinnigen Auge um zu dieser Erkenntnis zu gelangen.
    Was mag nun der nächste Schritt sein lieber Kevin?



  • Naja eigentlich wäre die korrekte Antwort N + 1 und nicht m_numberOfSize+1 😉



  • Hast natürlich recht, aber so kleinkariert wollte ich dann doch nicht sein.


Anmelden zum Antworten