Am mare nevoie de ajutor cu aceste doua probleme, dau coroana !!
Răspunsuri la întrebare
Răspuns:
2.
#include <iostream>
using namespace std;
int main(){
int n,i=0,v[11];
cin>>n;
while(n){
++i;
v[i]=n%10;
n/=10;
}
//a
for(int j=1;j<i;++j){
for(int k=j+1;k<=i;++k){
if(v[j]<v[k])
swap(v[j],v[k]);
}
}
for(int j=1;j<=i;++j)
cout<<v[j];
cout<<endl;
//b
for(int j=1;j<i;++j){
for(int k=j+1;k<=i;++k){
if(v[j]==v[k]){
for(int m=j;m<i;++m){
v[m]=v[m+1];
}
i--;
}
if(v[j]<v[k])
swap(v[j],v[k]);
}
}
for(int j=1;j<=i;++j)
cout<<v[j];
return 0;
}
3.
#include <iostream>
#include <fstream>
using namespace std;
fstream f("numere.in");
ofstream f2("numere.out");
int n,v[1000000];
void QuickSort(int st,int dr){
int m = (st + dr) / 2;
int i = st , j = dr, d = 0;
while(i < j)
{
if(v[i] > v[j])
{
swap(v[i],v[j]);
d = 1 - d;
}
i += d;
j -= 1 - d;
}
QuickSort(st , i - 1);
QuickSort(i + 1 , dr);
}
int main(){
int i=0;
while(f){
i++;
f>>v[i];
}
QuickSort(1,i);
for(int j=1;j<=i;++j)
f2<<v[i]<<" ";
f.close();
f2.close();
return 0;
}
Explicație: