Sunteți pe pagina 1din 7

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrarea de laborator nr.1
la disciplina Programarea Orientată pe Obiecte

A efectuat:
st. gr. AI-161 S.Dubac

A verificat:
lector univer. M.Oșovschi

Chişinău 2017
Lucrarea de laborator nr.1

Tema: Reprezentarea tipurilor de date ale limbajului C++ în memoria calculatorului.


Operatorii limbajului C++. Construcţiile elementare ale limbajului C++ (instrucţiunile for,
while, do-while, if-else, switch-break, goto). Tipuri de date recursive, operaţii asupra
listelor, arborilor. Construirea şi elaborarea programelor recursive. Fişierele.

Scopul lucrării: Familiarizarea studenţilor cu reprezentarea tipurilor de date ale


limbajului C++ în memoria calculatorului, operatorii limbajului C++, construcţiile
elementare ale limbajului C++ (instrucţiunile for, while, do-while, if-else, switch-break,
goto), tipuri de date recursive, operaţii asupra listelor, arborilor, construirea şi elaborarea
programelor recursive, lucrul cu fişiere.

Sarcina de lucru:
a. Scrieţi un program care calculează suma cifrelor pentru fiecare număr din
consecutivitatea de 100 de numere aleatoare.
b. Scrieţi un program care determină numărul maximal şi cel minimal într-o listă
circulară de 100 de numere aleatoare. Să se determine consecutivitatea de elemente ce
se află între numerele maximal şi cel minimal determinate.

Mersul lucrării:

Codul programului subpunctul a:

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
int a[100],i,suma=0;
for(i=0;i<100;i++){
a[i]=rand() % 100+1;
}
cout<<"\nS-a generat tabloul: "<<endl;
for(i=0;i<100;i++){
cout<<a[i]<<" ";
}
cout<<"\n\n";
for(i=0;i<100;i++){
cout<<"Suma p/u "<<a[i]<<" este: ";
while(a[i]){
suma=suma+(a[i]%10);
a[i]=a[i]/10;
}
cout<<suma<<"\n";
1
suma=0;
}
}

Codul programului subpunctul b:

#include <iostream>
#include <stdlib.h>
#include <time.h>

typedef struct Lista{


int info;
struct Lista *next;
}lista;

lista *head;

int create(int n){


lista *c;
lista *p;
int i;

for (i = 0; i <n ; i++)


{
c=new(lista);
if(!c)
{
return i+1;
}
if(i==0){
head=c;
}
else{
p->next=c;
}
p=c;
}
c->next=NULL;
return 0;
}

void read(void){
int i;
lista *c;

c=head;
i=0;
2
while(c){

c->info =rand() % 100+1;

c=c->next;
if(c==head){
break;
}
i++;
}
}

void show(void){
lista *c;
c=head;
int i=0;
while(c){
std::cout<<" "<<c->info<<" ";
i++;
c=c->next;
}
}

void conse(void){
lista *c,*temp;
c = head;
int i=0;
int min=c->info,max=c->info;
int pozmin=0,pozmax=0;
while(c){

if(c->info<min){
min=c->info;
pozmin=i;
}
if(c->info>max){
max=c->info;
pozmax=i;

}
i++;
c=c->next;
}
std::cout<<"\n";
std::cout<<"Numarul minimal este: "<<min;
std::cout<<"\n";
3
std::cout<<"Pozitia: "<<pozmin;
std::cout<<"\n";
std::cout<<"Numarul maximal este: "<<max;
std::cout<<" Pozitia: "<<pozmax;
std::cout<<"\n";

c=head;
i=0;
int x=0;
if(pozmin<pozmax){
while(c){
if((i>=pozmin && i<=pozmax) && (c->info==((c->next)->info)-1))
{
std::cout<<" "<<c->info<<" "<<c->next->info<<std::endl;
x+=2;
}

i++;
c=c->next;
}
std::cout<<"Pe intervalul dat au fost gasite _"<< x <<"_ numere consecutive";
}
x=0;

if(pozmax<pozmin){
while(c){
if((i>=pozmax && i<=pozmin) && (c->info==((c->next)->info)-1))
{
std::cout<<" "<<c->info<<" "<<c->next->info<<std::endl;
x+=2;
}
i++;
c=c->next;
}
std::cout<<"Pe intervalul dat au fost gasite _"<< x <<"_ numere consecutive";
}

int main()

{
int temp;
srand(time(NULL));
temp=create(100);
if(temp != 0){
std::cout<<"Eroare la alocarea memoriei"<<std::endl;
4
}

read();
show();
conse();
std::cout<<"\n";

Exemplu de rezultat obținut pentru sarcina a):


Vezi la executarea programului!

Exemplu de rezultat obținut pentru sarcina b)(când nu s-a găsit o consecutivitate de


numere):

Exemplu de rezultat obținut pentru sarcina b)(când s-a găsit o consecutivitate de


numere):

5
Analiza rezultatelor si concluzii:

1)În urma efectuării lucrării de laborator ne-am familiarizat cu reprezentarea tipurilor de


date ale limbajului C++,cu operatorii, construcțiile elementare, tipurile de date recursive,
operațiile asupra listelor, arborilor, construirea și elaborarea programelor recursive și
lucrul cu fișiere.
2) Am văzut avantajele limbajului C++ și am lucrat cu câteva funcții elementare din
limbajul C++.

Bibliografie:

1.Conspectul prelegerilor cursului POO

2. http://www.cplusplus.com/doc/tutorial/dynamic/

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