Informatică, întrebare adresată de alexandracrisan24, 8 ani în urmă

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

Răspuns de Rayzen
2

#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;

}

Alte întrebări interesante