Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2015, 12:44   #1
AgitoLeviafan
Пользователь
 
Регистрация: 21.11.2015
Сообщений: 20
По умолчанию Двумерный массив

Ребят,нашел среднее арифметическое,нашел максимальный элемент в 1-ой строке ,как заменить максимальный элемент на среднее арифметическое,в матрице?
Код:
#include<iostream>
#include<iomanip>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
 const int n=9;
 const int m=9;
  int x[n][m],i,j,max,smax,s=0,k=0,nmin,mmin;
  srand((unsigned)time(NULL));

for(i=0;i<n;i++)
 {
 for(j=0;j<m;j++)
 {x[i][j]=rand()%10-5;
 cout<<setw(5)<<x[i][j];}
 cout<<endl;}
 
 
 
 for(j=0;j<m;j++){
 max= x[0][0];
 for(i=1;i<n;i++){
 if(x[i][j]>max)max=x[i][j];}
 cout<<endl<<"max "<<j<<"-oy ="<<max<<endl<<endl;}
 
 
//if(i=1){
// smax= x[0][0];
// for(j=0;j<m;j++)
//{
// if(x[i][j]>smax)smax=x[i][j];}
 //cout<<endl<<"smax "<<i<<"-oy ="<<smax<<endl;}


for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j){s+=x[i][j];}
//if(!n)
cout<<"sred ar glav:"<<(float)s/n<<endl;


//if(i=1){smax=s/k;}


system ("pause");
return 0;

cout<<x[i][j];
}

Последний раз редактировалось Вадим Мошев; 13.12.2015 в 13:10.
AgitoLeviafan вне форума Ответить с цитированием
Старый 13.12.2015, 13:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нашел максимальный элемент в 1-ой строке
Что, серьезно? ХМ... Странно. Я бы искал так:
Код:
int im=0,jm=0;
 for(i=1;i<m;i++) if(x[0][i]>x[0][im]) jm=j;
 cout<<endl<<"max "<<x[im][jm]<<endl<<endl;
Ну и заменять:
Код:
x[im][jm]=smax;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.12.2015, 14:12   #3
AgitoLeviafan
Пользователь
 
Регистрация: 21.11.2015
Сообщений: 20
По умолчанию

Вы наверное не так поняли.Суть задачи в том ,чтобы найти в каждом Столбце максимальный элемент ( это max), среднее арифметическое главной диагонали (это s/n), а затем нужно найти максимальный элемент в 1-ой Строке(это smax), а затем нужно средним арифметическим заменить smax в матрице, всё работает ,но вот заменить у меня не получается почему то.
AgitoLeviafan вне форума Ответить с цитированием
Старый 13.12.2015, 14:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Потому что тебе нужно хранить в переменных не значение максимального, а индексы его. Посмотри же мой пример внимательнее - я не запоминаю значение. Я запоминаю номер значения в массиве.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.12.2015, 14:46   #5
AgitoLeviafan
Пользователь
 
Регистрация: 21.11.2015
Сообщений: 20
По умолчанию

а разве тогда не так будет?

Код:
for(int i=0;i<n;i++)
{int nmax=i,mmax=0;
for(int j=0;j<m;j++)
if(x[i][j]<x[nmax][mmax])
{nmax=0;mmax=j;}
x[nmax][mmax]=s/n;
}
Только это для замены и нахождения во всех строках.

Последний раз редактировалось Stilet; 13.12.2015 в 15:29.
AgitoLeviafan вне форума Ответить с цитированием
Старый 13.12.2015, 15:32   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Почти так. Тебе в каждой строке нужно среднее подставить в максимум?
Код:
int jmax;
for(int i=0;i<n;i++){
 jmax=0;
 for(int j=1;j<m;j++) if(x[i][j]<x[i][jmax])
 x[i][jmax]=s/n;
}
Годится идея?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2015, 16:42   #7
AgitoLeviafan
Пользователь
 
Регистрация: 21.11.2015
Сообщений: 20
По умолчанию

Нет,не в каждой,только в 1-ой.А где именно нужно прописывать этот код? Там где задается рандомные значение матрицы ? или после того,как находится среднее арифметическое.
AgitoLeviafan вне форума Ответить с цитированием
Старый 15.12.2015, 17:27   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

После нахождения среднего конечно же )
И не весь этот а только его часть:
Код:
 for(int j=1;j<m;j++) if(x[0][j]<x[0][jmax])
 x[0][jmax]=s/n;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2015, 17:58   #9
AgitoLeviafan
Пользователь
 
Регистрация: 21.11.2015
Сообщений: 20
По умолчанию

Попробовал,но он заменяет не максимальное значение ,а значение в 0-вой строке ,под номером x[1][1].

Сделал чуть чуть по другому :
Код:
 for(int i=0;i<1;i++){ 
 int jmax=0,kmax=0;
 for(int j=0;j<m;j++) if(x[i][j]>x[jmax][kmax])
 {jmax=i;kmax=j;
 }
 x[jmax][kmax]=s/n;}
Но теперь,если там 2-а и более одинаковых элемента (максимальных) то он заменяет только 1-о.

Последний раз редактировалось Аватар; 15.12.2015 в 20:04.
AgitoLeviafan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40