marfrei2 Geschrieben 10. März 2005 Geschrieben 10. März 2005 Hey. Muss für die Schule mit C++ das "Pascalsche Dreieck" programmieren. Hab's schon stundenlang versucht, aber bekomm es nicht hin. HILFEEEE Es wäre gut, wenn man die Anzahl der Zeilen und Spalten angeben könnte. Außerdem sollte es schon ein Dreieck sein. Das, was ich bins jetzt hinbekommen hab, sieht so aus: #include <iostream.h> #include <iomanip.h> int main() { int x[10][10],i,j; //Erste Zeile setzen x[0][0] = 1; // Erstes Element, Sonderbehandlung for (i = 1; i < 100; i++) { x[0] = 0; } //Zeilen aus ihren Vorgängern berechnen for (i = 1; i < 10; i++) { x[0] = 1; for (j = 1; j < 10; j++) { x[j] = x[i-1][j-1] + x[i-1][j]; } } //Matrix ausgeben: for (int i = 0; i< 10; ++i) { for (int j = 0; j < 10; ++j) { cout<<setw(4); cout<<x[j]; } cout<<"\n"; } cin.get();cin.get(); } Ist allerdings nicht ausreichend. Vielleicht könnt ihr mir ja helfen =) MFG marfrei2 Zitieren
Manfred.Becker Geschrieben 10. März 2005 Geschrieben 10. März 2005 Hi, ich hab das hier gefunden: Beispiel Schau mal rein. Zitieren
bobjob Geschrieben 10. März 2005 Geschrieben 10. März 2005 Werde mal versuchen zu helfen, auch wenn meine C++ Kenntnisse bescheiden sind. Hey. Muss für die Schule mit C++ das "Pascalsche Dreieck" programmieren. Hab's schon stundenlang versucht, aber bekomm es nicht hin. HILFEEEE Es wäre gut, wenn man die Anzahl der Zeilen und Spalten angeben könnte. Außerdem sollte es schon ein Dreieck sein. Das, was ich bins jetzt hinbekommen hab, sieht so aus: #include <iostream.h> #include <iomanip.h> Laut Norm ohne ".h" Endung. Zudem fehlt noch die Zeile: using namespace std; wenn du mit nem ANSI-kompatiblen Kompiler arbeitest. int main() { int x[10][10],i,j; //Erste Zeile setzen x[0][0] = 1; // Erstes Element, Sonderbehandlung for (i = 1; i < 100; i++) { x[0] = 0; } 1.)Wieso hier 100 und in der Initialisierung nur 10 Elemente? 2.)Zudem sollte die 1 doch in der Mitte stehen und nicht am Rand, siehe [1]. 3.)Es ist besser wenn du erstmal das gesammte Feld Null setzt, sonst kann da alles mögliche stehen, war zumindest bei mir so //Zeilen aus ihren Vorgängern berechnen for (i = 1; i < 10; i++) { x[0] = 1; Wieso x[0] jedesmal 1 setzen? for (j = 1; j < 10; j++) { x[j] = x[i-1][j-1] + x[i-1][j]; } } x[i-1][j] ist falsch, überleg mal, die Ergebnisse stehen im Dreieck nie unter dem Element der darüberliegenden Zeile. //Matrix ausgeben: for (int i = 0; i< 10; ++i) { for (int j = 0; j < 10; ++j) { cout<<setw(4); cout<<x[j]; } cout<<"\n"; } cin.get();cin.get(); } Ist allerdings nicht ausreichend. Vielleicht könnt ihr mir ja helfen =) MFG marfrei2 Ich hoffe das reicht an Hilfestellung [1]Pascalsches Dreieck Zitieren
marfrei2 Geschrieben 11. März 2005 Autor Geschrieben 11. März 2005 hmm ich weis ja nicht mal wofür using namespace std; da ist. hab das schon öfter gesehen, aber wenn ich es ausprobieren wollte, gibt der mir immer n fehler aus. "name of namespace expected" oda sowas ^^ danke für die hilfestellung, aber bis jetzt kann ich damit nicht wirklich viel anfangen Laut Norm ohne ".h" Endung. << wieso ohne ".h"? was bringt das? wo liegt der unterschied? Zitieren
bobjob Geschrieben 11. März 2005 Geschrieben 11. März 2005 Erstmal, was für Compiler(Version, Alter) nutzt du, sonst artet das hier in Rätselraten aus. using namespace std; Gibt nach meinem Verständnis an, das für alle Befehle im Quelltext die Funktion des C++ - ANSI-Standards benutzt werden. Ohne .h werden die neuen Header benutzt, welche nach Norm funktionieren sollten. Zitieren
Klotzkopp Geschrieben 11. März 2005 Geschrieben 11. März 2005 Laut Norm ohne ".h" Endung. << wieso ohne ".h"? was bringt das? wo liegt der unterschied?iostream und iostream.h sind zwei unterschiedliche Dateien. Die Form mit .h ist die veraltete, bei der alle Klassen, Objekte und Funktionen im globalen Namensraum liegen. Die Form ohne .h ist die, die dem aktuellen Standard entspricht. Dabei liegen alle Objekte, Klassen und Funktionen im Namensraum std. Neuere Compiler beschweren sich oft bei der Benutzung der alten Headerdateien, wenn sie sie überhaupt noch bereitstellen. Zitieren
marfrei2 Geschrieben 11. März 2005 Autor Geschrieben 11. März 2005 aso. gut zu wissen. hab c++ irgendwann mal von der schule bekommen, d.h. ich denke nicht es wirklich auf dem neusten stand ist. > Borland C++ V 5.01 Hab es mal ohne ".h" ausprobiert und dafür "using namespace std;" verwendet. Beim compilieren bekomme ich die Fehlermeldung "Fehler: Namespace name expected". hilft euch das weiter? +hoff+ Zitieren
bobjob Geschrieben 11. März 2005 Geschrieben 11. März 2005 aso. gut zu wissen. hab c++ irgendwann mal von der schule bekommen, d.h. ich denke nicht es wirklich auf dem neusten stand ist. > Borland C++ V 5.01 Probier mal: #include <iostream> using namespace std; int main() { } zu kompilieren, wenn da eine Fehlermeldung kommt, ist der Kompiler zu alt. Probier dann: http://www.bloodshed.net/dev/devcpp.html und dort die Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) runterladen, lass dich von dem beta nicht verrückt machen, die Software läuft bei mir stabil. Hab es mal ohne ".h" ausprobiert und dafür "using namespace std;" verwendet. Beim compilieren bekomme ich die Fehlermeldung "Fehler: Namespace name expected". Sollte an der Version liegen. Zitieren
Bubble Geschrieben 12. März 2005 Geschrieben 12. März 2005 using namespace std; Gibt nach meinem Verständnis an, das für alle Befehle im Quelltext die Funktion des C++ - ANSI-Standards benutzt werden. Nein. using namespace ... erspart Dir lediglich die Schreibarbeit alle Namen innerhalb eines Namespaces ohne den Namen des Namespaces selbst benutzen zu können. Die Angabe ist erforderlich, da bei Verwendung von <iostream> (ohne .h) alle Namen im Namespace std liegen. Beispiel: Nach der vorangehenden Angabe von "using namespace std;" kann man anstatt "std::cout" einfach "cout" schreiben. Man kann natürlich trotz using namespace ... jederzeit vollständig qualifizierte Namen verwenden. Die Verwendung von <iostream.h> ist veraltet und sollte nicht mehr verwendet werden (neuere Compiler unterstützen diesen Header teils gar nicht mehr), allerdings kommt älterer damit geschriebener Code ohne "using namespace ..." oder die Angabe des Namensraumes aus (in der Form "std::..."), da keiner verwendet wurde. Man konnte folglich direkt cout schreiben. Zitieren
marfrei2 Geschrieben 14. März 2005 Autor Geschrieben 14. März 2005 Ok =) ich lad den Compiler grad runter. Die frage ob ".h" oder nicht haben wir jetzt geklärt. Allerdings bin ich mit meinem Dreieck immer noch nicht weiter Zitieren
bobjob Geschrieben 14. März 2005 Geschrieben 14. März 2005 Liest dir nochmal meinen ersten Beitrag durch, da steht schon alles. bobjob Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.