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

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

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

Пары в одномерном массиве - C++

13.03.2012, 00:50. Просмотров 850. Ответов 17
Метки нет (Все метки)

Составить программу, которая отыскивает среди пар элементов одномерного массива М те, разность между элементами которых есть величина наибольшая для данного массива.
Т.е. нужно сначала найти максимум, а затем через условие проверить, если разность=максимуму, то это пара? так?

Например:
C++
1
if (A[i]-A[i+1]=max) max=max+1
Но мне нужно что бы пары отыскивались по всему массиву, а не только со следующим элементом!
Просьба помочь, с условием!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 00:50     Пары в одномерном массиве
Посмотрите здесь:

C++ В одномерном массиве,состоящем из...
C++ О одномерном массиве
C++ Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве.
C++ В одномерном массиве
максимум в одномерном массиве C++
C++ Нужно найти в массиве и распечатать пары одинаковых чисел
Имеются ли в массиве пары взаимно обратных соседних чисел? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.03.2012, 00:56     Пары в одномерном массиве #2
нет вы не поняли, причем тут максимум среди элементов?
вы берете 2 элемента и ищите разницу между ними по модулю, и находите такие 2 элемента разность между которым больше!!!
XaJlop4ik
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
13.03.2012, 01:00  [ТС]     Пары в одномерном массиве #3
Цитата Сообщение от panicwassano Посмотреть сообщение
нет вы не поняли, причем тут максимум среди элементов?
вы берете 2 элемента и ищите разницу между ними по модулю, и находите такие 2 элемента разность между которым больше!!!
panicwassano, Т.е. мне просто нужно найти пару, у которой самая высокая разность среди остальных элементов?
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.03.2012, 01:03     Пары в одномерном массиве #4
Цитата Сообщение от XaJlop4ik Посмотреть сообщение
panicwassano, Т.е. мне просто нужно найти пару, у которой самая высокая разность среди остальных элементов?
да! только по модулю ее нужно будет считать
XaJlop4ik
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
13.03.2012, 01:05  [ТС]     Пары в одномерном массиве #5
Цитата Сообщение от panicwassano Посмотреть сообщение
да! только по модулю ее нужно будет считать
panicwassano, Спасибо большое за ответ. Не подскажете хоть примерно как это реализовать?
Само условие меня интересует.
Medved_XIII
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 12
13.03.2012, 01:27     Пары в одномерном массиве #6
Может,чем сравнивать разницу между парами элементов найти максимальный и минимальный элемент - разница между ними и будет максимальна?
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.03.2012, 01:34     Пары в одномерном массиве #7
Цитата Сообщение от Medved_XIII Посмотреть сообщение
Может,чем сравнивать разницу между парами элементов найти максимальный и минимальный элемент - разница между ними и будет максимальна?
наверно =)
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
13.03.2012, 01:41     Пары в одномерном массиве #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#define SIZE 10
int main(){
    int arr[SIZE] = {10,3,5,6,8,2,4,5,6,10};
    int maxd = 0;
    int left = 0;
    int right = 0;
 
    for(int i = 0;i < SIZE;i ++){
 
    if((arr[i - 1] - arr[i]) > maxd){
        maxd = (arr[i -1] - arr[i]);
                      left = arr[i - 1];
                      right = arr[i];
        }
    }
    std::cout << "Left elem "
        << left << "\nRight elem "
        << right <<  "\nMax difference " << maxd << std::endl;
    system("pause");
}
XaJlop4ik
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
13.03.2012, 01:42  [ТС]     Пары в одномерном массиве #9
Цитата Сообщение от Medved_XIII Посмотреть сообщение
Может,чем сравнивать разницу между парами элементов найти максимальный и минимальный элемент - разница между ними и будет максимальна?
Вот, точно, так намного проще)
спасибо большое)
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
13.03.2012, 01:47     Пары в одномерном массиве #10
XaJlop4ik, поспешил ,с ответом ,не пройдет все тесты.
XaJlop4ik
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
13.03.2012, 01:58  [ТС]     Пары в одномерном массиве #11
Цитата Сообщение от MrCold Посмотреть сообщение
XaJlop4ik, поспешил ,с ответом ,не пройдет все тесты.
какие тесты?
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
13.03.2012, 02:03     Пары в одномерном массиве #12
Не сработает
C++
1
int arr[SIZE] = {10,3,5,6,8,2,4,5,6,20};
XaJlop4ik
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
13.03.2012, 02:05  [ТС]     Пары в одномерном массиве #13
MrCold, спасибо конечно, но мне сложновато разобраться в вашем коде!
Вот что у меня вышло:
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> 
#include <math.h>
#include <windows.h>
#include <time.h>
#include <stdlib.h>
using namespace std; 
void main()
{SetConsoleCP(1251); 
SetConsoleOutputCP(1251); 
srand(time(NULL));
        int N;
        cout<<"Введите кол-во элементов в массиве Z[N]:"<<endl;
        cin>>N;
        int *Z = new int [N], i;
        cout<<"Массив Z[N]:"<<endl;
        for (i=0; i<N; ++i)
        {
                Z[i]=rand()%50-20;
                cout<<Z[i]<<" ";
        }
        cout<<endl;
        //Max
        int max=Z[0];
        for (i=0; i<N; i++)
            if (Z[i]>max)max=Z[i];
        cout<<"Max="<<max<<endl;
        //Min
        int min=Z[0];
        for (i=0; i<N; i++)
            if (Z[i]<min)min=Z[i];
        cout<<"Min="<<min<<endl;
        int par;
        par=abs(max-min);
        cout<<"Наибольшая разность между парами = "<<par<<endl;
}
Правильно ли это? Оно-то работает и считает, с этим все в порядке, но вот я не уверен что это подходит под данное мною условие(
Миниатюры
Пары в одномерном массиве  
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
13.03.2012, 02:05     Пары в одномерном массиве #14
Имел в виду что мой пример не сработает
XaJlop4ik
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
13.03.2012, 02:24  [ТС]     Пары в одномерном массиве #15
Цитата Сообщение от MrCold Посмотреть сообщение
Имел в виду что мой пример не сработает
А ну ничего ведь страшного, я вставил он работает, но не совсем так как нужно)
Не могли бы Вы, проверить мой код?

