Sunteți pe pagina 1din 7

MINISTERUL EDUCAȚIEI, CULTURII ȘI CERCETĂRII AL REPUBLICII MOLDOVA

IP CENTRUL DE EXCELENȚĂ ÎN INFORMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE

DISCIPLINA

PROGRAMARE PROCEDURALĂ

LUCRAREA DE LABORATOR NR.9

Noțiune de subprograme. Tipuri de subprograme.

Specialitatea: Rețele de calculatoare

Elev: Gheorghe Listru, grupa R-1911

Profesor: Dascal Andrian

Chișinău, 2020
Sarcini rezolvate
1. Se citeşte un număr natural n. Să se numere câte cifre pare şi
câte cifre impare are numărul
Rezolvare:
#include <iostream>
using namespace std;
int pare(int n);int impare(int n);
int main(){
int n;
cout<<"Introduceti un numar: ";cin>>n;
cout<<"Numarul contine "<<pare(n)<<" cifre pare si "<<impare(n)<<" cifre impare";
}
int pare(int n){
int c,p=0;
while(n!=0)
{
c=n%10;
n=n/10;
if(c%2==0)
{
p++;
}
}
return p;
}
int impare(int n){
int c,i=0;
while(n!=0)
{
c=n%10;
n=n/10;
if(c%2!=0)
{
i++;
}
}
return i;
}

Rezultate obținute în urma execuției programului:

2. Se citeşte un număr natural n. Să se verifice şi să se afişeze dacă


este un număr prim, altfel să seafişeze descompunerea în factori
primi.
Rezolvare:
#include <iostream>
using namespace std;
int n,d,p;
void fprimi(int n){
int d,p;
d=2;
while(n>1)
{
p=0;
while(n%d==0)
{
p++;
n=n/d;
}
if(p>0)
cout<<d<<"^"<<p<<" ";
d++;
}
}
int main()
{
int n;
cout<<"Introduceti numarul n: ";
cin>>n;
cout<<endl<<"Descompunerea in factori primi: ";
fprimi(n);
cout<<endl;
}

Rezultate obținute în urma execuției programului:

3. Se citeşte un număr natural n. Să se descompună în sumă de


numere fibonacci.
Rezolvare:
#include <iostream>
using namespace std;
void nr(int n){
int a,b,c;
while(n>0){
a=0;
b=1;
while(a+b<=n)
{
c=a+b;
a=b;
b=c;
}
cout<<c<<" ";
n-=c;
}

}
int main(){
int n;
cout<<"Introduceti un numar: ";cin>>n;
cout<<"\nDescompunerea in suma de numere fibonacci: ";
nr(n);
cout<<endl;
}

Rezultate obținute în urma execuției programului:

4. Se citeşte un număr natural n în baza 10 şi b un număr natural


2<=b<=9 reprezentând o bază denumeraţie. Să se transforme
numărul n în baza b.
Rezolvare:
#include <iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int ZecInBaza(int baza, int n);
int main(){
int i=0;int baza;
cout<<"Introduceti numarul: ";cin>>i;
cout<<"Introduceti baza: ";cin>>baza;
cout<<"Numarul decimal "<<i<<" in baza "<<baza<<" poate fi redat astfel:
"<<ZecInBaza( baza, i)<<endl;
return 0;
}
int ZecInBaza(int baza, int n){
int num =0;
int i = 0;
int a= n;
int b = 0;
while(a != 0){
b = a%baza;
a = a / baza;
num = pow(10,i)*b + num;
i++;
}
return num;
}

Rezultate obținute în urma execuției programului:

5. Scrieţi o funcţie intr-un program, care verifică dacă un număr


este palindrom. Funcţia va primi ca parametru numărul şi va
returna 1 dacă numărul este palindrom şi zero în caz contrar.
Rezolvare:
#include <iostream>
using namespace std;
int palindrom(int n);
int main(){
int n;
cout<<"Introduceti un numar: ";cin>>n;
if(palindrom(n))
cout<<"Numarul este palindrom!"<<endl;
else
cout<<"Numarul nu este palindrom!"<<endl;
}
int palindrom(int n){
int copie,invers=0;
copie=n;
while (n!=0){
invers=invers*10+n%10;
n=n/10;
}
if (invers==copie)
return 1;
else
return 0;
}

Rezultate obținute în urma execuției programului:

TESTUL ll
1. Ce înţelegeţi prin parametrii formali, dar prin parametrii efectivi?
Parametri formali apar în antetul subprogramului şi sunt utilizaţi de
subprogram pentru descrierea abstractă a unui proces de calcul .
Parametri efectivi apar în instrucţiunea de apelare a uni subprogram şi
sunt folosiţi la execuţia unui proces de calcul pentru valori concrete.
Parametrii formali nu sunt variabile. O variabil ă este caracterizat ă de
nume, tip, şi adresă. Legarea unui parametru formal la o adresă se
realizează în timpul execuţiei instrucţiunii de apelare a
subprogramului.

2. Ce înţelegeţi prin parametrii transmişi prin valoare, dar prin parametrii


transmişi prin referinţă?
Prin valoare - se transmite o copie a parametrului. Astfel, in urma
parcurgerii intructiunilor din subprogram valoarea parametrului nu a
fost schimbata intrucat se prelucreaza o copie a sa.
Prin referinta - se transmite adresa parametrului. Astfel, in urma
parcurgerii instructiunilor din subprogram, valoarea parametrului se
schimba intrucat se efectueaza prelucrari direct asupra sa.

3. Ce va afişa următorul program?


#include <iostream>
using namespace std;
int a=5,b=10;
void f(int &a, int b);
int main(){
cout<<a<<" "<<b<<endl;
f(a,b);
cout<<a<<" "<<b;
getchar();
}
void f(int &a, int b){
a=a+10;
b=b+10;
cout<<a<<" "<<b<<endl;
}

Rărspuns: B) 2 4
42
44
4. Să se afişeze numerele cuprinse între 100 şi 1000 care sunt pătrate perfecte şi
sunt prime cu un număr k citit.
Rezolvare:
#include <iostream>
using namespace std;
void rezolvare(int n);
int main(){
int k;cout<<"Introduceti valoarea lui k: ";cin>>k;
cout<<"Numerele (100-1000) care sunt patrate perfecte si prime cu "<<k<<" sunt: \n";
rezolvare(k);
cout<<endl;
}
void rezolvare(int n){
int i,j,pp=0;
for(i=100;i<1000;i++)
for(j=1;j*j<=i;j++)
if(j*j==i)
if(i%n!=0)
cout<<i<<" ";
}

Rezultate obținute în urma execuției programului

S-ar putea să vă placă și