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

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

Войти
Регистрация
Восстановить пароль
 
Crab95
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 36
#1

В целочисленном массиве найти два таких элемента - C++

13.03.2012, 02:38. Просмотров 336. Ответов 1
Метки нет (Все метки)

В целочисленном массиве найти два таких элемента, разность модулей которых имеет максимальное значение, и удалить их из состава массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 02:38     В целочисленном массиве найти два таких элемента
Посмотрите здесь:
C++ Найти два таких два таких элемента, разность модулей которых имеет максимальное значение
C++ В массиве X(N) найти значение максимального элемента массива и найти, сколько таких элементов.
Найти два таких элемента, разность модулей которых имеет максимальное значение, и удалить из их состава массива. C++
C++ Поиск элемента в одномерном целочисленном массиве
Имеется ли в целочисленном массиве два идущих подряд нуля? C++
Найти два самых маленьких элемента в массиве C++
C++ Найти два самых больших элемента в массиве
C++ 11.196. Дан массив целых чисел. Найти номер первого элемента, кратного числу 13. Если таких элементов в массиве нет, то должно быть напечатано соответ
Написать шаблон функции, выполняющей поиск минимального элемента в целочисленном массиве C++
В одномерном целочисленном массиве вычислить сумму элементов, расположенных после минимального элемента C++
C++ Найти два первых элемента в массиве, значения которых не попадают в заданный диапазон
C++ Найти два элемента в массиве, разница между которыми максимальна (оптимизация алгоритма)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
13.03.2012, 05:36     В целочисленном массиве найти два таких элемента #2
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
53
54
55
56
57
58
59
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>
 
/*
 *
 */
int main( int argc, char** argv ) {
    std::srand( std::time( 0 ));
 
    std::size_t size = 10, absMin = 0, absMax = 1;
    int *arrayPtr = new int[ size ];
 
    for ( std::size_t i = 0; i < size; i++ ) {
    arrayPtr[ i ] = std::rand() % 200 - 100;
    std::cout << std::setw( 3 ) << arrayPtr[ i ] << ' ';
    }
 
    std::cout << std::endl;
 
    for ( std::size_t i = 0; i < size; i++ ) {
    if ( std::abs( arrayPtr[ i ] ) < std::abs( arrayPtr[ absMin ] ))
        absMin = i;
 
    if ( std::abs( arrayPtr[ i ] ) > std::abs( arrayPtr[ absMax ] ))
        absMax = i;
    }
 
    std::cout << "\nThe maximum absolute value among the elements " << ( absMin < absMax ? absMin : absMax ) + 1 << " and " << ( absMin < absMax ? absMax : absMin ) + 1 << " = " << std::abs( arrayPtr[ absMin ] - arrayPtr[ absMax ] ) << '\n' << std::endl;
 
    {
    int *tmp = arrayPtr;
    std::size_t j = 0;
 
    arrayPtr = new int[ size - 2 ];
 
    std::cout << "Array after removing this elements: " << std::endl;
 
    for ( std::size_t i = 0; i < size; i++ )
        if ( i != absMin && i != absMax ) {
        arrayPtr[ j ] = tmp[ i ];
        std::cout << std::setw( 3 ) << arrayPtr[ j++ ] << ' ';
        }
    
    std::cout << std::endl;
 
    size -= 2;
 
    delete [] tmp;
    }
 
    std::cout << std::endl;
    
    std::system( "pause" );
 
    return 0;
}
Не ахти, но работает. Именно массив? С вектором проще намного было бы...
Ответ Создать тему
Опции темы

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