Добавлено через 14 минут
т.е. не код(код работает корректно), а соответствие условия задачи, с моим решением?
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
13.03.2012, 02:30     Пары в одномерном массиве #16
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
 
/*
 *
 */
int main( int argc, char** argv ) {
    std::srand( std::time( 0 ));
 
    const std::size_t size = 10;
    std::size_t min = 0, max = 0;
    int a[ size ] = { 0 };
 
    for ( std::size_t i = 0; i < size; i++ ) {
    a[ i ] = std::rand() % 100;
        std::cout << a[ i ] << ' ';
    }
 
    std::cout << std::endl;
 
    for ( std::size_t i = 0; i < size; i++ ) {
    if ( a[ i ] < a[ min ] )
        min = i;
 
    if ( a[ i ] > a[ max ] )
        max = i;
    }
 
    std::cout << "The maximum absolute value between the elements a[ " << min << " ] and a[ " << max << " ] = " << std::abs( a[ min ] - a[ max ] ) << std::endl;
 
    return 0;
}
Единственно если в массиве есть отрицательные числа, условие нахождение min и max нужно изменить немного.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
13.03.2012, 06:55     Пары в одномерном массиве #17
За минимум и максимум вначале цикла взять первый элемент массива, а не 0, и тип int соответственно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 09:53     Пары в одномерном массиве
Еще ссылки по теме:

C++ В Одномерном массиве
Вычисления в одномерном массиве C++
Удалить пары в массиве C++
Найти в массиве пары чисел, разность между которыми минимальна C++
В массиве найти сумму каждой соседней пары элементов C++

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

Или воспользуйтесь поиском по форуму:
Medved_XIII
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 12
13.03.2012, 09:53     Пары в одномерном массиве #18
Попробуй так:

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
#include <iostream>
#include <cmath>
#define SIZE 10
int main(){
        double arr[SIZE] = {100,103.1,-15.12,6,-8.89,2,1,55,6,10};
        double maxd = 0;
        double left = arr[0];
        double right = arr[1];
 
        for(int i = 0;i < SIZE-1;i ++)
            for(int j=i+1; j<SIZE; j++)
            {
                if( fabs(arr[i] - arr[j]) > maxd)
                {
                    maxd = fabs(arr[i] - arr[j]);
                    left = arr[i];
                    right = arr[j];
                }
        }
        std::cout << "Left elem "
                << left << "\nRight elem "
                << right <<  "\nMax difference " << maxd << std::endl;
        system("pause");
        return 0;
}
Yandex
Объявления
13.03.2012, 09:53     Пары в одномерном массиве
Ответ Создать тему
Опции темы

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