Să se scrie o aplicaţie C în care se generează aleator 20 de numere întregi cu valori mai mici
decât 50 (Folositi srand(), rand() si operatorul %). Să se scrie o funcţie care elimină din tabloul
unidimensional creat numerele impare, returnand noul tablou. Funcţia va utiliza pointeri. Afişati în
main( ) tabloul iniţial şi cel obţinut după eliminarea elementelor impare.
Răspunsuri la întrebare
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 50
// Functia care elimina din tabloul unidimensional creat numerele impare, returnand noul tablou
int* eliminate_odd_numbers(int *arr, int *size)
{
// Alocam memorie pentru noul tablou
int *new_arr = malloc(*size * sizeof(int));
// Numarul de elemente din noul tablou
int new_size = 0;
// Parcurgem tabloul initial si copiem numerele pare in noul tablou
for (int i = 0; i < *size; i++)
{
if (arr[i] % 2 == 0)
{
new_arr[new_size] = arr[i];
new_size++;
}
}
// Actualizam dimensiunea noului tablou
*size = new_size;
// Returnam noul tablou
return new_arr;
}
int main()
{
// Setam seed-ul generatorului de numere aleatoare
srand(time(NULL));
// Declaram si initializam tabloul initial
int arr[MAX_SIZE];
int size = 0;
// Generam 20 de numere aleatoare si le adaugam in tabloul initial
for (int i = 0; i < 20; i++)
{
int num = rand() % 50;
arr[size] = num;
size++;
}
// Afisam tabloul initial
printf("Tabloul initial:\n");
for (int i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
// Eliminam numerele impare din tabloul initial
int *new_arr = eliminate_odd_numbers(arr, &size);
// Afisam noul tablou
printf("Tabloul dupa eliminarea numerelor impare:\n");
for (int i = 0; i < size; i++)
{
printf("%d ", new_arr[i]);
}
printf("\n");
return 0;
}