matematykaszkolna.pl
Zadanie w c. alex13: Zadanie w języku C, polegające na wypisywaniu "na przekątnej" jedynek, a na reszcie miejsc zera. Czyli tablica 5x5. 10000 01000 00100 00010 00001 Napisałem kod, lecz nie działa on tak jak chciałem, wypisuje wszystko jedno pod drugim. Gdyby ktoś mógł sprawdzić: https://pastebin.com/bH3fWFmg (wrzucam na pastebina)
16 lip 23:34
Adamm: bo napisałeś żeby ci wypisywał wszystko pod drugim wrzuć printf("%4d \n",tablica[i][j]); poza pętlę for I zera też popodstawiaj, nie jestem pewien, ale chyba mogą przyjmować dowolne wartości z pamięci
16 lip 23:37
alex13: dając poza pętle, wtedy już wyświetlają się śmieci w tablicy
16 lip 23:51
Dziadek Mróz: Ponieważ nie masz zdefiniowanych innych pól w tablicy, musisz dodać linię zerującą pozostał pola
16 lip 23:58
jc: #include <stdio.h> int main(){ int tab[5][5]; for(int i=0; i<5; i++){ for(int j=0; j<5; j++){ tab[i][j]=(i==j); printf("%d ", tab[i][j]); } printf("\n"); } }
17 lip 06:08
alex13: Dzięki wszystki, działa emotka A wie ktoś może jak zmienić kod aby jedynki wyświetlane były po prawej stronie przekątnej? 111111 011111 000111 000011 000001 Myślałem żeby zrezygnować z tablic i zrobić to tylko na dwóch pętlach for oraz warunku if... to wypisze 1 else ... wypisze 0
17 lip 12:56
alex13: Poprawna tablica, tam wyżej źle napisałem.: 11111 01111 00111 00011 00001
17 lip 13:09
xyz: tam gdzie jest i==j to zamien na i <= j
17 lip 13:10
xyz: wroc. jednak nie. wez to zrob normalnie − brut forcem na pałe. czyli zrób ifem #include <stdio.h> int main(){ int tab[5][5]; for(int i=0; i<5; i++){ for(int j=0; j<5; j++){ if(j >= i) tab[i][j]=1; else tab[i][j] = 0; printf("%d ", tab[i][j]); } printf("\n"); } } Czyli j >= i to znaczy że jeżeli numer kolumny jest większy od numeru wiersza to daj 1 a w przeciwnym razie napisz 0.
17 lip 13:12
alex13: Dzięki wielkie, wykorzystałem tą zamianę na j >= i i działa elegancko. Natomiast tak jak pisałem wcześniej nie używam teraz tablic tylko po prostu w mainie daje dwie pętle z ifem i elsem, a zamiast wyświetlania tablicy daje printf 0 lub 1. Czym różnią się te dwa sposoby od strony praktycznej? Nie używając tablicy, alokuje mniej pamięci? Może tak być? Zadanie tylko dla siebie było , pytam z ciekawości emotka
17 lip 14:25
Pytający: Tak, bez tablicy nie alokujesz lokalnie 5*5*sizeof(int) bajtów. I jak sam dla siebie z ciekawości pisałeś, to można by też tak: #include <stdio.h> int main() { for(int i=11111; i; i/=10) { printf("%05d\n", i); } } To tak "dla zabawy", bo bardziej intuicyjne czy czytelniejsze raczej nie jest.
17 lip 16:31
xyz: int ma 4 bajty, tablica 5x5 = 25 komorek 25 komorek * 4 bajty = 100 bajtow wiec teoretycznie oszczedzasz 100bajtow = 0,1 kB czyli kiedys by ludzie klaskali ale teraz nikt sie tym nie przejmuje.
17 lip 16:57
b.: no nie wiem, czy się nie przejmuje, jednak deklarowanie tablicy, gdy jest ona do niczego niepotrzeba to marnotrawstwo
17 lip 22:16