
fr33g
Mitglieder-
Gesamte Inhalte
36 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von fr33g
-
Hey Leute, ich hätt mal ein paar allgemeine Fragen die mir nicht klar sind und die ich bisher auch nicht rausbekommen hab. Also den Unterschied zwischen dynamischen Linken und statischen Linken kenne ich. Blos wie wähle ich wenn ich Programmiere wie ich statisch und wie ich dynamisch Linke?Benutze Code Blocks und den gnu compiler. Was bedeutete vorcompilieren von Headerdateien? Ich kann ja im Projekt die Headerdateien mit rechts an klicken und dann auf properties und auf build. da gibts dann einen haken für linken und für compilieren. was bewirkt das wenn ich da den haken bei compilieren und linken wegmache? danke schonmal für eure hilfe;-)
-
Ja habe ich;-) Ja ich schreib zum beispiel ein programm, wo ich selber klassen erzeug und die in header files packe. oder ich benutze halt header files von der c++ standarf libary, und wie kann ich dann wählen wie ich linke?
-
Hey Leute, man kann sein Programm ja statisch oder dynamisch Linken. Ich arbeite mit Code Blocks und den gnu compiler. wie sehe ich jetzt ob ich dynamisch oder statisch linke und wie kann ich das ändern? vor allem was ist besser was würdet ihr empfehlen? was hat welche vor und nachteile? wär cool wenn ihr mir das erklären könntet
-
Ok Danke schön, werd ich ändern. Zum Debuggen: Also ich klick z.b. irgendwo in meinem quellcode hin und drück dann toogle breakpoint. vorne ist dann auch der rote punkt. so dann start ich den debugger in dem ich auf debug gehe und dann auf start. doch er ignoriert die haltepunkte völlig. habs auch mit nem ganz kleinen programm versucht. #include <iostream> using namespace std; int main() { int a=66; int b=88; cout << a << b << endl; return 0; } Setzt ich jetzt in die zeile int b=88 ein haltepunkt, durchläuft er einfach alles=( EDIT: Danke hab den Quellcode geändert hat jetzt alles geklappt=) Blos das Debuggen net vll kanst du mir ja sagen was ich falsche mache=(
-
Ja würd ich gern wenn ich das mit dem debuggen checken wird aber der läuft bei ihr immer nur einfach komplett durch trotz den einstellungen für den debugger. es kommt ja kein fehler, das programm läuft blos endlos. weil ich wohl in der funktion bool Bretter::endGame vermutlich einen Logikfehler hab. denn sie soll true senden wenn der spieler alle schiffe getroffen hat und die while schleife aus dem main programm beenden. den rest müsst ihr euch vermut ich mal eg auch nicht anschauen;-) wär auf jeden fall cool wenn mir jemand helfen kann=)
-
Hey Leute, hab mir ein Spiel programmiert, nämlich Schiffe versenken, nach einigen Stunden Fehlersuche lief es endlich=) Jetzt habe ich noch eine Funtkion eingebaut damit das Spiel den Sieg meldet und sich beendet. Jedoch funktioniert es einfach nicht und ich weiß nicht warum=( Das Spiel macht einfach weiter. Hoffe ihr könnt mir helfen: main.cpp #include "classBretter.h" #include <iostream> #include <iomanip> #include <string> using namespace std; void anzahlZweierSchiffe(Bretter&, const int&, const int&, int&); void anzahlDreierSchiffe(Bretter&, const int&, const int&, int&); void anzahlViererSchiffe(Bretter&, const int&, const int&, int&); const int size1 = 10; const int size2 = 10; const int size3 = 4; bool stop = false; int choiceGes; int choiceGes1; int choiceGes2; int choiceGes3; int main() { srand((unsigned)time(NULL)); cout << setw(60) << "Herzlich Willkommen bei Schiffeversenken\n"; cout << "\n"; cout << "\n"; cout << setw(61) << "Ein '.' bedeutet noch nicht hingeschossen\n"; cout << setw(56) << "Ein 'X' bedeutet das war nur Wasser\n"; cout << setw(79) << "Ein 'S' bedeutet da ist ein Schiff, die Klammer sagt wie lang das Schiff ist\n"; cout << "\n\n"; Bretter Brett1(size1,size2,size3); anzahlZweierSchiffe(Brett1, size1, size2, choiceGes1); anzahlDreierSchiffe(Brett1, size1, size2, choiceGes2); anzahlViererSchiffe(Brett1, size1, size2, choiceGes3); Brett1.brettAusgeben(size1, size2); choiceGes = (choiceGes1 * 2) + (choiceGes2 * 3) + (choiceGes3 * 4); int x; int y; while(stop == false) { cout << "\n"; cout << "Wo moechtest du hinschiessen: x= "; cin >> x; cout << "\n"; cout << "Wo moechtest du hinschiessen: y= "; cin >> y; cout << "\n"; Brett1.check(x,y); Brett1.brettAusgeben(size1, size2); if(Brett1.endGame(Brett1, choiceGes)) { stop = true; } } cout.width(47); cout << "Herzlichen Glückwunsch, sie haben das Spiel erfolgreich beendet!"; } classBretter.h #include <string> #ifndef CLASSBRETTER_H_INCLUDED #define CLASSBRETTER_H_INCLUDED class Bretter { public: Bretter(const int, const int, const int); ~Bretter(){}; void brettAusgeben(const int&, const int&)const; void zweierSchiffeSetzen(Bretter&, const int, const int); void dreierSchiffeSetzen(Bretter&, const int, const int); void viererSchiffeSetzen(Bretter&, const int, const int); void check(int&, int&); bool endGame(Bretter&, int&); private: std::string Brett[10][10][4]; }; #endif // CLASSBRETTER_H_INCLUDED classBretter.cpp #include "classBretter.h" #include <iostream> #include <iomanip> #include <string> using namespace std; Bretter::Bretter(const int size1, const int size2, const int size3) { for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][0] = ". "; } } for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][1] = "0"; } } for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][2] = "0"; } } for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][3] = "0"; } } } void Bretter::brettAusgeben(const int& size1, const int& size2)const { cout << setw(67) << " 0 1 2 3 4 5 6 7 8 9\n"; for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { if(j == 0) { cout << setw(19) << i << " "; } cout << Brett[i][j][0]; } cout<<"\n"; } } bool Bretter::endGame(Bretter& Brett1, int& choiceGes) { int tempCheck = 0; for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { if((Brett[i][j][3] == ("2") || ("3") || ("4")) && (Brett[i][j][0] == ("S(2) ") || ("S(3) ") || ("S(4) "))) { tempCheck += 1; } } } if(tempCheck == choiceGes) { return true; } else { return false; } } void Bretter::zweierSchiffeSetzen(Bretter& Brett1, const int size1, const int size2) { unsigned int x = rand() % (size1 - 2 + 1); unsigned int y = rand() % size2; int tempx = x; int tempy = y; if ((Brett[tempy][tempx][2] == "0") && (Brett[tempy][tempx+1][2] == "0")) { for (int i = 0; i < 2; i++) { Brett[tempy][tempx][2] = "1"; tempx++; } tempx = x; for (int i = 0;i < 2; i++) { Brett[tempy][tempx][3] = "2"; tempx++; } } else { Brett1.zweierSchiffeSetzen(Brett1,size1,size2); } } void Bretter::dreierSchiffeSetzen(Bretter& Brett1, const int size1, const int size2) { unsigned int x = rand() % size1; unsigned int y = rand() % (size2 - 3 + 1); int tempx = x; int tempy = y; if ((Brett[tempy][tempx][2] == "0") && (Brett[tempy+1][tempx][2] == "0") && (Brett[tempy+2][tempx][2] == "0")) { for (int i = 0; i < 3; i++) { Brett[tempy][tempx][2] = "1"; tempy++; } tempy = y; for (int i = 0;i < 3; i++) { Brett[tempy][tempx][3] = "3"; tempy++; } } else { Brett1.dreierSchiffeSetzen(Brett1,size1,size2); } } void Bretter::viererSchiffeSetzen(Bretter& Brett1, const int size1, const int size2) { unsigned int x = rand() % size1; unsigned int y = rand() % (size2 - 4 + 1); int tempx = x; int tempy = y; if((Brett[tempy][tempx][2] == "0") && (Brett[tempy+1][tempx][2] == "0") && (Brett[tempy+2][tempx][2] == "0") && (Brett[tempy+3][tempx][2] == "0")) { for (int i = 0; i < 4; i++) { Brett[tempy][tempx][2] = "1"; tempy++; } tempy = y; for (int i = 0;i < 4; i++) { Brett[tempy][tempx][3] = "4"; tempy++; } } else { Brett1.viererSchiffeSetzen(Brett1,size1,size2); } } void Bretter::check(int& x, int& y) { if(Brett[y][x][1] == "0") { if(Brett[y][x][2] == "1") { if(Brett[y][x][3] == "2") { cout << "Treffer\n"; Brett[y][x][0] = "S(2) "; Brett[y][x][1] = "1"; } if(Brett[y][x][3] == "3") { cout << "Treffer\n"; Brett[y][x][0] = "S(3) "; Brett[y][x][1] = "1"; } if(Brett[y][x][3] == "4") { cout << "Treffer\n"; Brett[y][x][0] = "S(4) "; Brett[y][x][1] = "1"; } } else { Brett[y][x][0] = "X "; Brett[y][x][1] = "1"; cout << "Leider nur Wasser\n"; } } else { cout << "Dort hast du schonmal hingeschossen\n"; } } funktionen.cpp #include <iomanip> using namespace std; void anzahlZweierSchiffe(Bretter& Brett1, const int& size1, const int& size2, int& choiceGes1) { marke:; cout << "Wie viel zweier Schiffe moechtest du(mindestens 1, maximal 3)"; int choice; cin >> choice; choiceGes1 = choice; if ((choice < 4) && (choice > 0)) { for(int i = 0; i < choice; i++) { Brett1.zweierSchiffeSetzen(Brett1, size1, size2); } } else { cout << "Falsche Eingabe!\n"; goto marke; } } void anzahlDreierSchiffe(Bretter& Brett1, const int& size1, const int& size2, int& choiceGes2) { marke:; cout << "Wie viel dreier Schiffe moechtest du(mindestens 1, maximal 3)"; int choice; cin >> choice; choiceGes2 = choice; if ((choice < 4) && (choice > 0)) { for(int i = 0; i < choice; i++) { Brett1.dreierSchiffeSetzen(Brett1, size1, size2); } } else { cout << "Falsche Eingabe!\n"; goto marke; } } void anzahlViererSchiffe(Bretter& Brett1, const int& size1, const int& size2, int& choiceGes3) { marke:; cout << "Wie viel vierer Schiffe moechtest du(maximal 3)"; int choice; cin >> choice; cout << "\n\n"; choiceGes3 = choice; if ((choice < 4) && (choice > 0)) { for(int i = 0; i < choice; i++) { Brett1.viererSchiffeSetzen(Brett1, size1, size2); } cout << setw(58) << "Dann kann es ja losgehen!\n"; } else if (choice == 0) { cout << setw(58) << "Dann kann es ja losgehen!\n"; } else { cout << "Falsche Eingabe!\n"; goto marke; } } Ich weiß is n langer Code, aber wär echt lieb wenn ihr mir trotzdem helfen könntet:)
-
ok danke, werd mir nochmal alles anschauen und hoffe ich versteh es dann=)
-
Sooo also habs probiert und es geht=) War ja mal ein sau dummer Fehler, man hört immer wieder und weiß eg au arrays fangen bei 0 an und der name ist ein zeiger auf das erste element des arrays und trotzdem macht man den fehler selber auch:D;-) vielleicht könnt ihr mir auch in meinem thread debuggen helfen=) wär toll
-
ok werds gleich mal probieren zu ändern. danke schonmal ja ich weiß;-) deswegen hat ich das eg auch schon anderster gelöst, aber hab wohl vergessen dass zu speichern:D meld mich nochmal nachher obs geklappt hat;-) danke schonmal:-P
-
Hey Leute, hab mir ein Programm Adressbuch geschrieben, es hat auch alles funktioniert, aber als ich das Programm verbessern wollte und einige sachen aus dem main() teil in ein extra funtkionen schreiben wollte, hab ich irgendein fehler gemacht. ich find ihn aber leider net, hoff ihr könnt mir helfen, es geht um das übergeben eines arrays mit zeigern auf mein objekt adresse. main.cpp #include "classAdressen.h" #include <iostream> #include <string> using namespace std; void auslesen(int& i, bool& right, Adressen* pZeiger[40]); void einlesen(int& i, Adressen* pZeiger[40]); int main() { const int maxSize = 40; int choice; bool stop = false; bool stop2 = false; bool right = false; Adressen *pZeiger[maxSize]; //string vorname; for (int i = 0; i < 40; i++) { marke:; cout << "Wollen sie eine Adresse speichern(1)oder nicht(2)?"; cin >> choice; if (choice == 2) stop = true; else if( (choice != 2) && (choice != 1) ) { cout << "Falsche Eingabe\n"; goto marke; } while (stop == true) { marke2:; cout << "Wollen sie Adressen auslesen(1) oder beenden(2)?"; cin >> choice; if (choice == 2) { stop2 = true; break; } else if( (choice != 2) && (choice != 1) ) { cout << "Falsche Eingabe\n"; goto marke2; } auslesen(i,right,pZeiger[maxSize]); /*cout << "Welche Adresse wollen sie auslesen(Vorname): "; cin >> vorname; for(int j = 0; j < i; j++) { right = false; if(pZeiger[j]->compareString(vorname)) { cout << pZeiger[j]->getVor_name() << "\n"; cout << pZeiger[j]->getNach_name() << "\n"; cout << pZeiger[j]->getAdresse() << "\n"; cout << pZeiger[j]->getTele() << "\n"; right = true; break; } } if(!right) cout << "Keine Übereinstimmung!\n";*/ } if (stop2 == true) break; einlesen(i,pZeiger[maxSize]); /*cout << "Geben sie den Vornamen ein: "; string vor_name; cin >> vor_name; cout << "Geben sie den Nachname ein: "; string nach_name; cin >> nach_name; cout << "Geben sie die Adresse ein: "; string adresse; cin.ignore(); getline(cin,adresse); cout << "Geben sie die Telefonnummer ein: "; string tele; cin >> tele; pZeiger[i] = new Adressen(); pZeiger[i]->setVor_name(vor_name); pZeiger[i]->setNach_name(nach_name); pZeiger[i]->setAdresse(adresse); pZeiger[i]->setTele(tele);*/ } } void auslesen(int& i, bool& right, Adressen* pZeiger[40]) { string vorname; cout << "Welche Adresse wollen sie auslesen(Vorname): "; cin >> vorname; for(int j = 0; j < i; j++) { right = false; if(pZeiger[j]->compareString(vorname)) { cout << pZeiger[j]->getVor_name() << "\n"; cout << pZeiger[j]->getNach_name() << "\n"; cout << pZeiger[j]->getAdresse() << "\n"; cout << pZeiger[j]->getTele() << "\n"; right = true; break; } } if(!right) cout << "Keine Übereinstimmung!\n"; } void einlesen(int& i,Adressen* pZeiger[40]) { cout << "Geben sie den Vornamen ein: "; string vor_name; cin >> vor_name; cout << "Geben sie den Nachname ein: "; string nach_name; cin >> nach_name; cout << "Geben sie die Adresse ein: "; string adresse; cin.ignore(); getline(cin,adresse); cout << "Geben sie die Telefonnummer ein: "; string tele; cin >> tele; pZeiger[i] = new Adressen(); pZeiger[i]->setVor_name(vor_name); pZeiger[i]->setNach_name(nach_name); pZeiger[i]->setAdresse(adresse); pZeiger[i]->setTele(tele); } classAdressen.h #include <string> #ifndef CLASSADRESSEN_H_INCLUDED #define CLASSADRESSEN_H_INCLUDED class Adressen { public: void setVor_name(std::string&); void setNach_name(std::string&); void setAdresse(std::string&); void setTele(std::string&); std::string getVor_name()const{return itsVor_name;} std::string getNach_name()const{return itsNach_name;} std::string getAdresse()const{return itsAdresse;} std::string getTele()const{return itsTele;} bool compareString(std::string&)const; private: std::string itsVor_name; std::string itsNach_name; std::string itsAdresse; std::string itsTele; }; #endif // CLASSADRESSEN_H_INCLUDED classAdressen.cpp #include "classAdressen.h" #include <iostream> #include <string> using namespace std; void Adressen::setVor_name(string &vor_name) { itsVor_name=vor_name; } void Adressen::setNach_name(string &nach_name) { itsNach_name=nach_name; } void Adressen::setAdresse(string &adresse) { itsAdresse=adresse; } void Adressen::setTele(string &tele) { itsTele=tele; } bool Adressen::compareString(string &temp)const { if(itsVor_name==temp) return true; } Der compiler meldet für zeile 51 in main.cpp can no convert adressen* to adressen** for argument 3 of void auslesen.... und das gleiche für zeile 75 und der funtkion einlesen.... danke schonmal
-
Hey Leute, bin neu hier und habe gleich mal eine frage bzw bitte. Könnt ihr mir vll erklären wie ich richtig debuggen kann? Denn ich habe mir ein Spiel Schiffe versenken programmiert und müsste das mal debuggen da es absürzt. Ich benutze als IDE Code Blocks und hab den gdb debugger der ja integriert ist. Hab schonmal gegoogelt aber nix wirklich hilfreiches gefunden nur was mit Befehle eingeben und so, aber da gibts ja extra ein Menü debugger. Danke schonmal, hoffe ihr könnt mir helfen=)