out<<lineSegment.m_name<<"von "<<""<<lineSegment.m_x1<<","<<lineSegment.m_y1<<" nach "<<lineSegment.m_x2<<","<<lineSegment.m_y2<<""<<"Länge:"<<lineSegment.length();
78
returnout;
79
}
1
#ifndef CPOLYGON_H_
2
#define CPOLYGON_H_
3
#include<iostream>
4
#include<string>
5
#include"CLineSegment.h"
6
usingnamespacestd;
7
8
classCPolygon{
9
10
private:
11
unsignedintm_maxSegments;
12
unsignedintm_countSegments=0;
13
CLineSegment*m_segments;
14
15
public:
16
CPolygon(unsignedintinitialSize=10);
17
CPolygon();
18
voidaddEdge(CLineSegmentedge);
19
floatsumOfLenghts();
20
voidprint();
21
boolisValid();
22
boolisSimple();
23
};
24
25
26
27
28
#endif /* CPOLYGON_H_ */
cpp
1
#include<iostream>
2
#include<string>
3
#include"CPolygon.h"
4
usingnamespacestd;
5
6
CPolygon::CPolygon(unsignedintinitialSize){
7
8
m_maxSegments=initialSize;
9
if(initialSize<3){
10
m_maxSegments=10;
11
}
12
m_segments=newCLineSegment[m_maxSegments];
13
14
15
}
16
17
CPolygon::~CPolygon(){
18
19
delete[]m_maxSegments;
20
}
21
voidCPolygon::addEdge(CLineSegmentedge){
22
23
m_segments[m_countSegments]=edge;
24
25
if(m_countSegments>=m_maxSegments){
26
m_segments[1.5*m_countSegments]=edge;
27
28
}
29
}
30
31
floatCPolygon::sumOfLenghts(){
32
doublesumme=0;
33
for(inti=0;i<m_maxSegments;i++){
34
35
summe+=m_segments[i];
36
37
}
38
39
40
}
41
voidCPolygon::print(){
42
43
cout<<" Polygon mit Kante:"<<endl;
44
for(inti=0;i<m_maxSegments;i++){
45
cout<<m_segments[i]<<endl;
46
47
cout<<" Summer der Kantenlänge: "<<CPolygon::sumofLengths();
48
}
49
50
}
51
52
boolCPolygon::isValid(){
53
54
if(m_segments==3){
55
56
57
}
58
}
Habe einen kleinen Ansatz für die g) aber mehr nicht leider
Bitte um Hilfe
Und diese Fehlermeldung:
Description Resource Path Location Type
Function 'sumofLengths' could not be resolved CPolygon.cpp
/CLineSegment line 54 Semantic Error
Es handelt sich um eine alte Klausur an der ich übe
sumofLengths
oder
sumOfLenghts
zur g)
prolongedBy: Die aktuelle (this) Linie wird von segment verlängert.
Ist dann
m_x1 == segment.m_x2 && m_y1 == segment.m_y2 erfüllt oder
m_x2 == segment.m_x1 && m_y2 == segment.m_y1
isValid: == 3 oder >= 3
Fehlt noch was passiert, wenn es mehr als drei Segmente gibt... Ich
würd's mit for lösen
addEdge: m_countSegments wird nicht erhöht und
1
if(m_countSegments>= m_maxSegments){
2
m_segments[1.5*m_countSegments] = edge;
3
4
}
macht definitiv nicht das, was gefordert ist (das Array m_segments
vergrößern)... zudem muss vor dem Hinzufügen geprüft werden, ob genug
Platz ist, nicht nachher.
Hör auf Thorsten und nimm std::vector<CLineSegment> als Container für
deine Linien, oder falls das Polygon ein Polygon sein soll, dann besteht
es eigentlich aus (Eck-)Punkten und nicht aus einer unkoordinierten
Sammlung von Linien.
Carl D. schrieb:> Hör auf Thorsten und nimm std::vector<CLineSegment> als Container für> deine Linien, oder falls das Polygon ein Polygon sein soll, dann besteht> es eigentlich aus (Eck-)Punkten und nicht aus einer unkoordinierten> Sammlung von Linien.
Sicher kann die Aufgabe mit std:vector, Lambdas, etc. z.T. deutlich
einfacher gelöst werden, nur wären die Teilaufgaben dann anders gestellt
und bspw. m_segments definitiv nicht vom Typ CLineSegment* vorgegeben
worden.
Arc N. schrieb:> Sicher kann die Aufgabe mit std:vector, Lambdas, etc. z.T. deutlich> einfacher gelöst werden, nur wären die Teilaufgaben dann anders gestellt> und bspw. m_segments definitiv nicht vom Typ CLineSegment* vorgegeben> worden.
Das stimmt. Tja, was soll ein Student machen, wenn die Aufgabe
"ungünstig" gestellt ist? Ich würde es "vernünftig" machen und dann
begründen, warum ich von der Aufgabenstellung abgewichen bin.
Alternativ könnte man natürlich die 2-4 fehlenden "Funktionen" einfach
privat machen oder deleten.
Letztendlich ist die Aufgabe aber natürlich, die Prüfung zu bestehen.
Torsten R. schrieb:> Das stimmt. Tja, was soll ein Student machen, wenn die Aufgabe> "ungünstig" gestellt ist? Ich würde es "vernünftig" machen und dann> begründen, warum ich von der Aufgabenstellung abgewichen bin.
Genau bester Ratschlag, einfach mal anders machen als gefordert, ...
vllt. soll es aber genauso gemacht werden, damit man etwas über manuelle
Speicherverwaltung lernt oder andere Gründe?
So gesehen könnte er ja auch einfach direkt ne Grafiklib einbinden und
dieser die Berechnung überlassen, ...
Abradolf L. schrieb:> Genau bester Ratschlag, einfach mal anders machen als gefordert, ...> vllt. soll es aber genauso gemacht werden, damit man etwas über manuelle> Speicherverwaltung lernt oder andere Gründe?
Kann sein, aber dann müsste er es halt auch richtig/fehlerfrei machen.
Im Gegensatz zu einer Grafiklib ist std::vector<> Teil von C++.
Torsten R. schrieb:> Abradolf L. schrieb:>> Genau bester Ratschlag, einfach mal anders machen als gefordert, ...>> vllt. soll es aber genauso gemacht werden, damit man etwas über manuelle>> Speicherverwaltung lernt oder andere Gründe?>> Kann sein, aber dann müsste er es halt auch richtig/fehlerfrei machen.> Im Gegensatz zu einer Grafiklib ist std::vector<> Teil von C++.
Wieso kann sein? Da steht m_segments ist vom Typ CLineSegment* und in
Teilaufgabe c) wird gefordert, dass "... die als Parameter übergebene
Kante in das Array ... " eingefügt und wenn dort kein Platz mehr ist,
"... das Array vor dem Einfügen ... auf das 1,5-fache" vergrößert werden
soll. Es geht bei solchen Aufgaben nicht darum die eleganteste,
wartbarste und sicherste Lösung zu finden, sondern darum, ob die
grundlegenden Konzepte, zu denen in C++ eben auch die manuelle
Speicherverwaltung zählt, verstanden wurden und angewandt werden können.
Wer das schon vorher kennt findet solche Aufgaben langweilig, ärgerlich,
was auch immer, hilft nur nichts, da nicht alle denselben Wissensstand
haben...
Bleibt "nur" die Frage, wie hier am besten der Weg zu einer richtigen
Lösung aufgezeigt werden kann ohne eine gleich eine fertige in den Raum
zu werfen. Direkte/s Interaktion/Feedback wäre mit Sicherheit besser als
mit Umweg über ein Forum, aber gut, so dauert's halt etwas länger bis
zum Aha-Erlebnis.
Zurück zum Thema (ohne fertige Lösungen):
1
void CPolygon::addEdge(CLineSegment edge) {
2
for (int m_countSegments = 0; m_countSegments > m_maxSegments; i++) {
3
if (m_countSegments >= m_maxSegments) {
4
m_segments[1.5*m_countSegments] = edge;
5
}
6
m_segments[m_countSegments] = edge;
7
}
8
}
1. Wenn der Compiler Fehlermeldungen wirft, ist der Code zumindest
syntaktisch falsch...
2. Ich würde mir im Konstruktor von CPolygon ansehen wie dort das Array
m_segments erzeugt wird und dann addEdge nochmal komplett neu anfangen.
Ja wir haben leider Vector in der Vorlesung nicht gelernt ,daher können
wir es auch nicht anwenden .
Aber ich weiß immer noch nicht was der Fehler bei addEdge ist ?
Arc N. schrieb:> Torsten R. schrieb:>> Abradolf L. schrieb:>>> Genau bester Ratschlag, einfach mal anders machen als gefordert, ...>>> vllt. soll es aber genauso gemacht werden, damit man etwas über manuelle>>> Speicherverwaltung lernt oder andere Gründe?>>>> Kann sein, aber dann müsste er es halt auch richtig/fehlerfrei machen.>> Im Gegensatz zu einer Grafiklib ist std::vector<> Teil von C++.>> Wieso kann sein?
Weil dass so eine "übliche" Redewendung für "Du magst Recht haben,
aber..." ist.
> Es geht bei solchen Aufgaben nicht darum die eleganteste,> wartbarste und sicherste Lösung zu finden, sondern darum, ob die> grundlegenden Konzepte, zu denen in C++ eben auch die manuelle> Speicherverwaltung zählt, verstanden wurden und angewandt werden können.
Das ist ja das Ärgerliche. Ich mache seit 20 Jahren jeden Tag C++ und
was brauche ich da am aller, aller wenigsten? Richtig manuelle
Speicherverwaltung!
Sicher muss man das irgend wann mal gemacht haben. Aber dann kann man
die Studenten doch einfach einmal std::vector implementieren lassen.
Wenn der später soetwas im Job macht, wird er sofort wieder entlassen.
Ich habe doch oben geschrieben, dass ich einsehe, dass das Nahziel des
Studenten sein sollte, die Prüfung zu bestehen. Es wird doch aber noch
darauf hin gewiesen werden dürfen, dass der gezeigte Code Fehler
enthält.
> Bleibt "nur" die Frage, wie hier am besten der Weg zu einer richtigen> Lösung aufgezeigt werden kann ohne eine gleich eine fertige in den Raum> zu werfen.
Deine direkte Antwort hatte doch schon den Tippfehler aufgezeigt. Wenn
der OP wirklich Hilfe haben wollte, dann würde er ja zumindest mal den
Code anständig formatieren. Und eine konkrete Frage stellen. So zeigt er
nur falsche Code-Schnipsel und hofft, dass Ihm das jemand heil macht.
> 2. Ich würde mir im Konstruktor von CPolygon ansehen wie dort das Array> m_segments erzeugt wird und dann addEdge nochmal komplett neu anfangen.
Ja, und wenn er schon dabei ist, den c'tor zu überarbeiten. In C++ gibt
es eine Initialisierungsliste, die man nutzen sollte ;-)
void CPolygon::addEdge(CLineSegment edge)
{
for (int m_countSegments =0; m_countSegments<m_maxSegments; i++)
{
if(m_countSegments>= m_maxSegments){
m_segments[1.5*m_countSegments] = edge;
}
m_segments[m_countSegments] = edge;
}
}
Hatte ein falsches Vorzeichen drin bei der for Schleife , aus meiner
Sichti richtig ?
Solange das countSegment kleiner ist , also noch Speicher frei ist läuft
die for Schleife .
Wenn der Speicherplatz überschritten ist wird der Speicherplatz um 1.5
erhöht .
Der letze Teil :
Edge an die erste Stelle des Array
APP I. schrieb:> void CPolygon::addEdge(CLineSegment edge)> {> for (int m_countSegments =0; m_countSegments<m_maxSegments; i++)> {> if(m_countSegments>= m_maxSegments){> m_segments[1.5*m_countSegments] = edge;> }>> m_segments[m_countSegments] = edge;> }> }>> Hatte ein falsches Vorzeichen drin bei der for Schleife , aus meiner> Sichti richtig ?
Ok, fangen wir noch früher an:
Wofür ist die member Variable m_maxSegments da?
Wofür ist die member Variable m_countSegments da?
Wofür ist die member Variable m_segments da?
Wofür ist die member Variable m_maxSegments da?
Anzahl des maximalen Speicherplatzes
Wofür ist die member Variable m_countSegments da?
beginnt bei 0 , erste Stelle
Wofür ist die member Variable m_segments da?
array name
APP I. schrieb:> Wofür ist die member Variable m_maxSegments da?>> Anzahl des maximalen Speicherplatzes
Richtig, Größe des dynamisch erzeugten Arrays und damit also die Menge
der CLineSegment die in dem Array, auf dessen erstes Element m_segments
zeigt, gespeichert sind. Du hast also immer ein Array mit m_maxSegments
CLineSegment. Oder anders herum m_segments zeigt immer auf eine Array
der Länge m_maxSegments.
Initalisiert wurden die mit dem default constructor.
> Wofür ist die member Variable m_countSegments da?>> beginnt bei 0 , erste Stelle
Ne, dass ist keine Position (zumindest nicht explitzit). Das ist die
Anzahl der Kanten, die Du in dem Array (auf das m_segments zeigt)
abgelegt hast. Schöne Analogie für Arrays sind Regale (die mit den
großen Fächern von Ikea). Du hast also ein Regal mit m_maxSegments
Fächern. Du räumst jetzt auf und packst eine Kante nach der anderen in
das Regal. m_countSegments ist die Anzahl der Kanten, die Du schon in
das Regal gepackt hast.
Und was machst Du jetzt, wenn das Regal schon voll ist, wenn Du eine
neue kante hinein packen möchtest? Falsch ;-).
Nein, Du stellst kein neues Regal gleicher Größe daneben, sondern kaufst
Dir ein um 50% größeres Regal, räumst die Elemente aus dem alten Regal
in das neue Regal und wirfst das alte Regal weg.
Ich bin mal direkt: Du hast keinen blassen Schimmer was du da machst.
Und nicht nur bezgl der Aufgabenstellung - es fehlt ein grundlegendes
Verständnis des Programmierens. Setz dich hin und pauke; fang vorne an,
bei den Grundlagen; probier die Aufgaben praktisch aus; verstehe sie,
nicht nur auswendig lernen. Und erwarte nicht, dass das an einem
Wochenende erledigt ist ...
Naja ich hatte ja paar Probleme beim implementieren gehabt und hatte
daher auch die Frage im Forum gepostet .
Hatte bisschen Hilfe erwartet , da ich nicht weiter gekommen bin .
Ich verstehe auch nicht was an meinem Ansatz jetzt falsch ist ?
nö, keiner hier ;)
Dein Code ist immer noch Mist.
1. m_countSegments kann nie größer als m_maxSegments werden, weil du ja
nur bis kleiner zählst. Daher wird deine Bedingung nie erfüllt werden.
(zum Glück)
2. Du schmeißt in deiner Bedingung einfach den Zeiger auf vorhanden
Speicher weg und willst neuen Anfordern (geht das mit einem float
überhaupt?). Damit erzeugst du einen netten Memory Leak.
3. Der Name deiner Funktion klingt jetzt nicht, als wenn du Edge auf
alle Elemente kopieren willst. Genau das machst du aber.
void CPolygon::addEdge(CLineSegment edge) {
// Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das
// Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache
if (m_countSegments >= m_maxSegments) {
unsigned int newMaxSegments = new CLineSegment
[1.5*m_maxSegment];
...
}
m_segments[m_countSegments] = edge;
m_countSegments++;
}
Das zeigt mir natürlich leider Fehler an , wo ich den neuen Speicher
anlege.
hmm.
Ich muss doch mit new einen neuen Speicher anlegen oder ?
Verstehe nicht wie ich sonst den Speicher ändern könnte?
mac33 schrieb:> void CPolygon::addEdge(CLineSegment edge) {> // Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das> // Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache> if (m_countSegments >= m_maxSegments) {> unsigned int newMaxSegments = new CLineSegment> [1.5*m_maxSegment];> ...> }> m_segments[m_countSegments] = edge;> m_countSegments++;> }>> Das zeigt mir natürlich leider Fehler an , wo ich den neuen Speicher> anlege.>> hmm.>> Ich muss doch mit new einen neuen Speicher anlegen oder ?
Ja.
> Verstehe nicht wie ich sonst den Speicher ändern könnte?
newMaxSegments ist vom Typ unsigned int und ist nicht ohne Grund ähnlich
wie m_maxSegments benannt.
m_segments dagegen vom Typ CLineSegment*.
Passt also
Ich habe es jetzt so implementiert ,aber es werden mir Fehler angezeigt:
Description Resource Path Location Type
array subscript is not an integer CPolygon.cpp /CLineSegment line 32
C/C++ Problem
1
voidCPolygon::addEdge(CLineSegmentedge){
2
// Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das
3
// Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache
mac33 schrieb:> Ich habe es jetzt so implementiert ,aber es werden mir Fehler angezeigt:> Description Resource Path Location Type> array subscript is not an integer CPolygon.cpp /CLineSegment line 32> C/C++ Problem
1
voidCPolygon::addEdge(CLineSegmentedge){
2
// Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das
3
// Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache
4
if(m_countSegments>=m_maxSegments){
5
// Was ist in m_segments gespeichert? unsigned int oder CLineSegment?
6
// Was kommt bei 1.5*m_maxSegments raus? int oder was anderes?
void CPolygon::addEdge(CLineSegment edge) {
// Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das
// Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache
if (m_countSegments >= m_maxSegments) {
// Was ist in m_segments gespeichert? unsigned int oder
CLineSegment?
// Was kommt bei 1.5*m_maxSegments raus? int oder was anderes?
unsigned int newMaxSegments = CLineSegment [1.5*m_maxSegments];
// Kann das passen?
newMaxSegments[1.5*m_countSegments] = edge;
unsigned int temp[i];
// D.h. wenn das Array vergrößert werden soll ohne das die vorher
// darin eingefügten Elemente weggeworfen werden sollen,
// wird erst mal ein temporäres, leeres ... gebraucht.
// Dann müssen die ... ... ... werden.
// Und danach ... das temporäre Array ... werden.
}
// Die beiden Zeilen bleiben so
m_segments[m_countSegments] = edge;
m_countSegments++;
}
Ich habe nur ein wenig implementiert , da diese Aufgabe wohl doch nicht
so trivial ist wie ich dachte.
Brauche ich eigentlich ne for schleife für das tmp array?
mac33 schrieb:> void CPolygon::addEdge(CLineSegment edge) {> // Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das> // Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache> if (m_countSegments >= m_maxSegments) {> // Was ist in m_segments gespeichert? unsigned int oder> CLineSegment?> // Was kommt bei 1.5*m_maxSegments raus? int oder was anderes?> unsigned int newMaxSegments = CLineSegment [1.5*m_maxSegments];> // Kann das passen?> newMaxSegments[1.5*m_countSegments] = edge;> unsigned int temp[i];>> // D.h. wenn das Array vergrößert werden soll ohne das die vorher> // darin eingefügten Elemente weggeworfen werden sollen,> // wird erst mal ein temporäres, leeres ... gebraucht.> // Dann müssen die ... ... ... werden.> // Und danach ... das temporäre Array ... werden.> }> // Die beiden Zeilen bleiben so> m_segments[m_countSegments] = edge;> m_countSegments++;> }>> Ich habe nur ein wenig implementiert , da diese Aufgabe wohl doch nicht> so trivial ist wie ich dachte.
Kompiliert das? Nein... unsigned int ist nicht CLineSegment...
Was hoffentlich auch im Skript/Buch erklärt ist, wenn nicht: ab in die
Tonne damit und/oder Uni/Dozent wechseln.
Wenn im Konstruktor die Lösung für das Original-Array steht,
1
m_segments=newCLineSegment[m_maxSegments];
wie würde das für ein weiteres Array mit der neuen Größe aussehen?
Danach folgt dann
> Brauche ich eigentlich ne for schleife für das tmp array?
Ja.
Du hattest ja anders geschrieben :
Daher ware ich irritiert .
Ich würde es eigenltich so machen:
newMaxSegments = new CLineSegment [1.5*m_maxSegments];
mac33 schrieb:> Du hattest ja anders geschrieben :> Daher ware ich irritiert .> Ich würde es eigenltich so machen:>> newMaxSegments = new CLineSegment [1.5*m_maxSegments];
Dann
- müsste newMaxSegments von welchem Typ sein?
- wäre newMaxSegments dann eine passende Bezeichnung?
So ging's los
1
voidCPolygon::addEdge(CLineSegmentedge){
2
// Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das
3
// Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache
4
if(m_countSegments>=m_maxSegments){
5
unsignedintnewMaxSegments=...;
6
...
7
}
8
m_segments[m_countSegments]=edge;
9
m_countSegments++;
10
}
Danach kam:
> newMaxSegments ist vom Typ unsigned int und ist nicht ohne Grund ähnlich> wie m_maxSegments benannt.> m_segments dagegen vom Typ CLineSegment*.> Passt also> unsigned int newMaxSegments = new CLineSegment[1.5*m_maxSegment];
Sinnvoll wäre es, wenn der Code zumindest ohne Fehler und Warnungen
durch den Compiler geht...
1
voidCPolygon::addEdge(CLineSegmentedge){
2
// Falls kein Speicherplatz mehr vorhanden ist, vergrößert sie das
3
// Array vor dem Einfügen des übergebenen Segments auf das 1,5-fache
Ich frag mich ja, ob ihr auch einem angehenden Arzt dabei helfen würdet,
sich durch ne Prüfung zu mogeln.
Ihr helft dem TE nicht, etwas zu lernen, denn für das Verständnis der
Hinweise fehlem ihm die Grundlagen. Das einzige was ihr macht, ist, ihm
beim Bescheißen zu helfen.
asdfasd schrieb:> Ich frag mich ja, ob ihr auch einem angehenden Arzt dabei helfen würdet,> sich durch ne Prüfung zu mogeln.
Wenn Patienten wüssten mit wie wenig Stoffverständnis einige Ärzte
durchs Physikum gekommen sind...
> Ihr helft dem TE nicht, etwas zu lernen, denn für das Verständnis der> Hinweise fehlem ihm die Grundlagen. Das einzige was ihr macht, ist, ihm> beim Bescheißen zu helfen.
Das ist die Frage... Wenn als nächstes etwas nicht kompilierbares
und/oder Warnungen enthaltendes käme, würde ich definitiv "Zurück auf
Start" empfehlen.
unsigned int newMaxSegments = ...;
Besser ich frage vorher nach .
Soll ich jetzt auf der rechten Seite ein temp Array erstellen ?
Das macht man ja mit new ?
Aber wie soll es dann heissen ?
unsigned int newMaxSegments = new unsigned int [1,5*m_maxSegments];
Aber das kompiliert verdammt nicht .
APP I. schrieb:> unsigned int newMaxSegments = new unsigned int [1,5*m_maxSegments];> Aber das kompiliert verdammt nicht .
Und was sagt der Compiler dazu? Der gibt so komische Hinweise drauf,
warum er was nicht machen mag.
Ich hätte gerne geholfen. Aber was ich bisher so gesehen habe, ist es
für alle Seiten wohl wesentlich Nerven schonender, wenn du deinem
Lieblings-Nerd von der Nebenstraße eine Pizza anbietest und der dir im
Gegenzug bei der Sache über die Schulter schaut.
Ein bisschen was habe ich mittlerweile hinbekommen aber bei der Methode
isSimple und isValid habe ich so meine Probleme.
Bitte um Hilfe falls jemand Lust hat.
Danke
// Zwar nicht verkehrt, aber es reicht wenn m_segments
15
// einmal nach der Schleife passend gesetzt wird ;)
16
m_segments=newMaxSegments;
17
}
18
19
}
20
m_segments[m_countSegments]=edge;
21
m_countSegments++;
22
}
aber wirft immer noch Warnungen. Falls der gcc genutzt wird: Generell
mit -Wall -Werror und wer mag auch gleich mit -Wextra übersetzen (es ist
nicht nur an einigen Unis üblich, dass es Punktabzüge für Warnungen
gibt)
Das Array als unsigned int gibt aber error aus.
Das Problem ist das dass eine alte Klausur Aufgabe ist an der ich übe
und bei der muss das Header so bleiben wie es ist .
Hast du ne Idee wie ich die Methode is simple noch ein wenig korrigieren
kann ?
mac33 schrieb:> Ja da sollte man 1.5 schreiben .> Aber halb so schlimm .>> Ich warte weiter auf tipps?
Statt 50% mehr, 400% mehr.
Kaum der Rede wert und sicher innerhalb der Toleranz
;-)
APP I. schrieb:> Hat jemand paar Tipps zu der Implementierung der Methoden ?
Ja, wenn das ganze (Stand 06.12.2017 17:52) zumindest ohne Warnungen und
Fehler vom Compiler übersetzt werden würde...
APP I. schrieb:> Ja ich komme ja nicht auf die Fehler , daher hatte ich ja euch um Hilfe> gebeten
So unverständlich wie vor etlichen Jahren sind die Ausgaben der heutigen
Compiler nicht mehr. Ansatz: Alles löschen was der Compiler als Fehler
anmeckert, danach die Stellen mit den Warnungen ausbessern und dann die
Stellen wo Fehler waren neu schreiben.
Komischerweise möchten die wenigsten Leute bei programmiertechnischen
Fragen helfen.
Warum hat man da überhaupt ein Forum aufgemacht ?
Verstehe ich nicht.
mac33 schrieb:> Komischerweise möchten die wenigsten Leute bei programmiertechnischen> Fragen helfen.>> Warum hat man da überhaupt ein Forum aufgemacht ?> Verstehe ich nicht.APP I. schrieb:> Ja ich komme ja nicht auf die Fehler , daher hatte ich ja euch um Hilfe> gebeten
Was fehlt denn hier? Ferndiagnose: Anscheinend wurde nicht versucht,
dass durch einen Compiler zu jagen und dann entsprechend das Programm
anzupassen oder, falls die Fehlermeldungen/Warnungen unverständlich
sind, entsprechend nachzufragen.
Hinweise was/wo die Fehler sein könnten, gibt's hier im Thread...
Es wurden hier leider überhaupt keine Hinweise gegeben wie ich die
Methode isValid oder isSimple implementieren kann .
Mann hätte ja einfach meinen Code korrigieren können.
Ich musste ja die Aufgabe nicht abgeben oder so .
So hat man sich nur im Kreis gedreht
APP I. schrieb:> Es wurden hier leider überhaupt keine Hinweise gegeben wie ich die> Methode isValid oder isSimple implementieren kann .>> Mann hätte ja einfach meinen Code korrigieren können.>> Ich musste ja die Aufgabe nicht abgeben oder so .>> So hat man sich nur im Kreis gedreht
Und woraus leiten sich diese Ansprüche ab?