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

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

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

Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным - C++

27.10.2013, 20:56. Просмотров 1098. Ответов 11
Метки нет (Все метки)

Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным.
Как можно это сделать? просто сравнить с каждым элементом массива?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 20:56     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
Посмотрите здесь:

C++ В заданом одномерном масиве целого типа поменять местами следующие два элемента: первый минимальный и последний максимальный
C++ Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами
Поменять в массиве местами первый максимальный и последний минимальный элементы C++
C++ 2. В одномерном массиве найти среднее арифметическое для элементов, расположенных между максимальным и минимальным
Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения C++
C++ Создать функцию, меняющую местами в одномерном массиве 1ый элемент с последним, 2ой с предпоследним и т.д
Поменять местами первый положительный и последний отрицательный элементы генераторам случайных чисел в одномерном массиве C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchimaruGin
61 / 61 / 24
Регистрация: 14.07.2013
Сообщений: 289
Завершенные тесты: 1
27.10.2013, 21:05     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #2
Цитата Сообщение от Эвелина4 Посмотреть сообщение
просто сравнить с каждым элементом массива?
ну это для того что бы определить минимальный и максимальный элемент. А что бы поменять местами можна создать второй идентичный масив и из второго масива переписать значение в первый заменив нужные елементы масива.
Незнаю может есть способ полегче.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.10.2013, 21:09     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #3
Цитата Сообщение от IchimaruGin Посмотреть сообщение
А что бы поменять местами можна создать второй идентичный масив
не нужно. достаточно одной простой переменной того же типа, что элементы массива, для временного хранения переписываемого элемента массива. как если бы местами менялись не элементы массива, а просто переменные.
Эвелина4
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 7
27.10.2013, 21:16  [ТС]     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #4
а код программы какой ?
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
27.10.2013, 21:58     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #5
Цитата Сообщение от Эвелина4 Посмотреть сообщение
а код программы какой ?
Какой напишете Что конкретно не получается?
Эвелина4
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 7
27.10.2013, 22:10  [ТС]     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #6
{
const int n=10;
double array[n];
int i, imax(0);
for(i=0; i<n; i++)cin>>array[i];
for(i=1; i<n; i++)
{
if(array[i]>array[imax])
imax=i;
}
const int n=10;
double array[n];
int i, imin(0);
for(i=0; i>n; i++)cin>>array[i];
for(i=1; i>n; i++)
{
if(array[i]<array[imin])
imin=i;
}
}

и надо сравнить первый элемент со всеми и поменять местами с максимальным,а последний элемент поменять с минимальным, я немного представляю что делать, но реализовать это не могу
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
27.10.2013, 22:57     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #7
Ну так задача у вас почти решена, остаётся только поменять элементы местами и вывести массив
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 std::cin;
using std::cout;
 
int main()
{
  const int n = 10;
  double array[n];
 
  int i, imax = 0, imin = 0;
  for(i = 0; i < n; i++)
    cin >> array[i];
 
  for(i = 1; i < n; i++)
  {
    if(array[i] > array[imax])
      imax = i;
    if(array[i] < array[imin])
      imin = i;
  }
 
  // здесь меняем местами array[0] с array[imin] и array[n-1] с array[imax]
  // ...
  
  // здесь выводим массив на экран
  // ...
}
Если не знаете как осуществить обмен см. здесь(первым делом этот пост).
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
27.10.2013, 23:02     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
 
using namespace std;
const int numberOfElements = 10;
 
void replaceElements(int arrayWeEntered[], int minIndex, int maxIndex);
 
int main()
{
    int arrayToEnter[numberOfElements];
    cout << "Enter 10 elements of array\n";
    for(int i = 0; i < numberOfElements; i++) {
        cout << "\nElement " << i << ": ";
        cin >> arrayToEnter[i];
    }
    for(int i = 0; i < numberOfElements; i++) {
        cout << "arrayToEnter[" << i << "] = " << arrayToEnter[i] << "\n";
    }
 
    int maxElement = arrayToEnter[0];
    int minElement = arrayToEnter[0];
    int maxIndex = 0, minIndex = 0;
    for(int i = 0; i < numberOfElements; i++) {
        if(arrayToEnter[i] > maxElement) {
            maxElement = arrayToEnter[i];
            maxIndex = i;
        }
        if(arrayToEnter[i] < minElement) {
            minElement = arrayToEnter[i];
            minIndex = i;
        }
    }
    cout << "Max element: " << maxElement << ", Min element: " << minElement << ", nimIndex = " << minIndex << ", maxIndex = " << maxIndex << "\n";
 
    replaceElements(arrayToEnter, minIndex, maxIndex);
    for(int i = 0; i < numberOfElements; i++) {
        cout << "Changed arrayToEnter[" << i << "] = " << arrayToEnter[i] << "\n";
    }
    return 0;
}
 
