Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Решить задачу второй курс, Помогите пожалуйста решить задачку  
:(
    Опции темы
Ivan51
Дата 21.12.2016, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2016

Репутация: нет
Всего: нет



Дан упорядоченный массив целых чисел. Напечатать элемент, повторяющийся в массиве чаще всего, а также количество повторений. Если есть несколько элементов, повторяющихся одинаковое число раз, выбрать любой из них.
PM MAIL   Вверх
likehood
Дата 21.12.2016, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



Не знаешь с чего начать? Для начала заведи переменную-счётчик, в которой будет храниться число идущих подряд одинаковых элементов.
Пройдись по всему массиву, сравнивая текущий элемент с предыдущим. Если они равны, смело увеличивай счётчик на единицу. Если нет, счётчик нужно сбросить в начальное состояние. Пройдись по программе отладчиком, убедись, что она работает правильно. А дальше останется найти максимальное значение этого счётчика - это уже несложно сделать.
Если есть вопросы - спрашивай.
PM MAIL   Вверх
Olej
Дата 21.12.2016, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 30.11.2016

Репутация: нет
Всего: нет



Цитата(likehood @ 21.12.2016,  23:08)
в которой будет храниться число идущих подряд одинаковых элементов.

А что, в условии было хоть 2 слова про что-то там "подряд"? smile
Я что-то пропустил? 
PM MAIL   Вверх
baldman88
Дата 21.12.2016, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



А какой язык? С или С++?

Добавлено через 3 минуты и 33 секунды
Цитата(Olej @ 21.12.2016,  23:33)
Цитата(likehood @ 21.12.2016,  23:08)
в которой будет храниться число идущих подряд одинаковых элементов.

А что, в условии было хоть 2 слова про что-то там "подряд"? smile
Я что-то пропустил?

Цитата(Ivan51 @ 21.12.2016,  21:32)
Дан упорядоченный массив целых чисел.

PM MAIL   Вверх
Ivan51
Дата 22.12.2016, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2016

Репутация: нет
Всего: нет



C++
PM MAIL   Вверх
vpf
Дата 22.12.2016, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 14.11.2016
Где: Moscow

Репутация: нет
Всего: нет



Надо создать новый двухмерный массив, в котором каждая пара элементов это число и количество повторений.
Затем перебрать исходный массив,  алгоритм такой
1. Есть ли во втором массиве такое число? 
    1.1 Нет, создать новую пару, значение числа = число, значение счетчика = 1. 
    1.2 Да, значение счетчика увеличить на 1
2.  Пройтись по второму массиву и найти наибольшее значение счетчика. 
     2.1 Значение счетчика найдено. Вывести значение числа.

Все.


Это сообщение отредактировал(а) vpf - 22.12.2016, 13:42
PM MAIL IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
likehood
Дата 22.12.2016, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: нет
Всего: 24



vpf, твой алгоритм подходит для произвольного массива. Если массив упорядочен, то алгоритм можно немного упростить. Только нужно ли это автору вопроса? Может он просто хотел получить готовую программу. А мы тут советы какие-то даём.
PM MAIL   Вверх
solowey
Дата 22.12.2016, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 24.11.2009

Репутация: нет
Всего: нет



Код

#include <map>
#include <iostream>
using namespace std;

int main()
{
    int maxNum, maxKey = 0;
    int arr[] = {2, 3, 5, 2, 4, 6, 9, 8, 2, 3};

    map<int, int> vec = map<int, int>();
    for (int i = 0; i < sizeof(arr)/sizeof(int); i++)
    {
        if (vec.size() == 0)
        {
            vec.insert(make_pair(arr[i], 1));
            maxNum = arr[i];
            continue;
        }
        else
        {
            auto result = vec.find(arr[i]);
            if (result != vec.end())
            {
                result->second++;
                if (result->second > maxKey)
                {
                    maxKey = result->second;
                    maxNum = arr[i];
                }
            }
            else
            {
                vec.insert(make_pair(arr[i], 1));
            }
        }
    }

    cout << "Number - " << maxNum << ", iteration - " << maxKey;
    return 0;
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Dmi3ev
Дата 9.1.2017, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Код

#include<iostream>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;

int main()
{
    vector<int> mas;
    copy(istream_iterator<int> (cin), istream_iterator<int>(), back_inserter(mas));
    int m=count(mas.begin(), mas.end(), mas[0]);
    int zm=mas[0];
    for (int i=0; i<mas.size(); i++)
        if (m<count(mas.begin(), mas.end(), mas[i]))
        {
            m=count(mas.begin(), mas.end(), mas[i]);
            zm=mas[i];
        }
    cout<<"Znachenie="<<zm<<" Povtory="<<m;
    return 0;
}

Можно лучше, но пофиг)

Это сообщение отредактировал(а) Dmi3ev - 9.1.2017, 02:43


--------------------

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.