Strukturausgabe
-
Hey Leute ...
Ich soll ein Programm schreiben, welches folgende Struktur als Ausgabe erzeugt, wobei die Strukturgröße durch eine eingegebene Variable verändert werden kann. (Nutzen Sie nicht mehr als zwei Schleifen)
für a=5 :
0
00
000
0000
00000
0000
000
00
0#include<iostream> using namespace std; void func(); int main() { int a; cout << "Geben Sie die Strukturgroesse ein: "; cin >> a; int a; while(a>0) { cout << "0" << endl; a=a-1; } system("pause"); } void func() { }
-
Ich weiß nun aber nicht wirklich weiter

Wie kann ich denn immer wieder eine neue 0 mit anhängen?

-
Lass ein endl weg...
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Vanilly schrieb:
(Nutzen Sie nicht mehr als zwei Schleifen)
Das ist die sinnlosteste Anforderung, die man sich überhaupt stellen kann. Ausbildung als FI/AE, wenn ich mich nicht irre.
#include <iostream> #include <cmath> using namespace std; int main() { cout<<"Geben Sie die Strukturgroesse ein: "; int n; cin>>n; n=2*n-1; for(int i=1;i<n+1;++i){ for(int j=0;j<i&&j<n+1-i;++j) cout<<'0'; cout<<'\n'; } }
-
Es gibt verschiedene Möglichkeiten das zu lösen, bpsw. so (denkansatz, ungetestet):
int ct(6); for(int a(0);a < ct * 2;++a) std::cout << std::string((a >= ct)? 2 * ct - a : a, '0') << '\n';@volkard: Komm, mit dem Code kannst du nicht beim IOCCC gewinnen...
-
So, alle Schleifen weg. Und sogar hübsch dokumentiert. Und im Aussehen ein wenig an die Vorgabe angepaßt.
#include <iostream>//für cout #include <cstdlib>//für system() using namespace std; void func(int,int); int main() { int a;//a anlegen cout<<"Geben Sie die Strukturgroesse ein: "; cin>>a;//Eingabe func(a,1),//Ausgabe func(a-1,2);//Ausgabe system("pause");//aus Tastendruck warten } void func(int a,int b) { int c;//Hilfsvariable c if(!a) return;//Abbruchbedingung c=a--;//Zuweisung if(b<2) func(a,b);//rekursiver Aufruf if(!b) cout<<b;//waagerecht if(b>0) func(c,!b),//senkrecht cout<<endl;//der notwendige Zeilenumbruch if(b>1) func(a,b);//senkrecht }
-
Ah - endlich mal wieder eine kleine Programmieraufgabe, wenn auch etwas sehr mickrig

Der Input sei a, dann müssen 2a-1 Zeilen ausgegeben werden. Die Anzahl der 0'en hat einen Knick, das erreicht man z.B. mit der Funktion abs.
Wenn die Nummer der Zeile von 1 bis 2a-1 läuft, dann ist die Anzahl der 0'en = a-abs(a-spaltenNr). Lässt man die spaltenNr statt von 1 bis 2a-1 von 1-a bis a-1 laufen, so vereinfacht sich das ganze noch etwas.
Mehrere gleiche Zeichen lassen sich mit setfill und setw ausgeben. Dann ist nur eine Schleife notwendig.#include <iostream> #include <iomanip> // setw #include <cmath> // abs int main() { int a; if( cin >> a ) { cout.fill('0'); for( int spaltenNr = 1-a; spaltenNr < a; ++spaltenNr ) cout << setw(a - abs(spaltenNr)) << '0' << "\n"; } cout << endl; // flush return 0; }Gruß
Werner