Napisać funkcję, która przyjmuje jako argument tablicę liczb całkowitych i zwraca wskaźnik do tablicy zawierającej wyłącznie liczby dodatnie z tablicy przekazanej jako argument.
Byłbym bardzo wdzieczny.
Napisać funkcję, która przyjmuje jako argument tablicę liczb całkowitych i zwraca wskaźnik do tablicy zawierającej wyłącznie liczby dodatnie z tablicy przekazanej jako argument.
Byłbym bardzo wdzieczny.
Posprzątać mój pokój.
Z góry dziękuję.
Oczekujesz pomocy czy rozwiązania za Ciebie?
int FUNKCJA (int *A[])
{
int rozmiar = 3;
A = (int*) malloc(rozmiar * sizeof(*A));
for ()
}
int main()
{
int A[] = {-3, -2, -1, 2, 5, 8};
int i;
for (i=0; i < 5; i++)
{
printf ("Index: %d Liczba: %d \n" , i, A[i]);
}
}
Póki co mam tyle :)
Na początek parę uwag:
int FUNKCJA (int *A[])
// 1) nie nazywaj funkcji wielkimi literami - zazwyczaj konwencja jest taka,
// że pierwsze słowo jest z małej, a kolejne z dużej, np. sortArray()
// 2) int *A[] oznacza tablicę wskaźników (wskazujących na wartość typu int)
// także tutaj powinno być po prostu int *A albo int A[]
{
int rozmiar = 3; // czemu z góry założenie, że tych elementów będzie równo 3?
A = (int*) malloc(rozmiar * sizeof(*A)); // nie lepiej sizeof(int)? no ale bez znaczenia w gruncie rzeczy
for ()
}
int main()
{
int A[] = {-3, -2, -1, 2, 5, 8};
int i;
for (i=0; i < 5; i++) // zaraz ktoś się przyczepi, że to nie jest ++i :D
{
printf ("Index: %d Liczba: %d \n" , i, A[i]);
}
// skoro main jest typu int, to coś zwraca - brak return 0
}
Można to zadanie zrobić np. tak:
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
int *copyPositive(const int *, size_t, size_t);
size_t countPositive(const int *, size_t);
int main()
{
int tab1[] = {-3, -2, -1, 2, 5, 8};
size_t size1 = sizeof(tab1) / sizeof(tab1[0]); // ustal ile jest elemnentow w tab1
size_t positive = countPositive(tab1, size1); // ustal, ile jest elementow dodatnich w tab1
for (int i = 0; i < size1; ++i)
printf ("Indeks: %d Liczba: %d \n" , i, tab1[i]);
int *tab2 = copyPositive(tab1, size1, positive); // skopiuj liczby wieksze od 0 z tab1 do tab2
printf("\n");
for(int i = 0; i < positive; ++i)
printf ("Indeks: %d Liczba: %d \n" , i, tab2[i]);
free(tab2);
return 0;
}
int *copyPositive(const int *tab1, size_t size1, size_t positive)
{
int *tab2, j = 0;
// zaalokuj pamiec dla tab2
tab2 = (int *)malloc(positive * sizeof(int));
//skopiuj dodatnie z tab1 do tab2
for(size_t i = 0; i < size1; ++i)
if(tab1[i] > 0)
tab2[j++] = tab1[i];
return tab2;
}
size_t countPositive(const int *tab, size_t size)
{
size_t counter = 0;
for(size_t i = 0; i < size; ++i)
if(tab[i] > 0)
++counter;
return counter;
}