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

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

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

C++ В заданом одномерном масиве целого типа поменять местами следующие два элемента: первый минимальный и последний максимальный
C++ Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами
C++ 2. В одномерном массиве найти среднее арифметическое для элементов, расположенных между максимальным и минимальным
Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения C++
C++ Создать функцию, меняющую местами в одномерном массиве 1ый элемент с последним, 2ой с предпоследним и т.д
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 282
Завершенные тесты: 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
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,411
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++

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
Ответ Создать тему
Опции темы

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