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

Fişierul bac.in conţine un şir de numere naturale distincte, din intervalul [1,109]. Numerele din şir sunt separate prin câte un spaţiu şi cel puţin trei dintre ele au penultima cifră 2 și ultima cifră 0. Se cere să se afișeze pe ecran cele mai mari trei numere din şir cu proprietatea că au penultima cifră 2 și ultima cifră 0. Numerele determinate sunt afişate în ordine crescătoare, separate prin câte un spaţiu. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate şi al timpului de executare. Exemplu: dacă fişierul conţine numerele 9731 50 112 20 8 16 8520 3 2520 1520 pe ecran se vor afişa, în această ordine, numerele: 1520 2520 8520 a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.) b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.


SheSeaw: a)

Răspunsuri la întrebare

Răspuns de MariusCelTrifan
8

Răspuns:

#include <iostream>

using namespace std;

int main()

{

int n,i,x=1,sortat,aux;

cout<<"n=";

cin>>n;

int a[n],b[n];

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

{

   cout<<"a["<<i<<"]=";

   cin>>a[i];

}

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

   if(a[i]%100==20)

   {

   b[x]=a[i];

   x++;

  }

  do

  {

      sortat=0;

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

       if(b[i]>b[i+1])

      {

          aux=b[i];

          b[i]=b[i+1];

          b[i+1]=aux;

          sortat=1;

          i=1;

      }

  }while(!sortat);

  for(i=x-3;i<=x-1;i++)

   cout<<b[i]<<" ";

  return 0;

}

b)

am adaugat numerele cu ultimele 2 cifre 20 intr-un vector, iar apoi l-am sortat folosind metoda bulelor cu dubla verificare, la final, am afisat ultimele 3 numere din vectorul rezultatul

Explicație:

Vezi ca am scris fara fisier, nu stiu inca sa lucrez in fisier, te descurci sa-l bagi si tu

Multumesc+5*+cel mai bun raspuns


SheSeaw: #include
#include

using namespace std;

int main()
{
int x, h, c, c1;
ifstream f ("bac.txt");
while (f>>x)
{
h=x;
while (h!=0)
{
c=h%10;
h=h/10;
if (c==0 && h>20)
{
c1=h%10;
if (c1==2)
cout< }
}
}
f.close();
}
wwwglro: Codul de mai sus al lui MariusCelTrifan este gresit din cauza ca nu a respectat cerinta de optimizare.
MariusCelTrifan: si de ce este gresit, ma rog?
Alte întrebări interesante