Hejka, mam problem z zadaniem dotyczącym tablic dynamicznych w C.
Napisz program, który:
zapełni 100 elementową tablicę statyczną tabS wylosowanymi liczbami od 1 do 100
(funkcja losuj),
obliczy, ile z nich jest z podanego przedziału <a,b>, a następnie utworzy tablicę
dynamiczną odpowiedniego rozmiaru i zapełni ją tymi liczbami (funkcja
nowatabDyn z parametrami: wskaźnik do tablicy statycznej tabS, liczba jej
elementów n, przedziały a i b, wskaźnik do liczby elementów tablicy dynamicznej m;
funkcja zwraca wskaźnik do tablicy dynamicznej).
Wyświetl obydwie tablice. Wykorzystaj odpowiednie funkcje.
Do tej pory udało mi sie zrobić:
int wczytaj(int n, int tab[]);
int wyswietl(int n, int tab[]);
int ile1(int n, int tab[], int a, int b);
int *nowa(int *tab, int n, int a, int b, int *m);
int main(int argc, char *argv[])
{
int *m,a,b,n,i;
n=100;
a=45;
b=60;
m=0;
int tabS[n];
int *nowaT;
wczytaj(n,tabS);
wyswietl(n,tabS);
m = ile1(n,tabS,a,b);
printf("\n%d",m);
nowaT = nowa(tabS,n,a,b,m);
}
int wczytaj(int n, int tab[])
{
int i;
for (i=0; i<n; i++)
{
tab[i]=rand()%101;
}
}
int wyswietl(int n, int tab[])
{
int i;
for (i = 0; i<n; i++)
{
printf("%d ",tab[i]);
}
}
int ile1(int n, int tab[], int a, int b)
{
int i,m;
m=0;
for (i=0;i<n;i++)
{
if (tab[i]>a && tab[i]<b) m++;
}
return m;
}
int *nowa(int *tab, int n, int a, int b, int *m)
{
int i,j,k;
j=0;
int *nowa = (int*)malloc(*m*sizeof(int));
if (tab==NULL)
{
printf("Blad\n");
exit(EXIT_FAILURE);
};
for (i=0;i<m;i++)
{
if (tab[i]>a && tab[i]<b)
nowa[i]=a+rand()%b;
}
return nowa;
}
problem zaczyna się w tym drugim podpunkcie, ponieważ nie wiem jak dodać do tej nowej tablicy dynamicznej liczby z tej pierwszej statycznej, niestety program na końcu wyrzuca błąd :(
Będę wdzięczna za wszelka pomoc.