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

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

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

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

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

Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным.
Как можно это сделать? просто сравнить с каждым элементом массива?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 20:56     Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
Посмотрите здесь:
C++ Создать функцию, меняющую местами в одномерном массиве 1ый элемент с последним, 2ой с предпоследним и т.д
Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения C++
Поменять местами первый положительный и последний отрицательный элементы генераторам случайных чисел в одномерном массиве C++
C++ Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами
C++ В одномерном целочисленном массиве поменять местами последний элемент с первым нулевым элементом
C++ В заданном одномерном целочисленном массиве поменять местами предпоследний элемент с самым правым минимальным
Написать программу, меняющую местами в квадратной матрице столбец, содержащий минимальный элемент и строку 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
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,908
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
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,908
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Эксперт С++
6984 / 4155 / 592
Регистрация: 29.11.2010
Сообщений: 11,021
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++ 2. В одномерном массиве найти среднее арифметическое для элементов, расположенных между максимальным и минимальным
C++ В заданной целочисленной матрице поменять местами последний элемент с минимальным
C++ В заданом одномерном масиве целого типа поменять местами следующие два элемента: первый минимальный и последний максимальный

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

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

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