odonarea crescatoare doar a elementelor negative dintr-un vector, cele pozitive ramanand pe aceleasi pozitii.
cu explicatie
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int a[100],n,i,j,aux;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
/// Citirea numarului de componente si elementele vectorului
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
/// Prin cele doua for-uri vei putea sa realizeazi o pereche de doua elemente, umul de pe pozitia i si unul de pe pozitia j, dar pana la fianl, se vor compara toate elementele de pe fiecare pozitie
if(a[i]<0 && a[j]<0) /// Conditia ca ambele componente ale vectorului sa fie negative
if(a[i]>a[j]) /// Daca afirmatia este valida, iar in cazul in care componenta de pe pozitia i este mai mica decat cea de pe j, atunci se realizeaza interscimbarea celor doua valori
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
/// Afisarea vectorului
return 0;
}
Explicație:
La fel, comentariile sunt doar pentru explicatii, nu trebuie sa le scrii =))
► Explicatie:
Folosim algoritmul de sortare prin selectie cu o modificare minora:
Daca i este pozitiv sau 0 sarim peste acest i folosind instructiunea continue; Aceasta intrerupe rulearea curenta a buclei repetitive si o continua de la urmatoarea iteratie (se trece simplu la urmatorul i daca exista).
Acelasi lucru in facem si pentru j.
In loc de swap(vec[i], vec[j]) poti face interschimbarea de mana, ca la prima lectie de info:
{
int aux = vec[i];
vec[i] = vec[j];
vec[j] = aux;
}
► Cod C++:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int vec[100];
int nr_elemente;
cout << "Numar elemente : ";
cin >> nr_elemente;
cout << "Introduceti vectorul : ";
for (int i = 0; i < nr_elemente; i++) {
cin >> vec[i];
}
for (int i = 0; i < nr_elemente - 1; i++) {
//Sarim peste i pozitiv
if (vec[i] >= 0) continue;
for (int j = i + 1; j < nr_elemente; j++) {
//Sarim peste j pozitiv
if (vec[j] >= 0) continue;
//Stim sigur ca elementele vec[i] si vec[j] sunt negative, le interschimbam daca nu sunt in ordinea buna
if (vec[i] > vec[j]) swap(vec[i], vec[j]);
}
}
cout << "Vector sortat : ";
for (int i = 0; i < nr_elemente; i++) cout << vec[i] << " ";
}