Programmierung 2 - Seite 5

Neue Frage »

Auf diesen Beitrag antworten »
as_string

Erkläre uns doch zuerst einmal, was denn so ein dynamisches Array gegenüber einem normalen Array auszeichnet, warum man das will und wie man das realisieren will, dass es diese Eigenschaft hat.
Mal ganz unabhängig von Programmquelltext und Klassen, Objekten und Konstruktoren etc.
Danach würde ich mich dafür interessieren, was Du glaubst warum hier ein dynamisches Array verwendet werden soll, was darin gespeichert werden soll und warum.

Was fällt Dir dazu im einzelnen ein?

Gruß
Marco
 
Auf diesen Beitrag antworten »
Victor

Danach würde ich mich dafür interessieren, was Du glaubst warum hier ein dynamisches Array verwendet werden soll, was darin gespeichert werden soll und warum.

Weil in der Header noch ein ArraySize gegeben ist.

Habe auch diesen Tipp von jemanden bekommen großes Grinsen
Auf diesen Beitrag antworten »
Karlito

Zitat:
Original von Victor
Zitat:
Original von Victor
Genau das ist ja meine Frage . großes Grinsen

Ich verstehe an der Aufgabe nicht genau was die von mir haben wollen .

Ich habe einfach die Zusicherungen beachtet , die ich dachte richtig zu sein großes Grinsen



Hatte ich ja bereits hier schon gesagt


Hast Du nicht, weil Du mit dieser Antwort nichts! erklärst. Du zeigst nicht, das Du irgendwas verstanden hast. Das sind hohle Phrasen! Ich habe "Zusicherungen beachtet". Ja welche denn?

Zitat:
Original von Victor
Zitat:
Original von as_string
Danach würde ich mich dafür interessieren, was Du glaubst warum hier ein dynamisches Array verwendet werden soll, was darin gespeichert werden soll und warum.


Weil in der Header noch ein ArraySize gegeben ist.

Habe auch diesen Tipp von jemanden bekommen großes Grinsen


Teil 1 beantwortet, Teil 2 nicht. Wobei Teil 1 nicht belegt, dass Du verstanden hast, warum ein dynamisches Array gebraucht wird.

Gruß,

Karlito
Auf diesen Beitrag antworten »
Victor

Die Zusicherungen die im UML diagramm gegeben ist .
Also wenn ich wirklich alles so gut wüsste , würde ich doch nicht die ganze Zeit am Info Board nachfragen oder ?
Es fällt halt jeden nicht so leicht.



Wie gehe ich bei der d) vor ?

Da habe ich nicht mal Ansätze im Moment großes Grinsen
 
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Victor
Weil in der Header noch ein ArraySize gegeben ist.

Meine Frage war nicht, woran man erkennt, dass ein dynamisches Array verwendet werden soll, das steht nämlich auch in der ersten Zeile des Aufgabentextes schon drin, sondern dieses Array denn nutzen bringen soll.
Was soll denn Deiner Meinung nach das Programm am Ende überhaupt machen? Beschreibe das doch bitte mal mit eignen Worten!

Gruß
Marco
Auf diesen Beitrag antworten »
Victor

Ah ja jetzt verstehe ich was du meinst .

Wir legen ja zuerst einmal speicher an ,damit wir das bei der d) irgendwie bei der add Methode verwenden können .

Wie man das bei der d) jetzt genau macht , weiss ich nicht großes Grinsen
Auf diesen Beitrag antworten »
as_string

Ja aber für was soll denn die add()-Methode diesen reservierten Speicher denn verwenden? Was meinst Du ist denn am Ende der große Zweck des ganzen?
Und was hat es denn jetzt mit diesem "dynamischen Array" auf sich? Was soll das denn sein? Was unterscheidet es von einem normalen Array? Was kann das dynamische, was das normale nicht kann? Für was benötigen wir das hier?
Auf diesen Beitrag antworten »
Victor

Das dynamische Array kann man vergrössern ?
Auf diesen Beitrag antworten »
as_string

OK, sehr gut! Daumen hoch
Und wie kann man das erreichen, dass es seine Größe ändern kann? Immerhin verwendet es ja ein normales Array als Basis, das eine feste Größe hat, richtig?
Auf diesen Beitrag antworten »
Victor

Ich poste mal ideen zur add Methphe :

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
m_rectangles = new CRectangle[initialSize]; 

for(int i =0 ; i>= initialSize ;i++){


m_rectangles = new CRectangle[initialSize+i];  nächste freie Position geschrieben ?

}

if(m_rectangles <= CRectangle[initialSize+99]){
m_rectangles = new CRectangle[initialSize+initialSize]; verdoppelt?
}

Auf diesen Beitrag antworten »
as_string

Sorry, das ist schon wieder auf so vielen Ebenen falsch, ich gebe auf. Das macht einfach keinen Sinn, das ist reine Zeitverschwendung, auch für mich.
Auf diesen Beitrag antworten »
Victor

