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

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

Войти
Регистрация
Восстановить пароль
 
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
#1

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

29.08.2013, 13:13. Просмотров 469. Ответов 11
Метки нет (Все метки)

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

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

Напечатать минимальное число, большее 200, которое нацело делится на 17 - C++
Напечатать минимальное число, большее 200, которое нацело делится на 17.

Ввести два числа типо unsighed short,распечатать число,которое содержит в младшем байте большее значение - C++
Ввести два числа типо unsighed short,распечатать число,которое содержит в младшем байте большее значение

Использование функций, возвращающих одно значение - C++
помогите решить: Использование функций, возвращающих одно значение. Даны целочисленные массивы D, A. Для каждого массива определить...

Найти в строке букву, которая встречается большее число раз - C++
Всем привет. У меня вот такая задача: Две строки инициализировать в программе. Составить из них третью, дважды чередуя содержимое заданных...

Определить во вновь полученной строке букву, встречающуюся большее число раз - C++
Здравствуйте, помогите пожалуйста написать программу или часть программы: Две строки инициализировать в программе. Составить из них...

Написать пару функций для сохранения и восстановления дерева в/из файл (-а) - C++
Доброго времени суток. Создаю шаблон двоичного дерева на с++. Хочу написать пару функций для сохранения и восстановления дерева в/из...

Как посчитать сколько раз было введено число - C++
Возникла проблема. Надо посчитать сколько пользователь ввел четное число Я так код набросал но он не работает #include <iostream> ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Martovskij
99 / 39 / 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
99 / 39 / 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
99 / 39 / 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
погромист
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
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++
Дано действительное число а. Найти среди чисел 1, 1+1/2, 1+1/3 … первое, большее а; Постоянно выбивает cout Error, но я не знаю в чем...

Найти в последовательности чисел первое число, большее заданного - C++
Дано вещественное число A. Найти в последовательности чисел первое число, большее A. {b}_{i}=\sum_{k=1}^{i}|k-4|

Дано действительное число а. Найти среди чисел 1, 1+1/2, 1, 1+1/2+1/3, . первое, большее заданного числа а - C++
Дано действительное число а. Найти среди чисел 1, 1+1/2, 1, 1+1/2+1/3, ... первое, большее заданного числа а.

Написать программу, отгадывающую число, которое загадал пользователь - C++
Нужно написать программу, которая будет отгадывать число, которое загадал пользователь, и на каждом этапе даёт ответ ( больше, меньше, либо...

Ввести целое число, которое будет вырастать на "1" десять раз - C++
Начинаю знакомится с языков с++, не могу разобратся. Как ввести число которое будет вырастать на &quot;1&quot; десять раз. И каждое число буде...


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

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

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