Aufgaben für C++
-
Überleg dir was du brauchst und programmier es dir. Einmal halt nicht ins Inet gehen und was bereits fertiges runterladen

Ich habe mir zum Beispiel mal vor langem einen Terminplaner gebaut mit allem drum und dran. Hab den verwendet, bis ich dann von Outlook Express auf Thunderbird & Lightning umgestiegen bin

Grüssli
-
Oki doki, dann überleg ich mir mal was, bzw verinnerliche erst mal Qt richtig und erstelle dann eine sinvolle anwendung=)
Hab jetzt mal noch eben kurz Tic Tac Toe in der Konsole gemacht:-P
-
Ich bevorzuge immer kleine Spiel, um den Spaß nach einiger Zeit net zu verlieren.
Es gibt ja 1000'de Pausenspiele wie "4 gewinnt" oder irgendwelche Klickspiele, wo man ne kleine Highscore hat.
-
Tolles Projekt hierfür: http://projecteuler.net
-
ok dankeschön, werds mir mal anschauen;-)
-
phor schrieb:
Tolles Projekt hierfür: http://projecteuler.net
Mit GUI-Programmierung haben die Aufgaben da aber nichts zu tun.
Aber sonst eine nette Herausforderung für den Informatiker und Mathematiker.
-
ja und ich bleib schon bei dem ersten problem hängen, mein ergebnis stimmt nieee=(
ja es müssen ja auch nicht umbedingt gui aufgaben oder projekte sein, können auch ruhig für die konsole sein um sich weiter zu entwickeln;-)
-
fr33g schrieb:
Oki doki, dann überleg ich mir mal was, bzw verinnerliche erst mal Qt richtig und erstelle dann eine sinvolle anwendung=)
Hab jetzt mal noch eben kurz Tic Tac Toe in der Konsole gemacht:-P
Mal eben kurz gemacht?
Kann ich mal einen Screenshot sehen oder sogar den Code.Gruß,
Fred
-
Du kannst auch eine Adressenverwaltung schreiben. Also verschiedene Leute speichern (mit Namen, Strasse, PLZ, Wohnort, Telefonnummer, E-Mail, ...). Dann Funktionalität hinzufügen wie Einträge suchen, nach einem Kriterium sortieren, Einträge löschen, etc.
Dabei hast du eine gute Gelegenheit, dich mit der STL auseinanderzusetzen. Du kannst verschiedene Komponenten davon einsetzen: Container für die Speicherung, Iteratoren zur Ausgabe von allen Adressen, Algorithmen für Dinge wie Sortieren oder Suchen. Ausserdem kannst du später leicht GUI hinzufügen. Schau einfach, dass du die Logik unabhängig von irgendwelchen GUI-Elementen schreibst.
-
Ein kleines snakegame wäre auch nicht schlecht, da bewegt sich auch was

-
snake_game schrieb:
Ein kleines snakegame wäre auch nicht schlecht, da bewegt sich auch was

Dann aber wenigstens mit der SDL... Konsole wäre ja voll wuäh

