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.
Nur mit einer for-Schleife oder auch mehreren?
wahrscheinlich verschachtelt
3 Antworten
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.
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
}
}
Das sind Lücken wo du dir noch überlegen müsstest was da Sinn macht.
.....
dann wollen wir dir mal helfen.
die funktion von schleifen sind dir bekannt?
welche es gibt und wie sie funktionieren?
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
ganz ehrlich ich verstehe das nicht wie ich das machen soll dafür weiß ich noch zu wenig
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);
}
}
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");
}
}
}
}
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
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....
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");
}
}
}
}
ich habe leider keine Ahnung wie sowas umzusetzen ist ich bin noch ein Anfänger