Sort Algorithmus



  • https://www.pic-upload.de/view-33825373/h.png.html

    Wie sieht die d) bei mir aus?

    Kann das passen ?

    /*
     * CCalendar.h
     *
     *  Created on: 21.08.2017
     *      Author: vaio
     */
    
    #ifndef CCALENDAR_H_
    #define CCALENDAR_H_
    #include <string>
    #include<iostream>
    using namespace std;
    
    class CCalendar {
    
    private:
    	CCalendar::CCalendarEntry* m_entries = 0;
    	unsigned int m_numberofEntries = 0;
    public:
    	CCalendar();
    	 ~CCalendar();
    	 CCalendar& operator+=(const CCalendarEntry& entry);
    	 void print( const CJulianDate& from);
    	 void print();
    };
    
    #endif /* CCALENDAR_H_ */
    
    #include "CCalendar.h"
    
    CCalendar::CCalendar() {
    
    }
    
    CCalendar::~CCalendar() {
    	if( m_entries >=0 ){
    	delete m_entries;
    	}
    }
    
    Calendar& operator+=(const CCalendarEntry& entry){
    
    	CCalendarEntry * newEntries = new CCalendarEntry [m_numberofEntries + 1];
    	unsigned int i,temp,j,m_numberofSize;
    	for(i=1; i<m_numberofSize; i++){
    
    		temp = CCalendarEntry[i];
    		j= i-1;
    		while(j>=0 && CCalendarEntry[j]< temp){
    			CCalendarEntry[j+1] = CCalendarEntry[j];
    			j--;
    
    		}
    		CCalendarEntry[j+1]= temp;
    		}
    
    	}
    
    	}
    	}
    
    }
    


  • probier doch erstmal das ĂŒberhaupt zu compilieren, hm? 😉



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


Log in to reply