C- Programmieren, 1mal1 mit while schleife?

4 Antworten

Eine Tabelle breitet sich bekanntermaßen in zwei Richtungen aus - vertikal und horizontal.

Das heißt, du benötigst eine Schleife, die dir die Spalten schafft und eine, die die Reihen durchläuft.

Pseudocode:

Zähle von 0 bis Zeilenanzahl
  Zähle von 0 bis Spaltenanzahl
    Schreibe Zelleninhalt
  Schreibe Zeilenumbruch 
int col=1,row=1;
while(row<11){
  printf("%3d ",col*row);
  col=++col%11;
  if (col==0){
    ++row;col=1;printf("\n");
  }
}

Etwas dreckig, aber Spaß muß halt auch mal sein :-)

Warum machst du das mit einer while-Schleife?

Für solche Fälle sind for-Schleifen viel angebrachter.

Zwei verschachtelte for-Schleifen für zahl1 und zahl2 und fertig.


rothauerleon 
Beitragsersteller
 17.11.2019, 20:41

1.Habe for-Schleifen noch nicht gelernt.

2.Müssen wir es in der Schule mit der While-Schleife machen.

gfntom  17.11.2019, 20:44
@rothauerleon

ok. dann musste du zwei while-Schleifen schacteln. Die innere hast du schon fertig. Um die herum brauchst du eine weitere, in der du die andere Zahl hochzählst (und die eine Zahl wieder zurücksetzt)

rothauerleon 
Beitragsersteller
 17.11.2019, 20:48
@gfntom

habs nicht hinbekommen -.- könntest du mir vielleicht zeigen wie es genau geht? sry bin noch ein Programmieranfänger

gfntom  17.11.2019, 20:54
@rothauerleon

Programmieren lernt man nur durch selber machen.

Ich schreib dir einen "Pseudocode" den du selbst noch umsetzen musst.

Schleife zahl3 von 1 bis 10
{
Schleife zahl2 von 1 bis 11
{zahl = zahl2*zahl3}

}

rothauerleon 
Beitragsersteller
 17.11.2019, 21:10
@gfntom

#include <stdio.h>

#include <stdlib.h>

int main ()

{

  int zahl;

  int zahl2=0;

  int zahl3=0;

while (zahl3>=0&&zahl3<11)

  {

  zahl3++;

  while(zahl2>=0&&zahl2<11)

  {

    zahl=zahl2*zahl3;

    printf("%d * %d = %d\n\n", zahl2, zahl3, zahl);

    zahl2++;

    }

    }

   return 0;

  }

gfntom  17.11.2019, 21:16
@rothauerleon

ich sagte doch:

Um die herum brauchst du eine weitere, in der du die andere Zahl hochzählst ( und die eine Zahl wieder zurücksetzt)

zahl3++:
zahl2 = 0;

sonst steht zahl2 nach dem ersten Durchlauf der Schleife auf 11 und die innere Schleife wird nicht mehr ausgeführt.

rothauerleon 
Beitragsersteller
 17.11.2019, 21:17
@gfntom

Ah okay:D Habs jetzt geschafft. Vielen Dank :D

For-Schleife würde mehr Sinn machen.


rothauerleon 
Beitragsersteller
 17.11.2019, 20:41

Wir müssen es in der Schule mit der While-Schleife machen.