tanszek:oktatas:szamitastechnika:vektorok_matrixok
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tanszek:oktatas:szamitastechnika:vektorok_matrixok [2025/10/08 08:51] – [Gyakorlás] szabom | tanszek:oktatas:szamitastechnika:vektorok_matrixok [2025/10/13 09:08] (current) – [Gyakorlás] szabom | ||
---|---|---|---|
Line 437: | Line 437: | ||
printf(" | printf(" | ||
return 0; | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Komplex feladatok** | ||
+ | Két mátrix összeszorzása | ||
+ | <sxh c> | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #define MAX 100 | ||
+ | // Függvény a mátrix kiírásához | ||
+ | void printMatrix(int matrix[MAX][MAX], | ||
+ | for (int i = 0; i < rows; i++) { | ||
+ | for (int j = 0; j < cols; j++) { | ||
+ | printf(" | ||
+ | } | ||
+ | printf(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Függvény a két mátrix szorzatának kiszámításához | ||
+ | |||
+ | void multiplyMatrices(int matrix1[MAX][MAX], | ||
+ | // Ellenőrzés: | ||
+ | if (cols1 != rows2) { | ||
+ | printf(" | ||
+ | exit(1); // Kilépés hibakóddal | ||
+ | } | ||
+ | |||
+ | for (int i = 0; i < rows1; i++) { | ||
+ | for (int j = 0; j < cols2; j++) { | ||
+ | result[i][j] = 0; | ||
+ | |||
+ | for (int k = 0; k < cols1; k++) { | ||
+ | result[i][j] += matrix1[i][k] * matrix2[k][j]; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | int main() { | ||
+ | // Véletlenszám inicializálása | ||
+ | srand(time(NULL)); | ||
+ | |||
+ | // Mátrix méreteinek bekérése | ||
+ | int rows1, cols1, rows2, cols2; | ||
+ | |||
+ | printf(" | ||
+ | scanf(" | ||
+ | |||
+ | printf(" | ||
+ | scanf(" | ||
+ | |||
+ | |||
+ | if (rows1 > MAX || cols1 > MAX || rows2 > MAX || cols2 > MAX) { | ||
+ | printf(" | ||
+ | return 1; // Kilépés hibakóddal | ||
+ | } | ||
+ | |||
+ | // Mátrixok létrehozása és inicializálása véletlenszámokkal | ||
+ | int matrix1[MAX][MAX], | ||
+ | |||
+ | for (int i = 0; i < rows1; i++) { | ||
+ | for (int j = 0; j < cols1; j++) { | ||
+ | matrix1[i][j] = rand() % 100; // Véletlenszám 0 és 99 között | ||
+ | } | ||
+ | } | ||
+ | |||
+ | for (int i = 0; i < rows2; i++) { | ||
+ | for (int j = 0; j < cols2; j++) { | ||
+ | matrix2[i][j] = rand() % 100; // Véletlenszám 0 és 99 között | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Eredeti mátrixok kiírása | ||
+ | printf(" | ||
+ | printMatrix(matrix1, | ||
+ | printf(" | ||
+ | printMatrix(matrix2, | ||
+ | |||
+ | // Mátrixok szorzata | ||
+ | multiplyMatrices(matrix1, | ||
+ | |||
+ | // Szorzat kiírása | ||
+ | printf(" | ||
+ | printMatrix(result, | ||
+ | |||
+ | return 0; // Sikeres végrehajtás | ||
+ | } | ||
+ | </ | ||
+ | Mátrix maximális részmátrix megtalálása | ||
+ | <sxh c> | ||
+ | #include < | ||
+ | #include < | ||
+ | #define MERET 100 | ||
+ | int matrix[MERET + 1][MERET + 1]; | ||
+ | int main() { | ||
+ | int n, bal, felso, jobb, also, i, j; | ||
+ | long max; | ||
+ | scanf(" | ||
+ | |||
+ | for (i = 0; i < n; i++){ | ||
+ | for (j = 0; j < n; j++){ | ||
+ | scanf(" | ||
+ | } | ||
+ | } | ||
+ | max = matrix[0][0]; | ||
+ | for (bal = 0; bal < n; bal++){ | ||
+ | for (felso = 0; felso < n; felso++){ | ||
+ | for (jobb = bal; jobb < n; jobb++){ | ||
+ | for (also = felso; also < n; also++) { | ||
+ | long osszeg = 0; | ||
+ | for (i = bal; i <= jobb; i++){ | ||
+ | for (j = felso; j <= also; j++){ | ||
+ | osszeg += matrix[i][j]; | ||
+ | } | ||
+ | } | ||
+ | if (osszeg > max){ | ||
+ | max = osszeg; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | printf(" | ||
} | } | ||
</ | </ |
tanszek/oktatas/szamitastechnika/vektorok_matrixok.1759913483.txt.gz · Last modified: 2025/10/08 08:51 by szabom