Wie kann ich dieses Muster in c ausgeben lassen?

LisamagPferde04  19.03.2021, 20:36

Nur mit einer for-Schleife oder auch mehreren?

lalalolololo 
Beitragsersteller
 19.03.2021, 20:37

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.


lalalolololo 
Beitragsersteller
 19.03.2021, 20:41

ich habe leider keine Ahnung wie sowas umzusetzen ist ich bin noch ein Anfänger

0
LisamagPferde04  19.03.2021, 20:47
@lalalolololo

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
  }
}
0

dann wollen wir dir mal helfen.

die funktion von schleifen sind dir bekannt?

welche es gibt und wie sie funktionieren?


lalalolololo 
Beitragsersteller
 19.03.2021, 20:53

ja das ist mir bekannt

0
Kiboman  19.03.2021, 21:00
@lalalolololo

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

0
lalalolololo 
Beitragsersteller
 19.03.2021, 21:17
@Kiboman

ganz ehrlich ich verstehe das nicht wie ich das machen soll dafür weiß ich noch zu wenig

0
Kiboman  20.03.2021, 01:52
@lalalolololo

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);
            }
        }
0
lalalolololo 
Beitragsersteller
 20.03.2021, 10:34
@Kiboman

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");

       

       

    }

     

   

    }

  }

}

0
Kiboman  20.03.2021, 11:03
@lalalolololo

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

0
lalalolololo 
Beitragsersteller
 20.03.2021, 11:39
@Kiboman

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.... 

0
Kiboman  20.03.2021, 12:50
@lalalolololo

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");
      }
    }

  }

}

0