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