Vissza

Labor 2

Algoritmusok időmérése II


Feladatok:

1. Egy n elemű tömböt inicializáljunk véletlenszerűen generált számokkal.

  • Rendezzük a tömb elemeit 3 féle buborékos rendezéssel,
  • Hasonlítsuk össze a algoritmusok időigényeit.
  • Határozzuk meg a futási időket, ha a tömb elemszámát fokozatosan növeljük

2. Egy n elemű tömböt inicializáljunk véletlenszerűen generált számokkal.

  • Hasonlítsuk össze a szekvenciális keresés és bináris keresések időigényeit az adott tömbre.
  • Határozzuk meg a  futási időket, ha a tömb elemszámát fokozatosan növeljük.

3. Adott az alábbi módon definiált MATRIX típus:

typedef struct {
    int Rows;
    int Cols;
    double* Data; // Rows * Cols darab adat
} MATRIX_TYPE;
typedef MATRIX_TYPE* MATRIX;

Írjuk meg az alábbi függvényeket.  ( Hibakezelés is szükséges, pl. ha nem lehet összeadni két mátrixot, jelenjen meg hibaüzenet a képernyon, vagy rossz sor/oszlop van megadva a lekérdezésnél, vagy ha nem lehet a főátlót mekeresni, mert nem is négyzetes a mátrix, stb.)

Memória kezelés:

MATRIX NewMatrix( int Rows, int Cols ); // helyfoglalas (az adatoknak is)
void DeleteMatrix( MATRIX M ); // a memoria felszabaditasa
void CopyMatrix( MATRIX From, MATRIX To ); // mátrix másolás

Mátrix I/O műveletek:

void PrintMatrix( MATRIX M, FILE* f );
    // kiirja a megadott allomanyba a matrixot sor/oszlop formaban
void SetMatrixElement( MATRIX M, int Row, int Col, double Value );
    // folulirja a megadott sor/oszlopon talalhato elemet
double GetMatrixElement( MATRIX M, int Row, int Col );
    // lekerdi a megadott sor/oszlopban levo erteket
MATRIX GetRow( MATRIX M, int Row );
    // a visszateritendo matrix 1*Cols meretu sormatrix
MATRIX GetColumn( MATRIX M, int Co l);
    // a visszateritendo matrix Rows*1 meretu oszlopmatrix
void SetRow( MATRIX M, MATRIX Data, int Row );
    // a megadott szamu sor folulirasa a Data sormatrixxal
    void SetColumn( MATRIX M, MATRIX Data, int Col );
    // ugyanaz oszlopra
MATRIX Diag( MATRIX M );
    // a visszateritendo matrix egy sormatrix, ami az M foatlojan levo elemeket tartalmazza


Mátrix műveletek:
int Same( MATRIX A, MATRIX B );
    // megallapitja, hogy a ket matrix egyforma-e
MATRIX Transpose( MATRIX M );
    // a visszateritendo matrix, a parameter transzponaltja
MATRIX IdentityMatrix( int Rows ); // foatlon 1-esek
MATRIX ZeroMatrix( int Rows, int Cols ); // csupa 0-as
MATRIX OneMatrix( int Rows, int Cols ); // csupa 1-es
MATRIX RandomMatrix( int Rows, int Cols ); // veletlenszeru ertekek
MATRIX RandomMatrix( int Rows, int Cols ); // veletlenszeru ertekek
MATRIX MultiplyByScalar( MATRIX M, double Scalar ); // szorzas skalarral
MATRIX MatrixSum( MATRIX A, MATRIX B ); // ket matrix osszege
MATRIX MatrixProduct( MATRIX A, MATRIX B ); //ket matrix szorzata
double ProdOfElements( MATRIX M ); // az elemek szorzata
double SumOfElements( MATRIX M ); // az elemek osszege
double MaxElem( MATRIX M ); // a legnagyobb elem
double MinElem( MATRIX M ); // a legkisebb elem