Cerința
Se dau înălțimile a n copii, numerotați de la 1 la n, exprimate prin numere naturale. Afișați numerele de ordine ale copiilor în ordinea crescătoare a înălțimii lor.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații, reprezentând, în ordine, înălțimile copiilor.
Date de ieșire
Programul va afișa pe ecran n numere naturale distincte cuprinse între 1 și n, separate prin exact un spațiu, reprezentând numerele de ordine ale copiilor în ordinea crescătoare a înălțimii.
Restricții și precizări
1 ≤ n ≤ 1000
înălțimile copiilor vor fi numere naturale distincte din intervalul [1 , 10000]
Exemplu
Intrare
7
8 20 16 14 10 4 12
Ieșire
6 1 5 7 4 3 2
//in C++
//618
Răspunsuri la întrebare
Răspuns de
1
Folosesti o structura. Din greseala le-am ordonat descrescator de aceea ultimul for e mai ciudat dar este corect.
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
struct elev
{
unsigned h, nr;
};
void schimbare(unsigned &a, unsigned &b)
{
unsigned aux=a;
a=b;
b=aux;
}
void inserare(elev v[], unsigned &n, unsigned a, unsigned j)
{
v[n+1].h=a;
int i=n+1;
while(i>1 && v[i].h>v[i-1].h)
{ schimbare(v[i].h, v[i-1].h);
schimbare(v[i].nr, v[i-1].nr);
i--;
}
v[i].nr=j;
n++;
}
int main()
{ ifstream f("fisier.txt");
elev v[1000];
unsigned n, i, t=1, a;
f >> n;
for(i=1; i<=n; i++)
v[i].nr=0;
for(i=1; i<=n; i++)
{ f >> a;
inserare(v, t, a, i);
}
for(i=t-1; i>0; i--)
cout << v[i].nr << " ";
return 0;
}
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
struct elev
{
unsigned h, nr;
};
void schimbare(unsigned &a, unsigned &b)
{
unsigned aux=a;
a=b;
b=aux;
}
void inserare(elev v[], unsigned &n, unsigned a, unsigned j)
{
v[n+1].h=a;
int i=n+1;
while(i>1 && v[i].h>v[i-1].h)
{ schimbare(v[i].h, v[i-1].h);
schimbare(v[i].nr, v[i-1].nr);
i--;
}
v[i].nr=j;
n++;
}
int main()
{ ifstream f("fisier.txt");
elev v[1000];
unsigned n, i, t=1, a;
f >> n;
for(i=1; i<=n; i++)
v[i].nr=0;
for(i=1; i<=n; i++)
{ f >> a;
inserare(v, t, a, i);
}
for(i=t-1; i>0; i--)
cout << v[i].nr << " ";
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Biologie,
9 ani în urmă
Matematică,
9 ani în urmă