Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
2.82 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

void analyzeMatrix(const char* inputFile, const char* outputFile) {
    FILE *fin = fopen(inputFile, "r");
    FILE *fout = fopen(outputFile, "w");
    
    if (!fin || !fout) {
        printf("Error opening files!\n");
        return;
    }
    
    int rows, cols;
    fscanf(fin, "%d %d", &rows, &cols);
    
    int matrix[100][100];
    int positive = 0, negative = 0, zero = 0;
    double sum = 0;
    int total = rows * cols;
    
    int maxVal = INT_MIN, minVal = INT_MAX;
    int maxRow = 0, maxCol = 0, minRow = 0, minCol = 0;
    int maxNegative = INT_MIN, minPositive = INT_MAX;
    int maxNegRow = 0, maxNegCol = 0, minPosRow = 0, minPosCol = 0;
    
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            fscanf(fin, "%d", &matrix[i][j]);
            int val = matrix[i][j];
            sum += val;
            
            if (val > 0) positive++;
            else if (val < 0) negative++;
            else zero++;
            
            if (val > maxVal) {
                maxVal = val;
                maxRow = i;
                maxCol = j;
            }
            if (val < minVal) {
                minVal = val;
                minRow = i;
                minCol = j;
            }
            if (val < 0 && val > maxNegative) {
                maxNegative = val;
                maxNegRow = i;
                maxNegCol = j;
            }
            if (val > 0 && val < minPositive) {
                minPositive = val;
                minPosRow = i;
                minPosCol = j;
            }
        }
    }
    
    fprintf(fout, "Matrix analysis results:\n");
    fprintf(fout, "Positive elements: %d\n", positive);
    fprintf(fout, "Negative elements: %d\n", negative);
    fprintf(fout, "Zero elements: %d\n", zero);
    fprintf(fout, "Average value: %.2f\n", sum / total);
    fprintf(fout, "Maximum: %d at [%d][%d]\n", maxVal, maxRow, maxCol);
    fprintf(fout, "Minimum: %d at [%d][%d]\n", minVal, minRow, minCol);
    fprintf(fout, "Largest negative: %d at [%d][%d]\n", maxNegative, maxNegRow, maxNegCol);
    fprintf(fout, "Smallest positive: %d at [%d][%d]\n", minPositive, minPosRow, minPosCol);
    
    fclose(fin);
    fclose(fout);
}

int main(int argc, char* argv[]) {
    char inputFile[100], outputFile[100];
    
    if (argc >= 3) {
        strcpy(inputFile, argv[1]);
        strcpy(outputFile, argv[2]);
    } else {
        printf("Enter input filename: ");
        scanf("%s", inputFile);
        printf("Enter output filename: ");
        scanf("%s", outputFile);
    }
    
    analyzeMatrix(inputFile, outputFile);
    printf("Analysis completed!\n");
    
    return 0;
}
Соседние файлы в папке Лаба7