void replaceElements(int arrayWeEntered[], int minIndex, int maxIndex) {
    int middle;
    middle = arrayWeEntered[0];
    arrayWeEntered[0] = arrayWeEntered[minIndex];
    arrayWeEntered[minIndex] = middle;
 
    middle = arrayWeEntered[numberOfElements - 1];
    arrayWeEntered[numberOfElements - 1] = arrayWeEntered[maxIndex];
    arrayWeEntered[maxIndex] = middle;
 
}
Добавлено через 25 секунд
Комментировать не надо, надеюсь?
Эвелина4
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 7
29.10.2013, 17:58  [ТС]     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #9
#include "stdafx.h"
#include <conio.h>
#include <locale.h>
#include <math.h>
#include <iostream>

using namespace std;
const int num = 10;
void Elem(int array[], int min, int max);

int main ()

{setlocale (LC_ALL, "Russian");
const int NotUsed = system( "color B0" );
int array[num];

cout << "Введите 10 элементов\n";
for(int i = 0; i < num; i++) {
cout << "Эллемент " << i << ": ";
cin >> array[i];
}

double min=array[0];
for ( int i=0;i<num;i++) {
if (array[i]<min) min=array[i];
}
int temp;
temp = min;
min = array[0];
array[0] = temp;

double max=array[0];
for ( int i=0;i<num;i++) {
if (array[i]>max) max=array[i];
}

temp = max;
max = array[num-1];
array[num-1] = temp;


for(int i = 0; i < num; i++) {
cout << "Changed arrayToEnter[" << i << "] = " << array[i] << "\n";
}
system ("pause");
return 0;
}


вот ,только он местами не меняет, только лишь заменяет(
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
29.10.2013, 18:35     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #10
Цитата Сообщение от Эвелина4 Посмотреть сообщение
#include "stdafx.h"
#include <conio.h>
#include <locale.h>
#include <math.h>
#include <iostream>

using namespace std;
const int num = 10;
void Elem(int array[], int min, int max);

int main ()

{setlocale (LC_ALL, "Russian");
const int NotUsed = system( "color B0" );
int array[num];

cout << "Введите 10 элементов\n";
for(int i = 0; i < num; i++) {
cout << "Эллемент " << i << ": ";
cin >> array[i];
}

double min=array[0];
for ( int i=0;i<num;i++) {
if (array[i]<min) min=array[i];
}
int temp;
temp = min;
min = array[0];
array[0] = temp;

double max=array[0];
for ( int i=0;i<num;i++) {
if (array[i]>max) max=array[i];
}

temp = max;
max = array[num-1];
array[num-1] = temp;


for(int i = 0; i < num; i++) {
cout << "Changed arrayToEnter[" << i << "] = " << array[i] << "\n";
}
system ("pause");
return 0;
}


вот ,только он местами не меняет, только лишь заменяет(
Мой код юзайте.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6210 / 3455 / 423
Регистрация: 29.11.2010
Сообщений: 9,168
29.10.2013, 18:43     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <algorithm>
 
int main()
{
    std::vector<int> v {2, 1, 10, 0, 3, 4, 5};
    auto p = std::minmax_element(v.begin(), v.end());
    std::swap(*v.begin(), *p.first);
    std::swap(*v.rbegin(), *p.second);
    for (auto &x: v)
        std::cout << x << " ";
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 19:01     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
29.10.2013, 19:01     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным #12
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
#include <iostream>
 
using std::cin;
using std::cout;
 
int main()
{
  const int n = 10;
  double array[n];
 
  int i, imax = 0, imin = 0;
  for(i = 0; i < n; i++)
    cin >> array[i];
 
  for(i = 1; i < n; i++)
  {
    if(array[i] > array[imax])
      imax = i;
    if(array[i] < array[imin])
      imin = i;
  }
 
  int t = array[0];
  array[0] = array[imin];
  array[imin] = t;
 
  t = array[n-1];
  array[n-1] = array[imax];
  array[imax] = t;
 
  cout << "result:\n";
  for(i = 0; i < n; i++)
    cout << array[i] << ' ';
  cout << '\n';
}
Yandex
Объявления
29.10.2013, 19:01     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
Ответ Создать тему
Опции темы

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