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

Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом - C++

Восстановить пароль Регистрация
 
Yanya
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 26
28.04.2013, 11:58     Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом #1
Я решила задачку но что-то не так(ошибки никак не исправлю...
помогите исправте ошибки,что не правильно я сделала

/*Дана матрица B[N, M]. Найти в каждой строке матрицы максимальный и
минимальный элементы и поменять их местами с первым и
последним элементом строки соответственно.
*/
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE,".1251");
setlocale(LC_MONETARY, ".1251");
float mas[20][20],a,b,
min,max; // мин. и макс. сначения в строке
int n,m; // n-кол.строк, m-кол.стобцов
int index_max, index_min; // индексы мин. и макс. элементов в строке
int i, // индекс строки
j; // индекс столбца
cout«"Введите количество строк: ";
cin»n;
if( !cin || n<=0 || n>20 )
{
cout «"error1: input N [1;20]"« endl;
return 1;
}
cout« "Введите количество столбцов: ";
cin»m;
if( !cin || m<=0 || m>20 )
{
cout «"error1: input M [1;20]"« endl;
return 1;
}
cout«"Ввведите диапазон: ";
cin»a»b;
cout.precision(2);
cout «"Исходный массив:\n";
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
mas[i][j]=(b-a)*rand()/32767+a;
cout.width(6);
cout« mas[i][j]« " ";
}
cout «"\n";
}
cout «"\n";
 
float tmp; // для обмена
for ( i=0; i<n;i++)
{
max=mas[i][0]; // берем за максю и мин. первый элемент строки
min=mas[i][0];
index_max = 0;
index_min = 0;
for (j=0;j<m;j++)
{
if (mas[i][j]>max)
{
max=mas[i][j];
index_max = j;
}
if (mas[i][j]<min)
{
min=mas[i][j];
index_min = j;
}
} // end for(j)
cout« "\n";
cout« "Максимальный элемент "«i+1«" строки = "«max;
cout«" Минимальный элемент "«i+1«" строки = "«min;
// ОБМЕН
// меняем макс. с первым mas[i][0]
tmp = mas[i][0];
mas[i][0] = max;
mas[i][index_max] = tmp;
// если мин. был первым, то его уже поменяли с макс. и его индекс ИЗМЕНИЛСЯ на index_max
if( index_min==0)
index_min = index_max;
// меняем мин. с последним mas[i][m-1]
tmp = mas[i][m-1];
mas[i][m-1] = min;
mas[i][index_min] = tmp;
 
} // end for(i)
 
//pol
cout«"\nПолучен массив:\n";
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
cout.width(6);
cout«mas[i][j]«" ";
}
cout«"\n";
}
cout«"\n";
getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 11:58     Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом
Посмотрите здесь:

Найти в каждой строке матрицы максимальный и минимальный элементы C++
C++ В произвольной матрице A [ N ][ M ] поменять местами в каждой строке минимальный и максимальный элементы
Найти минимальный из элементов ниже главной и выше побочной диагонали и поменять его местами с первым элементом матрицы C++
Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним C++
Найти максимальный и минимальный элементы матрицы и поменять их местами C++
Поменять местами в каждой строке матрицы минимальный и максимальный элементы, подскажите ошибки C++
Поменять местами максимальный элемент матрицы с его первым элементом а минимальный с последним C++
Матрицы: элементы главной диагонали поменять местами с максимальным элементом в каждой строке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
magirus
28.04.2013, 12:02
  #2
 Комментарий администратора 
называйте темы информативно, согласно правил форума
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
29.04.2013, 00:28     Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом #3
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
using namespace std;
 
 
int _tmain()
{
    setlocale (LC_ALL,"Russian");
    srand (time(NULL));
 
    int str,stb,max,min,imin(0),imax(0),jmax(0),jmin(0),a;
    int **massiv;
 
    cout<<"Введите колличество строк и столбцов: ";
        cout<<endl;
            cin>>str>>stb;
 
    massiv = new int * [str];
        for (register int i = 0;i<str;i++)
            {
                massiv[i] = new int [stb];  
            }
        
        cout<<"Матрица: ";
            cout<<endl;
        for (int i = 0;i<str;i++){
            for (int j = 0;j<stb;j++)
                {
                    massiv[i][j] = -10 + rand () % 21;
                        cout<<setw (3)<<massiv[i][j];
                }
            cout<<endl;
        }
 
            for (int i = 0;i<str;i++){
                    min = massiv[i][0];
                    for (int j = 0;j<stb;j++)
                    {
                        if (min > massiv [i][j])
                            min = massiv[i][j];
                            imin = i;
                            jmin = j;
                    }
                    cout<<"минимальный элемент: "<<min;
                        cout<<endl;
 
                        a = massiv[imin][jmin-1];
                        massiv[imin][jmin-1] = min;
                        massiv[imin][jmin] = a;
            }
                cout<<endl;
                
                for (int i = 0;i<str;i++){
                    max = massiv[i][0];
                    imax = i;
                    jmax = 0;
                    for (int j = 0;j<stb;j++)
                    {
                        if (max < massiv [i][j])
                            max = massiv[i][j];
                            imax = i;
                            jmax = j;
                    }
                    cout<<"максимальный  элемент: "<<max;
                        cout<<endl;
        
                        a = massiv[imax][0];
                        massiv[imax][0] = max;
                        massiv[imax][jmax] = a;
            }
                cout<<endl;
 
                    for (int i = 0;i<str;i++){
                        for (int j = 0;j<stb;j++)
                        {
                            cout<<setw (3)<<massiv[i][j];
                        }
                        cout<<endl;
                    }
        delete [] massiv;       
    system ("pause");
    return 0;
}
Yandex
Объявления
29.04.2013, 00:28     Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом
Ответ Создать тему
Опции темы

Текущее время: 23:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru