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:
#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 :)