Functii 2
1. Se citesc de la tastatură elemente până la introducerea caracterului *. Să se afişeze in ordine inversă caracterele citite, fără a se afişa asteriscul.
#include<iostream.h>
void cuvant()
{
char c;
cin>>c;
if(c!='*'){cuvant();cout<<c;}
}
void main()
{cuvant();
}
Modificaţi programul astfel încât să se afişeze şi *.
#include<iostream.h>
void cuvant()
{
char c;
cin>>c;
if(c!='*')cuvant();
cout<<c;
}
void main()
{cuvant();
}
2. Se citeşte de la tastatură un număr n. Să se afişeze numerele de la 1..n şi numerele de la n..1 folosind subprograme recursive. Atenţie! Fiecare cerinţă se poate realiza prin 2 metode. Noi vom prezenta câte o metodă pentru fiecare #include<iostream.h>
int n;
void nr(int i)
{
cout<<i;
if(i<n) nr(i+1);
}
void nr1(int i)
{
if(i<n) nr1(i+1);
cout<<i;
}
void main()
{
cout<<"n="; cin>>n;
nr(1);
cout<<"\n";
nr1(1);
cout<<"\n";
}
3. Se citesc de la tastatură cele n elemente intregi ale unui vector. Să se afişeze elementele vectorului în ordinea citirii şi în ordinea inversă a citirii.
#include<iostream.h>
int a[100],n;
void citire(int i)
{
cout<<"a["<<i<<"]=";cin>>a[i];
if(i<n)citire(i+1);
}
void afisare(int i)
{
cout<<a[i]<<" ";
if(i<n) afisare(i+1);
}
void afisareinv(int i)
{
if(i<n)afisareinv(i+1);
cout<<a[i]<<" ";
}
void main()
{
cout<<"n=";cin>>n;
citire(1);
cout<<endl;
afisare(1);
cout<<endl;
afisareinv(1);
cout<<endl;
}
4. Se citesc de la tastatură cele n elemente întregi ale unui vector. Să se afişeze valoarea minimă din şir.
#include<iostream.h>
int a[100],n;
void citire(int i)
{
cout<<"a["<<i<<"]=";cin>>a[i];
if(i<n)citire(i+1);
}
void afisare(int i)
{
cout<<a[i]<<" ";
if(i<n) afisare(i+1);
}
void afisareinv(int i)
{
if(i<n)afisareinv(i+1);
cout<<a[i]<<" ";
}
void main()
{
cout<<"n=";cin>>n;
citire(1);
cout<<endl;
afisare(1);
cout<<endl;
afisareinv(1);
cout<<endl;
}
5. Se citesc de la tastatură n numere. Să se afişeze valoarea maximă din şir şi poziţiile pe care se găsesşte aceasta în şir.
#include<iostream.h>
int a[100],n,m;
void citire(int i)
{
cout<<"a["<<i<<"]=";cin>>a[i];
if(i<n)citire(i+1);
}
void afisare(int i)
{
cout<<a[i]<<" ";
if(i<n) afisare(i+1);
}
void max(int i,int &m)
{
if (a[i]>m)m=a[i];
if(i<n)max(i+1,m);
}
void pozitiemax(int i,int m)
{if(a[i]==m)cout<<i<<" ";
if(i<n)pozitiemax(i+1,m);
}
void main()
{
cout<<"n=";cin>>n;
citire(1);
cout<<endl;
afisare(1);
m=a[1];
max(1,m);
cout<<"\nmax="<<m<<endl;
cout<<"maximul se afla pe pozitiile :";
pozitiemax(1,m);
}
6. Se citesc de la tastatură n numere. Câte numere prime se găsesc în şir?
#include<iostream.h>
int a[100],n,nr;
void citire(int i)
{
cout<<"a["<<i<<"]=";cin>>a[i];
if(i<n)citire(i+1);
}
void afisare(int i)
{
cout<<a[i]<<" ";
if(i<n) afisare(i+1);
}
void max(int i,int &m)
{
if (a[i]>m)m=a[i];
if(i<n)max(i+1,m);
}
int prim(int i,int x)
{
if(x<2) return 0;
if(i<=x/2)if(x%i==0) return 0;
else
return prim(i+1,x);
if(i>x/2)return 1;
}