-
Erst mal Danke für die Ideen;-)
Ich hab mir schonmal so ein kleines Adressbuch geschrieben.
Jedoch könnt ich das natürlich noch um die Sachen erweitern die du gesagt hast, sprich die Daten dann natürlich in ner Datei speichern, und nicht nur nach Name suchen, sondern auch nach den anderen Kritieren, und eine geordnete Ausgabe.Also wenn dus nicht glaubst, hier ist der Code von Tic Tac Toe:
main.cpp
#include <string> #include <iostream> #include <iomanip> #include <vector> #include "classFeld.h" #include "funktionen.h" using namespace std; int main() { cout << setw(60) << "Herzlich Willkommen zu Tic Tac Toe\n"; cout << setw(56) << "Enter druecken zum Starten!"; cin.get(); vector<Feld> Felder(9); int x = 1; int y = 1; int k = 0; for ( int i = 0; i < 3; ++i ) { x = 1; for ( int j = 0; j < 3; ++j ) { Felder[k] = Feld(x,y); ++x; ++k; } ++y; } ausgabe(Felder); while(true) { setP1(Felder); ausgabe(Felder); if ( checkP1(Felder) ) break; if ( draw(Felder) ) break; setP2(Felder); ausgabe(Felder); if ( checkP2(Felder) ) break; if ( draw(Felder) ) break; } }funktionen.h
#ifndef FUNTKIONEN_H_INCLUDED #define FUNTKIONEN_H_INCLUDED #include <vector> #include "classFeld.h" void ausgabe(std::vector<Feld>); void setP1(std::vector<Feld>&); void setP2(std::vector<Feld>&); bool checkP1(std::vector<Feld>); bool checkP2(std::vector<Feld>); bool draw(std::vector<Feld>); #endif // FUNTKIONEN_H_INCLUDEDfunktionen.cpp
#include "classFeld.h" #include "funktionen.h" #include <iostream> #include <iomanip> #include <string> #include <vector> using namespace std; void ausgabe(vector<Feld> Felder) { int k = 0; for ( int i = 0; i < 3; ++i ) { cout.width(41); for ( int j = 0; j < 3; ++j ) { cout << Felder[k].getZeichen(); ++k; } cout << "\n"; } } void setP1(vector<Feld>& Felder) { cout << "Geben sie(P1) die x und y Achse an(1-3)\n"; int x; int y; cin >> x; cin >> y; if ( ( x < 1) || ( x > 3 ) || ( y < 1 ) || ( y > 3 ) ) { cout << "Ungueltige Eingabe!\n"; setP1(Felder); } bool treffer = true; string zeichen = "X "; int i = 0; while (true) { if ( ( Felder[i].getX() == x ) && ( Felder[i].getY() == y ) ) { if ( ( Felder[i].getXX() == true ) || ( Felder[i].getOO() == true ) ) { cout << "Dort wurde schon hingeschossen\n"; setP1(Felder); } Felder[i].setXX(treffer); Felder[i].setZeichen(zeichen); break; } ++i; } } void setP2(vector<Feld>& Felder) { cout << "Geben sie(P2) die x und y Achse an(1-3)\n"; int x; int y; cin >> x; cin >> y; if ( ( x < 1) || ( x > 3 ) || ( y < 1 ) || ( y > 3 ) ) { cout << "Ungueltige Eingabe!\n"; setP1(Felder); } bool treffer = true; string zeichen = "O "; int i = 0; while (true) { if ( ( Felder[i].getX() == x ) && ( Felder[i].getY() == y ) ) { if ( ( Felder[i].getXX() == true ) || ( Felder[i].getOO() == true ) ) { cout << "Dort wurde schon hingeschossen\n"; setP2(Felder); } Felder[i].setOO(treffer); Felder[i].setZeichen(zeichen); break; } ++i; } } bool checkP1(vector<Feld> Felder) { if ( ( Felder[0].getXX() == true ) && ( Felder[1].getXX() == true ) && ( Felder[2].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[3].getXX() == true ) && ( Felder[4].getXX() == true ) && ( Felder[5].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[6].getXX() == true ) && ( Felder[7].getXX() == true ) && ( Felder[8].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[0].getXX() == true ) && ( Felder[3].getXX() == true ) && ( Felder[6].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[1].getXX() == true ) && ( Felder[4].getXX() == true ) && ( Felder[7].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[2].getXX() == true ) && ( Felder[5].getXX() == true ) && ( Felder[8].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[0].getXX() == true ) && ( Felder[4].getXX() == true ) && ( Felder[8].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } else if ( ( Felder[2].getXX() == true ) && ( Felder[4].getXX() == true ) && ( Felder[6].getXX() == true ) ) { cout << "P1 hat gewonnen!\n"; return true; } return false; } bool checkP2(vector<Feld> Felder) { if ( ( Felder[0].getOO() == true ) && ( Felder[1].getOO() == true ) && ( Felder[2].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[3].getOO() == true ) && ( Felder[4].getOO() == true ) && ( Felder[5].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[6].getOO() == true ) && ( Felder[7].getOO() == true ) && ( Felder[8].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[0].getOO() == true ) && ( Felder[3].getOO() == true ) && ( Felder[6].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[1].getOO() == true ) && ( Felder[4].getOO() == true ) && ( Felder[7].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[2].getOO() == true ) && ( Felder[5].getOO() == true ) && ( Felder[8].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[0].getOO() == true ) && ( Felder[4].getOO() == true ) && ( Felder[8].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } else if ( ( Felder[2].getOO() == true ) && ( Felder[4].getOO() == true ) && ( Felder[6].getOO() == true ) ) { cout << "P2 hat gewonnen!\n"; return true; } return false; } bool draw(vector<Feld> Felder) { int check = 0; for ( int i = 0; i < 9; ++i ) { if ( ( Felder[i].getXX() == true ) || ( Felder[i].getOO() == true ) ) ++check; } if ( check == 9 ) { cout << "Unentschieden!\n"; return true; } return false; }classFeld.h
#ifndef CLASSFELD_H_INCLUDED #define CLASSFELD_H_INCLUDED #include <string> class Feld { public: // Konstruktoren und Destruktor Feld(); Feld(int x, int y); ~Feld(); // Zugriffsfunktionen int getX() const { return itsX; } void setX(int x); int getY() const { return itsY; } void setY(int y); bool getXX() const { return itsXX; } void setXX(bool XX); bool getOO() const { return itsOO; } void setOO(bool OO); std::string getZeichen()const { return itsZeichen; } void setZeichen(std::string zeichen); private: int itsX; int itsY; bool itsXX; bool itsOO; std::string itsZeichen; }; #endif // CLASSFELD_H_INCLUDEDclassFeld.cpp
#include "classFeld.h" #include <string> using namespace std; Feld::Feld() { } Feld::Feld(int x, int y): itsX(x), itsY(y) { itsXX = false; itsOO = false; itsZeichen = ". "; } Feld::~Feld() { } void Feld::setX(int x) { itsX = x; } void Feld::setY(int y) { itsY = y; } void Feld::setXX(bool XX) { itsXX = XX; } void Feld::setOO(bool OO) { itsOO = OO; } void Feld::setZeichen(string zeichen) { itsZeichen = zeichen; }Glaubst dus jetzt

