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

Buna!
Ma poate ajuta cineva cu problema asta?
#1005 Numere 8 de pe pbinfo
Cerința
Se dă o listă cu numere naturale. Să se determine numerele naturale nenule cu cel mult patru cifre care nu apar în lista dată.

Date de intrare
Fișierul de intrare numere8.in conține lista de numere, dispuse pe mai multe linii, separate prin spații.

Date de ieșire
Fișierul de ieșire numere8.out va conține pe prima linie, în ordine descrescătoare, numerele nenule cu cel mult patru cifre care nu se află în listă, separate prin exact un spațiu.

Restricții și precizări
numerele din lista vor fi mai mici decât 1 000 000 000

Exemplu
numere8.in

107 4 5 8 1 6 9
numere8.out

9999 9998 ... 108 106 105 ... 10 7 3 2
Explicație
Fișierul de ieșire din exemplu nu este complet :) …

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

int v[10000];

int main()

{

   ifstream f("numere8.in");

   ofstream g("numere8.out");

   int n;

   while (!f.eof())

   {

       f >> n;

       if (n<10000) v[n]=1;

   }

   for (int i=9999; i>=1; --i)

       if (v[i]==0) g << i << " ";

   return 0;

}

Explicație:


boiustef: acest set
while (!f.eof())
{
f >> n;
if (n < 10000) v[n]=1;
}
sepoate scrie si astfel:
while (f >> n)
{
if (n < 10000) v[n]=1;
}
sikesjack1: Multumesc muuult!! Partea aceasta while (!f.eof()) ce inseamnaa? Nu am mai vazut o
boiustef: cât nu este sfârşit de fişier
boiustef: dar îţi propun să foloseşti a doua variantă cu
while (f >> n)
sikesjack1: am inteles :)
Răspuns de pmarian98
0

Răspuns:

#include <bits/stdc++.h>

using namespace std;

ifstream fin ("numere8.in");

ofstream fout ("numere8.out");

//vector de frecventa

int v[10000]; //initial vectorul are elementele egale cu 0

int main()

{

   long long x,i;

   while (fin>>x) //cat timp se citeste din fisier

   {

       if (x<10000)

           v[x]++; //adaug elementul 1 pe pozitia x

   }

   for (i=9999;i>=1;i--) //afisez pozitile care nu sunt egale cu 1

       if (v[i]==0)

       fout<<i<<" ";

   return 0;

}

Explicație:

Alte întrebări interesante