Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Blackscorpion
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 11
1

Поменять местами наибольший и наименьший элементы?

21.01.2012, 15:50. Просмотров 1825. Ответов 7
Метки нет (Все метки)

Даны действительные числа а1, а2, ... an
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 15:50
Ответы с готовыми решениями:

Поменять местами наибольший и наименьший элементы
Даны действительные числа х1,....,хn (все числа попарно различны). Поменять местами наибольший и...

Поменять местами наибольший и наименьший элементы
1. Даны действительные числа а1, а2, ... , аn. Поменять местами наибольший и наименьший элементы....

Поменять местами наибольший и наименьший элементы
В общем задание было такое: (Тема одномерные массивы) Даны действительные числа а1, а2,..., аn....

Поменять местами наибольший и наименьший элементы
Ребят помогите пожалуйста. Даны действительные числа х1,...,хn (все числа попарно различны)....

Матрицы. Поменять местами наибольший и наименьший элементы
3. Дана матрица A(N,M). Поменять местами её наибольший и наименьший элементы.

7
soon
2550 / 1315 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.01.2012, 15:56 2
C++
1
std::iter_swap(std::min_element(v.begin(), v.end()), std::max_element(v.begin(), v.end()));
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
21.01.2012, 15:58 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iterator>
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);
    std::generate(v.begin(), v.end(), [] { return rand() % 20; });
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::swap(*std::max_element(v.begin(), v.end()), *std::min_element(v.begin(), v.end()));
    std::cout << std::endl;
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    return 0;
}
http://liveworkspace.org/code/68c2db9570adcd0d9fac52889dd663d2
1
Mиxaил
536 / 441 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
21.01.2012, 15:59 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    int arr[] = { 1, 2, 3, -4, 5, 6, 12, 7, 8 };
    std::vector < int > vec( arr, arr + sizeof( arr ) / sizeof( *arr ) );
    
    std::iter_swap( std::max_element( vec.begin(), vec.end() ),
                    std::min_element( vec.begin(), vec.end() ) );
    
    std::copy( vec.begin(), vec.end(), std::ostream_iterator < int > ( std::cout, " " ) );
    return 0;
}
1
21.01.2012, 15:59
megastriker
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
21.01.2012, 16:04 5
Цитата Сообщение от Blackscorpion Посмотреть сообщение
Даны действительные числа а1, а2, ... an

если n известно и числа даны в массиве a[n], то:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int min = a[0], max = a[i], maxi=-1, mini=-1;
for (i = 0; i < n; i++) {
  if (a[i] < min) {
    mini = i;
    min = a[i];
  }
  else if (a[i] > max) {
    maxi = i;
    max = a[i];
  }
}
int tmp;
a[mini] = tmp;
a[mini] = a[maxi];
a[maxi] = tmp;
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
21.01.2012, 16:15 6
Цитата Сообщение от megastriker Посмотреть сообщение
max = a[i],
С чего бы это i?
1
rangerx
1954 / 1563 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
21.01.2012, 16:16 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
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    double* a;
    double t;
    int n, i;
    int imin = 0, imax = 0;
 
    printf("n: ");
    scanf("%d", &n);
 
    a = (double*)malloc(n * sizeof(double));
    for(i = 0; i < n; ++i)
    {
        printf("[%d]: ", i + 1);
        scanf("%lf", &a[i]);
    }
 
    for(i = 1; i < n; ++i)
    {
        if(a[i] > a[imax]) imax = i;
        else if(a[i] < a[imin]) imin = i;
    }
 
    t = a[imin];
    a[imin] = a[imax];
    a[imax] = t;
 
    printf("--------------\n");
    for(i = 0; i < n; ++i)
        printf("%f ", a[i]);
    printf("\n");
 
    free(a);
 
    return 0;
}
1
megastriker
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
21.01.2012, 16:28 8
Цитата Сообщение от go Посмотреть сообщение
С чего бы это i?
тьфу ты, точно. с ходу писал, ошибся.

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
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    int n, i;
    scanf("%d", &n);
    int a[n];
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    int min = a[0], max = a[1], maxi=1, mini=0;
    for (i = 0; i < n; i++) {
        if (a[i] < min) {
            mini = i;
            min = a[i];
        }
        else if (a[i] > max) {
            maxi = i;
            max = a[i];
        }
    }
    int tmp = a[mini];
    a[mini] = a[maxi];
    a[maxi] = tmp;
    return 0;
}
1
21.01.2012, 16:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 16:28

Найти наибольший и наименьший элементы и поменять их местами.
Помогите ребята задания вроде легкое. 1) Дано масив с 7 елементов. Типа INT. Нужно найти...

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

Поменять местами наибольший и наименьший элементы массива
Всем привет! Есть несколько вопросов. Вот код: //Даны действительные числа а1, а2,..., аn....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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