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

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

Восстановить пароль Регистрация
 
Azael
1 / 1 / 0
Регистрация: 18.09.2011
Сообщений: 12
30.10.2011, 20:38     Найти в массиве максимальный и минимальный элементы и поменять их местами #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
#include<iostream>
using namespace std;
void Input(int* a, int n)   //функция ввода массива
{
 for ( i = 0; i < n; i++)
{
   cout << "\n a[" << i << "]= ";
    cin >> a[i];
}
}
 
 void Output(int* a, int n) //функция вывода массива
{
 for ( i= 0; i < n; i++)
      {
          cout << a[i]<< " ";
      }
 cout << "\n";
}
int Max(int* a, int n, int &imax)   //функция поиска максимума в массиве
{
 int i, max;
 max=a[0]; imax=0;
 for (i = 1; i < n; i++)
    if (a[i] > max)  
{
 max=a[i]; imax=i;
 }
 return max;
}
int Min(int* a, int n, int &imin)       //функция поиска минимума в массиве
{
int i, min;
min=a[0]; imin=0;
for (i=1; i<n; i++)
    if (a[i]<min)  
{
 min=a[i]; imin=i;
 }
return min;
}
 
void main()
{
 int* a;
 int i, n, max, min, imax, imin;
 cout<< "n= ";
 cin >> n;
 
a = new int[n];
 Input(a, n);
 
 cout << "massiv:"<<endl;
 cou t<< "\n";
 
Output(a, n);
 
max = Max(a, n, imax);
min = Min(a, n, imin);
 
 cout << ” \n max =<< max << ”imax =<< imax;
 cout << ” \n min =<< min << ”imin =<< imin;
 
 a[imax] = min; a[imin] = max;  //обмен максимума и минимума
 
 cout << "\n New massiv: ";
 Output(a, n);
 
 cout << endl;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 20:38     Найти в массиве максимальный и минимальный элементы и поменять их местами
Посмотрите здесь:

C++ Найти максимальный и минимальный элементы массива S(n) и поменять их местами
C++ В массиве целых чисел поменять местами минимальный и максимальный элементы
C++ В массиве целых чисел поменять местами минимальный и максимальный элементы
В массиве из 10 числе поменять местами минимальный и максимальный элементы C++
C++ Найти минимальный и максимальный элементы контейнера и поменять их местами.
Поменять в массиве местами первый максимальный и последний минимальный элементы C++
C++ В двумерном массиве размерностью nxm поменять местами минимальный и максимальный элементы каждой строки
Одномерный массив (элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы) C++
Поменять местами максимальный и минимальный элементы в массиве C++
Найти максимальный и минимальный элементы матрицы и поменять их местами C++
Функция: в заданном массиве поменять местами максимальный и минимальный элементы (Dev-С++) C++
Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
30.10.2011, 21:02     Найти в массиве максимальный и минимальный элементы и поменять их местами #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
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
#include<iostream>
using namespace std;
int * Input(int* a, int n)       //функция ввода массива
{
 for (int i = 0; i < n; i++)
{
   cout << "\n a[" << i << "]= ";
        cin >> a[i];
}
return a;
}
 
 void Output(int* a, int n)     //функция вывода массива
{
 for (int i= 0; i < n; i++)
          {
              cout << a[i]<< " ";
          }
 cout << "\n";
}
int Max(int* a, int n, int &imax)       //функция поиска максимума в массиве
{
 int i, max;
 max=a[0]; imax=0;
 for (i = 1; i < n; i++)
        if (a[i] > max)
{
 max=a[i]; imax=i;
 }
 return max;
}
int Min(int* a, int n, int &imin)               //функция поиска минимума в массиве
{
int i, min;
min=a[0]; imin=0;
for (i=1; i<n; i++)
        if (a[i]<min)
{
 min=a[i]; imin=i;
 }
return min;
}
 
int main()
{
 int i, n, max, min, imax, imin;
 cout<< "n= ";
 cin >> n;
 
 int* a = new int[n];
 
 
 a = Input(a, n);
 
 cout << "massiv:"<<endl;
 cout<< "\n";
 
Output(a, n);
 
max = Max(a, n, imax);
min = Min(a, n, imin);
 
 cout << " \n max = " << max << "imax = "<< imax;
 cout << " \n min = " << min << "imin = "<< imin;
 
 a[imax] = min; a[imin] = max;  //обмен максимума и минимума
 
 cout << "\n New massiv: ";
 Output(a, n);
 
 cout << endl;
 return 0;
}
Ошибки у вас в основном были на то,Что не ясно что такое i в функицях,скобки должны быть такие
C++
1
""
, ну и можно было не менять функцию ввода массива,но я так привык.
А,ну и постарайтесь не создавать таких строчек int*a;
Лучше сразу присваивать указателю что-нибудь.
И в дальнейшем постарайтесь не использовать using namespace std;
А писать можно так,например
C++
1
std::cout << "" <<std::endl;
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5817 / 1215 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
30.10.2011, 21:11     Найти в массиве максимальный и минимальный элементы и поменять их местами #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
#include<iostream>
using namespace std;
void Input(int* a, int n)       //ГґГіГ*êöèÿ ââîäГ* Г¬Г*Г±Г±ГЁГўГ*
{
 for (int i = 0; i < n; i++)
{
   cout << "\n a[" << i << "]= ";
        cin >> a[i];
}
}
 
 void Output(int* a, int n)     //ГґГіГ*êöèÿ âûâîäГ* Г¬Г*Г±Г±ГЁГўГ*
{
 for (int i= 0; i < n; i++)
          {
              cout << a[i]<< " ";
          }
 cout << "\n";
}
int Max(int* a, int n, int &imax)       //ГґГіГ*êöèÿ ïîèñêГ* Г¬Г*êñèìóìГ* Гў Г¬Г*Г±Г±ГЁГўГҐ
{
 int i, max;
 max=a[0]; imax=0;
 for (i = 1; i < n; i++)
        if (a[i] > max)  
{
 max=a[i]; imax=i;
 }
 return max;
}
int Min(int* a, int n, int &imin)               //ГґГіГ*êöèÿ ïîèñêГ* ìèГ*èìóìГ* Гў Г¬Г*Г±Г±ГЁГўГҐ
{
int i, min;
min=a[0]; imin=0;
for (i=1; i<n; i++)
        if (a[i]<min)  
{
 min=a[i]; imin=i;
 }
return min;
}
 
int main()
{
 int* a;
 int i, n, max, min, imax, imin;
 cout<< "n= ";
 cin >> n;
 
a = new int[n];
 Input(a, n);
 
 cout << "massiv:"<<endl;
 cout<< "\n";
 
Output(a, n);
 
max = Max(a, n, imax);
min = Min(a, n, imin);
 
 cout << " \n max = " << max << "imax = "<< imax;
 cout << " \n min = " << min << "imin = "<< imin;
 
 a[imax] = min; a[imin] = max;  //îáìåГ* Г¬Г*êñèìóìГ* ГЁ ìèГ*èìóìГ*
 
 cout << "\n New massiv: ";
 Output(a, n);
 
 cout << endl;
 system("pause");
}
Но я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector<int> vec;
    int num;
    while(std::cin>>num)
    vec.push_back(num);
    std::iter_swap(std::min_element(vec.begin(),vec.end()),std::max_element(vec.begin(),vec.end()));
    std::copy(vec.begin(),vec.end(),std::ostream_iterator<int>(std::cout," "));
    std::cout<<std::endl;
    system("pause");
    return 0;
}
Azael
1 / 1 / 0
Регистрация: 18.09.2011
Сообщений: 12
30.10.2011, 21:47  [ТС]     Найти в массиве максимальный и минимальный элементы и поменять их местами #4
Спасибо большое вам !!
Yandex
Объявления
30.10.2011, 21:47     Найти в массиве максимальный и минимальный элементы и поменять их местами
Ответ Создать тему
Опции темы

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