Sort Algorithmus



  • Ja ich weiß es zeigt Fehler an .

    Aber leider weiß ich nicht wie ich Fehler beseitigen soll 😃



  • Komisch, alle paar Wochen schlägt hier jemand mit der Hausaufgabe auf ...



  • Kevin123 schrieb:

    Wie sieht die d) bei mir aus?

    Schlecht. Schon optisch. Benutzt Du keine IDE, die zumindest Syntax überprüft und dir bei Einrückungen hilft? Dann wäre dir evt. schon aufgefallen, dass du dich mit den Klammern verrannt hast.

    Kevin123 schrieb:

    Ja ich weiß es zeigt Fehler an .

    Aber leider weiß ich nicht wie ich Fehler beseitigen soll 😃

    Wenn irgendwas Fehler anzeigt, die deinen Code betreffen: Was zeigt die Fehler an und welche Fehler. Fehlermeldungen bitte komplett. Das macht es einfacher zu helfen.



  • Kevin123 schrieb:

    Aber leider weiß ich nicht wie ich Fehler beseitigen soll 😃

    temp = CCalendarEntry[i];
    Beschreib mal mit Worten was das machen soll. Dann solltest du draufkommen was falsch ist.



  • der temp Wert wird in das ite Array kopiert ?

    Soll ich es einfach umgekehrt machen ?



  • Fehlermeldungen

    Description Resource Path Location Type
    Symbol 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 34 Semantic Error
    Symbol 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 33 Semantic Error
    make: *** [CCalendar.o] Fehler 1 CCalendar C/C++ Problem
    Symbol 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 38 Semantic Error
    Symbol 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 34 Semantic Error
    Type 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 27 Semantic Error
    Type 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 27 Semantic Error
    Symbol 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 31 Semantic Error
    Symbol 'm_numberofEntries' could not be resolved CCalendar.cpp /CCalendar line 27 Semantic Error
    Type 'CCalendarEntry' could not be resolved CCalendar.cpp /CCalendar line 24 Semantic Error
    No return, in function returning non-void CCalendar.cpp /CCalendar line 24 Code Analysis Problem
    Type 'Calendar' could not be resolved CCalendar.cpp /CCalendar line 24 Semantic Error
    ‘Calendar’ does not name a type CCalendar.cpp /CCalendar line 24 C/C++ Problem
    type ‘<type error>’ argument given to ‘delete’, expected pointer CCalendar.cpp /CCalendar line 20 C/C++ Problem
    ‘m_entries’ was not declared in this scope CCalendar.cpp /CCalendar line 19 C/C++ Problem
    ‘CCalendarEntry’ does not name a type CCalendar.h /CCalendar line 22 C/C++ Problem
    ‘CJulianDate’ does not name a type CCalendar.h /CCalendar line 23 C/C++ Problem
    ‘CCalendarEntry’ in ‘class CCalendar’ does not name a type CCalendar.h /CCalendar line 17 C/C++ Problem
    die Regel für Ziel „CCalendar.o“ scheiterte subdir.mk /CCalendar/Debug line 18 C/C++ Problem



  • Kevin123 schrieb:

    der temp Wert wird in das ite Array kopiert ?

    In deinem Code versuchst du den Array Wert in temp zu schreiben.

    Zu deiner Fehlermeldung: Wie compilierst du den Spaß denn?



  • 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 😉


Anmelden zum Antworten