Sunteți pe pagina 1din 10

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică si Microelectronică

Lucrarea de laborator Nr.7


la disciplina Programarea orientată pe obiecte

Tema: Şabloane

Varianta 10

A efectuat

A verificat
Tema: Şabloane

Scopul lucrării:
 Studierea necesităţii şabloanelor;
 Studierea regulilor de definire şi utilizare a şabloanelor;
 Studierea specializării şabloanelor;
 Studierea potenţialelor probleme rezolvate cu ajutorul şabloanelor;

Întrebări de control:

Ce reprezinta sabloanele ?
- un mecanism ce permite să scrii un algoritm, care nu este legat de un tip anumit. Cel mai des,
şabloanele sunt utilizate pentru crearea container şi algoritmi abstracţi.
Care sunt avantajele utilizării şabloanelor?
- micşorează codul de ieşire, care duce la, micşorarea cantităţii de erori, micşorează introducerea
modificărilor în cod şi micşorează prezentarea programelor în general, aşa cum se micşorează
calitatea tipurilor şi funcţiilor date.
Pentru ce se utilizează specializarea? - reprezintă înscrierea încă a unei funcţii pentru un tip
determinat. În cazul funcţiilor această de obicei nu este o funcţie şablon cu acelaşi nume şi cu
parametri predefiniţi. Această funcţie poate avea un avantaj mai mare decât şabloanele.
Ce poate fi un şablon?
– orice functie sau clasa
Care sunt problemele utilizării şabloanelor?
- sabloanele lucreaza bine cu tipurile de date int , float insa creeaza unele probleme la siruri.
Utilizarea şabloanelor duce la economia memoriei?
- şabloanele nu micşorează compilarea modulului, mai degrabă chiar invers, dar simţitor
micşorează codul de ieşire
Poate o clasă şablon să moştenească una obişnuită şi invers?
– DA.
Sarcina:
Varianta 10
а) Creaţi o funcţie şablon, de sortare a elementelor unui masiv în descreştere prin metoda de
introducere. Funcţia trebuie să lucreze cu masive de lungimi diferite.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
using namespace std;
template<typename T>
T* sortare_descrescator(int n, T t[])
{
T key;
int i, j;
for (i = 1; i < n; i++)
{
key = t[i];
j = i-1;
while (j >= 0 && t[j] < key)
{
t[j+1] = t[j];
j = j-1;
}
t[j+1] = key;
}
return t;
}
int main(){
int a[3]={2,1,9};
float b[4]={3.0,1.2,4.8,1.9};
sortare_descrescator<int >(3,a);
sortare_descrescator<float>(4,b);
for (int i=0; i <3 ; i++)
{printf("%d ", a[i]);}
printf("\n");
for (int i=0; i < 4; i++)
{printf("%f ", b[i]);}
return 0;
}