Gut ich weiß die Funktion zum prüfen ob einer gewonnen hat hätte ich besser aufsetzen können:D
-
Kóyaánasqatsi schrieb:
snake_game schrieb:
Ein kleines snakegame wäre auch nicht schlecht, da bewegt sich auch was

Dann aber wenigstens mit der SDL... Konsole wäre ja voll wuäh

Lieber mit SFML, da hat man zumindest C++ und die Bibliothek ist einfacher zu verwenden

Kann man allerdings auch gut über Qt oder ein solches Framework machen. Einen Timer setzen und bei jedem Tick halt die Logik berechnen und zeichnen.Grüssli
-
@Dravere
Ich habe extra SDL gesagt, weil ich finde, dass die SDL einfach einfacher ist... Ich finde das man als Anfänger dort die Abläufe schneller versteht
-
Kóyaánasqatsi schrieb:
@Dravere
Ich habe extra SDL gesagt, weil ich finde, dass die SDL einfach einfacher ist... Ich finde das man als Anfänger dort die Abläufe schneller versteht
Man versteht vielleicht schneller, wie es hinter der Bibliothek aussieht, aber die Verwendung der Bibliothek ist bei weitem nicht einfacher. Siehe zum Beispiel auch hier:
http://www.sfml-dev.org/forum/viewtopic.php?p=11355#11355
(auch die Beiträge davor und danach, war nur eine der guten Antworten auf den SDL Code)Die Frage ist nun:
1. Will man die Bibliothek verwenden oder verstehen wie sie funktioniert? Normalerweise will ich sie in erster Linie verwenden
2. Was heisst "schneller"? Gut, du verstehst schneller wie die SDL Bibliothek funktioniert, dass geht aber immer noch deutlich länger, bis du mit SFML bereits schon gut funktionierende aktzeptable Ergebnisse hast. Zudem musst du bei SDL lernen, wie sie funktioniert, sonst kannst du mit SDL nicht umgehen, während bei SFML dir alles schön verborgen bleibt, du die Bibliothek aber trotzdem prima verwenden kannst.Hmm, wird nun aber sehr Off-Topic ... und ist natürlich vielleicht auch etwas subjektiv *g*
Grüssli
-
Alleine schon weil SFML in modernem C++ und SDL in C geschrieben ist, würde ich mir wenn schon ersteres anschauen. Der Threadtitel heisst ja "Aufgaben für C++". Von den anderen Vorteilen von SFML mal ganz abgesehen...
Aber um sich in C++ weiterzubilden, kommt man meines Erachtens schneller zu Resultaten, wenn man sich auf die Sprache konzentriert und Grafik oder GUI vorerst beiseite lässt.
-
fr33g schrieb:
Erst mal Danke für die Ideen;-)
Ich hab mir schonmal so ein kleines Adressbuch geschrieben.
Jedoch könnt ich das natürlich noch um die Sachen erweitern die du gesagt hast, sprich die Daten dann natürlich in ner Datei speichern, und nicht nur nach Name suchen, sondern auch nach den anderen Kritieren, und eine geordnete Ausgabe.Also wenn dus nicht glaubst, hier ist der Code von Tic Tac Toe:
Und den Code hast Du mal eben geschrieben?
Du verarscht uns hier, ich glaube Du willst Dich hier nur feiern lassen.
In meinen Augen bist Du ein Voll-Spinner.
Och man, ich weiß nicht mehr was ich programmieren soll, heute Vormittag habe ich SP3 programmiert jetzt bin ich an Windows 7 dran, nur was soll ich morgen machen?
Du hast doch einen an der Waffel.
-
Fred Marder schrieb:
fr33g schrieb:
Erst mal Danke für die Ideen;-)
Ich hab mir schonmal so ein kleines Adressbuch geschrieben.
Jedoch könnt ich das natürlich noch um die Sachen erweitern die du gesagt hast, sprich die Daten dann natürlich in ner Datei speichern, und nicht nur nach Name suchen, sondern auch nach den anderen Kritieren, und eine geordnete Ausgabe.Also wenn dus nicht glaubst, hier ist der Code von Tic Tac Toe:
Und den Code hast Du mal eben geschrieben?
Du verarscht uns hier, ich glaube Du willst Dich hier nur feiern lassen.
In meinen Augen bist Du ein Voll-Spinner.
Och man, ich weiß nicht mehr was ich programmieren soll, heute Vormittag habe ich SP3 programmiert jetzt bin ich an Windows 7 dran, nur was soll ich morgen machen?
Du hast doch einen an der Waffel.Aber sonst gehts noch

