Documente Academic
Documente Profesional
Documente Cultură
Laborator - Functii-1 PDF
Laborator - Functii-1 PDF
1. a) Se dau dou numere naturale, nenule. S sescrie o funcie care calculeaza cel
mai mare divizor comun al lor i cel mai mic multiplu comun.
b) Considernd cele dou numere ca fiind numrtorul i numitorul unei fracii, s
se simplifice fracia astfel nct s se aduc la o form ireductibil.
Procedeu:
a) Se imparte numrul mai mare la numrul mai mic i, att timp ct restul este
diferit de 0, dempritul este nlocuit de mpritor, iar mpritorul este nlocuit de
rest. Ultimul rest diferit de 0, n aceast succesiune de mpriri reprezint cel mai
mare divisor comun. Cel mai mic multiplu comun se calculeaz dup relaia :
produsul numerelor este egal cu produsul ntre cel mai mare divisor comun i cel mai
mic multiplu comun.
b) Pentru simplificare, se ambele numere impart numerele la cmmdc i se rein
rezultatele.
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;
}
void main(){
int m,n;
cout << "m="; cin >>m;
cout << "n="; cin >>n;
cout<<"cel mai mare divizor comun intre "<<m<<" si "<<n<<" este"<<
cmmdc(m,n) <<endl;
cout<<"cel mai mic multiplu comun intre "<<m<<" si "<<n<<" este"<<
m*n / cmmdc(m,n) << endl;
cout<<"fractia simplificata este "<< m/cmmdc(m,n)<<"/"<< n/cmmdc(m,n)
<< endl;
getch();}
1
2. Se citesc de la tastatur patru numere ntregi, diferite de 0. Numerele reprezint,
n ordinea citirii, numrtorul i numitorul a primei fracii, respectiv numrtorul
i numitorul unei a doua fracii.
Exemplu: date de intrare 6 18 12 24
date de ieire :suma fractiilor a/b si c/d este 5/6
a c x
Indicaie: Se calculeaz suma + = , unde a,b,c,d sunt datele de intrare, apoi se
b d y
x
simplific fracia , folosind procedeul de mai sus.
y
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;
}
void main(){
int a,b,c,d,x,y;
cout << "a="; cin >>a;
cout << "b="; cin >>b;
cout << "c="; cin >>c;
cout << "d="; cin >>d;
x=a*d+b*c;
y=b*d;
cout<<"suma fractiilor "<<a<<"/"<<b<<" si "<<c<<"/"<<d<<" este "
<<x/cmmdc(x,y) <<"/"<< y/cmmdc(x,y)<<endl;
getch();}
2
(nrb i nrf), se mpart, pe rnd, b1 i f1 la cel mai mare divizor
comun al lor.
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;
}
void main(){
int b1,f1,nrb,nrf;
cout << " Numarul de barbati:"; cin >>b1;
cout << "Numarul de femei:"; cin >>f1;
if (cmmdc(b1,f1)!=1){cout<<"Numarul maxim de echipe este:"<<
cmmdc(b1,f1);
nrb=b1/cmmdc(b1,f1);
nrf=f1/cmmdc(b1,f1);
cout<<",fiecare1 echipa avand "<<nrb<<" barbati si "<<nrf<<"
femei"<<endl;}
else
cout<<"Imposibil";
getch();
}
Rezolvare:
Se are n vedere c cmmdc(a,b,c)=cmmdc(cmmdc(a,b),c). Implementarea
n C++ este urmtoarea:
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;}
void main(){
int a,b,c;
cout << "a="; cin >>a;
cout << "b="; cin >>b;
cout << "c="; cin >>c;
3
cout<<"cmmdc intre "<<a<<" "<<b<<" si "<<c<<" este
"<<cmmdc(cmmdc(a,b),c);
getch();}
5. Se d un numr natural n. S se afieze toate numerele mai mici
dect n, prime cu n.
Exemplu: Date de intrare: n=10
Date de ieire:1 3 7 9
#include <iostream.h>
#include <conio.h>
int cmmdc(int a,int b){
int r,aux;
if (a<b){
aux=a;a=b;b=aux;}
r=a%b;
while (r>0){
a=b;b=r;r=a%b;}
return b;}
void main(){
int n,i;
cout << "n="; cin >>n;
for (i=1;i<n;i++)
if (cmmdc(i,n)==1) cout << i<<endl;getch();}
#include <iostream.h>
#include <conio.h>
int prim(int a){
int p=1,i;
for (i=2;i<=a/2;i++)
4
if (a%i==0) p=0;
return p;};
void main(){
int n,k;
cout<<"n="; cin>>n;
/*rezolvare punctul a */
if (prim(n)==1) cout<<n<<" este prim"<<endl;
else cout<<n<<" nu este prim"<<endl;
cout<<"Numerele prime mai mici decat "<<n<<" sunt: ";
/*rezolvare punctul b */
for (k=2;k<n;k++) if (prim(k)==1) cout<<k<<" ";
cout<<endl;
/*rezolvare punctul c */
#include <iostream.h>
#include <conio.h>
int prim(int a){
int p=1,i;
for (i=2;i<=a/2;i++)
if (a%i==0) p=0;
return p;};
void main(){
int n,k=0,x=2;
cout<<"n="; cin>>n;
while (k<n) {if (prim(x)) {cout<<x<<" "; k++;};
x++;};
getch();}
#include <iostream.h>
5
#include <conio.h>
#include <math.h>
int prim(int a){
int p=1,i;
for (i=2;i<=a/2;i++)
if (a%i==0) p=0;
return p;};
void main(){
int m,n,k,exp;
cout<<"n="; cin>>n;m=n;
for (k=2;k<=sqrt(m);k++){
if (prim(k)){ exp=0;
while ((n%k)==0)
{n=n/k; exp++;};
if (exp>0)
cout<<k<<" la puterea "<<exp<<endl;}}
getch();}