b) Creaţi clasa parametrizată MultiMap – listă multi-asociativă, care conţine cheia câmpurilor şi
lista de valori. Adică, unei chei pot sa-i aparţină mai multe valori. Clasa trebuie să conţină
constructorii, destructorii şi funcţiile add, removeByKey, getLength, getByKey, getByValue, şi
operatorii [] şi de intrare/ieşire.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <conio.h>
using namespace std;
template<typename T1,typename T2,typename T3>
class MultiMap
{
private:
T1 key[100];
T2 listvalue[100][100];
T3 length[100];
int n;
public:
MultiMap(T1 a[10],T2 b[10][10],T3 c[10],int n1)
{
for(int i=0;i<=n1;i++)
{
key[i]=a[i];
length[i]=c[i];
for(int j=0;j<=length[i];j++)
{
listvalue[i][j]=b[i][j];
}
}
n=n1;
}
MultiMap()
{
cout<<endl<<"Creare obiect";
}

~MultiMap()
{
delete [] key;
delete []listvalue;
delete [] length;
}
void add(T1 key1,T2 k[],T3 lung)
{
key[n]=key1;
length[n]=lung;
for(int i=0;i<lung;i++)
{
listvalue[n][i]=k[i];
}
n++;
}
void ShowMap()
{
cout<<"Multimap Date";
for(int i=0;i<n;i++)
{
cout<<endl<<"Key = "<<key[i];

cout<<" Lista de valori : ";


for(int j=0;j<length[i];j++)
{
cout<<" "<<listvalue[i][j];
}
}
}
void removebykey(T1 cheie)
{
for(int i=0;i<n;i++)
if(cheie==key[i])
{
for(int j=i;j<n-1;j++)
{
key[j]=key[j+1];
length[j]=length[j+1];
for(int k=0;k<length[j+1];k++)
{
listvalue[j][k]=listvalue[j+1][k];
}
}n--;
}
}
int getLength(T1 cheie)
{
for(int i=0;i<n;i++)
if(cheie==key[i])
{
return length[i];
}
}
int * getByKey(T1 cheie)
{
int rezult[10];
for(int i=0;i<n;i++)
if(cheie==key[i])
{
cout<<endl<<"Lista de valori corespunzatoare cheii: "<<key[i];
cout<<" este: ";
for(int j=0;j<length[i];j++)
{
cout<<" "<<listvalue[i][j];
rezult[i]=listvalue[i][j];
}
}
return rezult;
}
int* getByValue(T2 val)
{
int rezult[10],k=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<length[i];j++)
{
if(listvalue[i][j]==val)
{rezult[k]=key[i]; k++;}

}
}
cout<<endl<<"Cheile care contin aceasta valoare "<<val<<" sunt: ";
for(int i=0;i<k;i++)
{
cout<<endl<<" key="<<rezult[i];
}
return rezult;
}
void operator[](int x)
{
x--;
cout<<endl<<endl<<"cheia cu nr de ordine "<<x+1<<" include "<<length[x]<<" elemente :";
for(int i=0;i<length[x];i++)
cout<<" "<<listvalue[x][i];
}
friend istream &operator >>(istream &input, MultiMap&);
friend ostream &operator<<(ostream &os, MultiMap&);

};

ostream& operator<<(ostream& os, MultiMap<int,int,int> &t)


{
os<<endl<<endl<<"<< of obiectul clasei MultiMap :";
for(int i=0;i<t.n;i++)
{
os<<endl<<" key "<<t.key[i];
os<<" valori:";
for(int j=0;j<t.length[i];j++)
{
cout<<t.listvalue[i][j]<<" ";
}
}
return os;
}
istream &operator >> (istream &input, MultiMap<int,int,int> &f) {
int x,y,z;
delete f.key;
delete f.length;
delete f.listvalue;
cout<<endl<<">> a obiectul clasei MultiMap :";
cout<<endl<<endl << "Nr de key: ";
input>>x;
for(int i=0;i<x;i++)
{
cout<<endl<<"Key= "; input>>f.key[i];
cout<<endl<<"Nr de valori= "; input>>f.length[i];
for(int j=0;j<f.length[i];j++)
{
cout<<"v["<<j+1<<"]= "; input>>f.listvalue[i][j];
}
}
return (input);
}
int main(){
int *x,*y,z[10],w;
int a[3]={2,1,9};
int b[3]={3,4,2};
int c[3][10];
c[0][0]=1;c[0][1]=3;c[0][2]=6;
c[1][0]=3;c[1][1]=10;c[1][2]=0;c[1][3]=9;
c[2][0]=8;c[2][1]=8;
MultiMap<int,int,int> mapa(a,c,b,3);
mapa.ShowMap();
cout<<endl<<endl<<"Add a key=15 "<<endl;
mapa.add(15,b,3);
mapa.ShowMap();
cout<<endl<<endl<<"Delete by key=1 "<<endl;
mapa.removebykey(1);
mapa.ShowMap();
cout<<endl<<endl<<"Get length by key=2 "<<endl;
w=mapa.getLength(2);
cout<<"Length: "<<w;
cout<<endl<<endl;
x=mapa.getByKey(9);
cout<<endl<<endl;
y=mapa.getByValue(3);
cout<<mapa;
MultiMap<int,int,int> obj;
// cin>>obj;
mapa[2];
return 0;
}
Concluzii:

