User Tools

Site Tools


tanszek:oktatas:szamitastechnika:vektorok_matrixok

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:szamitastechnika:vektorok_matrixok [2025/10/01 13:32] – created szabomtanszek:oktatas:szamitastechnika:vektorok_matrixok [2025/10/13 09:08] (current) – [Gyakorlás] szabom
Line 308: Line 308:
     for (int i = 0; i < m; i++) {     for (int i = 0; i < m; i++) {
         for (int j = 0; j < n; j++) {         for (int j = 0; j < n; j++) {
-            t[j][i] = a[i][j];+            t[i][j] = a[j][i];
         }         }
     }     }
Line 437: Line 437:
     printf("FőátlóK összege = %d\nMellékátlók összege = %d\n", foatlo, mellekatlo );     printf("FőátlóK összege = %d\nMellékátlók összege = %d\n", foatlo, mellekatlo );
     return 0;     return 0;
 +}
 +</sxh>
 +
 +----
 +
 +**Komplex feladatok**
 +Két mátrix összeszorzása
 +<sxh c> 
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <time.h>
 +#define MAX 100
 +// Függvény a mátrix kiírásához
 +void printMatrix(int matrix[MAX][MAX], int rows, int cols) {
 +    for (int i = 0; i < rows; i++) {
 +        for (int j = 0; j < cols; j++) {
 +            printf("%d\t", matrix[i][j]);
 +        }
 +        printf("\n");
 +    }
 +}
 +
 +// Függvény a két mátrix szorzatának kiszámításához
 +
 +void multiplyMatrices(int matrix1[MAX][MAX], int rows1, int cols1, int matrix2[MAX][MAX], int rows2, int cols2, int result[MAX][MAX]) {
 +    // Ellenőrzés: a két mátrix szorzatának megfelelő mérete
 +    if (cols1 != rows2) {
 +        printf("A ket matrix szorzatanak merete nem megfelelo.\n");
 +        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("Adja meg az elso matrix meretet (sor oszlop): ");
 +    scanf("%d %d", &rows1, &cols1); //C99 előtt két sorba kell írni, két scanf (codeblock)
 +
 +    printf("Adja meg a masodik matrix meretet (sor oszlop): ");
 +    scanf("%d %d", &rows2, &cols2); //C99 előtt két sorba kell írni, két scanf (codeblock)
 +
 +
 +    if (rows1 > MAX || cols1 > MAX || rows2 > MAX || cols2 > MAX) {
 +        printf("A megadott méret túl nagy. Maximum méret: %d\n", MAX);
 +        return 1; // Kilépés hibakóddal
 +    }
 +
 +    // Mátrixok létrehozása és inicializálása véletlenszámokkal
 +    int matrix1[MAX][MAX], matrix2[MAX][MAX], result[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("Eredeti elso matrix:\n");
 +    printMatrix(matrix1, rows1, cols1);
 +    printf("\nEredeti masodik matrix:\n");
 +    printMatrix(matrix2, rows2, cols2);
 +
 +    // Mátrixok szorzata
 +    multiplyMatrices(matrix1, rows1, cols1, matrix2, rows2, cols2, result);
 +
 +    // Szorzat kiírása
 +    printf("\nA ket matrix szorzata:\n");
 +    printMatrix(result, rows1, cols2);
 +
 +    return 0; // Sikeres végrehajtás
 +}
 +</sxh>
 +Mátrix maximális részmátrix megtalálása
 +<sxh c> 
 +#include <stdio.h>
 +#include <stdlib.h>
 +#define MERET 100
 +int matrix[MERET + 1][MERET + 1];
 +int main() {
 +    int n, bal, felso, jobb, also, i, j;
 +    long max;
 +    scanf("%d", &n);
 +
 +    for (i = 0; i < n; i++){
 +        for (j = 0; j < n; j++){
 +            scanf("%d", &matrix[i][j]);
 +        }
 +    }
 +    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("%ld\n", max);
 } }
 </sxh> </sxh>
tanszek/oktatas/szamitastechnika/vektorok_matrixok.1759325520.txt.gz · Last modified: 2025/10/01 13:32 by szabom