Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
wolf0022
2 / 2 / 2
Регистрация: 17.12.2013
Сообщений: 148
1

Определить сколько чисел принимают максимальное значение

05.09.2014, 19:09. Просмотров 1047. Ответов 15
Метки нет (Все метки)

Задача 1. Дано 20 действительных чисел. Определить сколько из них принимают максимальное значение.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2014, 19:09
Ответы с готовыми решениями:

Массив: Определить, сколько чисел в последовательности принимают максимальное значение?
1. Дано 20 действительных чисел. Определить сколько из них принимают...

Определить, сколько членов последовательности принимают значение, большее заданного числа
Искал на форму, данная задача решалась довольно часто, но везде один и тот же...

Задана последовательность чисел длиной n. Определить минимальное и максимальное значение этой последовательности ...
Задана последовательность чисел длиной n. Определить минимальное и максимальное...

Определить значение Z=max(a,2b)*max(2a-b,b), где max(x,y)-максимальное из чисел x,y
Помогите решить задачу: Определить значение Z=max(a,2b)*max(2a-b,b), где...

Массив: определить, сколько раз повторяется максимальное число в последоновательности
Нужно определить сколько раз повторяется максимальное число в...

15
zss
Модератор
Эксперт С++
7360 / 6769 / 4281
Регистрация: 18.12.2011
Сообщений: 17,882
Завершенные тесты: 1
05.09.2014, 19:19 2
Лучший ответ Сообщение было отмечено wolf0022 как решение

Решение

Алгоритм:
1. Циклом проходите по массиву и находите максимум.
2. Повторным циклом сравниваете с максимумом и считаете количество совпадений.
1
Bahyt
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 13
04.10.2016, 10:03 3
Ну хоть половину кода написал. А то простенькая задача же
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
04.10.2016, 10:07 4
Цитата Сообщение от Bahyt Посмотреть сообщение
А то простенькая задача же
Угу. Очень прошу. Дайте хотябы подсказку. как реш. эту задачу в С++. В консольном режиме. Я шарю только делфи
0
Bahyt
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 13
08.10.2016, 14:56 5
????
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
08.10.2016, 15:21 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
unsigned getMaxesAmount(double *A, const unsigned n) {
    double max = *A;
    for (unsigned i = 1; i < n; i++)
        max = A[i]>max?A[i]:max;
    unsigned result = 0;
    for (unsigned i = 0; i < n; i++)
        result += A[i]==max;
    return result;
}
 
int main() {
    double A[]={1,2,3,2,3,1,0,2,3,1,2,3,2,3,1,0,2,3,1,2};
    std::cout << getMaxesAmount(A,20);
}
0
Croessmah
++Ͻ
14739 / 8422 / 1596
Регистрация: 27.09.2012
Сообщений: 20,713
Записей в блоге: 2
Завершенные тесты: 1
08.10.2016, 16:46 7
Цитата Сообщение от Bahyt Посмотреть сообщение
Ну хоть половину кода написал. А то простенькая задача же
Цитата Сообщение от Bahyt Посмотреть сообщение
????
почему тогда четыре дня назад Вы сами эту задачу не сделали?
Массив: Определить, сколько чисел в последовательности принимают максимальное значение?

SpBerkut, zss, тот же вопрос и Вам:
Цитата Сообщение от Croessmah Посмотреть сообщение
а зачем два цикла?
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
08.10.2016, 17:00 8
Цитата Сообщение от Croessmah Посмотреть сообщение
а зачем два цикла?
Так предлагаете?

Кликните здесь для просмотра всего текста
Предупреждаю ТСа, это только в развлекательных целях.

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
/////////////////////////////////////////////////////////////////////
// Задача 1. Дано 20 действительных чисел. 
// Определить сколько из них принимают максимальное значение.
/////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////
int main()
{
    double arr[10]
    { 10.d, 12.d, 1.d, 3.d, 15.d, 2.d, 15.d, 15.d, 5.d, 13.d };
    
    bool rev = false;
    int max{};
    int max_count{};
    
    for( int i{1}; (rev ? i > 0 : i < 10); (rev ? --i : ++i) )
    {
        if( i == 9 )
        {
            rev = true;
        }
        
        if( arr[max] < arr[i] )
        {
            max = i; 
        }
        
        if( rev && arr[max] == arr[i] )
        {
            ++max_count;
        }
    }
    std::cout << max_count << std::endl;
}
0
Croessmah
++Ͻ
14739 / 8422 / 1596
Регистрация: 27.09.2012
Сообщений: 20,713
Записей в блоге: 2
Завершенные тесты: 1
08.10.2016, 17:14 9
Цитата Сообщение от GbaLog- Посмотреть сообщение
Так предлагаете?
Как-то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
unsigned getMaxesAmount(double *A, const unsigned n) {
    double max = *A;
    unsigned result = 1;
    for (unsigned i = 1; i < n; i++) {
        if (lessDouble(max, A[i])) {//lessDouble? WTF? o_O :)
           max = A[i];
           result = 1;
        } else {
           result += equalDouble(max, A[i]);//equalDouble? WTF? o_O :)   
        }     
    }        
    return result;
}
1
Dsasdf
Заблокирован
08.10.2016, 20:19 10
C++
1
2
3
4
5
6
7
8
9
10
11
double A[] = {1, 2, 3, 2, 3, 1, 0, 2, 3, 1, 2, 3, 2, 3, 1, 0, 2, 3, 1, 2};
 
    int count = 0;
    for (int i = 0, max = 0; i < 20; i++)
        if (A[i] > max) {
            max = A[i];
            count = 1;
        } else
            if (A[i] == max)count++;
    
