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

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

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

Поменять элементы массива местами(код) - C++

23.06.2013, 01:05. Просмотров 845. Ответов 3
Метки нет (Все метки)

Есть задание найти по главной и второстепенной диагоналям массива максимальный и минимальный элементы и поменять их местами. Код получается, если делать через swap[i][j] (то что в комменте), но я хочу узнать, можно ли через указатели на этот элемент массива сделать свап? Вот код:

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 <iomanip>
#include <time.h>
using namespace std;
int min_i;
int max_i;
int min_j;
int max_j;
int* minPntr;
int* maxPntr;
void massive(int n,int** arr)
{
    srand(time(0));
    for(int i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        {
            arr[i][j]=rand()%20-20;
            cout<<setw(5)<<arr[i][j];
        }
        cout<<"\n";
    }
}
//-------------------------------------------------------
 
void func_max(int n, int** arr)
{
    int max=arr[0][0];
    int *maxPntr;
    for (int i=0,j=0; i<n,j<n; i++,j++)
    {
        if (arr[i][j]>max)
                   {
                       max=arr[i][j];
                       max_i=i;
                       max_j=j; 
                       maxPntr=&arr[i][j];
                   } 
    }
    
}
//-------------------------------------------------------
void func_min(int n, int**arr)
{
    int min=arr[0][n-1];
    int* minPntr;
    for (int i=0,j=n-1;i<n,j>=0;i++,j--)
        {
                if (min>arr[i][j])
                {
                    min=arr[i][j];
                    min_i=i;
                    min_j=j;
                    minPntr=&arr[i][j];
                }
        }
}
//-------------------------------------------------------
void swap(int minPntr,int maxPntr)
{
    //swap(arr[max_i][max_j],arr[min_i][min_j]);
    swap(minPntr,maxPntr);
}
//-------------------------------------------------------
void final_massive(int n, int** arr)
{
    cout<<"Final massive:"<<endl;
    int temp=0;
    for(int i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        {
            cout<<setw(5)<<arr[i][j];
        }
        cout<<"\n";
    }
}
 
 
//-------------------------------------------------------
 
void main()
{
    int n;
    cout<<"Enter size of array"<<endl;
    cin>>n;
    int** arr=new int* [n];
    for (int i=0;i<n;i++)
        arr[i]=new int [n];
    massive(n,arr);
    func_max(n,arr);
    func_min(n,arr);
    swap(minPntr,maxPntr);
    final_massive(n,arr);
    system("PAUSE>>VOID");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 01:05     Поменять элементы массива местами(код)
Посмотрите здесь:

Поменять местами элементы массива - C++
В массиве A из N элементов поменять местами первый элемент с последним, второй - с предпоследним и т.д. #include &lt;iostream&gt; #include...

Поменять местами элементы массива - C++
Здравствуйте! В задании сказано создать динамический массив, в который пользователь сам задает числа и вывести 2-ой динамический массив без...

Поменять местами элементы массива - C++
в заданном массиве из n элементов поменять местами элементы с n/2+1 по n: a(индекс n/2+i)=a(индекс n-i+1), i=1,...,n/2 Кто нить объяснит...

Поменять элементы массива местами - C++
Есть массив int mas={1,2,4,5,7,8} как поменять в нём элементы , чтобы получился массив int mas={2,1,5,4,8,7} то есть меня элементы...

Поменять местами элементы массива - C++
Есть указатель Mas void *Mas; на массив структур вида. struct ST{ int a; int b; int c; int d; }; Нужно написать функцию,...

Поменять местами элементы массива - C++
Дано одномерный массив с четным количеством элементов. Поменять местами первый элемент с последним, второй с предпоследним, и т.д. Вывести...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,823
23.06.2013, 02:36     Поменять элементы массива местами(код) #2
@Mexanich, все, что можно через ссылки, можно и через указатели т.к. фактически ссылка - разыменованный указатель. Вопрос лишь "Зачем?"
Mexanich
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 7
23.06.2013, 03:01  [ТС]     Поменять элементы массива местами(код) #3
Цитата Сообщение от MrGluck Посмотреть сообщение
@Mexanich, все, что можно через ссылки, можно и через указатели т.к. фактически ссылка - разыменованный указатель. Вопрос лишь "Зачем?"
Я не в том смысле, чтобы писать для элементов i,j указатели, я хочу сделать указатель на элемент массива, тобишь arr[i][j] и в свапе уже писать имя указателя а не arr[min_i][min_j]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 03:07     Поменять элементы массива местами(код)
Еще ссылки по теме:

Поменять элементы массива местами - C++
Помогите, пожалуйста. Мне дано массив Y. Каждый элемент массива должен соответствовать формуле y=100*k*а, где k - номер элемента в...

Поменять местами элементы соседние массива - C++
В массиве из 100 целых чисел поменять местами соседние элементы (1-й со 2-м, 3-й по 4-м и т.д.). Правильно ли я зделал? #include...

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

Поменять местами элементы двумерного массива - C++
Задание. Дан двумерный массив. Найти максимальный и минимальный элемент каждого столбца массива, затем заменить их на первый и последний...


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

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,823
23.06.2013, 03:07     Поменять элементы массива местами(код) #4
@Mexanich, так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
void print(const int A[2][2])
{
    std::cout << A[0][0] << A[0][1] << A[1][0] << A[1][1] << std::endl;
}
 
int main()
{
    int A[2][2] = {{1, 2}, {3, 4}};
    print(A);
    int *pos1 = &A[1][1], *pos2 = &A[0][0];
    std::swap(*pos1, *pos2);
    print(A);
}
Добавлено через 35 секунд
Так это можно и удобнее через ссылку сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
void print(const int A[2][2])
{
    std::cout << A[0][0] << A[0][1] << A[1][0] << A[1][1] << std::endl;
}
 
int main()
{
    int A[2][2] = {{1, 2}, {3, 4}};
    print(A);
    int &pos1 = A[1][1], &pos2 = A[0][0];
    std::swap(pos1, pos2);
    print(A);
}
Yandex
Объявления
23.06.2013, 03:07     Поменять элементы массива местами(код)
Ответ Создать тему
Опции темы

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