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