cout << count;
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
09.10.2016, 09:10 11
Ну, у меня получилась калька с кода Croessmah. А ведь я честно не подглядывал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned getMaxesAmount(double *A, const unsigned n) {
    double max = *A;
    unsigned result = 1;
    for (unsigned i = 1; i < n; i++) {
        if (A[i]>max) {
            result = 1;
            max=A[i];
        } else {
            result += A[i]==max; // Вот этот момент, однако, спорный.
            //Официальная наука не приветствует проверку вещественных чисел на строгое равенство.
        }
    }
    return result;
}
Dsasdf, Ваш код не будет работать, если массив будет целиком состоять из отрицательных значений.
0
Dsasdf
Заблокирован
09.10.2016, 09:20 12
Цитата Сообщение от SpBerkut Посмотреть сообщение
Dsasdf, Ваш код не будет работать, если массив будет целиком состоять из отрицательных значений.
Вообще-то не хорошо сдирать мой вариант решения - подмазывать и выкладывать его своим. Удачи.
C++
1
2
3
4
5
6
7
8
9
10
11
 double A[] = {-3, -2, -1, -1, -3, -1};
 
    int count = 1;
    for (int i = 1, max = A[0]; i < 6; i++)
        if (A[i] > max) {
            max = A[i];
            count = 1;
        } else
            if (A[i] == max)count++;
 
    cout << count;
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от SpBerkut Посмотреть сообщение
Вот этот момент, однако, спорный.
* * * * * * //Официальная наука не приветствует проверку вещественных чисел на строгое равенство.
Полный бред.

0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
09.10.2016, 09:52 13
Цитата Сообщение от Dsasdf Посмотреть сообщение
Вообще-то не хорошо сдирать мой вариант решения - подмазывать и выкладывать его своим.
У Вас мания величия. Croessmah и подход вычисления через 1 цикл обозначил, и код раньше выложил. И уж чья бы корова тогда мычала.
Цитата Сообщение от Dsasdf Посмотреть сообщение
Полный бред.
А давайте дуэль?!
C++
1
2
3
4
5
6
7
8
9
#include <iostream> 
int main() {
    float a = 0.2;                      // объявили переменную-секунданта и присвоили ей значение 0.2
    if (a == 0.2) {                     // проверяем секунданта на строгое равенство с тем же 0.2
        std::cout << "SpBerkut дурак."; // если равно, то я, так уж и быть, дурак
    } else {                            // а иначе
        std::cout << "Dsasdf дурак.";   // уж извините, Вы
    }
}
Цитата Сообщение от Dsasdf Посмотреть сообщение
Удачи.
Вам тоже не хворать.
0
Croessmah
++Ͻ
14739 / 8422 / 1596
Регистрация: 27.09.2012
Сообщений: 20,713
Записей в блоге: 2
Завершенные тесты: 1
09.10.2016, 09:58 14
Цитата Сообщение от Dsasdf Посмотреть сообщение
C++
1
int i = 1, max = A[0]
Тоже не будет работать.
Массив то из double'ов, а max будет int'ом.
Цитата Сообщение от SpBerkut Посмотреть сообщение
У Вас мания величия.
Не обращайте внимания. Ваши коды не имеют ничего общего.
Эт Вы у меня код украли. Шутка, конечно.
0
SpBerkut
09.10.2016, 10:06
  #15

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Эт Вы у меня код украли.
Я ж говорю — калька получилась.

0
Dsasdf
Заблокирован
09.10.2016, 10:14 16
Цитата Сообщение от SpBerkut Посмотреть сообщение
У Вас мания величия. Croessmah и подход вычисления через 1 цикл обозначил, и код раньше выложил. И уж чья бы корова тогда мычала.
У него другой код, например
lessDouble, equalDouble
- я не знаю, что это за бред. Я не жадный, украл мой вариант решения - мне все равно.

Не по теме:

Повторяю второй раз:

Цитата Сообщение от Dsasdf Посмотреть сообщение
Вот этот момент, однако, спорный.
* * * * * * //Официальная наука не приветствует проверку вещественных чисел на строгое равенство.
Это БРЕД. Этот код, связан с банальным незнанием формата хранения вещественных чисел в памяти компьютера, лишь подтверждает твою тупость.


C++
1
2
3
4
5
6
float a = 0.2; // объявили переменную-судью и присвоили ей значение 0.2
    if (a == 0.2f) { // проверяем на строгое равенство с тем же 0.2
        std::cout << "SpBerkut дурак."; // если равно, то я, так уж и быть, дурак
    } else { // а иначе
        std::cout << "Dsasdf дурак."; // уж извините, Вы
    }
Удачи. Отстань от меня.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Тоже не будет работать.
Массив то из double'ов, а max будет int'ом.
Заменишь на double.
0
09.10.2016, 10:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2016, 10:14

Дана последовательность чисел. Сколько раз в ней встречается максимальное число?
Given a sequence of numbers. Find out how many times the maximum element of the...

Определить сколько чисел было введено, и сколько среди них стречалось 1
С клавиатуры вводятся числа до тех пор пока их сумма не превысит 100....

Определить, сколько среди чисел четных и сколько нечетных
2.Вводится последовательность целых чисел, 0 – конец последовательности....


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

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

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