Zum Inhalt springen

Pascalsches Dreieck mit C++?


marfrei2

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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+

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...