-
Gesamte Inhalte
117 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von TheWho
-
-
Woraus schließt du, dass "er" in den case 3 reingeht? Hast du das mit dem Debugger geprüft?
Weil ich die entsprechende Ausgabe des Programms bekomme. Da brauchte ich nichts zu debuggen.
Danke, das hatte beliar ja bereits erklärt und ich werde versuchen, das umzusetzen.
Den Inhalt der benachbarten Array-Elemente auslesen.
Ich wollte von Euch auch kein Codereview, sondern nur eine Hilfestellung über offensichtliche syntaktische Fehler.
Das glaube ich nicht.
Dafür müßte ich Dir meinen gesamten Algorithmus erklären, das würde hier wohl etwas den Rahmen sprengen.
Ja.
Wenn es nicht möglich ist, mit einem Codeschnipsel den Fehler zu finden, dann sperre bitte den Thread. Ich hatte nicht gedacht, daß es so schwer ist. Tut mir leid.
-
Hi,
das der Titel blöd war, ist mir leider erst aufgefalllen, als ich nicht mehr editieren konnte. Tut mir leid. Bin ziemlich erkältet und wohl etwas neben der Spur... :hells:
Die ordentliche Einrückung habe ich versucht, nur leider klappt das mit den html Sachen hier scheinbar nicht 100% - immer, wo ich Leerzeichen statt Tabs benutzt habe, war der Code wesentlich mehr eingerückt... Ließ sich dann auch nicht mehr korrigieren!
Das Problem ist, daß er eben in den case-Fall 3 reingeht, obwohl getDirection() = 1 liefert. Für mich sieht es so aus, als ob er von case 1 in case 2 reinläuft, wo die Anweisung setDirection() = 3 vorkommt, und dann munter weiter in case 3.
Das dürfte doch aber mit den breaks nicht sein, oder?
Ich würde gern auf den "this-> Unsinn" verzichten, wenn ich es besser wüßte :confused: Nur steh ich gerade am Anfang mit meinen C++ Kenntnissen, und dachte, so wäre es richtig.
Die gezeigte Methode ist eine von vier, die jeweils die "direkten Nachbarn" aller Richtungen eines 2dim Arrays ansehen, machen aber im Prinzip das gleiche.
Ich hoffe, es ist jetzt etwas klarer?
-
Hallo!
Nachdem ich jetzt das Problem mit dem 2dim Array gelöst habe, bekomme ich hier einen Fehler, finde aber die Quelle nicht. Vielleicht seh ich den Wald vor lauter Bäumen nicht mehr?! :cool:
Das Programm läuft bis zum Schluß prima, dann jedoch geht er noch 3 Schritte weiter, obwohl er zur Main zurückkehren sollte (Abfrage auf Ende des Vektors).
Ich wäre dankbar, wenn mir jemand sagen kann, wieso das Programm in den case 3 reinläuft, obwohl die lastdirection weiter auf 1 steht und ich die breaks nicht vergessen habe?
LG, TheWho
int matrix::goNorth(xArray *Coord) { if ( 1 == checkLimits() ) //Grenzen überschritten? return 1; if ( 0 == checkEnd( Coord ) ) //Polygon fertig return 0; cout << "last direction (goNorth2): " << this->getDirection() << endl; switch ( this->getDirection() ) { case 0: if ( this->m_iXAct <= 0 ) // für Ausgangspixel 0-0 { this->goEast(Coord); } else { if ( this->m_iXAct-1 >= 0 && this->getContent( this->m_iXAct-1, this->m_iYAct ) != this->getContent(this->m_iXAct, this->m_iYAct) ) { this->setNextBegin(this->m_iXAct-1, this->m_iYAct); this->goEast(Coord); } else { cout << "2: " <<this->m_iXAct << " - " << this->m_iYAct << endl; Coord->setXCoord(this->m_iXAct); Coord->setYCoord(this->m_iYAct); --this->m_iXAct; this->goNorth(Coord); } } break; case 1: if ( this->m_iYAct-1 >= 0 && this->getContent( this->m_iXAct, this->m_iYAct-1 ) == this->getContent(this->m_iXAct, this->m_iYAct) ) { cout << "3: " <<this->m_iXAct << " - " << this->m_iYAct << endl; Coord->setXCoord(this->m_iXAct); Coord->setYCoord(this->m_iYAct); --this->m_iYAct; this->goWest(Coord); } else { if ( this->m_iXAct-1 >= 0 && this->getContent( this->m_iXAct-1, this->m_iYAct ) == this->getContent(this->m_iXAct, this->m_iYAct) ) { cout << "4: " <<this->m_iXAct << " - " << this->m_iYAct << endl; Coord->setXCoord(this->m_iXAct); Coord->setYCoord(this->m_iYAct); --this->m_iXAct; this->goNorth(Coord); } else { if ( this->m_iYAct+1 <= this->m_zeilen && this->getContent( this->m_iXAct, this->m_iYAct+1 ) == this->getContent(this->m_iXAct, this->m_iYAct) ) { cout << "5: " <<this->m_iXAct << " - " << this->m_iYAct << endl; Coord->setXCoord(this->m_iXAct); Coord->setYCoord(this->m_iYAct); this->setDirection(2); ++this->m_iYAct; //gehe nach Osten this->goNorth(Coord); } } } break; case 2: //Nordwesten if ( this->m_iXAct-1 >= 0 && this->getContent( this->m_iXAct-1, this->m_iYAct ) != this->getContent(this->m_iXAct, this->m_iYAct) ) { cout << "6: " <<this->m_iXAct << " - " << this->m_iYAct << endl; Coord->setXCoord(this->m_iXAct); Coord->setYCoord(this->m_iYAct); --this->m_iXAct; this->setDirection(1); //zurücksetzen auf Westen this->goNorth(Coord); } else { this->setDirection(3); this->goNorth(Coord); } break; case 3: if ( this->m_iXAct <= 0 ) // für Ausgangspixel { this->goEast(Coord); } else { if ( this->m_iYAct-1 >= 0 && this->getContent( this->m_iXAct, this->m_iYAct-1 ) != this->getContent(this->m_iXAct, this->m_iYAct) ) { this->setNextBegin(this->m_iXAct, this->m_iYAct-1); this->goWest(Coord); } if ( this->m_iXAct-1 >= 0 && this->getContent( this->m_iXAct-1, this->m_iYAct ) != this->getContent(this->m_iXAct, this->m_iYAct) ) { this->setNextBegin(this->m_iXAct-1, this->m_iYAct); this->goEast(Coord); } else { cout << "7: " << this->m_iXAct << " - " << this->m_iYAct << endl; Coord->setXCoord(this->m_iXAct); Coord->setYCoord(this->m_iYAct); --this->m_iXAct; this->goNorth(Coord); } } break; default: break; } return 0; // korrektes Beenden }
-
Ein Array ist in seiner Größe fest, d. h. NICHT dynamisch. Sobald eine andere Größe festgelegt wird, mußt Du das bestehende Array verwerfen und ein neues initialisieren. Daher verstehe ich Dein Problem jetzt nicht.
Erläuter' vielleicht noch einmal ganz konkret die Anforderungen.
Das meinte ich nicht mit dynamisch, sorry. Dynamisch hieß, zur Laufzeit die Größe festlegen. Also die Dimensionen aus einer Datei einlesen und das Array dann mit diesen Werten initialisieren.
Da ich aber gestern und vorgestern den C++-Kurs hatte, und das Problem dort gelöst werden konnte, hat sich das eh erledigt
Trotzdem vielen Dank an alle, die mir versucht haben, zu helfen!
-
In zeilen und spalten stehen doch die Längen. Mußt nur noch sowas schreiben:
private: float feld**; // Dynamisches zweidimensionales Array public: matrix(int x, int y) // Konstruktor mit Dimensionen und Anfangspixel { zeilen = y; spalten = x; iXAct = 0; iYAct = 0; float feld[zeilen][spalten]; for(int i = 0; i < zeilen; i++) { for (int j = 0; j < spalten; j++) { feld[i][j] = 0.0f; } } };
So ähnlich (in einer Methode) habe ich das auch erst gemacht, aber der meckert der Compiler... Darum dachte ich, ich hätte etwas falsch gemacht.
Es geht, wenn ich der Membervariablen sofort die Dimensionen zuweise, aber dann ist es ja nicht mehr dynamisch.
-
Indem du einfach ne Schleife drüber laufen lässt und den Initialisierungswert zuweist?
Muß ich dafür nicht die Größe des Arrays kennen? Ich hatte das bisher so:
private: float feld**; // Dynamisches zweidimensionales Array public: matrix(int x, int y) // Konstruktor mit Dimensionen und Anfangspixel { zeilen = y; spalten = x; iXAct = 0; iYAct = 0; float feld[zeilen][spalten]; };
Ich wollte also im Konstruktor dem Array seine Dimensionen zuweisen. Danach das befüllen klappt schon (jetzt hardcodiert).
-
Hi Ihrs,
danke für Eure Hilfe. Jetzt hat es erstmal geklappt. So falsch war das gar nicht, was ich hatte. Nur die Initialisierung des Arrays klappt nicht, das hab ich erstmal hardcodiert
Ich hab nächste Woche nen C++ Kurs, da soll mir der Dozent das mal hübsch beibringen, wie man ein dynamisches Array als Membervariable initialisiert :floet:
Aber ich komme jetzt schon mal weiter, und das ist die Hauptsache :nett:
Wie gesagt, danke vorerst!!
LG, TheWho
-
Wie sieht denn Dein Konzept aus?
Willst Du für jeden Wert, den Du früher im 2-dim. Array hattest, ein eigenes Objekt? Oder willst Du ein Objekt, das ein 2-dim. Array verwaltet?
Dem Quellcode nach möchtest Du das 2. Konzept umsetzen. Und in dem Fall kann ich mich meinem Vorredner nur anschließen. Denn innerhalb des Objekts kannst Du wie gewohnt auf Dein Array zugreifen.
Im ersteren Fall würde mir spontan das Wort "Liste" einfallen. Wenn ich mir das so durchdenke, ziemlich gewagter Ansatz. Für jede Zeile eine Liste, und jede Spalte wieder eine Liste, die mit den Zeilenelementen verkettet ist. Klingt irgendwie verdammt bescheuert und doch interessant. *grübel*
Also, erstmal würde es mir reichen, das zweite Konzept umzusetzen, damit ich das Prinzip verstehe.
Ich befürchte allerdings, daß ich das erste Konzept irgendwann umsetzen muß, da ich zu jedem Wert voraussichtlich noch einen Wert eintragen muß (nämlich, ob das Feld bereits "betreten" wurde).
Oder würde es dafür auch reichen, in das Array statt des einen Werts einen Vektor oder eine map einzutragen?
Mein Problem ist wohl eher, daß ich von OO echt noch nicht viel Ahnung habe. Aber irgendwo muß ich ja anfangen. :floet:
-
Wie gesagt ich hab mir deinen Code nicht angeguckt :floet:
Naja, eigentlich sollte man schon den gesamten Post lesen
Das hab ich noch nicht so ganz verstanden.Meine Aussage im ersten Post war:
Wichtig ist, daß ich für jedes Element des Arrays nach oben, rechts, unten und links nach dem Inhalt gucken können muß - im 2dim Array kein Problem, aber mit Klassen bekomme ich es einfach nicht hin.Und das ist weiterhin mein Problem. Ich weiß nicht, wie ich mit Objekten in den beiden Dimensionen des Ursprungs-Arrays "wandern" kann?!
-
Hm, hab ich das Prinzip doch noch nicht verstanden?
Also ich hab nur mal auf deine Membervariablen geguckt und da bist du ja schon auf dem richtigen Weg.Innerhalb deiner Klasse hast du ja so auch "nur" ein mehrdimensionales Array.
Jetzt brauchst du noch die Entsprechenden Funktion um mit dem Array arbeiten zu können.
Spontan fallen mir da folgende ein:
-Array anlegen
Ist das nicht der Konstruktor? Den hatte ich ja oben mit angegeben.
-Spalte/Zeile vergrößern oder verkleinern
Brauche ich eigentlich nicht. Die Größe des Arrays beziehe ich aus der Datei und damit initalisiere ich den Konstruktor. Oder?
-Einem Element im Array einen Wert zuweisen
Das sollte die Methode setContent() sein. Auch falsch?
-Wert eines bestimmten Elements abfragen
Eigentlich getContent() :hells:
-Array freigeben
Destruktor, oder? Das ist das Teil mit der Tilde davor. Dachte ich zumindest?
Damit sollte erstmal das Wichtigste abgedeckt sein.Jo, danke erstmal. Allerdings ist damit mein eigentliches Problem noch nicht gelöst.
Ich hab Probleme damit, auf den Content eines anderen Objekts dieser Klasse zu gucken. Oder eher die Nachbarn halt. :confused:
HILFE :beagolisc
-
Huhu Mod(s),
ähm - peinlich, bin im Forum verrutscht. Könnte bitte einer den ins C/C++ Forum verschieben?
Danke! :nett:
TheWho
-
Hallo Leute,
heute brauche ich mal fachliche Hilfe
Also, ich muß Daten vektorisieren.
Diese Daten bekomme ich prima aus der Datei ausgelesen und in ein 2dim Array geschrieben, und auch wieder ausgegeben.
Mein Problem:
ich soll das Ganze eigentlich objektorientiert umsetzen. Mir fällt aber nichts ein, wie ich das als Klasse(n) beschreiben soll.
Wichtig ist, daß ich für jedes Element des Arrays nach oben, rechts, unten und links nach dem Inhalt gucken können muß - im 2dim Array kein Problem, aber mit Klassen bekomme ich es einfach nicht hin.
Dabei ist die Lösung sicher einfach und ich komme nur nicht drauf?
Danke im voraus!!
TheWho
Derzeit habe ich es etwa so:
class matrix { private: float** feld; // Dynamisches zweidimensionales Array int zeilen, spalten, x, y; // Anzahl Zeilen und Spalten float fContent; public: matrix(int zeilen, int spalten); // Konstruktor //matrix(const matrix&); // Copy-Konstruktor ~matrix(); // Destruktor void set (int anzahl, ...); // Wertzuweisung void print (); // Ausgabe einer Matrix float getContent(int x, int y) { return fContent; }; void setContent(int x, int y, float c) { fContent = c; }; }; main { blablub.... //setzen Inhalt myRaster.setContent( iXDim, iYDim, <einzelner Content> ); //Nachbarn angucken lookNeighbours ( iNeighbours, iXDim, iYDim, myRaster ); } void lookNeighbours(int* iNeighbours, int iXDim, int iYDim, float myRaster) { if ( ! (iYDim-1 < 1 ) ) //NORDEN { if ( myRaster.getContent(iXDim, iYDim) == myRaster.getContent(iXDim-1, iYDim) ) iNeighbours[0] = 0; else iNeighbours[0] = 1; } if ( ! ( iXDim+1 > nXSize-1 ) ) //OSTEN { if ( faRaster[iXDim+1][iYDim] == faRaster[iXDim][iYDim] ) iNeighbours[1] = 0; else iNeighbours[1] = 1; } if ( ! ( iYDim+1 > nYSize-1 ) ) //SUEDEN { if ( faRaster[iXDim][iYDim+1] == faRaster[iXDim][iYDim] ) iNeighbours[2] = 0; else iNeighbours[2] = 1; } if ( !( iXDim-1 < 1 ) ) //WESTEN { if ( faRaster[iXDim-1][iYDim] == faRaster[iXDim][iYDim] ) iNeighbours[3] = 0; else iNeighbours[3] = 1; } }
-
apropos "hergebrachte volksfeste":
gibts auch weggebrachte? muhahaha *schenkelklopfer*
nee aber mal ernst, was genau bedeutet das "hergebrachte".
Ist das sowas wie "überlieferte" oder "traditionelle"???
Is ne Kirchweih auch sowas?
Genauso ist es gemeint. Man sagt auch "alt hergebracht", also aus vergangenen Zeiten mitgenommen quasi
-
Also, ich hab noch ein neues Netzteil eingebaut, leider ohne Erfolg. Hab auch noch älteren RAM besorgen können, gleicher Fehler. Ich vermute mal ganz stark, daß mir das Board abgeraucht ist. Hab mir jetzt bei Ebay das gleiche wieder ersteigert, hoffe mal, daß es dann wieder funzt... :cool:
So long!
TheWho
Falls es noch jemanden interessiert, hier die Lösung: es war das Board Glück im Unglück, alles noch da und ok, bis auf XP, das es mit gezogen hat, Image drüber (Ghost sei Dank) und nun lüppt et wieder *PUH* :marine
-
ja nee ich glaubs ehrlich gesagt auch nicht. Ich kenne nur niemanden der diese Marke raucht das ist mein Problem.Und weg schmeißen möchte ich die Teile wirklich nicht die haben einen Wert pro Stange von je 29 euro. Da geb ich die lieber 50% billiger oder so ab als die weg zu schmeißen .
Biete sie einfach einem Raucher an, der nicht soviel Kohle hat - er freut sich, wenn er sparen kann, da bin ich sicher. Ich kenne viele, die sich auch mit weniger Geschmack anfreunden, wenn sie dafür sparen können. Traurig, aber wahr. Die echten Raucher schockt nix (bei DEN Preisen)
-
Hi,
erstmal: herzlichen Glückwunsch zum Nichtrauchen :uli
Aber jetzt mal ehrlich: glaubst Du wirklich, ALDI nimmt die zurück? Ich nicht.
Versuch doch einfach, sie einem anderen Raucher zu verkaufen Du machst evtl. minimalen Verlust, und der andere freut sich.
Besser, als sie wegzuwerfen, auch wenn ich vom Rauchen nichts halte :floet:
Viel Erfolg beim Durchhalten!
LG, TheWho
-
Ich bekenne mich auch als MAIDS-Infizierte. Mein Handy gehört dazu wie Schlüsselbund und Portemonaie
Und mein Rechner funktioniert jetzt seit 5 Tagen nimmer, furchtbar!! Glücklichweise hat mein Mann noch nen Rechner und ich hier in der Firma ja auch, und bei t-online kann man die auch online abrufen, dafür bin ich sehr dankbar :bimei
Schlimmer sind nur die Termine, die derzeit auf meiner Festplatte verschimmeln :hells: "Hattu Kopf wie Sieb, muttu notieren" --> hilft aber auch nicht immer :uli
-
Also, ich hab noch ein neues Netzteil eingebaut, leider ohne Erfolg. Hab auch noch älteren RAM besorgen können, gleicher Fehler. Ich vermute mal ganz stark, daß mir das Board abgeraucht ist. Hab mir jetzt bei Ebay das gleiche wieder ersteigert, hoffe mal, daß es dann wieder funzt... :cool:
So long!
TheWho
-
Aber sollten wirklich 3 Bausteine auf einmal kaputtgehen?
-
Was mich jetzt verwirrt: beim Award steht zu den von mir aufgeführten Beeps folgendes:
> 1x lang Speicherproblem, Module sitzen nicht richtig oder sind oxydiert. Das Signal wiederholt sich nach einer Pause.
Mein Signal wiederholt sich aber nicht, der Rechner schaltet sich aus.
> 10 Sekunden dauernder Ton mit nachfolgendem Abschalten des Rechners : Kühler
Mein Ron ist aber keine 10sek lang
> wiederholt kurz: Problem mit der Stromversorgung des Motherboards
macht er nur bei fehlendem RAM
Was davon paßt denn nun? :confused:
-
och ich hätte schon noch SDRAM, aber ich glaub das is bisserl weit, oder?
Ok, alles ausgebaut hast du schon.. hattest mal nachgesehen, wie das mit dem Netzteil ausschaut? Liefert dat die richtigen Voltzahlen? Auch unter Last?
Kann ja sein, dass aus irgendwelchen Gründen das Netzteil ausgestiegen ist...
Den langen Pieps hab ich wie gesacht, wenn ich Stromprobs wegen Überlastung hab...
Edit:
Das A7V hat AFAIK nen Award Bios
Bissel, aber nur bissel *g*
Ne, ich wüßte auch nicht, wie ich das messen kann, weil es ja sofort wieder ausgeht?
Das ist doch mal was, dann schau ich heute abend mal wegen der Beepcodes *schnell ausdruckt* danke!
-
lol, kann mir die szene schon vorstellen wie du da mitten wärend der arbeit plötzlich anfängst deinen pc auseinander zu nehmen und drin rumwerkst ^^
Also im grunde gibt es ja nich mehr allzuviel was den fehler hervorrufen kann, das meiste is ja drausen.
Hast du ne GraKa onboard? wenn nicht dann bau mal deine GraKa aus und schau ob es ein anderes Piepsen gibts.
Wenn es immernoch gleich Piepst tritt der Fehler vor der Hardware erkennung auf. Sollte er anders piepsen merkt er das du keine GraKa hast.
Hast ud ne GraKa onboard... ich mag onboard nicht...
wenn du keine onboard graka hast und das piepsen bei ausgebauter graka gleich bleibt is wohl was mit dem bios nich in ordnung da es nichtmal bis zum Hardware scann kommt. ansonsten können wir davon ausgehen das dein bios in ordnung ist.
Ja, die Vorstellung hat mich eben auch ziemlich erheitert
Also, wie ganz oben beschrieben hab ich ne Geforce MMX, also keine OnBoard. Und auch die habe ich ausgebaut, keine Änderung. Änderung des Tons erst nach Ausbau des kompletten RAMs.
Reicht es denn, das BIOS zu flashen, oder muß evtl. ein neues Board her?
-
@ TheWho:
Schau mal hier: http://www.wimsbios.com/
Das ist eigentlich die zentrale Anlaufstelle für Biosfehler.
Ähm: noch ne blöde Frage: wie finde ich raus, welches BIOS ich habe? Nur damit kann ich lt. obiger Seite die Beepcodes "knacken"?
-
den ram wirst du doch wohl hinbekommen den beim kumpel zu testen wenn ich kenne niemanden der mir nicht aushelfen würde wenn ich kein zweitrechner hätte und ich bin auch nicht krösus habe aber gut gespart und wenn du schon so viele bios geflasht hast denn west ja wies geht
Nein, leider nicht, da keiner mehr SD-RAM hat
Achtung Ironie! Ich hab eben noch nie und nimmer eines geflasht, darum obige Aussage. Aber Ironie scheint Dir nicht zu liegen. :mod:
Lustiges Spiel
in Small Talk
Geschrieben
Meine Kokosnuss hat er auch nicht erraten