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

Двумерный массив: поменять местами две строки - C++

Восстановить пароль Регистрация
 
lesha 13
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 20
17.05.2014, 04:58     Двумерный массив: поменять местами две строки #1
Нужно поменять местами две строки в массиве:строку,
которая содержит максимальный элемент матрицы, и строку, содержащую минимальный
элемент матрицы.
У меня получается, что меняются столбцы, а не строки, не могу понять в чем проблема(
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
#include<iostream>
#include<conio.h>
using namespace std;
void vvod();
void vyvod(int**Arr, int n, int m);
void poisk(int**Arr, int n, int m);
void peres(int**Arr, int n, int m, int max_j, int min_j);
void vvod()
{
    setlocale(0,( "russian"));
    int n,m;
    int **Arr=0;
    cout<<"Введите количество строк и столбцов:";
    cin>>n>>m;
    Arr = new int*[n];
    for(int i=0;i<n;i++)
        Arr[i]=new int[m];
    for(int j=0;j<n;j++)
        for(int i=0;i<m;i++)
        {
            cout<<"A["<<j<<"]["<<i<<"]=";
            cin>>Arr[j][i];
        }
        vyvod(Arr,n,m);
        poisk(Arr,n,m);
}
 
void vyvod(int **Arr,int n,int m)
{
    for(int j=0;j<n;j++)
    {
        for(int i=0;i<m;i++)
        cout<<Arr[j][i]<<"  ";
    cout<<endl;
    }
 
}
 
void poisk(int**Arr,int n,int m)
{
int max=0, min=0, min_j=Arr[0][0],max_j=Arr[0][0];
for (int j = 0; j < n; j++)
{
        for (int i = 0; i < m; i++)
        {
            if (max_j < Arr[j][i])
            {
                max_j = Arr[j][i];
                max=i;
            }
            if (min_j > Arr[j][i])
            {
                min_j = Arr[j][i];
                min=i;
            }
        }
}
peres(Arr,n,m,max,min);
}
void peres(int**Arr,int n,int m,int max,int min)
{
    int y;
    
    
        for (int i = 0; i < m; i++)
        {
            y = Arr[i][min];
            Arr[i][min] = Arr[i][max];
            Arr[i][max] = y;
 
        }
        cout<<"\nМассив:\n";
        vyvod(Arr,n,m);
}
void main()
{
    vvod();
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2014, 04:58     Двумерный массив: поменять местами две строки
Посмотрите здесь:

Дана матрица....как поменять местами две строки? C++
Двумерный массив.Мах и Мин поменять местами... C++
C++ Дан двумерный массив. Поменять местами 1 и 3 строки
C++ 10. Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива
C++ Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива
Двумерный массив: поменять местами две строки C++
C++ 1) В матрице A поменять местами две строки с заданными номерами
Поменять местами две средние строки матрицы с первой и последней C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
17.05.2014, 09:40     Двумерный массив: поменять местами две строки #2
lesha 13, конечно он будет столбцы менять местами, у вас же в функции перестановки меняется номер строки, а не столбца. Должно быть вот так:
C++
1
2
3
4
5
6
for (int i = 0; i < m; i++)
 {
    y = Arr[min][i];
    Arr[min][i] = Arr[max][i];
    Arr[max][i] = y;
 }
И оформляйте код по правилам, невозможно же читать.
Yandex
Объявления
17.05.2014, 09:40     Двумерный массив: поменять местами две строки
Ответ Создать тему
Опции темы

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