Bac info 2011, Subiectul 3, ex 4
Răspunsuri la întrebare
Răspuns:
Explicație:
Programul urmator pare sa functioneze:
b)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("BAC.TXT");
int main()
{
unsigned long long x;
unsigned v[10],i,m=0,ct=1,poz,c;
for(i=0;i<10;i++)
v[i]=0;
while(fin>>x)
{
c=(x%100)/10;
v[c]++;
if(m<v[c])
{
m=v[c];
poz=ct;
}
ct++;
}
cout<<poz;
fin.close();
return 0;
}
a) Am declarat un vector de frecventa in care se retin numarul de aparitii ale cifrelor de pe pozitia zecilor a fiecarui numar . Pe masura ce datele din fisier se citesc, valorile din fisier se actualizeaza , iar de fiecare data cand valoarea maxima din vector se schimba , se retine intr-o variabila numarul de ordine al termenului curent . Aceasta valoare va fi afisata la sfarsitul programului . Programul este eficient atat din punct de vedere al timpului de executare , deoarece algoritmul este liniar , precum si a memoriei utilizate , deoarece nu se folosesc tablouri bidimensionale . In schimb se utilizeaza un vector cu o capacitate relativ mica.
#include
using namespace std;
short v[10];
int main()
{
short i, a[10]={0};
for (i=0; i<10; ++i)
cout << v[i] << " ";
cout << "\n";
for (i=0; i<10; ++i)
cout << a[i] << " ";
cout << "\n";
short b[10]={1,2,3,4};
for (i=0; i<10; ++i)
cout << b[i] << " ";
cout << "\n";
return 0;
}
se obtine acest rezultat:
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 2 3 4 0 0 0 0 0 0
- fiind declarat global vectorul se iniţializaza cu zerouri;
- fiind declarat local astfel a[10]={0}; se iniţializaza cu zerouri;
- fiind declaear local astfel short b[10]={1,2,3,4}; se iniţialiteată cu valorile indicate primele elemente, iar celelate zerouri
( Minutul 48:10 ) Vazusem mai de mult videoclipul si de atunci stiam asta
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bac.txt");
int czeci[10], nrordine[10], num,i, z,apmax;
int main()
{
while (fin >> num)
{
++i;
z=(num%100)/10;
++czeci[z];
nrordine[z]=i;
}
for (i=0; i<10; ++i)
if (czeci[i]>apmax) apmax=czeci[i];
i=0; while (czeci[i]!=apmax) ++i;
cout << nrordine[i];
}
Explicație: