matematykaszkolna.pl
c Tomek: Funkcja pierwsza ma zwracać liczbę bitów 1, funkcja 2 w przypadku gdy 3 bit jest 1, zerować parzyste bity, inaczej nieparzyste. Tablica jest wypełniona losowymi wartościami Ale nie działa poprawnie, pomocy! #include<stdio.h> #include<stdlib.h> int fun1(int); int fun2(int); int main() { int i,j,kolumny,wiersze; printf("Podaj wymiary tablicy: \n"); if(scanf("%d %d", &wiersze, &kolumny)!=2) { printf("Zle dane"); return 0; } int **tab=(int**)malloc(wiersze*sizeof(int*)); for(i=0; i<wiersze; ++i) { tab[i]=(int*)malloc(kolumny*sizeof(int)); for(j=0; j<kolumny; ++j) { tab[i][j]=(rand() %4095)+1; printf(" %5d", tab[i][j]); } printf("\n"); } convert(tab,wiersze,kolumny,fun1); convert(tab,wiersze,kolumny,fun2); return 0; } int fun1( int x) { if(x==1) return 1; if(x%2==1) return 1+fun1(x/2); else return fun1(x/2); } int fun2(int x) { if((x&4)==4) x=x&0101010101010101; else x=x&1010101010101010; return x; } int convert(int **tab,int wiersz, int kolumna, int (*fun)(int)) { int i,j; tab =(int**)malloc(wiersz*sizeof(int*)); for(i=0;i<wiersz;i++) { tab[i]=(int*)malloc(kolumna*sizeof(int)); for(j=0;j<kolumna;j++) { tab[i][j]=fun(tab[i][j]); // printf(" %5d", tab[i][j]); } //printf("\n"); } for(i=0;i<wiersz;i++) { for(j=0;j<kolumna;j++) { printf(" %5d", tab[i][j]); } printf("\n"); } return 0; }
17 maj 20:52