"Se citește un vector din fișierul bac.txt, să se ordoneze crescător elementele pare din vector, rămânând pe pozițiile lor și descrescător elementele impare, rămânând pe locurile lor." Va rog să mă ajutați, am nevoie urgentă pentru ca primesc nota pe problemă!!
Răspunsuri la întrebare
Program C++
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bac.txt");
int main(){
int n;
int i, j;
int v[100];
//Citire date
f>>n;
for(i=0;i<n;i++) f >> v[i];
//Sortare elemente algoritm, algoritm derivat selection sort
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
//Daca v[i] si v[j] au paritate diferita treci la elementul urmator
if(v[i]%2!=v[j]%2) continue;
//Daca numerele v[i],v[j] sunt pare sorteaza crescator
if(v[i]%2==0 && v[j]<v[i])swap(v[i],v[j]);
//Daca numerele v[i],v[j] sunt impare sorteaza descrescator
if(v[i]%2==1 && v[j]>v[i])swap(v[i],v[j]);
}
}
//Afiseaza vectorul sortat
for(i=0;i<n;i++) cout << v[i] << " ";
}
#include<iostream>
#include<fstream>
using namespace std;
int main() {
int v[100001], n = 0;
ifstream f("bac.txt");
while (f >> v[++n]);
n--;
cout << n << endl;
int sem;
do {
sem = 1;
for (int i = 1; i <= n - 1; i++)
if (v[i] % 2 == 0)
for (int j = i + 1; j <= n; j++)
if (v[j] % 2 == 0)
if (v[i] > v[j]) {
swap(v[i], v[j]);
sem = 0;
}
} while (sem != 1);
do {
sem = 1;
for (int i = 1; i <= n - 1; i++)
if (v[i] % 2 == 1)
for (int j = i + 1; j <= n; j++)
if (v[j] % 2 == 1)
if (v[i] > v[j]) {
swap(v[i], v[j]);
sem = 0;
}
} while (sem != 1);
for (int i = 1; i <= n; i++)
cout << v[i] << ' ';
return 0;
}