You are on page 1of 6

2)

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("elev.in");
void qs(int v[],int st,int dr)
{
int mij,d=0,i=st,j=dr,aux;
if(st<dr)
{
mij=(st+dr)/2;
if(v[st]>v[mij])
{
aux=v[st];
v[st]=v[mij];
v[mij]=aux;
}
while(i<j)
{
if(v[i]>v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
d=1-d;
}
i=i+d;
j=j-(1-d);
}
qs(v,st,i-1);
qs(v,i+1,dr);
}
}
int main()
{
int v[1001],k,i=1,n;
while(fin>>n)
{
v[i]=n;
i++;
}
i-1;
qs(v,1,i);
for(int d=1;d<=i;d++)
{
k=v[d];
while(k>9)
{
k=k/10;
}
if(k==5)
cout<<v[d]<<' ';
}
return 0;

1)

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("persoane.in");
struct angajat{
int salar;
int pozitie;
}v[1001],b[1001];
void interclasare(angajat v[],int st,int dr)
{
int mij=(st+dr)/2,i=st,j=mij+1,k=0;
while(i<=mij&&j<=dr)
{
if(v[i].salar<v[j].salar)
b[++k]=v[i++];
else
b[++k]=v[j++];
}
while(i<=mij)
b[++k]=v[i++];
while(j<=dr)
b[++k]=v[j++];
for(i=st,j=1;i<=dr;i++,j++)
v[i]=b[j];
}
void sortare(angajat v[],int st,int dr)
{
if(st<dr)
{
int mij=(st+dr)/2;
sortare(v,st,mij);
sortare(v,mij+1,dr);
interclasare(v,st,dr);
}
}
int main()
{
int n,i;
cin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i].salar;
v[i].pozitie=i;
}
int k=n-n/3+1;
sortare(v,k,n);
for(i=n;i>=k;i--)
cout<<v[i].pozitie<<' ';
return 0;
}

3)

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("nr.in");
struct numar{
int oglindit;
int valoare;
};
numar b[1001];
void interclasare(numar a[],int st,int dr)
{
int mij=(st+dr)/2,i=st,j=mij+1,k=0;
while(i<=mij&&j<=dr)
{
if(a[i].valoare<a[j].valoare)
b[++k]=a[i++];
else
b[++k]=a[j++];
}
while(i<=mij)
b[++k]=a[i++];
while(j<=dr)
b[++k]=a[j++];
for(i=st,j=1;i<=dr;i++,j++)
a[i]=b[j];
}
void sortare(numar a[],int st,int dr)
{
if(st<dr)
{
int mij=(st+dr)/2;
sortare(a,st,mij);
sortare(a,mij+1,dr);
interclasare(a,st,dr);
}
}numar a[1001],ogl,k;
int main()
{
int n,i=1,d;

while(fin>>n)
{
a[i].valoare=n;
i++;
}
i--;
sortare(a,1,i);
for(d=i;d>=1;d--)
{
k.valoare=a[d].valoare;
ogl.valoare=0;
while(k.valoare!=0)
{
ogl.valoare=ogl.valoare*10+k.valoare%10;
k.valoare=k.valoare/10;
}
cout<<a[d].valoare<<' '<<ogl.valoare<<' ';
}
return 0;
}

#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("elevi.in");
struct elev{
short matricol;
long long CNP;
char clasa[6];
float media;
};
elev a[1001],b[1001];
void interclasare(elev a[],int st,int dr)
{
int mij=(st+dr)/2,i=st,j=mij+1,k=0;
while(i<=mij&&j<=dr)
{
if(a[i].media<a[j].media)
b[++k]=a[i++];
else if(a[i].media==a[j].media&&strcmp(a[i].clasa,a[j].clasa)>0)
{
b[++k]=a[i++];
}
else if(a[i].media==a[j].media&&strcmp(a[i].clasa,a[j].clasa)<0)
b[++k]=a[j++];
else if(a[i].media>a[j].media)
b[++k]=a[j++];
}
while(i<=mij)
b[++k]=a[i++];
while(j<=dr)
b[++k]=a[j++];
for(i=st,j=1;i<=dr;i++,j++)
a[i]=b[j];
}
void sortare(elev a[],int st,int dr)
{
if(st<dr)
{
int mij=(st+dr)/2;
sortare(a,st,mij);
sortare(a,mij+1,dr);
interclasare(a,st,dr);
}
}
int main()
{
int n,i;

fin>>n;
fin.get();
for(i=1;i<=n;i++)
{

a[i].matricol=i;
fin.get(a[i].clasa,5);
fin>>a[i].CNP;
fin>>a[i].media;
fin.get();
}
sortare(a,1,n);
for(i=n;i>=1;i--)
{
cout<<a[i].matricol<<' '<<a[i].clasa<<' '<<a[i].CNP<<' '<<a[i].media;
cout<<endl;

}
return 0;
}

You might also like