Ich weiss das paar Fehler drinnen ist.
Ich war mir nicht sicher was ich genau machen muss.
Ich wusste nicht genau wie ich zuerst den Array aufrufen soll damit ich es verdoppeln ?
Muss ich irgendwie eine temporäre Variable erstellen ?
Steht so auf vielen Internet Seiten
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Victor
Ich war mir nicht sicher was ich genau machen muss.

Dann macht es so wie so keinen Sinn irgendetwas programmieren zu wollen.
Auf diesen Beitrag antworten »
Victor

Also die Aufgabe ist ja eindeutig was man machen muss .
Aber der code scheint irgendwie nicht zu stimmen großes Grinsen

Um an die nächste freie Position zu schreiben , brauche ich ja eine Variable ?

for(int i =0 ; i>= initialSize ;i++){


m_rectangles = new CRectangle[initialSize+i]; nächste freie Position geschrieben ?

}


Ich bin über die for schleife zuerst gegangen und es an die i te Stelle schreiben ?
Ist das total quatsch oder wie ?
Auf diesen Beitrag antworten »
as_string

Das fängt doch schon damit an, dass Du ständig "initialSize" dastehen hast. Die Variable gibt es in der Methode add() doch gar nicht!
Erklär mir doch bitte erstmal, was Du im Konstruktor mit jetzt genau machst. Inzwischen überprüfst Du ja gar nichts mehr (mit diesen Zusicherungen). Fang doch erstmal so an und erkläre in eigenen Worten, was diese Zusicherungen sollen, warum sie sinnvoll sind bzw. was der Grund jeweils ist.
Warum machst Du schon mit der add() rum, wenn der Konstruktor noch gar nicht fertig ist?
Auf diesen Beitrag antworten »
Victor

