avatar
Untitled

Guest 775 20th May, 2023

#include <stdio.h>
#include <stdlib.h>

// Hàm để đọc ma trận từ tệp
int** readMatrixFromFile(const char* filename, int* rows, int* columns) {
    FILE* file = fopen(filename, "r");
    if (file == NULL) {
        printf("Không thể mở tệp %s\n", filename);
        return NULL;
    }

    fscanf(file, "%d %d", rows, columns);

    int** matrix = (int**)malloc(*rows * sizeof(int*));

    for (int i = 0; i < *rows; i++) {
        matrix[i] = (int*)malloc(*columns * sizeof(int));
        for (int j = 0; j < *columns; j++) {
            fscanf(file, "%d", &matrix[i][j]);
        }
    }

    fclose(file);
    return matrix;
}

// Hàm để tính tích của từng cột của ma trận
void calculateColumnProduct(int** matrix, int rows, int columns) {
    for (int j = 0; j < columns; j++) {
        int product = 1;
        for (int i = 0; i < rows; i++) {
            product *= matrix[i][j];
        }
        printf("Tích của cột %d: %d\n", j + 1, product);
    }
}

// Hàm để tìm cột có tích các phần tử nhỏ nhất
int findColumnWithSmallestProduct(int** matrix, int rows, int columns) {
    int minProduct = 1;
    int minColumn = -1;

    for (int j = 0; j < columns; j++) {
        int product = 1;
        for (int i = 0; i < rows; i++) {
            product *= matrix[i][j];
        }
        if (minColumn == -1 || product < minProduct) {
            minProduct = product;
            minColumn = j;
        }
    }

    return minColumn;
}

// Hàm để giải phóng bộ nhớ đã cấp phát cho ma trận
void freeMatrix(int** matrix, int rows) {
    for (int i = 0; i < rows; i++) {
        free(matrix[i]);
    }
    free(matrix);
}

int main() {
    int rows, columns;
    int** matrix = readMatrixFromFile("matrix.txt", &rows, &columns);
    if (matrix == NULL) {
        return 0;
    }

    calculateColumnProduct(matrix, rows, columns);

    int smallestProductColumn = findColumnWithSmallestProduct(matrix, rows, columns);
    printf("Cột có tích các phần tử nhỏ nhất: %d\n", smallestProductColumn + 1);

    freeMatrix(matrix, rows);

    return 0;
}
Description

No description

To share this paste please copy this url and send to your friends
RAW Paste Data