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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2013, 13:43   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Матрицы в Builder.Не могу ничего придумать.

Помогите пожалуйста разобраться,что и как.
Задание:
F(N,.M) Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки соответственно. Матрицу напечатать в общепринятом виде N<20 М<10

Вот что я смог сделать:
Код:
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
int main () {
int n[20] [10],min,max,i,j;
for (int i=0; i<20;i++)
{
for (int j=0;j<10;j++)
{
n[i][j]= rand()% 10;
cout << n[i] [j] << " ";
}
cout << "\n";
}                          //Ввод матрицы
{
min=max=0;
for (i=0; i<20; i++)
for (j=0; j<10; j++)
{
if (n[i][j]<min)
{
min=n[i][j];
}
else
if
(n[i][j]>max)
{
max=n[i][j];
}
}
cout<<" max " <<max;
cout<<" min " <<min;
system("pause");
return 0;
}}
Эта программа выводит матрицу и находит максимальный и минимальный элемент матрицы(по всей),а мне нужно в каждой строке и на место элемента n[0][0]=max n[0][10]=min элементы,и чтобы их заменяло в каждой строке соответственно тоесть следующий n[1][0]=max n[1][10]=min.
spectrum988 вне форума Ответить с цитированием
Старый 18.11.2013, 14:25   #2
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Минимум и максимум первоначально у вас не 0 должен быть, потому что в строке его может и не быть. Цикл for немного дополнил. Правил ваш код:

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int n[20] [10],min,max,i,j;
for (int i=0; i<20;i++)
{
for (int j=0;j<10;j++)
{
n[i][j]= rand()% 10;
cout << n[i] [j] << " ";
}
cout << "\n";
}                          //Ââîä ìàòðèöû
for (i=0; i<20; i++){
min=max=n[i][0];
for (j=0; j<10; j++)
{
if (n[i][j]<min)
{
min=n[i][j];
}
else
if
(n[i][j]>max)
{
max=n[i][j];
}
}
cout<<" max " <<max;
cout<<" min " <<min << endl;
}
system("pause");
return 0;
}
//---------------------------------------------------------------------------

Последний раз редактировалось Baburek; 18.11.2013 в 14:36.
Baburek вне форума Ответить с цитированием
Старый 18.11.2013, 14:50   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

0 это взято образно,для поиска максимального и минмального,он вообще сдесь ничего не играет.(кропе отбора)

Но программа ищет правильно максимальный и минимальный элмент в строке.Спасибо.Не могли бы вы мне обьяснить,что я не учел.

Последний раз редактировалось Stilet; 18.11.2013 в 15:33.
spectrum988 вне форума Ответить с цитированием
Старый 18.11.2013, 14:59   #4
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Может вот так нагляднее разница будет:

До:
Код:
for (i=0; i<20; i++)
for (j=0; j<10; j++) {...}
cout<<" max " <<max;
cout<<" min " <<min;
После:
Код:
for (i=0; i<20; i++){
min=max=n[i][0];
for (j=0; j<10; j++){...}
cout<<" max " <<max;
cout<<" min " <<min << endl;
}
Baburek вне форума Ответить с цитированием
Старый 18.11.2013, 15:59   #5
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

А ну все понял,просто столбец оставляем одним и тем же,а строку перебираем.
spectrum988 вне форума Ответить с цитированием
Старый 18.11.2013, 16:05   #6
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Ищем минимум и максимум на каждой итерации для строки
Baburek вне форума Ответить с цитированием
Старый 18.11.2013, 16:27   #7
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Хм..... а как же присвоить 1 элементу строки max а 20 элементу строки min

for (i=0; i<20; i++)
n[i][0]=max;
for (i=0; i<20; i++)
n[i][10]=min;

Наверное может как-то так можно!
spectrum988 вне форума Ответить с цитированием
Старый 18.11.2013, 17:00   #8
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от spectrum988 Посмотреть сообщение
Хм..... а как же присвоить 1 элементу строки max а 20 элементу строки min

for (i=0; i<20; i++)
n[i][0]=max;
for (i=0; i<20; i++)
n[i][10]=min;

Наверное может как-то так можно!
Зависит от того нужно ли вам двигать элементы в строке. Т.е. менять местами последний с максимальным и первый с минимальным
Baburek вне форума Ответить с цитированием
Старый 18.11.2013, 21:46   #9
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Нужно видимо менять местами.
spectrum988 вне форума Ответить с цитированием
Старый 19.11.2013, 10:06   #10
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Тогда вам нужно:
1. Запоминать положение максимального и минимального элементов массива.
2. Сохранять значения первого и последнего элементов.
3. Получится: первый элемент = min; последний = max; где стоял минимум = сохраненное значение первого элемента; где стоял максимум = сохраненное значение последнего элемента.

P.S. Обратите внимание, как вы заполняете массив:
Код:
n[i][10]; //это не ваш последний элемент строки)
Baburek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу придумать доработку. Rik55rus Помощь студентам 1 06.10.2012 21:13
Не могу придумать формулу на нахождение среднего балла konistra Microsoft Office Excel 3 08.04.2011 08:57
Не могу придумать формулу для поставленной задачи. masaylov Microsoft Office Excel 6 07.04.2011 11:11
не могу придумать форрмулу!!! ta4ilka Microsoft Office Excel 3 11.04.2010 18:02
Не могу придумать или подобрать формулу! Помогите! Gnom70 Microsoft Office Excel 4 30.01.2008 11:01