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

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

0
rothauerleon 
Fragesteller
 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

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

}

0
rothauerleon 
Fragesteller
 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;

  }

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.

0
rothauerleon 
Fragesteller
 17.11.2019, 21:17
@gfntom

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

0

For-Schleife würde mehr Sinn machen.


rothauerleon 
Fragesteller
 17.11.2019, 20:41

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

0