Witam,
Potrzebuję pomocy przy tym zadaniu:
Zadanie 1.
Napisz funkcję, która przyjmie automatycznie zaalokowaną tablicę liczb całkowitych, jej rozmiar oraz dwa wskaźniki na wskaźniki na liczby całkowite. Funkcja powinna dynamicznie utworzyć dwie tablice liczb całkowitch oraz zapisać ich adresy we wskaźnikowych argumentach funkcji. Funkcja powinna dla każdej wartości tablicy wejściowej policzyć odchylenie standardowe. Funkcja powinna w pierwszej z utworzonych tablic zapisać wartości, których odchylenie standardowe jest mniejsze lub równe 1, a w drugiej, wartości dla których jest ono większe niż 1. Funkcja powinna zwrócić rozmiar pierwszej z tablic. Jeżeli okazałoby się, że jedna z tablic będzie pusta, nie nalezy jej alokować, a zmiennej o adresie wskazywanym wskaźnikiem przekazanym w argumencie należy przypisać NULL.
Poniżej zamieszczam mój kod. Dlaczego nie mogę odwołać się w mainie do tablicy arr1 i arr2, której adresy ustawiam w funkcji do zmiennych **wsk1, **wsk2.
To mój pierwszy temat, więc z góry przepraszam za ewentualne błędy.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double odchylenieStandardowe(int *arr, int arrSize, int val)
{
double X, a;
int sum=0;
int i;
for(i=0; i<arrSize; ++i)
sum+=arr[i];
X = (double)sum/arrSize;
a = sqrt(pow(val-X,2));
return a;
}
int zadanie3(int *arr, int arrSize, int **pp1, int **pp2)
{
int *arr1, *arr2;
int i, j=0, k=0, size1=0, size2=0;
for(i=0; i<arrSize; ++i)
{
if(odchylenieStandardowe(arr, arrSize, arr[i])<=1)
size1++;
else
size2++;
}
if(size1>0)
{
arr1 = malloc(sizeof(int)*size1);
pp1 = &arr1;
}
else
pp1 = NULL;
if(size2>0)
{
arr2 = malloc(sizeof(int)*size1);
pp2 = &arr2;
}
else
pp2 = NULL;
for(i=0; i<arrSize; ++i)
{
if(odchylenieStandardowe(arr, arrSize, arr[i])<=1)
arr1[j++]=arr[i];
else
arr2[k++]=arr[i];
}
return size1;
}
int main()
{
int *tab;
tab = malloc(sizeof(int)*4);
tab[0]=100;tab[1]=13;tab[2]=12;tab[3]=11;
int **wsk1, **wsk2;
//wsk1 = NULL;
zadanie3(tab, 4, wsk1, wsk2);
printf("%p", wsk2);
return 0;
}