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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Hrustik
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 137
#1

Одномерный массив. Поменять местами минимальный и максимальный элемент - C++

14.06.2013, 16:32. Просмотров 1641. Ответов 10
Метки нет (Все метки)

Дан одномерный массив C, который состоит из 16 элементов.Поменять местами минимальный и максимальный элемент.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2013, 16:32     Одномерный массив. Поменять местами минимальный и максимальный элемент
Посмотрите здесь:
поменять местами максимальный элемент и первый, используя одномерный массив на c++ C++
Одномерный массив (элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы) C++
В двумерном массиве поменять местами максимальный и минимальный элемент местами C++
Поменять местами минимальный и максимальный элемент C++
C++ Массивы: поменять местами минимальный по модулю элемент и максимальный отрицательный элемент
C++ Найти в массиве максимальный элемент и минимальный элемент, и поменять их местами
Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
14.06.2013, 16:34     Одномерный массив. Поменять местами минимальный и максимальный элемент #2
пробегаем массив, находим позицию минимального и максимального элемента. дальше используем std::swap(c[pos_min], c[pos_max];
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,050
14.06.2013, 17:05     Одномерный массив. Поменять местами минимальный и максимальный элемент #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
#include <iostream>
#include <algorithm>
#include <numeric>
#include <utility>
#include <cstddef>
#include <array>
 
int main()
{
    const std::size_t N = 16;
    std::array<int, N> a;
    std::iota(a.begin(), a.end(), 10);
    std::random_shuffle(a.begin(), a.end());
    std::cout << "Before: ";
    for (auto &x : a)
        std::cout << x << " ";
 
    auto p = std::minmax_element(a.begin(), a.end());
    std::swap(*p.first, *p.second);
 
    std::cout << "\nAfter:  ";
    for (auto &x : a)
        std::cout << x << " ";
}
Hrustik
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 137
14.06.2013, 17:55  [ТС]     Одномерный массив. Поменять местами минимальный и максимальный элемент #4
Цитата Сообщение от GetVariable Посмотреть сообщение
пробегаем массив, находим позицию минимального и максимального элемента. дальше используем std::swap(c[pos_min], c[pos_max];
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
#include <iostream.h>
#include <string>
#include <conio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{    
int arr[16];
        for (int i = 0; i < 16; i++) {
            cout << "C[" << i + 1 << "]" << "= ";
            cin >> arr[i];
 }
 int min=arr[0],max=arr[0];
     for (int i=1;i<16;i++){
     if (min>arr[i])
      min=arr[i];
       if (max<arr[i])
        max=arr[i];
}
cout<<"min="<<min<<"  max="<<max;
getch ();
 
}
как теперь сделать чтобы меняло местами мин и макс?
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:57     Одномерный массив. Поменять местами минимальный и максимальный элемент #5
добавьте такие строки
C++
1
2
3
4
5
for (int i=0;i<16;i++)
   if (min==arr[i])
      arr[i] = max;
   else if (max==arr[i])
      arr[i] = min;
Hrustik
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 137
14.06.2013, 18:45  [ТС]     Одномерный массив. Поменять местами минимальный и максимальный элемент #6
Цитата Сообщение от Thinker Посмотреть сообщение
добавьте такие строки
C++
1
2
3
4
5
for (int i=0;i<16;i++)
   if (min==arr[i])
      arr[i] = max;
   else if (max==arr[i])
      arr[i] = min;
ничего нового не произошло

Добавлено через 39 минут
Цитата Сообщение от Thinker Посмотреть сообщение
добавьте такие строки
C++
1
2
3
4
5
for (int i=0;i<16;i++)
   if (min==arr[i])
      arr[i] = max;
   else if (max==arr[i])
      arr[i] = min;
можете уточнить куда вставлять ети строки?я вставил после цикла поиска макс и мин елемента и ничего не поменялося так все и выводит
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 18:55     Одномерный массив. Поменять местами минимальный и максимальный элемент #7
Цитата Сообщение от Hrustik Посмотреть сообщение
я вставил после цикла поиска макс и мин елемента и ничего не поменялося так все и выводит
да, после этого цикла. а потом надо вывести весь массив на экран
Genn55
360 / 207 / 39
Регистрация: 26.12.2012
Сообщений: 694
14.06.2013, 20:44     Одномерный массив. Поменять местами минимальный и максимальный элемент #8
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
#include <iostream>
using namespace std;
int main()
{
const int n = 16;
int arr[n] = {10,15,3,4,2,6,7,8,9,5,16,21,900,25,34,22};
for(int i=0; i<n; i++)
  cout << arr[i] << " ";
  cout<<"\n\n";
int min=arr[0],max=arr[0];
for (int i=0;i<n;i++)
{
if (min>arr[i])
    min=arr[i];
if (arr[i]>max)
    max=arr[i];
}
for (int i=0;i<n;i++)
   if (min==arr[i])
      arr[i] = max;
   else if (max==arr[i])
      arr[i] = min;
for(int i=0; i<n; i++)
  cout << arr[i] << " ";
   cout<<"\n\n";
  cout<<"min="<<min<<" max="<<max<<"\n";
return 0;
}
Hrustik
2 / 2 / 0
Регистрация: 29.05.2013
Сообщений: 137
14.06.2013, 22:13  [ТС]     Одномерный массив. Поменять местами минимальный и максимальный элемент #9
Genn55, почему программа после открытия сразу закрывается вставил вниз system("pause") не помогло
Genn55
360 / 207 / 39
Регистрация: 26.12.2012
Сообщений: 694
14.06.2013, 22:19     Одномерный массив. Поменять местами минимальный и максимальный элемент #10
У меня кодеблок в студии наверное нужно
C++
1
2
#include <string>
#include <conio.h>
и в конце

C++
1
getch ();
но в студии я не работал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2014, 14:18     Одномерный массив. Поменять местами минимальный и максимальный элемент
Еще ссылки по теме:
Поменять местами максимальный и минимальный элемент матрицы C++
Поменять местами максимальный и минимальный элемент массива C++
C++ Поменять местами минимальный и максимальный элемент массива Z
C++ В матрице поменять максимальный и минимальный элемент местами
C++ Поменять местами максимальный и минимальный элемент в массиве

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

Или воспользуйтесь поиском по форуму:
Bezzol
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 4
08.10.2014, 14:18     Одномерный массив. Поменять местами минимальный и максимальный элемент #11
]В Visual Studio 2013 все работает на ура.
Я только начал изучать С++
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>
#include <string>
#include <conio.h>
using namespace std;
 
