Wie kann ich dieses Muster in c ausgeben lassen?
Hallo, ich möchte gerne dieses Muster ausgeben lassen:
Axxxxxxxxx xAxxxxxxxx xxAxxxxxxx xxxAxxxxxx xxxxAxxxxx xxxxxAxxxx xxxxxxAxxx xxxxxxxAxx xxxxxxxxAx xxxxxxxxxA aber untereinander. Das soll ich laut Aufgabenstellung mit einer for-schleife machen ich bedanke mich schonmal im voraus für jede Antwort.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Nur mit einer for-Schleife oder auch mehreren?
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
wahrscheinlich verschachtelt
3 Antworten
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Eine Möglichkeit wären zwei geschachtelte for-Schleifen. Die äußere mit dem Laufindex i geht von 0 bis 9 und ist für die Zeilen.
Die innere mit dem Laufindex j geht von 0 bis 9 und ist für die Zeichen.
Dabei wird in der inneren für den Fall i==j ein „A“ ausgegebenen, sonst ein „x“.
Anschließend dann wieder in der äußeren noch ein Zeilenumbruch.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Ich erweitere mal deine Vorlage etwas weiter:
#include <stdio.h>
int main(){
for(int i = 0; i < 10; i++) {
for(TODO){
if(TODO){
//gebe A aus
}else{
//gebe x aus
}
}
//Zeilenumbruch ausgeben
}
}
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Das sind Lücken wo du dir noch überlegen müsstest was da Sinn macht.
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
.....
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
dann wollen wir dir mal helfen.
die funktion von schleifen sind dir bekannt?
welche es gibt und wie sie funktionieren?
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
dann schauen wir doch mal was du da hast.
du hast 10 zeilen die kannst du doch wunderbar in einer schleife ausgeben
ich schriebe in C# tut aber im prinzip nichts zur sache
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Console.Write("xxxxxxxxxx");
Console.Write(Environment.NewLine);
}
der nächste schritt, mit jeder zeile rückt da A eine stelle weiter wie kann man das realisieren.
i kannst du wunderbar dafür nehmen um zu wissen in welcher zeile du dich befindest.
verschachteln wir also mal die schleifen
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
for (int i2 = 0; i2 < 10; i2++)
{
Console.Write("x");
}
Console.Write(Environment.NewLine);
}
}
jetzt sehen wir das die ausgaben beider codes identisch ist.
im nächten schritt wollen wir die A an richtiger position reinbringen mach dir mal gedanken wie das funktioniert
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
ganz ehrlich ich verstehe das nicht wie ich das machen soll dafür weiß ich noch zu wenig
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
ok ausgangslage ist folgender code
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
for (int i2 = 0; i2 < 10; i2++)
{
Console.Write("x");
}
Console.Write(Environment.NewLine);
}
}
er zaubert dir 10 zeilen mit 10 x'en
der int i ist nicht nur ein zähler er sagt dir auch in welcher zeile du bist
i2 verrät dir welche stelle gerade geschrieben wird
in deinem schema sehen wir das in zeile 1 das zeichen 1 A ist
zeile 2 zeichen 2 = A
zeile 3 zeichen 3 = A
AHA! das können wir doch für und nutzen und daher baen wir eine IF bedigung ein
wenn zeile und zeichenstelle gleich ist mach mir ein A
und schon kommt das dabei raus
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
for (int i2 = 0; i2 < 10; i2++)
{
if (i==i2) Console.Write("A");
else Console.Write("x");
}
Console.Write(Environment.NewLine);
}
}
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
ok doch das hat mir jetzt wirklich geholfen also ich habe es jetzt wenigstens verstanden aber gesagt getan kommt das dabei raus:
xxxxxxxxAxxxxxxxxxx
xxxxxxxxxxAxxxxxxxx
xxxxxxxxxxxxAxxxxxx
xxxxxxxxxxxxxxAxxxx
xxxxxxxxxxxxxxxxAxx
xxxxxxxxxxxxxxxxxxA
xxxxxxxxxxxxxxxxxxx
und das ist der code:
int i,j;
for(i=0;i<10;i++) {
printf("\nx");
for(j=0;j<9;j++) {
printf("x");
if(i==j) {
printf("A");
}else {
printf("x");
}
}
}
}
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
sieh dir deinen code mal an, das problem ist du hast du viele x.
das ist nur ein flüchtigskeitsfehler, gennau genommen 2
stelle dir die frage warum sind da soviele zeichen und suche nach ausgabe die du eigentlich nicht willst
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Ich habe das jetzt so geändert das ich else raus genommen habe dann kommt das dabei rum:
xxxxxAxxxxx
xxxxxxAxxxx
xxxxxxxAxxx
xxxxxxxxAxx
xxxxxxxxxAx
xxxxxxxxxxA
xxxxxxxxxx also schonmal besser aber immernoch nicht so wie ich es mir wünsche wenn ich bei den anderen die x wegmache kommt auch nicht das erwünschte Ergebnis dabei raus....
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
ich helf dir mal auf die sprünge
int main()
{
int i, j;
int i, j;
for (i = 0; i < 10; i++) {
printf("\nx"); //wozu das x hier?
//Es soll doch nur ein zeilen umbruch sein. Und warum kommt ein Zeilenumbruch am anfang?
for (j = 0; j < 9; j++) { //warum keine 10?
printf("x"); //Warum das x hier?
if (i == j) {
printf("A");
}
else {
printf("x");
}
}
}
}
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
ich habe leider keine Ahnung wie sowas umzusetzen ist ich bin noch ein Anfänger