1. Scrieţi definiţia completă a subprogramului număr, cu 4 parametrii, care primeşte prin intermediul parametrului n un număr natural format din cel mult 9 cifre, iar prin intermediul parametrilor c1 şi c2 câte o cifră cu proprietatea c1<c2; subprogramul furnizează prin intermediul celui de-al 4-lea parametru, x, o valoare obţinută prin eliminarea din numărul primit prin parametrul n a fiecărei cifre cuprinse în intervalul închis [c1,c2]. Dacă toate cifrele lui n aparţin acestui interval se va afişa 0.
#include<iostream>2. Scrieţi definiţia completă a subprogramului reduce, cu doi parametrii, care primeşte prin intermediul parametrilor a şi b două numere naturale formate din cel mult 9 cifre fiecare. Funcţia returnează o valoare obţinută din numărul a prin însumarea acelor cifre diferite de 0 ale numărului a care NU divid numărul b. Dacă nu există asemenea cifre, se va returna valoarea 0.
using namespace std;
void numar(int n, int c1, int c2, int &x)
{ int r=0,k=1; x=0;
while(n)
{ if (n%10<c1 || n%10>c2)
{x=n%10*k+x; k=k*10;}
n=n/10; }
}
int main()
{ int n,c1,c2,x;
cin>>n;
cin>>c1;
cin>>c2;
numar(n,c1,c2,x);
cout<<x;
}
#include<iostream>3. Scrieţi definiţia completă a subprogramului număr, cu 3 parametrii, care primeşte prin intermediul parametrului n un număr natural format din cel mult 9 cifre, iar prin intermediul parametrilor c1 şi c2 câte o cifră nenulă; subprogramul returnează numărul obţinut prin înlocuirea în numărul primit prin parametrul n a fiecărei apariţii a cifrei c1 cu cifra c2. Dacă c1 nu apare în n, subprogramul returnează valoarea n.
using namespace std;
int reduce(int a, int b)
{ int s=0;
while (a)
{ if(a%10!=0 && b%(a%10)!=0)
s=s+a%10;
a=a/10;
}
return s;
}
int main()
{ int a,b;
cin>>a;
cin>>b;
cout<<reduce(a,b);
}
#include<iostream>4. Scrieţi definiţia completă a subprogramului suma care are 2 parametrii: n, prin care primeşte un număr natural(1<=n<=100) şi v prin care primeşte un tablou unidimensional cu n elemente, fiecare element memorând un număr cu exact 3 cifre. Funcţia returnează suma elementelor din tablou care au prima cifră egală cu ultima cifră.
using namespace std;
int numar(int n, int c1, int c2)
{int r=0,k=1;
while(n)
{ if(n%10==c1)r=c2*k+r;
else r=(n%10)*k+r;
k=k*10;
n=n/10;
}
return r;
}
int main()
{int n,c1,c2;
cin>>n;
cin>>c1>>c2;
cout<<numar(n,c1,c2);
}
#include<iostream>5. Scrieţi definiţia completă a subprogramului suma care are 2 parametrii: n, prin care primeşte un număr natural(1<=n<=100) şi v prin care primeşte un tablou unidimensional cu n elemente, numere întregi situate în intervalul [10...30000]. Funcţia returnează suma numerelor din tabloul v care au ultimele două cifre identice.
using namespace std;
int suma(int n, int v[])
{int i,s=0;
for(i=0;i<n;i++)
if(v[i]%10 == v[i]/100)
s=s+v[i];
return s;
}
int main()
{int n,v[100],i;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
cout<<suma(n,v);
}
#include<iostream>6. Scrieţi definiţia completă a subprogramului medie care are 2 parametrii: n, prin care primeşte un număr natural situat între 1 şi 100, şi v prin care primeşte un tablou unidimensional cu n elemente, fiecare din ele având cel mult 4 cifre. Subprogramul returnează media aritmetică a numerelor din tablou.
using namespace std;
int suma(int n, int v[])
{int i,s=0;
for(i=0;i<n;i++)
if(v[i]%10 == v[i]/10%10)
s=s+v[i];
return s;
}
int main()
{int n,v[100],i;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
cout<<suma(n,v);
}
#include<iostream>7. Scrieţi definiţia completă a unui subprogram max care primeşte prin intermediul parametrilor a şi b două numere reale cu cel mult 4 cifre la partea întreagă şi cel mult 5 zecimale fiecare. Subprogramul determină cel mai mare număr real dintre următoarele 4 valori: a, b şi numerele reale obţinute din a şi b prin interschimbarea părţii întregi cu partea fracţionară în cadrul aceluiaşi număr. Această valoare(maximă) este furnizată prin intermediul parametrului real c.
using namespace std;
int medie(int n, int v[])
{int i,s=0;
float p;
for(i=0;i<n;i++)
s=s+v[i];
cout<<(float)s/n;
}
int main()
{int n,v[100],i;
cin>>n;
for(i=0;i<n;i++)
cin>>v[i];
medie(n,v);
}
#include<iostream> // GRESIT8. Se consideră subprogramul CMMDC care primeşte prin cei doi parametrii x şi y două numere naturale şi returnează cel mai mare divizor comun al lor.
using namespace std;
float max(float a, float b, float &c)
{float x,y,p,k=1,t=1;
p=a;
while((int)p)
{k=k*10;p=p/10;}
p=a;
while(int(p)!=p)
{p=p*10;t=t*10;}
x=(a-(int)a)*t+(int)a/k;
p=b;k=1;t=1;
while((int)p)
{k=k*10;p=p/10;}
p=b;
while(int(p)!=p)
{p=p*10;t=t*10;}
y=(b-(int)b)*t+(int)b/k;
c=a;
if(b>c)c=b;
if(x>c)c=x;
if(y>c)c=y;
}
int main()
{float a,b,c;
cin>>a>>b;
max(a,b,c);
cout<<c;
}
a) scrieţi numai antetul subprogramului CMMDC
b) Fişierul text NUMERE.IN conţine, pe fiecare linie, câte două numere naturale nenule mai mici sau egale cu 10000, despărţite printr-un spaţiu, reprezentând numitorul şi numărătorul câte unei fracţii. Scrieţi un program care, pentru fiecare linie k din fişierul NUMERE.IN, citeşte numitorul şi numărătorul fracţiei pe această linie şi scrie în fişierul text NUMERE.OUT, tot pe linia k, numitorul şi numărătorul acestei fracţii, adusă la forma ireductibilă, ca în exemplu. Se vor utiliza apeluri utile ale funcţiei CMMDC.
#include<iostream> // GRESIT9. Ne putem folosi de formula CMMMC = a*b/CMMDC.
#include<fstream>
using namespace std;
int CMMDC(int x, int y)
{
while(x!=y)
if(x>y)x=x-y;
else y=y-x;
return x;
}
int main()
{int x,y;
ifstream f("NUMERE.IN");
ofstream g("NUMERE.OUT");
f>>x>>y;
while(!f.eof())
{
x=x/CMMDC(x,y);
y=y/CMMDC(x,y);
g<<x<<" "<<y<<endl;
f>>x>>y;
}
}
Se consideră subprogramul CMMMC care primeşte prin cei doi parametrii x şi y două numere naturale şi returnează cel mai mic multiplu comun al lor. Fişierul text NUMERE.IN conţine, pe fiecare linie, câte două numere naturale nenule mai mici decât 10000, despărţite printr-un spaţiu. Scrieţi un program care, pentru fiecare linie k din fişierul NUMERE.IN, citeşte câte două numere de pe această linie şi scrie în fişierul NUMERE.OUT, tot pe linia k, cel mai mic multiplu comun al acestora. Se vor folosi apeluri utile ale funcţiei CMMMC.
10. Scrieţi doar antetul unui subprogram prim cu doi parametrii, care primeşte prin intermediul parametrului n un număr natural cu cel mult 4 cifre şi returnează prin intermediul parametrului p valoarea 1 dacă n este prim şi 0 în caz contrar.
Scrieţi un program care citeşte de la tastatură un număr natural n<1000 şi afişează pe ecran, desparţite prin câte un spaţiu, primele n numere prime, utilizând apeluri utile ale subprogramului prim.
11. Scrieţi definiţia completă a unui subprogram s care primeşte prin intermediul parametrului n un număr natural de maximum 9 cifre, prin intermediul parametrului c o cifră şi furnizează prin intermediul parametrului k numărului de cifre ale numărului n care aparţin intervalului [c-1,c+1].