Informatică, întrebare adresată de sikesjack1, 9 ani în urmă

Buna!
Ma poate ajuta cineva la problema #244 CifreOrd de pe pbinfo??

Cerinţa
Se dau n cifre zecimale. Să se afişeze aceste cifre în ordine crescătoare.

Date de intrare
Fişierul de intrare cifreord.in conţine pe prima linie numărul n, iar pe următoarele linii n cifre zecimale separate prin spaţii.

Date de ieşire
Fişierul de ieşire cifreord.out va conţine cele n cifre ordonate crescător, câte 20 pe o linie, valorile de pe fiecare linie fiind separate prin spaţii. Ultima linie a fişierului poate conţine mai puţin de 20 de valori.

Restricţii şi precizări
1 ≤ n ≤ 100.000

Exemplu
cifreord.in

25
1 1 2 7 3 5 1 5
3 6 7 8 0 1 0 5
6 3 8 2
9 7 9 5 7
cifreord.out

0 0 1 1 1 1 2 2 3 3 3 5 5 5 5 6 6 7 7 7
7 8 8 9 9

Aici e solutia mea, functioneaza bine, dar primeste 0 pct pe site :(

#include
#include
using namespace std;
ifstream in("cifreord.in");
ofstream out("cifreord.out");
int n,i,j,ctr=0,v[100001];
int main()
{
in >>n;
for (i=1; i<=n;i++)
in >>v[i];
for (i=1; i for (j=i+1; j<=n;j++)
if (v[i]>v[j])
swap (v[i],v[j]);
for (i=1; i<=n;i++)
{ if (ctr<=20)
{
out < ctr++;
}
else
{
ctr=0;
out < }
}
return 0;
}


boiustef: după completare a lui afişezi din el, cîte 20 pe linie
boiustef: şi deci nu ai nevoie nici de sortare
boiustef: dacă până la 22:00 nu te ajută nimeni sau nu reuşeşti singur, postez eu.. Succese. Dacă ai nevoie de ajutor, întreabă
sikesjack1: am tinut cont de ce ai spus si am facut algoritmul cumva, si am primit 100 de puncte, multumesc!!
boiustef: cumva??? :)))
boiustef: îţi propun când vrei să pui cod, aduci numai link-ul lui de pe pastebin.com
cum voi face eu acum să trimit cod ca să-l compari cu al tău...
boiustef: https://pastebin.com/cW4aKRVL
boiustef: deoarece vezi ce trunchiere face aici, că după se perde logica şi nu înţelegi ce cod ai pus
sikesjack1: for (i=1; i<=fr[cif]; ++i), aici, inseamna ca daca am de exemplu cifra 5 citita de 2 ori, atunci, voi afisa cif de 2 ori -->for ul cu i se executa de 2 ori?
boiustef: ok

Răspunsuri la întrebare

Răspuns de pmarian98
1

Răspuns:

#include <iomanip>

#include <fstream>

#include <iostream>

#include <cassert>

using namespace std;

ifstream fin("cifreord.in");

ofstream fout("cifreord.out");

int a[10];

int main(){

int x,n;

fin >> n;

for( ; n ; n--){

 fin >> x;

 a[x] ++;

}

x = 0;

for(int i=0;i<10;++i)

 for(int j = 1; j<= a[i] ; ++j){

  fout << i << " ";

  x ++;

  if(x%20 == 0)

   fout << endl;

 }

return 0;

}

Explicație:

Alte întrebări interesante