Sunteți pe pagina 1din 4

Bac Informatica 2018 | Subiect III

3. Se consider subprogramul divizori, cu patru parametri:


n, prin care primeste un numr natural (n[2,106]);
x, y i z, prin care furnizeaz cte un divizor al lui n (0<x<y<z) cu proprietatea c
x+y+z=n, sau valoarea 0, prin fiecare dintre acetia, dac n nu are astfel de divizori.
Scrie_i defini_ia complet a subprogramului.
Exemplu: pentru numrul n=24, n urma apelului, x=4, y=8 si z=12, iar pentru numrul
n=9, n urma apelului, x=0, y=0 si z=0. (10p.)

4. Un numr natural x, format din exact dou cifre, este numit sub-numr al unui numr
natural y dac cifrele lui x apar, n aceeai ordine, pe ranguri consecutive, n numrul
y.
Exemplu: 21 este sub-numr al lui 12145, al lui 213, al lui 21, dar nu i al lui 123 sau al
lui 231.
Fiierul bac.txt conine cel mult 106 numere naturale din intervalul [10, 109], separate
prin cte un spaiu.
Se cere s se afieze pe ecran, separate prin cte un spaiu, sub-numerele care apar o
singur dat n scrierea numerelor din fiier, sau mesajul nu exista dac nu exist
niciun astfel de sub-numr. Proiectai un algoritm eficient din punctul de vedere al
timpului
de executare.
Exemplu: dac fisierul bac.txt con_ine numerele
3 9 1 7 7 7 2 4 3 5 8 2 3 9 7 2

Rezolvare:
3.
#include <iostream>
using namespace std;
void Divizori (int n, int &x, int &y, int &z)
{
if(n%6!=0)
{
x = 0;
y = 0;
z = 0;
}
else
{
x=n/6;
y=n/3;
z=n/2;
}
}
int main()
{
int n, x, y, z;
cout<<"n= "; cin>>n;
Divizori(n, x, y, z);
cout<<x<<" "<<y<<" "<<z;

return 0;
}

4.
#include <iostream>
#include <fstream>

using namespace std;

int v[101];

void Citeste()
{
int x;
ifstream f("bac1.txt");
while(f>>x)
{
while(x>9)
{
v[x%100]++;
x=x/10;
}
}
}

void Afiseaza()
{
int y=0;
for (int i=10; i<=99; i++)
{
if (v[i]==1)
{
cout<<i<<" ";
y++;
}
}
if (y==0)
{
cout<<"Nu exista";
}
}

int main()
{
Citeste();
Afiseaza();

return 0;
}

Compilator utilizat: CodeBlocks