Все числа матрицы заменить на их квадраты - C (СИ)
Формулировка задачи:
в двумерном массиве К ( 4,8) в строке , содержащей максимаольный элемент , все числа заменить на их квадраты
Решение задачи: «Все числа матрицы заменить на их квадраты»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int * max_element(const int * arr, size_t count) {
return ( count < 2 ) ? (int*)arr : ( *arr < *(arr + count - 1) ) ? max_element(arr + 1, count -1) : max_element(arr, count - 1);
}
void random_fill(int * arr, size_t count, const int low, const int high) {
while ( count-- )
*arr++ = rand() % ( high - low + 1 ) + low;
}
void dump(const int * arr, size_t count, const size_t width) {
while ( count-- )
printf("%*d%c", width, *arr++, ( count ) ? ' ' : '\n');
}
#define ROWS 4
#define COLUMNS 8
#define LOW 0
#define HIGH 99
#define WIDTH 2
int main(void) {
int matrix[ROWS][COLUMNS], maxvalues[ROWS], * maxvalptr;
size_t i;
srand(time(NULL));
printf("Before:\n");
for ( i = 0; i < ROWS; ++i ) {
random_fill(matrix[i], COLUMNS, LOW, HIGH);
dump(matrix[i], COLUMNS, WIDTH);
maxvalues[i] = *max_element(matrix[i], COLUMNS);
}
printf("\nAfter:\n");
maxvalptr = max_element(maxvalues, ROWS);
for ( i = 0; i < COLUMNS; ++i )
matrix[maxvalptr - maxvalues][i] *= matrix[maxvalptr - maxvalues][i];
for ( i = 0; i < ROWS; ++i )
dump(matrix[i], COLUMNS, WIDTH * 2);
return 0;
}
Объяснение кода листинга программы
Вывод: Код генерирует случайные значения в диапазоне от 0 до 99 для каждого элемента матрицы размером 4x8. Затем он находит максимальное значение в каждой строке и заменяет его на квадрат этого значения. В конце он выводит матрицу до и после замены. Список действий:
- Включаем необходимые заголовочные файлы
- Определяем параметры программы: количество строк и столбцов матрицы, минимальное и максимальное значения для заполнения матрицы, ширину вывода
- Создаем матрицу и массив для хранения максимальных значений в каждой строке
- Инициализируем генератор случайных чисел
- Выводим матрицу до замены
- Находим максимальное значение в каждой строке и сохраняем его в массив
- Заменяем найденное максимальное значение на квадрат этого значения
- Выводим матрицу после замены