Mogę dostać jakoś podpowiedź jak zrobić tabliczkę mnożenia do 15 w pętlach for ? Najpierw ją stworzyć potem wypisać.
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 ;)
Dwie pętle zagnieżdżone, jedna w drugiej. Każda leci od 1 do 15. W środku instrukcja wypisania iloczynu.
Natomiast jeżeli chcesz aby była ładnie sformatowana możesz użyć Tabulatora '\t'
#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 ?
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ć.
chciałem tabliczkę mnożenia od liczby 0 do 15. Zaraz spróbuje ramkę zrobić.
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;
}
Zgubiłeś printf...
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?
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
To dobrze, ale nie widzę związku.
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;
}
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ć.
użycie %4d robi 3 spacje (znak stoi na 4 miejscu od nowej linii) od początku linijki i potem od kolejnych elementów ?
%4d
wypisuje liczbę, jeśli długość wypisanego stringa byłaby mniejsza niż 4, dokleja spacje z lewej.
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.
Wypisz przed pętlą. Pamiętaj, że kolumna nagłówkowa też ma kilka spacji, więc musisz je na początku linii dodać.
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;
}
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);
?
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:
| | |
| | |
| | |
| |
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);
}
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;
}
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;
}
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;
}