
Jonsc1
Mitglieder-
Gesamte Inhalte
81 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Jonsc1
-
Ist ja auch logisch das du die Werte nicht direkt beim deklarieren initialisieren kannst, die Klasse ist schliesslich nur die Schablone und reserviert keinen Speicher...
-
-.- Tut mir leid, aber ein letzes mal muss ich euch noch zu diesem Thema belästigen... Ich will mal wieder den Fehler einfach nicht finden. Das Programm läuft bis zum aufruf von "ergebnis_ausgeben(...);" bricht nach dem ausgegebenen Ergebnis aber ab. Die Zeile "cout<<"fertig"; wird nicht mehr ausgeführt.... Ich kann beim besten Willen keinen Fehler finden... EDIT: So weit bin ich schonmal, der Fehler MUSS in der Funktion ergebnis_ausgeben liegen... Da arbeitet das Programm wohl doch nicht so korrekt.... #include <iostream> using namespace std; // // Vorwärtsdeklarationen void ueberschrift_ausgeben(); // Ausgabe der Überschrift int n_eingeben(); // Eingabe von n int koeffizient(int n, int m); // Pascalsches Dreieck, nte Spalte, mte Reihe int fact(int n); // Fakultät Funktion void ergebnis_ausgeben(int n, int anzahl_summanten); //Gibt Ergebnis aus //------------- H A U P T P R O G R A M M -------------------------------------- int main() { ueberschrift_ausgeben(); int n = n_eingeben(); //Bestimmen der Summanten (n+1) (Summanten = Zahl der benötigten Koeffizienten) int anzahl_summanten = n + 1; //Zahl der Summanten ist immer n+1 cout<<"Zahl der Summanten: "<<anzahl_summanten<<endl;; cout<<endl; ergebnis_ausgeben(n, anzahl_summanten); cout<<"fertig"; return 0; }; //######################################################################################## //------------- F U N K T I O N E N -------------------------------------------- void ueberschrift_ausgeben() { cout<<"###############################"<<endl; cout<<"# Programm zum zur Berechnung #"<<endl; cout<<"# von Funktionen der Form #"<<endl; cout<<"# (a+^n #"<<endl; cout<<"###############################"<<endl; cout<<endl; }; int n_eingeben() { cout<<"Geben sie n ein: "; int n; cin>>n; if(n<0) { cout<<"Nur positive Zahlen!"<<endl; n = n_eingeben(); }; return n; }; int fact(int n) // Fakultät Funktion { if(n==0) return 1; else return n*fact(n-1); }; int koeffizient(int n, int m) // Pascalsches Dreieck, nte Spalte, mte Reihe { int tmp_factN = fact(n); int tmp_factM = fact(m); int tmp_factMn = fact(n-m); return tmp_factN / (tmp_factM * tmp_factMn); }; void ergebnis_ausgeben(int n, int anzahl_summanten) { //Ergebniss ausgeben cout<<"(a+^"<<n<<" = "<<endl; cout<<" "; //Formatierung der Ausgabe for(int y=0; y<=anzahl_summanten; y++) { cout<<" "<<koeffizient(n, y); cout<<" * "; cout<< "a^"<<n-y<<" * "<<"b^"<<n-(n-y); cout<<endl; if(y<anzahl_summanten-1) { cout<<" + "; }; }; }; [/code]
-
wow... funktioniert... hätte ich gar nicht mehr zu hoffen gewagt... Danke euch!
-
Dieses Programm ist nach der oben genannten Metode geschrieben. Es wird aber einfach <nichts> ausgegeben... ... wo liegt der Fehler? #include <iostream> using namespace std; int fact(int n); // Fakultät Funktion int pascDreieck(int n, int m); int main() { cout<<pascDreieck(4,2); return 0; }; int fact(int n) // Fakultät Funktion { if(n==0) return 1; else return n*fact(n-1); }; int pascDreieck(int n, int m) { int tmp_factN = fact(n); int tmp_factM = fact(m); int tmp_factMn = fact(m-n); return tmp_factN / (tmp_factM * tmp_factMn); };
-
Aso... verstanden... Trotzdem nochmal zum verdeutlichen: n!/[m!*(n-m)!] also: fac(n) / [fac(m)*fac(m-n)] stimmt das?
-
Das Array brauche ich um die Koeffizienten zwischenzuspeichern... Ich will das Ergebniss als Term ausgeben. Bsp: (a+^2 = a^2 + 2ab + b^2 (gekürtzt... vollständige Version siehe unten: ) = 1*a^2*b^0 + 2*a^1*b^1+ 1*a^0*b^2 Was fällt auf? 1. Die Zahl der Summanten ist (immer) n+1. 2. Jeder Summant hat die Form: x*a^y*b^z , wobei x der Koeffizient ist. 3. Die Koeffizienten lassen sich aus dem Pascalschen Dreieck ablesen. In unserem Fall sind die Koeffizienten 1,2,1 Dazu das Pascalsche Dreieck bis zur Stelle 2 (n) 0: 1 1: 11 2: 121 4. noch einige andere besondere Merkmale, auf die es hier nicht ankommt... Wenn ich das Ergebniss als ausmultiplizierten Term ausgeben will muss ich wohl oder übel die Koeffizienten in einem dynamischen Array zwischenspeichern... oder? Danke für den Tipp mit der Fakultät-Funktion... werde mich mal dran ausprobieren... mfg Jonsc1 EDIT: Mein bisheriger (sehr umständlicher, und kaum verständlicher) Lösungsansatz der leider nicht funktioniert... sry das die Kommentare fehlen, ich editier sie später rein... int reihe[10]; int letze_reihe[10]; void pascal_reihe(int n) { letze_reihe[0] = 1; letze_reihe[1] = 1; for(int i=1; i<=n; i++) { reihe[0] = 1; for(int j=1; j<n; j++) { reihe[j] = letze_reihe[j-1] + letze_reihe[j]; }; reihe[n] = 1; for(int k=0; k<i; k++) { reihe[k] = letze_reihe[k]; }; }; };
-
Bin gerade dabei aus Spass ein Programm zu schreiben das jede Gleichung der Form (a+^n lösen kann. Dazu brauche ich eine Funktion die mir die Zahlen des Pascalschen Dreiecks in ein Array schreibt.... Da ich an diesem Punkt langsam verzweifle bitte ich hier mal um Hilfe. 1 <.. das muss in ein Array wenn 0 übergeben wird 11 <.. 1 121 <.. 2 1331 <.. 3 14641 <.. 4 usw... Sry das ich das Problem jetzt nicht genauer schildern kann, bin wirklich fertig weil ich schon seit Stunden an dem Problem arbeite... Morgen wenn ich wieder ein wenig Kraft geschopft habe stell ich noch dazu zu was das ganze gut ist mfg Jonsc1
-
Auch wenn es jetzt komisch klingt... Für Anfänger ist meiner Meinung nach das Buch "c++ für Spieleprogrammierer" von Heiko Kalista absolut zu empfehlen. Es fängt bei einfachen DOS Anwendungen (input, output, variablen etc..) an, geht dann aber zu komplexeren Themen über, spricht ausführlich über objektiorientiertes Programmieren und gibt in den letzen 3 Kapiteln nochmal Einblicke in die STL und die Programmierung mit der WinAPI. Es sind Grundlagen - keine Frage. Aber es lohnt sich! Man kann gut drauf aufbauen. Der besondere Gag an der Sache ist, das alle Themen - wie der Titel schon sagt - recht ansprechend im Bezug auf Spieleprogrammierung behandelt werden. Macht das ganze meiner Meinung nach interessanter. Das Buch kostet (wenn ich es jetzt recht in Erinnerung habe) 34€ und beinhaltet die Autoren-Version (Programme dürfen nicht kommerziell verwendet werden) von Microsoft Visual c++ 6.0 und noch einige Extras... Kannst es dir ja mal auf amazon.de bzw. weltbild.de anschaun. EDIT: Nochmal ausdrücklich: Es bezieht sich auf c++! Aber das steht ja auch im Titel mfg Jonsc1
-
So weit bin ich noch nicht Noch nicht gelernt...
-
Logisch... soll ja auch ein Konstruktor sein... Also einfach aus "int stack_size = -1" ein "stack_size = -1" gemacht und schon läufts... und wegen so was hab ich mir ne Stunde lang den Kopf zerbrochen... Danke dir!
-
Moin... mal wieder ein kleines c++ Anfängerproblem. Ich habe mir eine Klasse StackAsFixedVector geschrieben. Also einen Stack der auf einem nicht dynamischen Array basiert. Hier die Implementierung der Klasse StackAsFixedVector. Der ganze Spass steht in der Datei "J_StackAsFixedVector": // int read_top Oberstes Element lesen // void clear_top Oberstes Element entfernen // void write_top(wert) Ein Element obendrauflegen // void clear Stack leeren // bool empty Ist der Stack leer? class StackAsFixedVector { private: int data[5]; int stack_size; public: StackAsFixedVector() //Konstruktor { int stack_size = -1; } int read_top()//Oberstes Element lesen { return data[stack_size]; } void clear_top()//Oberstes Element entfernen { stack_size = stack_size-1; } void write_top(int wert)//Ein Element obendrauflegen { stack_size = stack_size + 1; data[stack_size] = wert; } void clear()//Stack leeren { stack_size = -1; } bool empty()//Ist der Stack leer? { return stack_size == -1; } }; und nun hier die Implementierung der main.cpp: #include <iostream> #include "J_StackAsFixedVector.h" using namespace std; int main() { StackAsFixedVector stack; //Stack erzeugen cout<<"Zahl eingeben: "; int zahl; cin>>zahl; stack.write_top(zahl); cin.get(); cin.get(); } Das Programm wird zwar kompiliert, bricht aber mit der folgenden Fehlermeldung ab nachdem die Zahl eingegeben wurde und stack.write_top(zahl) aufgerufen wird: "Unbenannt3.exe hat ein Problem festgestellt und muss beendet werden." Kann mich irgendjemand auf den Fehler im Code aufmerksam machen den ich gemacht haben muss? mfg Jonsc1
-
bits und bytes - ich komm nicht mehr klar
Jonsc1 antwortete auf karl4ever's Thema in Prüfungsaufgaben und -lösungen
Naja... 100 Mbit/s ist die Geschwindigkeit eines Standart LAN's... Ich verstehe also ehrlich gesagt nicht warum dir 12.5 MB/s unrealistisch erscheinen... -
Kannst du nen kleinen Beispielcode anhängen um das zu verdeutlichen?
-
Steinigt mich, aber ich hab mal wieder ne total dumme Frage: Ersteinmal der betroffene Code in C++: #include <iostream> using namespace std; int main() [ string name; string strasse; cout<<"Name: "; cin>>name; cout<<"Strasse: "; cin>>strasse; ] Wenn man nun als Namen "max" eingibt ist alles in bester Ordnung. Wenn man aber "max mustermann" eingibt wird "max" in die Variable name geschrieben, und "mustermann" in die Variable strasse. Wollte nun fragen wie man das anstellt das alles in eine Variable geschrieben wird, inclusive dem Leerzeichen.
-
Dazu muss aber windows.h includiert werden... Kleines Anwendungsbeispiel: #include <windows.h> #include <iostream> using namespace std; int main() { HWND hwnd; hwnd=FindWindow("ConsoleWindowClass", NULL); MoveWindow(hwnd, 0, 0, 100, 100, TRUE); cout<<"Hallo!"; cin.get(); }
-
Moin Moin... Nach nem groben Einstieg in C++ hab ich mir jetzt mal diese Sache WinApi angeschaut... Dazu einige Fragen. 1. Inwiefern kann ich "Standart" C++ Code aus meiner main() Funktion in der neuen Winmain() Funktion verwenden? Gibt es Unterschiede? Lassen sich main() und winmain() gleichzeitig verwenden? Gibt es bei winmain() Funktionen? (Wie?) Hab da noch nicht den richtigen Durchblick... 2. Folgender Code öffnet (wenn der Compiler die ganze Sache entsprechend linkt) ein kleines Fenster mit dem Text "Hallo!" und nem Ok Button. Wie ist es möglich diesen Text Variabel zu halten... so das beispielsweise eine Zahl aus einer Variable ausgegeben wird, oder eine Zeichenkette? #include <windows.h> int WINAPI WinMain(HINSTANCE hI, HINSTANCE, TCHAR*, int) { MessageBox(NULL, "Hallo!", "", MB_OK); return 0; }
-
Danke für die Anregungen... Schreib ich eben NOCH ne neue... Und ja, Basic Umsteiger trifft die Sache genau.. P.s.: Die Sache mit der Einrückung scheint ein Problem von DevC++ zu sein... Wenn du dir die Arbeit machen willst kannst du es ja mal so posten wie es deiner Meinung nach Übersichtlicher wäre... bin halt Anfänger... :floet:
-
Beasts and Bumkins (oder so ähnlich geschrieben) Eins meiner ersten Windows-Spiele...
-
Stimmt... Hab die Funktion nochmals komplett neu geschrieben... Jetzt läuft sie aber wirklich... Wer einen Fehler findet bitte bescheid sagen! #include <iostream> using namespace std; //---------------------- FUNKTIONEN ----------------------------------------------------------- bool istprim(int kandidat) // Funktion die überprüft ob der übergebene Wert "Kandidat" eine Primzahl ist { int aktuellezahl = 1; int letzezahl = kandidat; int teiler = 0; if(kandidat == 1) //Fängt die 1 ab, die genau genommen keine Primzahl ist return false; // while(aktuellezahl<=letzezahl) { if(kandidat%aktuellezahl == 0) teiler = teiler + 1; aktuellezahl = aktuellezahl + 1; } if(teiler>2) //wenn die Zahl mehr als 2 Teiler hat (1 und sich selbst) ist sie keine Primzahl return false; else //Ansonsten ist sie eine return true; } //--------------------------------------------------------------------------------------------- //------------------------ HAUPTPPROGRAMM ------------------------------------------------------- int main() { cout<<"Geben sie die Zahl ein, bis zu der alle Primzahlen aufgelistet werden sollen: "<<endl; int maximum; cin>>maximum; cout<<endl; int zahl = 1; bool prim; do { prim = istprim(zahl); if(prim == true) { cout<<zahl<<endl; }; zahl=zahl+1; }while (zahl<=maximum); cin.get(); cin.get(); } //--------------------------------------------------------------------------------------------------
-
Danke euch beiden für die Antworten... Ich hänge gleich noch ne Frage hintendran weil ich absolut am verzweifeln bin... Dieses Programm hier soll die Primzahlen von 1-100 ausgeben (wenn ihr nähere Erklärungen braucht, einfach sagen) Es gibt aber bei Programmstart einfach alle Zahlen von 1-100 aus. Ich hock seit 2 Stunden dran und finde den Fehler nicht, langsam geht mir die Lust aus... hab schon die bool Funktion durch eine int Funktion erstetzt, klappt immer noch nicht... Naja, hier der Code: EDIT: HAB DEN FEHLER GEFUNDEN! in der if schleife hab ich statt dem Vergleich "==" die Zuweisung "=" verwendet... hab jetzt auch die int Funktion wieder durch ne bool Funktion erstetzt und das Programm läuft... Lasse den Fehlerhaften Code trotzdem mal hier drin stehen, damit jeder sieht was mein Problem war. #include <iostream> using namespace std; //---------------------- FUNKTIONEN ----------------------------------------------------------- int istprim(int kandidat) { for(int teiler=2;teiler<kandidat-1;teiler=teiler+1) { if(kandidat%teiler == 0) return 1; else return 2; } } //--------------------------------------------------------------------------------------------- //------------------------ HAUPTPPROGRAMM ------------------------------------------------------- int main() { int zahl = 1; do { int prim = istprim(zahl); if (prim = 2); cout<<zahl<<endl; zahl=zahl+1; }while (zahl<=100); cin.get(); cin.get(); } //--------------------------------------------------------------------------------------------------
-
Moin Moin... Hab erst vor kurzer Zeit mit c++ angefangen und tappe noch mehr oder weniger im dunklen. Hab ein Programm geschrieben das prüft ob ein eingegebenes Jahr ein Schaltjahr ist. Mein aktueller Code schaut so aus: #include <iostream> using namespace std; //---------------- FUNKTIONEN ----------------------------------------------------------- bool istSchaltjahr(int Jahr) // Funktion prüft ob das übergebene Jahr ein Schaltjahr ist { bool schaltjahr = false; if (Jahr%4 == 0) // Wenn das Jahr sich durch 4 teilen lässt ist es ein Schaltjahr schaltjahr = true; if (Jahr%100==0) //Wenn das Jahr sich durch 100 teilen lässt ist es kein Schaltjahr schaltjahr = false; if (Jahr%400==0) //Es sei denn es ist durch 400 teilbar, dann ist es ein Schaltjahr schaltjahr = true; return schaltjahr; }; //------------------ HAUPTPROGRAMM ------------------------------------------------------- int main() { int Jahr; cout<<"Geben sie bitte das Jahr ein: "; cin>>Jahr; bool schaltjahr; schaltjahr=istSchaltjahr(Jahr); if (schaltjahr==true) cout<<"Das Jahr ist ein Schaltjahr!"<<endl; if (schaltjahr==false) cout<<"Das Jahr ist kein Schaltjahr!"<<endl; cout<<"Programm durchgelaufen, oder Programmfehler!"<<endl; cin.get(); cin.get(); }; //------------------------------------------------------------------------------------------------ Wenn ich jetzt aber die Funtion unter das Hauptprogramm setze bekomme ich vom Compiler (IDE = DevC++) die Meldung das die Funktion nicht bekannt ist... Gibt es eine Möglichkeit Funktionen nach dem Hauptprogramm zu schreiben? mfg Jonsc1
-
Danke! Ich sollte also immer diese beiden Sachen laden, auch bei kleineren Programmen? So, jetzt hab ich mal eine etwas dümmere Frage... ich lese das immer überall aber ganz durschaut habe ich es noch nicht: Was versteht man unter Objektorientierter Programmierung?
-
Und aufgrund des Touts die nächste(n) Frage(n): Diese beiden Zeilen: Was bedeuten die im genauen? Dieses #include scheint ne Art Bibiothek aufzurufen die dann später Eingaben über die Tastatur etc. ermöglicht... das hab ich irgendwo gelesen. Aber zu was ist der using namespace std Befehl da?
-
Nun, hab bisher immer mit Basic.. (das alte Qbasic) "programmiert", daher hab ich die Angewohnheit solche globalen Variablen zu verwenden... Danke für die beiden Tutorials, werden mir noch ein Stück weiterhelfen!
-
Ah! Verstanden, danke! Wenn man eine Variable innerhalb einer Klammer definiert, ohne das sie zuvor ausserhalb einer Klammer definiert wurde, verliert sie dann ausserhalb der Klammer ebenfalls ihren Wert? Also ist sie dann auch eine Lokale, und keine Globale Variable?