Поэлементно вычесть последнюю строку из всех столбцов матрицы, кроме последнего - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. Помогите решить. 1. Дана вещественная матрица А (8х8). Преобразовать матрицу: поэлементно вычесть последнюю строку из всех столбцов, кроме последнего. 2. В заданной целочисленной матрице размера mxn (m и n – некоторые константы) указать индексы всех элементов, имеющих наибольшее значение. Спасибо.

Решение задачи: «Поэлементно вычесть последнюю строку из всех столбцов матрицы, кроме последнего»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
const int* max_element(const int **matrix, size_t rows, size_t columns)
{
    int i, j;
    const int *ret_val = *matrix;
    if (rows == 0)
        return NULL;
    if (columns == 0)
        return NULL;
    for (i = 0; i < rows; i++)
        for (j = 0; j < columns; j++)
            if (matrix[i][j] > *ret_val)
                ret_val = &matrix[i][j];
    return ret_val;
}
 
void print_indexes
    (
        const int **matrix, 
        size_t rows, 
        size_t columns, 
        int value, 
        const char *fmt
    )
{
    int i, j;
    for (i = 0; i < rows; i++)
        for (j = 0; j < columns; j++)
            if (matrix[i][j] == value)
                printf(fmt, i, j);
}
 
int main(void)
{
    size_t rows, columns, i, j;
    int **matrix;
    srand(time(0));
    printf("Rows: ");
    if (scanf("%u", &rows) != 1)
    {
        fprintf(stderr, "Error reading variable");
        exit(1);
    }
    printf("Columns: ");
    if (scanf("%u", &columns) != 1)
    {
        fprintf(stderr, "Error reading variable");
        exit(1);
    }
    matrix = (int**)malloc(sizeof(int*) * rows);
    for (i = 0; i < rows; i++)
    {
        matrix[i] = (int*) malloc(sizeof(int) * columns);
        for (j = 0; j < columns; j++)
            printf("%4d ", matrix[i][j] = rand() % 20);
        putchar('\n');
    }
    print_indexes(matrix, rows, columns, *max_element(matrix, rows, columns), "[%d, %d]\n");
    for (i = 0; i < rows; i++)
        free(matrix[i]);
    free(matrix);
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Создается матрица случайных целых чисел.
  2. Находится максимальное значение в матрице.
  3. Выводится на экран найденное максимальное значение и его координаты в матрице.
  4. Все элементы матрицы освобождаются, и сама матрица удаляется.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.545 из 5
Похожие ответы