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

Creați un program în C (nu C++) cu următoarele condiții:

Fie v un vector de intregi. Să se genereze doi vectori: unul care conține elemente pozitive și altul care conține elemente negative.​

Răspunsuri la întrebare

Răspuns de andriesboss92
1

Răspuns:

#include <stdio.h>

int main()

{

   int n, nr_poz = 0 , nr_neg = 0;

   printf("Dati n = ");

   scanf("%d",&n);

   int v[n], pozitive[n], negative[n];

   

   for(int i = 0 ; i < n ; i++ )

   {

       scanf("%d",&v[i]);

       if ( v[i] >= 0 )

       {

           pozitive[nr_poz] = v[i];

           nr_poz++;

       }

       

       if ( v[i] < 0 )

       {

           negative[nr_neg] = v[i];

           nr_neg++;

       }

   }

   

   if ( nr_neg == 0 )

       printf("Nu exista numere negative in vectorul v[].");

   else

       {

           printf("Numerele negative din vectorul v[] sunt: ");

           for(int i = 0 ; i < nr_neg; i++ )

               printf("%d ", negative[i]);

       }

   

   if ( nr_poz == 0 )

       printf("Nu exista numere pozitive in vectorul v[].");

   else

       {

       printf("\nNumerele pozitive din vectorul v[] sunt: ");

       for(int i = 0 ; i < nr_poz; i++ )

           printf("%d ", pozitive[i]);

       }

}

Explicație:

Declaram variabilele de care avem nevoie ( adica n, nr_poz si nr_neg )

Citim cate numere se vor afla in vectorul v.

Declaram un vector v care are dimensiunea n. De ce? In mod general se opteaza pentru o declaratie de genul v[100], un caz particular, insa daca citesti 200 de elemente programul tau se opreste cand este introdus al 100-lea element nepermitand introducerea altor numere deoarece are o restrictie fixa. Considera declaratia int v[n] ca un caz general intrucat de fiecare data cand vei rula programul tu vei putea citi cate elemente doresti in limita tipului de variabila declarata ( int, float, double etc. ).

Declar si ceilalti doi vectori de aceeasi dimensiune n deoarece este posibil ca vectorul v sa aiba doar numere pozitive ceea ce inseamna ca vectorul pozitive va avea acelasi numar de elemente ca vectorul v. IDEM pentru vectorul negative.

In for citim elementele vectorului v dar in acelasi timp verificam daca acel element citit este negativ sau pozitiv. Daca este pozitiv ( >= 0 ) vectorul pozitive va retine pe pozitia nr_poz ( implicit 0 ) numarul pozitiv din vectorul v aflat pe pozitia i dupa care vom creste cu o unitate valoarea variabilei nr_poz astfel incat urmatorul numar pozitiv sa nu se suprapuna cu precedentul --- crestem pozitia in vectorul pozitive --- . Acelasi concept si pentru cazul in care numarul citit v[i] este negativ.

Ce a fost mai greu a trecut. Dupa ce s-a ajuns la n elemente citite atunci va trebui sa afisam elementele celor doi vectori. Am luat in calcul cazul in care nu exista elemente fie pozitive fie negative si am afisat mesaj corespunzator ( Nu exista numere pozitive / negative in vectorul v[]. ).

Daca exista elemente in vectori le afisam.

Mult succes :)

Alte întrebări interesante