Informatică, întrebare adresată de pcvlad02owy79p, 8 ani în urmă

De pe pb info
#618
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

#272
Cerinţa

Se dă un şir cu n elemente, numere naturale nenule cu cel mult 4 cifre fiecare. Afişaţi, în ordine crescătoare, valorile pare din şir. Dacă şirul nu conţine nici o valoare pară, se va afişa mesajul nu exista.
Date de intrare

Fişierul de intrare paresort.in conţine pe prima linie numărul n; urmează cele n elemente ale şirului, dispuse pe mai multe linii, separate prin spaţii.
Date de ieşire

Fişierul de ieşire paresort.out va conţine pe prima linie numărul m, numărul de valori pare din şir, iar pe a două linie aceste valori, în ordine crescătoare, separate printr-un spaţiu. Dacă şirul nu conţine nici un număr par, fişierul va conţine doar mesajul nu exista, situat pe prima linie.
Restricţii şi precizări

1 ≤ n ≤ 1000
Exemplu

paresort.in

9
2 3 1 4 7 2 5 8 6

paresort.out

5
2 2 4 6 8
Imi trebuie urgent!

Răspunsuri la întrebare

Răspuns de boiustef
3

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("paresort.in");

ofstream g("paresort.out");

short fr[10000], num, i, j, n, m;

int main()

{

   f >> n;

   for (i=1; i<=n; ++i)

   {

       f >> num;

       if (num%2==0)

       {

           ++m; ++fr[num];

       }

   }

   if (m==0) g << "nu exista";

   else {

           g << m << "\n";

   for (i=2; i<10000; i+=2)

   {

       if (fr[i])

          for (j=1; j<=fr[i]; ++j)

              g << i << " ";

   }

   }

}

Explicație:

#include <iostream>

using namespace std;

int v[1001], w[1001];

int main()

{

  int n, i, t, j;

  cin >> n;

  for (i=1; i<=n; ++i)

  {

      cin >> v[i]; w[i]=i;

  }

  for (i=1; i<n; ++i)

  {

       for (j=i+1; j<=n; ++j)

       {

           if (v[j]<v[i]) { t=v[i]; v[i]=v[j]; v[j]=t;

                t=w[i]; w[i]=w[j]; w[j]=t; }

       }

  }

  for (i=1; i<=n; ++i) cout << w[i] << " ";

  cout << "\n";

   return 0;

}

Alte întrebări interesante