Tabliczka mnożenia do 15 w pętlach for

0

Mogę dostać jakoś podpowiedź jak zrobić tabliczkę mnożenia do 15 w pętlach for ? Najpierw ją stworzyć potem wypisać.

2
dla każdego rzędu
	dla każdej kolumny
		ustaw wartość na nr. kolumny * nr. rzędu

Wyświetlania powinieneś móc się domyślić na podstawie tego ;)

2

Dwie pętle zagnieżdżone, jedna w drugiej. Każda leci od 1 do 15. W środku instrukcja wypisania iloczynu.

0

Natomiast jeżeli chcesz aby była ładnie sformatowana możesz użyć Tabulatora '\t'

0
#include <stdio.h>


int main()
{
    int i,j,wynik;
    for(i = 0; i <= 15; i ++)
    {
        for(j = 0; j <= 15; j++)
        {
           wynik = i * j;
           printf("%d * %d = %d\n",i,j,wynik);
        }
    }

    return 0;
}

może być coś takiego ? Gdybym chciał wyniki wyświetlić w innych pętlach to wynik do tablicy bym musiał zapisać czy jest inny sposób ? I drugie pytanie jak mogę zrobić aby wyniki były wyświetlane w ramce ?

1

Iterujesz teraz po 16 razy, nie 15.

Tak, musiałbyś zapisać.

Wystarczy, że odpowiednio sformatujesz wyniki. Zastanów się co robisz w każdej iteracji wewnętrznego i zewnętrznego fora i co za tym możesz wyświetlać.

0

chciałem tabliczkę mnożenia od liczby 0 do 15. Zaraz spróbuje ramkę zrobić.

0

chciałem spróbować tak, ale nie idzie:

#include <stdio.h>


int main()
{
    int i,j,tablica[15][15];
    for(i = 0; i <= 15; i ++)
    {
        for(j = 0; j <= 15; j++)
        {
           tablica[i][j] = i * j;
        }
    }
    for(j = 0; j <= 15; j++)
    {
        for(i = 0; i <= 15; i++)
        {
            tablica[i][j];
        }
    }
    return 0;
}
1

Zgubiłeś printf...

1

Tablicę masz o wymiarach 15x15, a iterujesz 16 razy w każdą stronę. Nie widzisz problemu?

Dlaczego zamieniłeś i i j w drugiej pętli?

0

bo chcę żeby mi wyświetlało taką ramkę:
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9

a w środku wyniki mnożenia

0

To dobrze, ale nie widzę związku.

0

poprawiłem rozmiar tablicy, ale na razie to mi wyświetla wyniki

#include <stdio.h>


int main()
{
    int i,j,tablica[16][16];
    for(i = 0; i <= 15; i ++)
    {
        for(j = 0; j <= 15; j++)
        {
           tablica[i][j] = i * j;
        }
    }
    for(j = 0; j <= 15; j++)
    {
        for(i = 0; i <= 15; i++)
        {
            printf("%d",tablica[i][j]);
        }
        printf("\n");
    }
    return 0;
}


 
0

Masz wyżej napisane: za mała tablica, brak wyświetlenia. Jeśli chodzi o ładnie sformatowane wyświetlanie, poczytaj o formacie funkcji printf, coś w stylu %4d powinno się przydać.

0

użycie %4d robi 3 spacje (znak stoi na 4 miejscu od nowej linii) od początku linijki i potem od kolejnych elementów ?

1

%4d wypisuje liczbę, jeśli długość wypisanego stringa byłaby mniejsza niż 4, dokleja spacje z lewej.

0

jeszcze chciałem dodać liczb z boku i na górze aby widzieć przez co mnożę. Z liczbami z boku poradziłem, ale liczby na górze nie stoją równomiernie, zmieniając na %5d nie wiem czemu ale też nie idzie.

0

Wypisz przed pętlą. Pamiętaj, że kolumna nagłówkowa też ma kilka spacji, więc musisz je na początku linii dodać.

