Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
bgm123
40 / 40 / 27
Регистрация: 29.01.2013
Сообщений: 277
1

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

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

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

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

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

Дано действительно число а.Найти среди чисел 1, 1*1/2, 1*/1/2+1/3, ... первое число, большее а, и его номер в последовательности чисел.
Прошу помочь решить задачки!:(очень нужно (Билет №2) Дано действительно...

В которое двузначное число и какую цифру надо вставить посередине записи, чтобы полученное число было в 6 раз больше чем исходное?
В которое двузначное число и какую цифру надо вставить посередине записи, чтобы...

Файл: Записать max значение в конец файла столько раз, сколько положительных чисел было в исходном файле.
Задача: а) Дан файл f, компоненты- действительными числами. Найти: Наибольшее...

Вывести на экран пару чисел в которой находится большее
Ввести с клавиатуры 10 пар чисел. Сравнить все числа. И вывести на экран пару...

11
Martovskij
99 / 39 / 12
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
29.08.2013, 13:22 2
Если "два целочисленнных параметра и два числа с плавающей точкой", то что будем возвращать? float или int? или float приведенный к int? тьфу, ступил, две ж функции надо
0
bgm123
40 / 40 / 27
Регистрация: 29.01.2013
Сообщений: 277
29.08.2013, 13:30  [ТС] 3
Можно ли при решение данной задачи не использовать какие-либо динамические структуры данных или всё-таки придётся?

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

здесь уже никак, либо условия у препода уточнить, что можно юзать, а что нельзя.
1
ВСарости
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 10
29.08.2013, 13:58 8
Цитата Сообщение от bgm123 Посмотреть сообщение
Сколько ему выделить памяти?
Цитата Сообщение от Martovskij Посмотреть сообщение
и что делать при выходе за пределы массива? обнулять?
а куда девать ранее полученное количество аргументов?
а как их посчитать? а сколько взять? а куда сохранить?
Не, я понимаю, что это оооочень плохое решение. Но против условия задачи не попрёшь. Вот захотелось преподу, что теперь попишешь?
0
coloc
погромист
411 / 247 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
29.08.2013, 14:12 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;
}
Вроде бы работает...
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
29.08.2013, 14:23 10
можно взять map ключ=аргумент функции, значение - количество раз передачи данного аргумента в функцию
то есть передаем значение в функцию ищем его в map если нали увеличиваем значение ключа и т.д. потом ищем ключ у которого максимальное значение
0
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
29.08.2013, 14:58 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];
    
 
}
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
29.08.2013, 15:02 12
можно еще в multiset добавлять элементы, потом найти самую длинную последовательность одинаковых
1
29.08.2013, 15:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 15:02

Найти минимальное число, большее n, которое нацело делится на 19
Дано число n. Необходимо найти минимальное число, большее n, которое нацело...

Найти минимальное число, большее n, которое нацело делится на 19
Дано число n. Необходимо найти минимальное число, большее n, которое нацело...

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


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

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

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