Natürlich hab ich das selber geschrieben, in ner kurzen Zeit.
Was ist eigentlich dein Problem, du wolltest doch das ich den Code reinschreib und dass habe ich jetzt gemacht, wenn du es mir net glaubst kann ich auch nichts dafür.
Brauchst mich hier aber net dumm anmachen und beleidigen, nur weil du vll probleme mit dir selber hast.
Also bitte
Edit:
Wenn mir sagst wo ich screenshots hochladen kann, kann ich dir gern von jeder einzelnen datei n screenshot machen, wo steht wann die datei erstellt wurde und dann das letzte mal geändert.
Hat genau 1 Stunde und 21 Minuten gedauert!So:
http://img99.imageshack.us/img99/271/bitteschn.pngWenn es mir jetzt immer noch net glaubst ist es mir auch egal....
Ich weiß ja das es stimmt, außerdem machst du so als wie ich mich hier aufspielen will, ich hab legidlich nach Programmideen gefragt und du wolltest doch den Code sehen.
Komm erst mal mit dir selber klar

Ich weiß ja nicht warum du hier im Forum unterwegs bist, aber ich bin hier um was zu lernen und meine Programmierkentnisse zu verbessern, um Hilfe zu bekommen wenn man nicht mehr weiter weiß.
Klar freut man sich wenn jemand sagt, der Code ist gut oder so, aber ich bin nicht hier um Anerkennung zu bekommen, dafür hab ich eine Freundin, Familie und Freunde im echten Leben.
Weiß ja nicht vielleicht hast du keine Freunde oder so und suchst nur hier Aufmerksamkeit
ich auf jeden Fall nicht.SO aber nun reicht es auch wieder, ist schon genug of Topic:-P
Gruß fr33g
-
Fred Marder schrieb:
Und den Code hast Du mal eben geschrieben?
Du verarscht uns hier, ich glaube Du willst Dich hier nur feiern lassen.
In meinen Augen bist Du ein Voll-Spinner.
Och man, ich weiß nicht mehr was ich programmieren soll, heute Vormittag habe ich SP3 programmiert jetzt bin ich an Windows 7 dran, nur was soll ich morgen machen?
Du hast doch einen an der Waffel.1. Sprach er von jetzt?
2. Ist der Code nichts was man nicht in ein paar Minuten-Stunden tippen kann.
-
Also ich bin mit meinem Adressenbuch schon gut vorangekommen, jedoch häng ich jetzt fest.
Wenn ich das Programm schließe und wieder öffne und dann eine Adresse abfragen will, stürzt das Programm ab.
Hier mal den teil um den es geht:funktionen.cpp
void adresseAnlegen( map<string, Adresse>& Adressen ) { cout << "Geben sie den Vornamen ein: "; string vorname; cin >> vorname; cout << "Geben sie den Nachnamen ein: "; string nachname; cin >> nachname; cout << "Geben sie die Adresse ein: "; string adresse; cin.ignore(); getline( cin, adresse ); cout << "Geben sie die Telefonnummer ein: "; string tele; cin >> tele; cout << "Geben sie die Email-Adresse ein: "; string email; cin>> email; Adressen[vorname] = Adresse(vorname, nachname, adresse, tele, email); // Adresse wird erstellt in der map char* fileName = new char[ vorname.size() + 1 ]; // char Array wird erstellt für die Dateiöffnung strcpy( fileName, vorname.c_str() ); // kopieren des strings in das char Array ofstream fout( fileName, ios::binary ); if( !fout ) cout << "Die Datei konnte nicht zum Schreiben geöffnet werden!\n"; else { fout.write( ( char* )& Adressen[vorname], sizeof Adressen[vorname] ); // Adresse in eine eigene Datei schreiben } fout.close(); delete[] fileName; } void auslesenVorname( map<string, Adresse>& Adressen ) { cout << "Geben sie den Vornamen ein den sie Suchen: "; string vorname; cin >> vorname; char* fileName = new char[ vorname.size() + 1 ]; // char Array erzeugen für die Dateiöffnung strcpy( fileName, vorname.c_str() ); // kopieren des string in das char Array ifstream fin( fileName, ios::binary ); if ( !fin ) cout << "Datei konnte nicht zum lesen geoeffnet werden!\n"; else { fin.read( ( char* )& Adressen[vorname], sizeof Adressen[vorname] ); cout << Adressen[vorname].getVorname() << "\n"; cout << Adressen[vorname].getNachname() << "\n"; cout << Adressen[vorname].getAdresse() << "\n"; cout << Adressen[vorname].getTele() << "\n"; cout << Adressen[vorname].getEmail() << "\n\n\n"; fin.close(); } delete[] fileName; }Also wenn eine Adresse erstellt wird wird sie in einer eigenen Datei gespeichert, so dass ich sie eg wenn das Programm neu gestartet wird, öffnen kann, dies funktioniert jedoch nicht.
Ich kann sie nur öffnen wenn ich sie zuvor im gleichen Programmstart erzeugt habe.Hoffe ihr könnt mir helfen=)
Wenn soweit alles läuft will ich dann noch einbauen, dass man auch nach Nachnamen suchen kann und dass alle sortiert ausgegeben werden und so weiter:-P