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