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.
Răspunsuri la întrebare
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
#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();
}