In der add Methode gibt es initialSize tatsächlich nicht.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
void add(const CRectangle& rectangle){

for(int i =0 ; i>= rectangle ;i++){


m_rectangles = new CRectangle[rectangle+i]; nächste freie Position geschrieben ?

}



Die Zusicherungen sind sinnvoll damit man weiss ,wann was benutzt werden muss .

Sonst weiss ja gar nicht das Programm wann was benutzt wird.
Auf diesen Beitrag antworten »
Victor

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
void CDrawing::add(const CRectangle& rectangle){

for(int i =0 ; i<= rectangle ;i++){


m_rectangles = new CRectangle[rectangle+i]; nächste freie Position geschrieben ?


}
m_rectangles = new CRectangle[rectangle];
CRectangle[rectangle] =100;
int *tmp = CRectangle;
if(CRectangle[rectangle]<=CRectangle[100]){ wenn der Speich kleiner 100 ist
    m_rectangles = new CRectangle[rectangle*2]; doppelte Grösse

    for(int i =0 ; i<= rectangle ;i++){
            CRectangle[rectangle]= tmp[rectangle];
}
delete[] tmp;
CRectangle[rectangle];
rectangle++;
}
}




Ich weiss nicht ob dieser Ansatz auch katastrophe ist aber ich poste ihn mal.

Stimmt dieser Teil ein wenig ?
Ich habe auch eine temporäre Variable erstellt.
Auf diesen Beitrag antworten »
as_string

Da ist wirklich so ziemlich jede einzelne Zeile totaler Schwachsinn. Das wird ja immer schlimmer!
Auf diesen Beitrag antworten »
Victor

Ok dann weiß ich auch nicht mehr weiter .
Hab keine Idee mehr
Auf diesen Beitrag antworten »
as_string

Ich verstehe nicht, warum Du Deine Zeit und die anderer verschwendest. Warum nimmst Du nicht endlich mal die Ratschläge an und arbeitest ein beliebiges Buch über C++ durch. Da hättest Du in der Zeit, die Du hier verschwendet hast, sicherlich schon deutlich mehr gelernt.
Deine Herangehensweise ist grundlegend falsch, auch das habe ich Dir schon mehrfach und eindringlich gesagt gehabt, nur interessiert Dich nicht wirklich, was Dir die Leute sagen, nicht nur diesbezüglich.
Das bringt mich zum nächsten, was bringt es eigentlich irgendwo zu posten und dann nicht wirklich auf das einzugehen, was Dir Leute schreiben?

Insgesamt habe ich den Eindruck, dass Programmieren generell nichts für Dich ist. Warum versuchst Du es dann überhaupt? Brauchst Du es für eine Vorlesung oder eine andere Prüfung? Dann muss ich sagen: Die wirst Du nie bestehen, wenn Du das so angehst wie bisher. Oder sind das Hausaufgaben? Dann hättest Du erstens schon gelogen und wirklichen Nutzen bringt das ganze Unterfangen auch nicht.

Mein Tipp: Wenn Du eine Ausbildung machst, in der Du diese Fähigkeiten brauchst, dann such Dir eine andere Ausbildung! Das ist wirklich nichts für Dich. Muss ja auch nicht jeder ein Programmierer sein...

Gruß
Marco
Auf diesen Beitrag antworten »
Karlito

Den Quelltexten zufolge ist es eine Hochschulaufgabe, da ich irgendwo einen Platzhalter für eine Matrikelnummer gesehen habe. Es gibt leider Studenten, die versuchen Leistungsnachweise zu erhalten ohne was dafür zu machen. Ich habe gesehen, dass diese Aufgabe hier in mindestens 3 verschiedenen Foren gepostet wurde und auch die Lösungsvorschläge erkenne ich wieder.
Da immer wieder den Fragen die gestellt werden ausgewichen wird und ein try and error Ansatz vor eigenständigem Denken vorherrscht gehe ich entweder von einem Troll oder von einem Studenten aus, der sich eine Leistung erschleichen möchte. Einfach überall schlechte Bruchstücke streuen und hoffen, dass es einer Korrigiert und eine Lösung bietet. Wir sind hier definitiv viel zu lange darauf eingegangen, deswegen würde ich dazu pledieren, nicht mehr auf Anfragen zu reagieren.

Kleiner Apell an Victor: Ich kenne leider einige Studenten, welche mir mit "Programmiersprachen sind nur sinnlose Zeichenketten" und sowas gekommen sind. Informatik ist mittlerweile überall und es ist Teil einer universitären Ausbildung auch fachfremden ein Verständnis dazu zu vermitteln wie Programmierung funktioniert. Es gibt Studiengänge, die das nicht erfordern. Ich habe dir schon einmal einen Fachwechsel ans Herz gelegt und tue das hiermit wieder, solltest Du nicht in der Lage sein, den Stoff zu durchdringen. Und auch wenn Du denkst, dass du das nie wieder brauchst fehlt mir sämtliches Mitleid.

Nuff said.

Gruß,

Karlito
Auf diesen Beitrag antworten »
as_string

Meine Suche ergibt:
https://www.techniker-forum.de/thema/obj...mierung.109464/
https://www.mikrocontroller.net/topic/434212
https://m.c-plusplus.net/344399
und hier eben dann noch.
Die Taktik ist also: in verschiedenen Foren die Aufgabe streuen in der Hoffnung, dass dann schon irgendjemand einen verwertbaren Fetzen posten wird. Der wird dann in den anderen Foren gepostet, um zu zeigen, dass man selbst ja mit arbeitet / mit denkt. Dann sollte man wieder neue Tipps bekommen, mit denen man weiter macht.
Nur erfordert das doch auch wenigstens minimales Eigenverständnis, sonst geht das (so wie hier) ziemlich schief.
Leute, die diese Taktik verwenden, merken aber verschiedene Dinge nicht:
  • Sie lernen selbst nichts dabei (was denen aber eigentlich auch egal ist)
  • Sie verschwenden viel mehr Zeit als sie hätten investieren müssen, wenn sie gleich versucht hätten das Thema zu verstehen.
  • Selbst wenn am Ende irgendwann eine Art Lösung da steht bringt die oft doch nichts, wenn minimale Anpassungen o. ä. nötig würden. Oder wenn man doch mal eine Klausur bestehen müsste.
  • Man hat letztlich nur eigene Zeit und auch die anderer sinnlos verschwendet (wobei die Zeit anderer solchen Leute wohl auch ziemlich egal ist...)
Auf diesen Beitrag antworten »
Victor

Ja ich habe die Aufgaben in verschiedenen Foren gepostet , aber in meisten dann wieder aufgegeben ,da es nur freche Antworten gab.

Die Lösung bringt mir bei dieser AUfgabe nicht ,da es nur eine alte Klausur ist zum üben .
Wir müssen keine Aufgaben abgeben .
Ich wollte nur an der AUfgabe mithilfe von Hilfestellungen programmieren.

Weil ich es alleine überhaupt nicht schaffe.

Aber wie ihr wollt
Auf diesen Beitrag antworten »
as_string

Angenommen das stimmt so alles, wie Du es sagst:

Aber versteh doch endlich, dass diese Methode Dir gar nichts helfen wird. Du musst Dir ein Buch nehmen (oder vielleicht irgendein Tutorial im Internet) und das durcharbeiten, sonst lernst Du gar nichts.
Du hast bisher schon echt viel Zeit investiert und trotzdem nicht wirklich viel verstanden. Merkst Du das nicht auch selbst? Das ist doch höchst ineffizient. Warum willst Du das unbedingt so machen wenn es doch offensichtlich nicht funktioniert?

Ich verstehe Dich nicht!

Gruß
Marco
Auf diesen Beitrag antworten »
Victor

Aber kannst du mir wenigstens erklären wie ich jetzt den Konstruktor genau machen soll ?

Vielleicht einfach erklären wie ich es mache soll ?
Da es arraySize nicht erkennt wenn man es mit den Zusicherung macht .

Soll ich einfach arraySize im Header definieren ?
Auf diesen Beitrag antworten »
as_string

So ein Quatsch, ehrlich!
Was denkst Du denn, was arraySize sein soll und was initialSize sein soll? Was heißt es denn auf deutsch übersetzt? Was könnte dann damit im Programmkontext gemeint sein?
Auf diesen Beitrag antworten »
Victorthebest

Im proggen Konzept müsste es die Größe des Arrays heißen ?
Auf diesen Beitrag antworten »
Karlito

Es reicht jetzt!
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »