lab4.txt

Upload: delxp

Post on 05-Apr-2018

216 views

Category:

Documents


0 download

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