Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8724
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2897
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2570
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / C/C++

Номер выпуска:1694
Дата выхода:06.11.2011, 08:30
Администратор рассылки:Киселёва Алёна aka Verena (Профессор)
Подписчиков / экспертов:282 / 163
Вопросов / ответов:1 / 1

Консультация # 184359: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Найти среднее арифметическое строк и столбцов элементов матрицы B=(bij)m*n. Если максимальное среднее арифметическое строк больше максимального среднего арифметического столбцов - обменять элементы первой строки с последней, в противном случае - элементы первого столбца с элементами последнего ...


Консультация # 184359:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Найти среднее арифметическое строк и столбцов элементов матрицы B=(bij)m*n. Если максимальное среднее арифметическое строк больше максимального среднего арифметического столбцов - обменять элементы первой строки с последней, в противном случае - элементы первого столбца с элементами последнего столбца.

Код :
  (  8,8  -15,3  -7,5   6,7)
  ( -6,2  -17,4   4,3  -7,3)
B=( -6,8    7,6   0,6   1,7)
  ( 23,9  -13,2   7,4   1,8)
  (  6,2   -6,8   3,3   4,5)

Необходимо сделать в Builder`е 6. Сделала её на Turbo C++ ver 3.0, под билдер подбить не получается.

Внизу приведено то, что я сделать смогла на данную минуту. Формирование результатов идет в форму 2.

Спасибо за внимание!

Дата отправки: 01.11.2011, 08:13
Вопрос задал: Александра (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Киселёва Алёна aka Verena (Профессор):

Здравствуйте, Александра!

Размещаю здесь ответ Александра из мини-форума, поскольку он не может сделать это сам.

Тогда давайте так. Раз интерфейс есть, вот обработчики.

Входные данные:

Код :
4 5
8.8 -15.3 -7.5 6.7
-6.2 -17.4 4.3 -7.3
-6.8 7.6 0.6 1.7
23.9 -13.2 7.4 1.8
 6.2 -6.8 3.3 4.5


Для простоты, введем глобальные переменные. Хотя, с точки зрения ООП они есть зло великое, так как нарушают инкапсуляцию.

Код :
float matrix [100][100]; // Статический массив 100х100
int i=0; // строки
int j=0; // столбцы


Хотя динамический массив смотрелся бы красивше, но так проще.

Теперь загрузка данных. Немного измененный участок вашего кода.
Думаю, должно быть понятно.

Код :
OpenDialog1 ->Execute();
ifstream infile(OpenDialog1->FileName.c_str());
infile >> i >> j;
Form1->Edit1->Text = IntToStr(i);
StringGrid1 -> RowCount  = i;
Form1->Edit2->Text = IntToStr(j);
StringGrid1 -> ColCount  = j;

for (int y=0; y <j; y++)
        {
        for (int x=0; x<i; x++)
                {
                infile >> matrix[x][y];
                StringGrid1->Cells[i+1][j+1] = FloatToStr(matrix[x][y]);
                }
        }
infile.close();


Теперь сами вычисления

Код :
float value=0,maxivalue=0, maxjvalue=0; // переменные

if (i*j!=0) //проверяем, загружена ли матрица
{

for (int y=0; y <j; y++)  // считаем среднее арифметическое значение строк 
{
 value = 0;
 for (int x=0; x <i; x++)
   value += matrix[x][y];
   value /=i;
   if (value > maxivalue) maxivalue = value;  //находим максимальное
}

for (int x=0; x <i; x++) // по аналогии для стобцов
{
 value = 0;
 for (int y=0; y <j; y++)
   value += matrix[x][y];
   value /=j;
   if (value > maxjvalue) maxjvalue = value;
}


if (maxivalue>maxjvalue) // если выполняется условие, меняем местами первый и последний столбец

for (int y=0; y<j; y++)
{
value = matrix [0][y];
matrix [0][y] = matrix [i-1][y]
matrix [i-1][y] = value;
}



При выводе в ячейки StringGrid не забывает о преобразовании в строку.

Консультировал: Киселёва Алёна aka Verena (Профессор)
Дата отправки: 05.11.2011, 19:17
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное