Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kasteton
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 2
#1

ошибка в нахождении max и min значений в строке матрицы - C++

21.10.2013, 13:59. Просмотров 421. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста найти ошибку и исправить её в задаче.Пишу в билдере 2007.
Задание таково
Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки соответственно. Матрицу напечатать в общепринятом виде.Размерность матрицы вводитьс клавиатуры. Массив заполнять случайными числами. На экран выводить исходные данные и результат. F(N,.M) N<20 М<10
Вот что я сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
void main () {
int F[20][10],k,d,t,min,max,i,j,jmax,jmin,n,m;
cin >> d >> t;
for (int n=0; n<d;n++) {
for (int m=0;m<t;m++) {
F[n][m]= rand() % 10;
cout<< F[n][m] << " ";}
cout<< "\n";}
cout<<"________________________________ \n";
for(i=0; i<d; i++)
{
jmin=jmax=0;
min=max=F[i][0];
for(j=0; j<t; j++)
{
if(F[i][j]<=min) { min=F[i][j]; jmin=j; }
else
if(F[i][j]>=max) { max=F[i][j]; jmax=j; }
}
F[i][0]=F[i][jmax];
F[i][t-1]=F[i][jmin];
}
for (int n=0; n<d;n++) {
for (int m=0;m<t;m++) {
cout<< F[n][m] << " ";}
cout<< "\n";}
getch();
}
Проблема в том,что программа вроде работает правильно,но в некоторых случаях она просто копирует максимальное число и в конец.Например при вводе размера 6х7 выходит это(3 и 4 строка второй матрицы с 9 на конце) :
0
Миниатюры
ошибка в нахождении max и min значений в строке матрицы  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2013, 13:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ошибка в нахождении max и min значений в строке матрицы (C++):

Помощь в нахождении max и min - C++
Добрый день помогите пожалуйста вывести наибольшее и наименьшее значение в матрице 20х30 от 1 до 30, а еще подсчитать количество 1 и 30 ...

Найти min по каждой строке матрицы и max по каждому столбцу - C++
Вводится порядок квадратной матрицы n. Вводятся элементы квадратной матрицы построчно. Необходимо найти min по каждой строке и max по...

В каждой строке матрицы найти min и max, поменять местами - C++
Условие: В каждой строке матрицы A=(aij)mxn найти максимальный и минимальный элементы. Сформировать матрицу B=(bij)mxn, переставляя в...

В каждой строке матрицы max и min элементы поместить на первую/последнюю позицию строки соответственно - C++
Найти в каждой строке матрицы A(N,M) максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки...

В каждом столбце матрицы найти min элемент, а потом среди найденных мин значений найти max значение - C++
Условие Написать программу , которая находит в каждом столбце заданной матрицы размеренностью 5х5 мин элемент , а потом среди найденых...

Найти max и min, если min левее max, то среднее арифметическое между ними - C++
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() { int n,a; int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alexdemath
125 / 122 / 6
Регистрация: 11.04.2010
Сообщений: 255
21.10.2013, 16:25 #2
Например, так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
 
int main()
{
    int N, M;
    cout << "Input matrix size:\n";
    cout << "  rows N = "; cin >> N;
    cout << "  cols M = "; cin >> M;
 
    cout << "\n\nMatrix:\n";
    int **F = new int *[N];
 
    for (int i = 0; i < N; i++)
     { F[i] = new int[M];
       for (int j = 0; j < M; j++)
        { F[i][j] = rand() % 10;
          cout << "  " << F[i][j];
        }
       cout << "\n";
     }
 
    cout << "\n\nResult:\n";
    for (int i = 0; i < N; i++)
     { int max = 0, min = 0;
 
       for (int j = 0; j < M; j++)
        { if (F[i][j] > F[i][max]) max = j; }
       if (max != 0)
        { int t1 = F[i][0]; F[i][0] = F[i][max]; F[i][max] = t1; }
 
       for (int j = 0; j < M; j++)
        { if (F[i][j] < F[i][min]) min = j; }
       if (min != M-1)
        { int t2 = F[i][min]; F[i][min] = F[i][M-1]; F[i][M-1] = t2; }
 
       for (int j = 0; j < M; j++) cout << "  " << F[i][j];
       cout << "\n";
     }
 
    cout << endl;
    system("pause");
    return 0;
}
1
Kasteton
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 2
21.10.2013, 16:31  [ТС] #3
Кажется я понял.Ошибка в етих строчках:
C++
1
2
F [i ][ 0 ] = F[ i ][ jmax ];
F [i ][ t - 1 ]= F [i ][ jmin ] ;
Минимальное значение заменяется на 9 и потом оно приравнивается как минимальное на конец.Вопрос как сделать их независимыми друг от друга.

Добавлено через 2 минуты
Спасибо.как приеду гляну и отпишу.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2013, 16:31
Привет! Вот еще темы с ответами:

Найти max и min слово в строке - C++
Созданы две строки,а как найти max b min слово? #include &lt;iostream&gt; #include&lt;cstring&gt; #include&lt;iomanip&gt; using namespace std; ...

Нахождение Max и Min в строке двумерного массива - C++
что то вообще не чего не получается. как передать в функцию массив построчно?как найти мин-мах? как перезаписать элемент? #include...

Найти min и max матрицы - C++
Допоможіть розвязати задачу на С++.Задана квадратна матриця А=(Aij)i=1,...4;j=1,...4.Знайти min i max цієї матриці. Перевод: Помогите...

Попытка сделать поиск max и min значений массива через функцию - C++
Стандартная задача - найти максимальное и минимальное значения в массиве из случайных элементов. Впервые пытаюсь передавать массив в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru