Está en la página 1de 2

Atestat problema 1 C++

#include <iostream>
#include <fstream>
using namespace std;

ifstream f ("atestat.in"); ofstream g ("atestat.out");

void impartire (int n, int v[], int k, int p)


{
for (int i = 0; i < n; i++)
if (v[i] % p == k) cout << v[i] << " ";
}

void pare (int n, int v[])


{
int fr[n] = {0}, x;
for (int i = 0; i < n; i++)
{
x = v[i];
while (x != 0)
{
if (x % 2 == 0) fr[i]++;
x /= 10;
}
cout << fr[i] << " ";
}
}
bool ordine (int n, int v[])
{
bool k = true;
for (int i = 0; i < n-1; i++)
if (v[i] == v[i+1])
{ k = false; return false; break; }

if ( k== true ) return true;


}

int main()
{
int n, p, k;
f >> n >> p >> k;
int v[n];
for (int i = 0; i < n; i++) f >> v[i];
impartire(n, v, k , p);
cout << endl <<endl;
pare(n, v);
if (ordine(n, v) == false) g << "ELEMENTELE NU SUNT DISTINCTE";
else g << "ELEMENTELE SUNT DISTINCTE";
return 0;
}

// Explicatie pt b) : fr[n] reprezinta un vector de frecventa. Adica la


fiecare numar par (de la x la 0 prin x = x/10) “derivat” din x in vector
creste valoarea fiecarei celulue (corespunzatoare vectorului principal v[n])
cu 1.

También podría gustarte