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

Fișierul bac.in conține cel mult 106 numere naturale din intervalul [0,109], separate prin câte un spațiu. Se cere să se afișeze pe ecran, în ordine descrescătoare, cele mai mari două numere de două cifre distincte care NU se află în fișier. Numerele afișate sunt separate printr-un spațiu, iar dacă nu există două astfel de numere, se afișează pe ecran mesajul nu exista. Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul bac.in conține numerele 12 235 123 67 98 6 96 94 123 67 98 100
se afișează pe ecran, în această ordine, numerele 97 95.

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.in");

int main()

{

   int vc[100]={0};

   int num,i;

   while (f >> num) {

       if (num<100 && num>9) {

           vc[num]=1;

       }

   }

   int gasit=0, a,b;

   i=99;

   while (vc[i]==1 && i>9) {--i;}

   if (i>9) {gasit=1; a=i; --i;}

   while (vc[i]==1 && i>9) {--i;}

   if (i>9) {gasit=2; b=i; --i;}

   if (gasit<2) cout << "nu exista";

   else cout << a << " " << b;

   return 0;

}

Explicație:

o observație... În enunț se dă rezultat greșit  97 95, dar trebuie să fie 99 97

Succese!


magdalenapop: e bun raspunsul cifrele sunt diferite
lucaciucandrei: bruh.... raspunsul e bun.... tu nu faci e trebuie...
boiustef: uauuu, ai dreptate magdalena... era necesar ca cifrele să fie diferite....
la instrucțiunile
while (vc[i]==1 && i>9) {--i;}
trebuie de rectificat cu
while (vc[i]==1 && i>9 && (i/10!=i%10)) {--i;}
boiustef: încă o corectare... :)))
while ((vc[i]==1 && i>9)||(v[i]==0 && i/10=i%10)) {--i;}
cred așa ar tr. să fie... O zi frumoasă!
boiustef: ultima rectificare... :)))
while ((vc[i]==1 && i>9)||(vc[i]==0 && i/10=i%10)) {--i;}
lucaciucandrei: pai practic tot nu-i va merge ca ai pus "i/10=i%10" :))
boiustef: era verificat în codul meu unde a mers...
while ((vc[i]==1 && i>9)||(vc[i]==0 && i/10==i%10)) {--i;}
:))) am scăpat un egal
lucaciucandrei: conteaza orice greseala! ca la bac te cade si nu stii de unde dupa
Alte întrebări interesante