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

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

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

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

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

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

Создать функцию, меняющую местами в одномерном массиве 1ый элемент с последним, 2ой с предпоследним и т.д - C++
Здравствуйте, форумчане. Создать функцию, меняющую местами в одномерном массиве 1ый элемент с последним, 2ой с предпоследним и т.д.....

Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения - C++
Дан массив С, состоящий из N элементов (N <10). Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное...

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

Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами - C++
Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами!

В одномерном целочисленном массиве поменять местами последний элемент с первым нулевым элементом - C++
Ввести в память машины одномерный целочисленный массив, размерностью не более 50 элементов. 1)Поменять местами последний элемент с...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IchimaruGin
61 / 61 / 24
Регистрация: 14.07.2013
Сообщений: 289
Завершенные тесты: 1
27.10.2013, 21:05 #2
Цитата Сообщение от Эвелина4 Посмотреть сообщение
просто сравнить с каждым элементом массива?
ну это для того что бы определить минимальный и максимальный элемент. А что бы поменять местами можна создать второй идентичный масив и из второго масива переписать значение в первый заменив нужные елементы масива.
Незнаю может есть способ полегче.
novi4ok
551 / 504 / 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
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
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
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
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
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
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Эксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
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 << " ";
}
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
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';
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 19:01
Привет! Вот еще темы с ответами:

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

В одномерном массиве найти произведение элементов, расположенных между максимальным и минимальным - C++
В одномерном массиве, состоящим из 8 элементов и заполненных случайными числами от 11 до 21, определите произведение элементов массива,...

В одномерном массиве вычислить произведение элементов, находящихся между максимальным и минимальным элементами - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму отрицательных элементов массива; 2) произведение...

В заданной целочисленной матрице поменять местами последний элемент с минимальным - C++
Найти минимальный элемент и поменять его с последним элементом int min = a; int $i, $j; for (int i = 0; i &lt; n; i++) { for...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.10.2013, 19:01
Ответ Создать тему
Опции темы

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