0

zrobiłem tak, tylko powiedz czy taki kod może być ? Bo jest on trochę zagmatwany:

#include <stdio.h>


int main()
{
    int i,j,tablica[16][16];
    for(i = 0; i <= 15; i ++)
    {
        for(j = 0; j <= 15; j++)
        {
           tablica[i][j] = i * j;
        }
    }
    for(i = 0; i <=15 ; i++)
    {
        if(i == 0) printf("%6d",i);
        if(i > 0)  printf("%4d",i);
    }
    printf("\n");

    for(j = 0; j <= 15; j++)
    {
        if(j >= 10) printf("%d",j);
        else printf("%2d",j);

        for(i = 0; i <= 15; i++)
        {
            printf("%4d",tablica[i][j]);
        }
        printf("\n");
    }
    return 0;
}
 
0
        if(i == 0) printf("%6d",i);
        if(i > 0)  printf("%4d",i);

Wyrzuć pierwszego printfa przed pętlę, pozbędziesz się zbędnego warunku.

        if(j >= 10) printf("%d",j);
        else printf("%2d",j);

Nie łatwiej po prostu

printf("%2d",j);

?

0

ok dzięki wyszło, mój ostateczny kod:

#include <stdio.h>


int main()
{
    int i,j,tablica[16][16];
    for(i = 0; i <= 15; i ++)
    {
        for(j = 0; j <= 15; j++)
        {
           tablica[i][j] = i * j;
        }
    }

    printf("%6d",0);
    for(i = 0; i <=15 ; i++)
    {
        if(i > 0)  printf("%4d",i);
    }
    printf("\n");

    for(j = 0; j <= 15; j++)
    {
        printf("%2d",j);

        for(i = 0; i <= 15; i++)
        {
            printf("%4d",tablica[i][j]);
        }
        printf("\n");
    }
    return 0;
}


 

a czy jeszcze da się w prosty sposób do tabelki dodać kreski między poszczególnymi cyframi czy to dla zaawansowanych? Chodzi mi o coś takiego:

| | |

| | |
| | |
| |

0

Pewnie, że się da, ale postaraj się trochę sam pokombinować, to naprawdę nie jest trudne.

    for(i = 0; i <=15 ; i++)
    {
        if(i > 0)  printf("%4d",i);
    }

Nie lepiej iterować od 1?

    for(i = 1; i <=15 ; i++)
    {
        printf("%4d",i);
    }
1

Staraj się trzymać zasady DRY:

#include <stdio.h>

int main()
  {
   int y,x;
   for(y=0;y<17;++y,printf("\n"))
     {
      for(x=0;x<17;++x)
        {
         if(!(x+y)) printf("  ");
         else if(!x) printf("%2d",y-1);
         else if(!y) printf("%4d",x-1);
         else printf("%4d",(y-1)*(x-1));
        }
     }
   return 0;
  }

http://ideone.com/jzHXNg

Nie wiem po kiego ci mnożenie przez 0, wg mnie wystarczy:

#include <stdio.h>

int main()
  {
   int y,x;
   for(y=0;y<16;++y,printf("\n"))
     {
      for(x=0;x<16;++x)
        {
         if(!(x+y)) printf("  ");
         else if(!x) printf("%2d",y);
         else if(!y) printf("%4d",x);
         else printf("%4d",y*x);
        }
     }
   return 0;
  }

http://ideone.com/tlDxBq

Po chwili zastanowienia się:

#include <stdio.h>
#include <math.h>

int main()
  {
   int y,x;
   for(printf("  "),y=0;y<16;++y,printf("\n")) for(x=!y;x<16;++x) printf("%*d",4-!x-!x,(x?x:1)*(y?y:1));
   return 0;
  }

http://ideone.com/63PakW

1 użytkowników online, w tym zalogowanych: 0, gości: 1