int main()
{
    const int n = 16;
    int arr[n] = { 10, 15, 3, 4, 2, 6, 7, 8, 9, 5, 16, 21, 900, 25, 34, 22 };
    for (int i = 0; i<n; i++)
        cout << arr[i] << " ";
    cout << "\n\n";
    int min = arr[0], max = arr[0];
    for (int i = 0; i<n; i++)
    {
        if (min>arr[i])
            min = arr[i];
        if (arr[i]>max)
            max = arr[i];
    }
    for (int i = 0; i<n; i++)
    if (min == arr[i])
        arr[i] = max;
    else if (max == arr[i])
        arr[i] = min;
    for (int i = 0; i<n; i++)
        cout << arr[i] << " ";
    cout << "\n\n";
    cout << "min=" << min << " max=" << max << "\n";
    //---------------------------
    int tmp;
    for (int i = 0; i < n; i++)       // фильтруем массив
    for (int j = n - 1; j > i; j--)
        if (arr[j - 1] < arr[j])
    {
        tmp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = tmp;
    }
    cout << "\n" ; // и выводим его на экран.
    for (int i = 0; i<n; i++)
        cout << "\n" << arr[i];
    cout << endl;
    system("PAUSE");
    return 0;
}
Вот тут сортировка одномерного массива действительных чисел методом пузырька (по убыванию), если я правильно все сделал. Подскажите, пожалуйста, чего не хватает в супе и как сделать, что бы сортированный массив записывался в строку?
Yandex
Объявления
08.10.2014, 14:18     Одномерный массив. Поменять местами минимальный и максимальный элемент
Ответ Создать тему
Опции темы

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