In urma efectuarii acestei lucrari de laborator capatat cunostinte despre modul de lucru
sabloanele in C++,in cazul functiilor parametrizate dupa parerea mea este un mecanism foarte
util si usor de interpretat,iar in cazul claselor dupa parerea mea mecanismul de scriere este foarte
complicat trebuie de prevazul ca oriude sa fie genericul prezent.

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

  • Lab 6
    Lab 6
    Document4 pagini
    Lab 6
    Егор Казаков
    Încă nu există evaluări
  • POO1-varianta 3
    POO1-varianta 3
    Document5 pagini
    POO1-varianta 3
    Octavian Lucaș
    Încă nu există evaluări
  • Grafica Laborator Nr.2
    Grafica Laborator Nr.2
    Document8 pagini
    Grafica Laborator Nr.2
    Cebotari Ion
    100% (1)
  • Lab 6 Poo
    Lab 6 Poo
    Document5 pagini
    Lab 6 Poo
    Alex Tronciu
    Încă nu există evaluări
  • Programarea Avansata
    Programarea Avansata
    Document8 pagini
    Programarea Avansata
    iry_piry
    Încă nu există evaluări
  • Raport APA Cucu Eugeniu Lab.1
    Raport APA Cucu Eugeniu Lab.1
    Document7 pagini
    Raport APA Cucu Eugeniu Lab.1
    Cucu Eugen
    Încă nu există evaluări
  • Lab APA 4
    Lab APA 4
    Document12 pagini
    Lab APA 4
    AlionaCrigan
    Încă nu există evaluări
  • POO Lab7
    POO Lab7
    Document6 pagini
    POO Lab7
    Dani Ela
    Încă nu există evaluări
  • Laborator nr6 CDE
    Laborator nr6 CDE
    Document5 pagini
    Laborator nr6 CDE
    Vlad Racu
    Încă nu există evaluări
  • Grafica Laborator Nr.3
    Grafica Laborator Nr.3
    Document5 pagini
    Grafica Laborator Nr.3
    Cebotari Ion
    100% (2)
  • Lab 6 Cazacu POO
    Lab 6 Cazacu POO
    Document5 pagini
    Lab 6 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • APA - Proiect de Curs
    APA - Proiect de Curs
    Document43 pagini
    APA - Proiect de Curs
    Dan
    Încă nu există evaluări
  • Laborator 3 Croitoru Tudor
    Laborator 3 Croitoru Tudor
    Document8 pagini
    Laborator 3 Croitoru Tudor
    DorelDjj
    Încă nu există evaluări
  • Lab 2 MMC Boj
    Lab 2 MMC Boj
    Document12 pagini
    Lab 2 MMC Boj
    Andrian Brinzan
    Încă nu există evaluări
  • Lab1 Apa
    Lab1 Apa
    Document15 pagini
    Lab1 Apa
    SlavicCaldare
    Încă nu există evaluări
  • TW Lab5
    TW Lab5
    Document3 pagini
    TW Lab5
    Dan
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • Laborator Porgramarea Calculatoarelor 3
    Laborator Porgramarea Calculatoarelor 3
    Document3 pagini
    Laborator Porgramarea Calculatoarelor 3
    Sergiu Lungu
    Încă nu există evaluări
  • Raport: La Disciplina Metode Și Modele de Calcul 1
    Raport: La Disciplina Metode Și Modele de Calcul 1
    Document9 pagini
    Raport: La Disciplina Metode Și Modele de Calcul 1
    Anya Mr
    Încă nu există evaluări
  • Lab 4 MN
    Lab 4 MN
    Document3 pagini
    Lab 4 MN
    nn nnn
    Încă nu există evaluări
  • Raspunsuri AC
    Raspunsuri AC
    Document10 pagini
    Raspunsuri AC
    Anastasia Gherman
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Ion Cornea
    Încă nu există evaluări
  • Lab.4 FC
    Lab.4 FC
    Document6 pagini
    Lab.4 FC
    Cristina Florea
    Încă nu există evaluări
  • Lab MMC2
    Lab MMC2
    Document5 pagini
    Lab MMC2
    Maxim
    Încă nu există evaluări
  • Laboratorul Cercetari
    Laboratorul Cercetari
    Document5 pagini
    Laboratorul Cercetari
    Buinovschi Corneliu
    Încă nu există evaluări
  • Lab 7 Cazacu POO
    Lab 7 Cazacu POO
    Document8 pagini
    Lab 7 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Laborator-I MMC
    Laborator-I MMC
    Document7 pagini
    Laborator-I MMC
    Ion Bn
    Încă nu există evaluări
  • Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Document8 pagini
    Rezolvarea Numerica A Sistemelor de Ecuatii Liniare
    Valentin I. Marius
    Încă nu există evaluări
  • Lab 2 Apa
    Lab 2 Apa
    Document12 pagini
    Lab 2 Apa
    Artur Kingsman
    Încă nu există evaluări
  • Evaluarea 1 TSSS, Varianta 2
    Evaluarea 1 TSSS, Varianta 2
    Document2 pagini
    Evaluarea 1 TSSS, Varianta 2
    Alex Tronciu
    Încă nu există evaluări
  • LFA Lab1
    LFA Lab1
    Document8 pagini
    LFA Lab1
    Dan
    Încă nu există evaluări
  • LFA Lab - 1
    LFA Lab - 1
    Document10 pagini
    LFA Lab - 1
    RoscaFlorin
    100% (1)
  • Raport 5 CDE
    Raport 5 CDE
    Document7 pagini
    Raport 5 CDE
    crismaruion
    Încă nu există evaluări
  • Lab1 GC
    Lab1 GC
    Document8 pagini
    Lab1 GC
    Andrei Barbalat
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • Lab 4 Apa
    Lab 4 Apa
    Document21 pagini
    Lab 4 Apa
    crismaruion
    Încă nu există evaluări
  • Laborator 4 Croitoru Tudor
    Laborator 4 Croitoru Tudor
    Document3 pagini
    Laborator 4 Croitoru Tudor
    DorelDjj
    Încă nu există evaluări
  • Laborator-3 MMC
    Laborator-3 MMC
    Document4 pagini
    Laborator-3 MMC
    Dan
    Încă nu există evaluări
  • Lab1 2mmc
    Lab1 2mmc
    Document10 pagini
    Lab1 2mmc
    Artur Kingsman
    Încă nu există evaluări
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • Exercitiul 4, 5,6,7ASDN
    Exercitiul 4, 5,6,7ASDN
    Document1 pagină
    Exercitiul 4, 5,6,7ASDN
    Ion Bn
    Încă nu există evaluări
  • Lab 1 GC
    Lab 1 GC
    Document4 pagini
    Lab 1 GC
    Ion Popescu
    Încă nu există evaluări
  • AMOO - Proiect de An
    AMOO - Proiect de An
    Document4 pagini
    AMOO - Proiect de An
    Dan
    Încă nu există evaluări
  • Lab 3 Ppe
    Lab 3 Ppe
    Document8 pagini
    Lab 3 Ppe
    Anastasia Gherman
    Încă nu există evaluări
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Încă nu există evaluări
  • ASDN Lucrarea Individuala, Galusca Sergiu
    ASDN Lucrarea Individuala, Galusca Sergiu
    Document10 pagini
    ASDN Lucrarea Individuala, Galusca Sergiu
    Sergiu Gl
    Încă nu există evaluări
  • Raspunsuri EP II 01-28
    Raspunsuri EP II 01-28
    Document8 pagini
    Raspunsuri EP II 01-28
    Poloboc
    Încă nu există evaluări
  • Laborator-2mmc Balan Ion
    Laborator-2mmc Balan Ion
    Document12 pagini
    Laborator-2mmc Balan Ion
    Ion Bn
    Încă nu există evaluări
  • Laborator nr.3 POO
    Laborator nr.3 POO
    Document6 pagini
    Laborator nr.3 POO
    MARYAN Pătru
    Încă nu există evaluări
  • Lucrare de Laborator nr.1
    Lucrare de Laborator nr.1
    Document17 pagini
    Lucrare de Laborator nr.1
    Cristina Florea
    Încă nu există evaluări
  • Asdn2 Lab5
    Asdn2 Lab5
    Document4 pagini
    Asdn2 Lab5
    Жан Ганган
    Încă nu există evaluări
  • TW Lab2
    TW Lab2
    Document4 pagini
    TW Lab2
    Dan
    Încă nu există evaluări
  • Lucrul 4 SDA
    Lucrul 4 SDA
    Document3 pagini
    Lucrul 4 SDA
    Ilie Turcan
    Încă nu există evaluări
  • Sofroni Maxim Ai-211 MN Lab3
    Sofroni Maxim Ai-211 MN Lab3
    Document7 pagini
    Sofroni Maxim Ai-211 MN Lab3
    Максим Софрони
    Încă nu există evaluări
  • Lucrarea de Laborator NR 4 POO
    Lucrarea de Laborator NR 4 POO
    Document10 pagini
    Lucrarea de Laborator NR 4 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lab 4
    Lab 4
    Document5 pagini
    Lab 4
    cristian
    Încă nu există evaluări
  • Lucrarea de Laborator NR 7 POO
    Lucrarea de Laborator NR 7 POO
    Document7 pagini
    Lucrarea de Laborator NR 7 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lucrarea de Laborator NR 7 POO
    Lucrarea de Laborator NR 7 POO
    Document7 pagini
    Lucrarea de Laborator NR 7 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lucrarea de Laborator NR 7 POO
    Lucrarea de Laborator NR 7 POO
    Document14 pagini
    Lucrarea de Laborator NR 7 POO
    Vlad Racu
    Încă nu există evaluări
  • Lab7C 1 1
    Lab7C 1 1
    Document7 pagini
    Lab7C 1 1
    Cristian Conea
    Încă nu există evaluări
  • Schimbarea Orei - Aparat de Casa
    Schimbarea Orei - Aparat de Casa
    Document1 pagină
    Schimbarea Orei - Aparat de Casa
    Grosu Elena
    Încă nu există evaluări
  • Schimbarea Orei - Aparat de Casa
    Schimbarea Orei - Aparat de Casa
    Document1 pagină
    Schimbarea Orei - Aparat de Casa
    Grosu Elena
    Încă nu există evaluări
  • PR Ts-Teme
    PR Ts-Teme
    Document1 pagină
    PR Ts-Teme
    Grosu Elena
    Încă nu există evaluări
  • PS TS
    PS TS
    Document16 pagini
    PS TS
    Grosu Elena
    Încă nu există evaluări
  • Windows, Icons, Menus, Pointer
    Windows, Icons, Menus, Pointer
    Document3 pagini
    Windows, Icons, Menus, Pointer
    Grosu Elena
    Încă nu există evaluări
  • Testing L3
    Testing L3
    Document4 pagini
    Testing L3
    Sandu Nicula
    Încă nu există evaluări
  • Lab7 POO
    Lab7 POO
    Document10 pagini
    Lab7 POO
    Grosu Elena
    Încă nu există evaluări
  • Cde-6 Raport
    Cde-6 Raport
    Document5 pagini
    Cde-6 Raport
    Grosu Elena
    Încă nu există evaluări
  • Cde-6 Raport
    Cde-6 Raport
    Document5 pagini
    Cde-6 Raport
    Grosu Elena
    Încă nu există evaluări
  • Cde-6 Raport
    Cde-6 Raport
    Document5 pagini
    Cde-6 Raport
    Grosu Elena
    Încă nu există evaluări