lab4.txt
Post on 05-Apr-2018
216 Views
Preview:
TRANSCRIPT
-
7/31/2019 lab4.txt
1/9
MINISTERUL EDUCATIEI I TINERETULUI AL REPUBLICII
MOLDOVA
UNIVERSITATE DE STAT DIN MOLDOVA
Dare de seam
Laboratorul Nr. 4
Reprezentarea in memorie a tablourilor
multidimensionale. Organizarea accesului la elemente
SDMP
Elaborat de: studenta gr. MNI-21
Bazatin Anton
A verificat: Bitcovschi L.
-
7/31/2019 lab4.txt
2/9
*Formularea problemei:Se d dimensiunea tabloului i limitele indicilor pentru fiecare dimensiune.
S se creeze trei clase care realizeaz respectiv:
- metoda acesului direct la elemente- metoda vectorului definitoriu- metoda Iliffe
De comparat aceste metode dupa timpul de acces i memoria alocat pentru exemplarele
claselor respective.
[-3..-1;0..1;-4..-2;8..10] pe linie
*Listing:
I. Metoda acesului direct la elemente:#include
#include
#include
#includeclass direct
{
int n1,m1,n2,m2,n3,m3,n4,m4;
int *p_direct;
public:
direct(int n11,int m11,int n22,int m22,int n33,int m33,int n44,int m44)
{
n1=n11;n2=n22;n3=n33;n4=n44;
m1=m11;m2=m22;m3=m33;m4=m44;
p_direct=new int[(m1-n1+1)*(m2-n2+1)*(m3-n3+1)*(m4-n4+1)];
}
void fisier_inscriere();
void fisier_citire();
void indice_direct(int,int,int,int);
int dimensiune()
{
return (m1-n1+1)*(m2-n2+1)*(m3-n3+1)*(m4-n4+1);
}
};
void direct::fisier_inscriere()
{
FILE *file;
file = fopen("d:\\data.txt","w");
for(int i=0;i
-
7/31/2019 lab4.txt
3/9
void direct::fisier_citire()
{
FILE *file;
file = fopen("d:\\data.txt","r");
for(int i=0;i
-
7/31/2019 lab4.txt
4/9
do
{
coutl;
}while((l>h4)||(l
-
7/31/2019 lab4.txt
5/9
II. Metoda vectorului definitoriu:#include
#include
#include
#include
class definitor
{
int *v;
int *p_definitor;
public:
definitor(int n11,int m11,int n22,int m22,int n33,int m33,int n44,int m44)
{
int D1,D2,D3,D4;
v=new int [15];
D4=1;
D1=(m22-n22+1)*D2;D2=(m33-n33+1)*D3;
D3=(m44-n44+1)*D4;
v[0]=4;
v[1]=n11;v[2]=m11;
v[3]=n22;v[4]=m22;
v[5]=n33;v[6]=m33;
v[7]=n44;v[8]=m44;
v[9]=(m11-n11+1)*(m22-n22+1)*(m33-n33+1)*(m44-n44+1);
v[10]=D1;v[11]=D2;v[12]=D3;v[13]=D4;
v[14]=n11*D1+n22*D2+n33*D3+n44*D4;
p_definitor=new int[v[9]];
cout
-
7/31/2019 lab4.txt
6/9
int S=0;
for(long double i=0;i
-
7/31/2019 lab4.txt
7/9
s=t2.ti_sec-t1.ti_sec;
printf("\n Diferenta este %2d:%2d:%2d:%2d",t2.ti_hour-t1.ti_hour,
t2.ti_min-t1.ti_min,s,h);
getch();
}
III. Metoda Iliffe#include // pe coloana
#include
#include
#include
class iliffe
{
int ****A;
int ***V1[5];
int **V21[2],**V22[2],**V23[2],**V24[2],**V25[2];
int *V31[4],*V32[4],*V33[4],*V34[4],*V35[4],*V36[4],*V37[4],*V38[4],*V39[4],*V40[4];
int V[120];
int n1,m1,n2,m2,n3,m3,n4,m4;
public:
iliffe (int l1,int h1,int l2,int h2,int l3,int h3,int l4,int h4)
{
n1=l1,n2=l2,n3=l3,n4=l4;
m1=h1,m2=h2,m3=h3,m4=h4;
A=V1;V1[0]=V21+1;
V1[1]=V22+1;
V1[2]=V23+1;
V1[3]=V24+1;
V1[4]=V24+1;
V21[0]=V31+5;
V21[1]=V32+5;
V22[0]=V33+5;
V22[1]=V34+5;
V23[0]=V35+5;
V23[1]=V36+5;
V24[0]=V37+5;
V24[1]=V38+5;
V25[0]=V39+5;
V25[1]=V40+5;
V31[0]=V-2; V31[1]=V+1; V31[2]=V+4; V31[3]=V+7;
V32[0]=V+10; V32[1]=V+13; V32[2]=V+16; V32[3]=V+19;
V33[0]=V+22; V33[1]=V+25; V33[2]=V+28; V33[3]=V+31;V34[0]=V+34; V34[1]=V+37; V34[2]=V+40; V34[3]=V+43;
V35[0]=V+46; V35[1]=V+49; V35[2]=V+52; V35[3]=V+55;
-
7/31/2019 lab4.txt
8/9
V36[0]=V+58; V36[1]=V+61; V36[2]=V+64; V36[3]=V+67;
V37[0]=V+70; V37[1]=V+73; V37[2]=V+76; V37[3]=V+79;
V38[0]=V+82; V38[1]=V+85; V38[2]=V+88; V38[3]=V+91;
V39[0]=V+94; V39[1]=V+97; V39[2]=V+100; V39[3]=V+103;
V40[0]=V+106; V40[1]=V+109; V40[2]=V+112; V40[3]=V+115;
}
~iliffe()
{delete ***A;
delete **V1;
delete *V21,*V22,*V23,*V24,*V25;
delete V31,V32,V33,V34,V35,V36,V37,V38,V39,V40;
}
void fisier(int,int,int,int);
};
void iliffe::fisier(int i,int j,int k,int l)
{
FILE *f;
if((f=fopen("d:\\data.txt","r"))==NULL)
{
cout
-
7/31/2019 lab4.txt
9/9
cin>>k;
}while((k>h3)||(kh4)||(l
top related