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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
wlad565
Сообщений: n/a
13.06.2013, 11:18     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #1
Дан массив С, состоящий из N элементов (N <10). Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения. Вывести на печать заданий и новообразованный массивы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2013, 11:18     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения
Посмотрите здесь:

C++ поменять местами максимальный элемент массива и первый
C++ Поменять местами первый и последний элемент массива (исправить код)
C++ Написать программу, меняющую в одномерном массиве местами первый элемент с минимальным, а последний с максимальным
Поменять местами минимальный элемент и первый отрицательный элемент массива целых чисел C++
C++ Поменять местами элементы с максимальным и минимальным значениями
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
13.06.2013, 11:52     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #2
Цитата Сообщение от wlad565 Посмотреть сообщение
другой с минимальным
Какой такой "другой"?
Я правильно понимаю, задание переведено с украинского? Дайте оригинал, я помогу.

Добавлено через 17 минут
Если я правильно понял, и
другой с минимальным
означает перестановку второго элемента с минимальным, то вот код:
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int size = 9;
    int arr[size], min, max, temp;
 
    srand(time(NULL));
    cout << "Исходный массив: ";
    for (int i = 0; i < size; i++)
    {
        arr[i] = 1 + rand() % 99;
        if (!i)
        {
            max = i;
            min = i;
        }
 
        if (arr[i] > arr[max])
            max = i;
        if (arr[i] < arr[min])
            min = i;
 
        cout << arr[i] << "  ";
    }
 
    cout << endl;
    temp = arr[0];          // меняем местами 1-й элемент и максимальный;
    arr[0] = arr[max];
    arr[max] = temp;
 
    temp = arr[1];          // меняем местами 2-й элемент и миниальный;
    arr[1] = arr[min];
    arr[min] = temp;
 
    cout << "Итоговый массив: ";
    for (int i = 0; i < size; i++)
        cout << arr[i] << "  ";
    cout << endl;
 
    system("pause");
    return 0;
}
Код для VS10. Если не будет работать, вместо
C++
1
2
3
#include "stdafx.h"
#include <iostream>
#include <iomanip>
нужно сделать
C++
1
2
3
#include <iostream>
#include <stdlib>
#include <time.h>
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
13.06.2013, 11:56     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #3
C++
1
std::swap(*std::min_element, *std::max_element)
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
13.06.2013, 11:57     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #4
Есть только одна неопределенность. Вторую замену делать в уже "новом" массиве, или ориентироваться на старый? Мой код ориентируется на старый.
Amedal
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 11
13.06.2013, 13:45     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #5
Пытаюсь решить эту задачку просто для себя, и не получается суть все таже поменять местами максимальный элемент с первым. Ткните меня носом где не верно((

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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
int main()
{
   setlocale(LC_ALL, "rus");
   int mas[9],i,max,maxi,trum;
//------------------------------------------------------
   for (i=0; i<9; i++)
   {
     mas[i]=1+rand () %99;   
   };
//-----------------------------------------------------
   for (i=0; i<9; i++)
   {
     cout << mas[i] << " ";  
   };
   cout << "\n";
//------------------------------------------------------
   for (i=0; i<9; i++)
   {
    if (mas[i]>=mas[i++])
 
        max=mas[i];
        maxi=i;  
   };
 
   trum=mas[0];
   mas[0]=max;
   mas[maxi]=trum;
   
   for (i=0; i<9; i++)
   {
   cout << mas[i] << " ";
   }
   cout << "\n";
 
    system("pause");
    return 0;
}
Добавлено через 26 минут
Одну ошибочку у себя нашел
C++
1
if (mas[i]>=mas[[U]i+1[/U]])
Добавлено через 1 минуту
if (mas[i]>=mas[i+1])
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
13.06.2013, 15:06     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #6
C++
1
2
3
4
5
6
7
for (i=0; i<9; i++)
   {
    if (mas[i]>=mas[i++])
 
        max=mas[i];
        maxi=i;  
   };
1. Это выйдет за пределы массива на последнем проходе.
2. Если максимальный элемент самый последний, ничего оно не найдет.
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 105
13.06.2013, 15:08     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #7
Amedal, ошибка в строках с 21 по 27) у вас
C++
1
if (mas[i]>=mas[i++])
а нужно
C++
1
if (mas[i]>=max)
и еще забыли фигурные скобки
у вас
C++
1
2
3
4
5
6
7
for (i=0; i<9; i++)
   {
    if (mas[i]>=mas[i++])
 
        max=mas[i];
        maxi=i;  
   };
а нужно
C++
1
2
3
4
5
6
7
8
for (i=0; i<9; i++)
   {
    if (mas[i]>=max){
 
        max=mas[i];
        maxi=i;  
    }
   };
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2013, 06:20     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения
Еще ссылки по теме:

C++ Поменять местами максимальный элемент массива и первый
Поменять местами первый отрицательный и последний положительный элемент массива C++
Поменять местами первый и последний элемент символьного массива C++

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

Или воспользуйтесь поиском по форуму:
Amedal
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 11
14.06.2013, 06:20     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения #8
Nikolai699 и Мимино, большое спасибо!)
Yandex
Объявления
14.06.2013, 06:20     Поменять местами первый элемент массива с максимальным, другой с минимальным, остальное оставить без изменения
Ответ Создать тему
Опции темы

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