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

#define ROWS_A 10
#define COLS_A 15
#define ROWS_B 15
#define COLS_B 10

// Функция проверки, является ли число совершенным
int isPerfect(int num) {
    if (num < 2) return 0;
    
    int sum = 1;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            sum += i;
            if (i != num / i) {
                sum += num / i;
            }
        }
    }
    return (sum == num);
}

// Функция ввода матрицы A
void inputMatrixA(int matrix[ROWS_A][COLS_A]) {
    printf("Enter matrix A (%dx%d):\n", ROWS_A, COLS_A);
    for (int i = 0; i < ROWS_A; i++) {
        for (int j = 0; j < COLS_A; j++) {
            printf("A[%d][%d] = ", i, j);
            scanf("%d", &matrix[i][j]);
        }
    }
}

// Функция ввода матрицы B
void inputMatrixB(int matrix[ROWS_B][COLS_B]) {
    printf("Enter matrix B (%dx%d):\n", ROWS_B, COLS_B);
    for (int i = 0; i < ROWS_B; i++) {
        for (int j = 0; j < COLS_B; j++) {
            printf("B[%d][%d] = ", i, j);
            scanf("%d", &matrix[i][j]);
        }
    }
}

// Функция вывода матрицы A
void printMatrixA(int matrix[ROWS_A][COLS_A], const char* name) {
    printf("\nMatrix %s (%dx%d):\n", name, ROWS_A, COLS_A);
    for (int i = 0; i < ROWS_A; i++) {
        for (int j = 0; j < COLS_A; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }
}

// Функция вывода матрицы B
void printMatrixB(int matrix[ROWS_B][COLS_B], const char* name) {
    printf("\nMatrix %s (%dx%d):\n", name, ROWS_B, COLS_B);
    for (int i = 0; i < ROWS_B; i++) {
        for (int j = 0; j < COLS_B; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }
}

// Функция замены совершенных чисел нулями в матрице A
void replacePerfectNumbersA(int matrix[ROWS_A][COLS_A]) {
    for (int i = 0; i < ROWS_A; i++) {
        for (int j = 0; j < COLS_A; j++) {
            if (isPerfect(matrix[i][j])) {
                matrix[i][j] = 0;
            }
        }
    }
}

// Функция замены совершенных чисел нулями в матрице B
void replacePerfectNumbersB(int matrix[ROWS_B][COLS_B]) {
    for (int i = 0; i < ROWS_B; i++) {
        for (int j = 0; j < COLS_B; j++) {
            if (isPerfect(matrix[i][j])) {
                matrix[i][j] = 0;
            }
        }
    }
}

int main() {
    int A[ROWS_A][COLS_A];
    int B[ROWS_B][COLS_B];
    
    // Ввод матриц
    inputMatrixA(A);
    inputMatrixB(B);
    
    // Вывод исходных матриц
    printMatrixA(A, "A (original)");
    printMatrixB(B, "B (original)");
    
    // Замена совершенных чисел
    replacePerfectNumbersA(A);
    replacePerfectNumbersB(B);
    
    // Вывод результатов
    printMatrixA(A, "A (after replacement)");
    printMatrixB(B, "B (after replacement)");
    
    return 0;
}
Соседние файлы в папке Лаба5