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

Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз - C++

Восстановить пароль Регистрация
 
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
29.08.2013, 13:13     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #1
Задание:
Реализуйте пару функций Max, принимающих два целочисленнных параметра и два числа с плавающей точкой соответственно и возвращающих то из чисел, которое было передано этой функции большее число раз. Для хранения полученных ранее чисел воспользуйтесь в этих функциях статическими переменными. В случае, когда оба парметра встречались одинаковое число раз, функция должна возвращать первый из них.

Вопрос:
Ну скажем я передавал в функцию вот такие пары значений по очереди: (1, 2), (1, 3).
Как при втором вызове определить встречалась ли раньше цифра 3?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2013, 13:13     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз
Посмотрите здесь:

C++ Ввести два числа типо unsighed short,распечатать число,которое содержит в младшем байте большее значение
C++ Как посчитать сколько раз было введено число
нужно написать программу с использованием функций, не возвращающих значения C++
C++ нужно написать программу с использованием функций, возвращающих значения
C++ Дано действительно число а.Найти среди чисел 1, 1*1/2, 1*/1/2+1/3, ... первое число, большее а, и его номер в последовательности чисел.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
29.08.2013, 13:22     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #2
Если "два целочисленнных параметра и два числа с плавающей точкой", то что будем возвращать? float или int? или float приведенный к int? тьфу, ступил, две ж функции надо
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
29.08.2013, 13:30  [ТС]     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #3
Можно ли при решение данной задачи не использовать какие-либо динамические структуры данных или всё-таки придётся?

Добавлено через 3 минуты
Хотя бы одну функцию надо! Вторая, я думаю, аналогично.
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
29.08.2013, 13:31     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #4
Ну, лично мне, при заранее неизвестном количестве вызовов, в голову лезет пока только vector<>))
который как-раз таки шаблонный. c другой стороны скорость поиска наиболее часто передаваемого аргумента при каждом последующем вызове будет хорошо так увеличиватся...
ВСарости
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
29.08.2013, 13:34     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #5
Ну старое доброе тупое решение "взять массив побольше" никто не отменял. Раз уж совсем нельзя динамически память выделять по какой-то причине.
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
29.08.2013, 13:36  [ТС]     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #6
Цитата Сообщение от ВСарости Посмотреть сообщение
Ну старое доброе тупое решение "взять массив побольше" никто не отменял. Раз уж совсем нельзя динамически память выделять по какой-то причине.
Под массив типа int согласен. А вот массив типа double. Сколько ему выделить памяти?
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
29.08.2013, 13:39     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #7
Цитата Сообщение от ВСарости Посмотреть сообщение
Ну старое доброе тупое решение "взять массив побольше" никто не отменял. Раз уж совсем нельзя динамически память выделять по какой-то причине.
и что делать при выходе за пределы массива? обнулять?
а куда девать ранее полученное количество аргументов?
а как их посчитать? а сколько взять? а куда сохранить?

здесь уже никак, либо условия у препода уточнить, что можно юзать, а что нельзя.
ВСарости
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
29.08.2013, 13:58     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #8
Цитата Сообщение от bgm123 Посмотреть сообщение
Сколько ему выделить памяти?
Цитата Сообщение от Martovskij Посмотреть сообщение
и что делать при выходе за пределы массива? обнулять?
а куда девать ранее полученное количество аргументов?
а как их посчитать? а сколько взять? а куда сохранить?
Не, я понимаю, что это оооочень плохое решение. Но против условия задачи не попрёшь. Вот захотелось преподу, что теперь попишешь?
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
29.08.2013, 14:12     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #9
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 <algorithm>
#include <vector>
 
int Max( int a, int b ) {
    static std::vector< int > entered_args;
    entered_args.push_back( a );
    entered_args.push_back( b );
        
    int count_a = 0;
    int count_b = 0;
    count_a = std::count( entered_args.begin(), entered_args.end(), a );
    count_b = std::count( entered_args.begin(), entered_args.end(), b );
    return ( count_a >= count_b ? a : b );
}
 
int main() {
    while( true ) {
        std::cout << "\nEnter two numbers: ";
        int a,b;
        std::cin >> a >> b;
        std::cout << "\nMax is: " << Max( a, b );
    }
    return 0;
}
Вроде бы работает...
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
29.08.2013, 14:23     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #10
можно взять map ключ=аргумент функции, значение - количество раз передачи данного аргумента в функцию
то есть передаем значение в функцию ищем его в map если нали увеличиваем значение ключа и т.д. потом ищем ключ у которого максимальное значение
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
29.08.2013, 14:58     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #11
bgm123, Все сводится в поиске максимального количества встречающихся элементов в массиве (векторе). Конечно, мой код не супер, особенно с поиском элементом, но работает)))
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
#include <iostream>
#include <algorithm>
#include <vector> 
int max(const int&, const int&);
using namespace std;
 
int main()
{
            max(42,2);
            max(3,4);
            max(5,6);
            max(3,42);
    cout<<  max(42,42)<<endl;
 
    return 0;
}
 
int max(const int& a, const int& b)
{
    int idx=0;
    static vector<int> number;
    number.push_back(a);
    number.push_back(b);
    
    
    vector<int> count(number.size(), 0);
    
    sort(number.begin(), number.end());
 
    for(int i = 0; i<number.size()-1; ++i)
        for(int j = i+1; j<number.size(); ++j)
        {
            if(number[i]==number[j])
            {
                count[i]++;
            }
            else 
            {
                i=j;
                break;
            }
                
        }
        
 
    vector<int>::const_iterator it = find(count.begin(), count.end(), *max_element(count.begin(), count.end()));
    if ( it!=count.end() ) 
        idx = it - count.begin();
        
    return number[idx];
    
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 15:02     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз
Еще ссылки по теме:

разработка нерекурсивных функций, не возвращающих значений C++
C++ Напечатать минимальное число, большее 200, которое нацело делится на 17
C++ Написать пару функций для сохранения и восстановления дерева в/из файл (-а)

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

Или воспользуйтесь поиском по форуму:
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
29.08.2013, 15:02     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз #12
можно еще в multiset добавлять элементы, потом найти самую длинную последовательность одинаковых
Yandex
Объявления
29.08.2013, 15:02     Написать пару функций Max, возвращающих то из чисел, которое было передано большее число раз
Ответ Создать тему
Опции темы

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