You are on page 1of 3

/*

-citire vector
-afis vector
-cate nr prim
-suma val fibonacci
-afis nr cu suma cifrelor maxima
*/

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

ifstream f("v.in");

void citire(int i, int n, int v[])


{
if(i<=n)
{
f>>v[i];
citire(i+1, n, v);
}
}

void afis(int i, int n, int v[])


{
if(i<=n)
{
cout<<v[i]<<" ";
afis(i+1, n, v);
}
else
cout<<endl;
}

void afis1(int i, int n, int v[])


{
if(i<=n)
{
afis(i+1, n, v);
cout<<v[i]<<" ";
}
}

int prim(int x, int d)


{
if(x==1)
return 0;
else
if(d*d<=x)
if(x%d==0)
return 0;
else
return prim(x, d+1);
else
return 1;
}

int cate_prime(int n, int v[])


{
if(n==0)
return 0;
else
if(prim(v[n], 2)==1)
{
cout<<v[n]<<" ";
return 1+cate_prime(n-1, v);
}
else
return cate_prime(n-1, v);
}

int fibo(int x, int f1, int f2)


{
int f3=f1+f2;
if(f3<x)
return fibo(x, f2, f3);
else if(f3>x)
return 0;
else
return 1;
}

int suma_fibo(int n, int v[])


{
if(n==0)
return 0;
else
if(fibo(v[n], 0, 1)==1)
{
cout<<v[n]<<" ";
return v[n]+suma_fibo(n-1, v);
}
else
return suma_fibo(n-1, v);
}

int suma_cif(int x)
{
if(x==0)
return 0;
else
return x%10+suma_cif(x/10);
}

void afismax(int n, int v[], int &sc)


{
if(n>0)
{
int x=sum_cif(v[n]);
if(x>sc)
sc=x;
afismax(n-1, v, sc);
if(x==sc)
cout<<v[n]<<" ";
}
}

int main()
{
int v[100], n;
f>>n;
citire(1, n, v);
afis(1, n, v);
afis1(1, n, v);
cout<<"\n";
cout<<"Numarul valorilor prime este: "<<cate_prime(n, v)<<endl;
cout<<"\nSuma valorilor fibo este: "<<suma_fibo(n, v)<<"\n";
return 0;
}

You might also like