1 Востаннє редагувалося adamans (27.12.2012 17:42:36)

Тема: Допомога з рішенням задачі на С. Матриці*

Дано матрицю С розміром MxN. Поміняти елемент кожного стовпця матриці С з максимальним елементом цього стовпця, другий елемент цього стовпця з мінімальним елементом цього стовпця. Вивести на друк задану і новоутворені матриці. Не можу реалізувати це завдання. Ось напрацювання.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
int C[4][4],D[4][4],i,j;
randomize();
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
{C[i][j]=random(16);

printf("C(%d)=%d\n",C[i][j]);
}
}
getch ();
return(0);
}

2

Re: Допомога з рішенням задачі на С. Матриці*

1. Відредагуйте назву теми згідно Правил.

2. По коду бачу заповнення матриці. Ок.
А алгоритм (не код, а саме логічний алгоритм) до заміни елементів як бачите?

3

Re: Допомога з рішенням задачі на С. Матриці*

Я не знаю який тут має бути алгоритм!

4

Re: Допомога з рішенням задачі на С. Матриці*

adamans написав:

Дано матрицю С розміром MxN. Поміняти елемент кожного стовпця матриці С з максимальним елементом цього стовпця, другий елемент цього стовпця з мінімальним елементом цього стовпця. Вивести на друк задану і новоутворені матриці.

Власне, тут і умова не до кінця чітка.

"Поміняти елемент": тобто вставити замість цього елемента максимальний по стовпцю, чи поміняти місцями цей елемент з максимальним? (у другому випадку - каша). Аналогічне питання щодо другої частини задачі.

5

Re: Допомога з рішенням задачі на С. Матриці*

Завтра мене не буде онлайн, тому підкину зараз кілька думок.
Загальна ідея: шукаємо максимальний елемент стовпця і після цього щось робимо по даному стовпцю.
А що конкретно - залежить від відповіді на питання у попередньому пості.
Власне, для ваших напрацювань код всередині функції можна сміливо вставляти прямо в main(), щоб не було необхідності мудрувати щодо області бачення змінної 'C' (це зараз не дуже принципова річ, гадаю).

//global variable of matrix (4x4) is defined before

void swapMax()
{
    int cols=4, rows=4;
    for(int iCol=0; iCol < cols; iCol++)
    {
        // Find max item in column
        int iRow=0;
        int max = C[iRow][iCol];
        for(; iRow < rows; iRow++)
            if(C[iRow][iCol] > max)
                max=C[iRow][iCol];
        // Do smth according to task you have...
    }
}

Аналогічна логіка для другої підзадачі щодо мінімального елемента, тільки треба буде змінити один знак у циклі пошуку елемента.

6

Re: Допомога з рішенням задачі на С. Матриці*

Bartash написав:
adamans написав:

Дано матрицю С розміром MxN. Поміняти елемент кожного стовпця матриці С з максимальним елементом цього стовпця, другий елемент цього стовпця з мінімальним елементом цього стовпця. Вивести на друк задану і новоутворені матриці.

Власне, тут і умова не до кінця чітка.

"Поміняти елемент": тобто вставити замість цього елемента максимальний по стовпцю, чи поміняти місцями цей елемент з максимальним? (у другому випадку - каша). Аналогічне питання щодо другої частини задачі.

Так вставити замість цього елемента максимальний по стовпцю.

7

Re: Допомога з рішенням задачі на С. Матриці*

adamans написав:

Так вставити замість цього елемента максимальний по стовпцю.

А з чим же тоді були складнощі? Задача ж нескладна.