Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2015, 02:04   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию наиболее встречающиеся цифра в строке.

Здравствуйте, есть такая задача: Дан непустой текст из цифр, за которым следует точка. Напечатать цифру, наиболее часто встречающуюся в этом тексте (если таких цифр несколько, напечатать любую из них).
Я вот думал делать через do {
}while() но не знаю что надо прописывать в теле этого цикла.
Я попробовал сделать так:
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    
    
   char ch;
   int x[9];
   int q;
int max=0,otv=0;
     int ch1 = atoi(&ch);
   cout << "enter ";
   do {
     
    for(int i=0;i<9;i++) {
          x[i]=0;  
            
            }   
   while(true) {
               
       cin>>ch;
       if(ch='.') break; 
     
       x[ch1]++; 
         }
         
         for(int i=0;i<9;i++) {
               if(x[i]>max) {
                            max=x[i];
                            otv=i;
                            }  
                 
                 }
             cout << "otvet  " << otv<< endl;    
                 
      cout << "to the end press 0";
       cin>> q;
    
     }while(q=0);
    system("PAUSE");
    return EXIT_SUCCESS;
}
но ничего не вышло, при вводе цифр выходит 0 ответ, помогите пожалуйста исправить

Последний раз редактировалось mishammm; 03.02.2015 в 02:57.
mishammm вне форума Ответить с цитированием
Старый 03.02.2015, 06:59   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я бы использовал следующий алгоритм - сканировал каждый символ строки. Если символ цифра, то соответствующий элемент массива из 10 (нуль же тоже цифра) увеличивал на единицу. Во втором цикле определял бы индекс максимального элемента и выводил на экран.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.02.2015, 09:29   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

согласен с алгоритмом Utkin'а..

поясню то, что нам очевидно, а новичку может быть нет:
Цитата:
во втором цикле определял бы индекс максимального элемента
второй цикл нужно сделать от 0 до 9 и пройтись по дополнительному массиву, в котором мы подсчитывали, сколько раз встретилась каждая цифра
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.02.2015, 12:07   #4
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
согласен с алгоритмом Utkin'а..

поясню то, что нам очевидно, а новичку может быть нет:

второй цикл нужно сделать от 0 до 9 и пройтись по дополнительному массиву, в котором мы подсчитывали, сколько раз встретилась каждая цифра
вы имеете в виду этот кусочек да?
Код:
 for(int i=0;i<9;i++) {
               if(x[i]>max) {
                            max=x[i];
                            otv=i;
и тут просто создать новый массив скажем не x[i] а например y[j] или полностью весь код перерабатывать? просто немного не понял

P.S. кажется я немного понял что вы имеете в виду, что то типа как тут http://otvet.mail.ru/question/97684209 извините за ссылку, но там сам код мне неясен, в особенности первый цикл хотелось бы попроще написать

Последний раз редактировалось mishammm; 03.02.2015 в 12:15.
mishammm вне форума Ответить с цитированием
Старый 03.02.2015, 13:28   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Там насколько я понял (могу ошибаться) идет пересчет из символьного представления цифры в обычное. То есть из '1' в 1. То есть там String.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все числа из массива B(n), встречающиеся более чем в одной строке матрицы A(m,n), язык Cи. Артем1978 Помощь студентам 1 09.02.2014 20:58
С++ Выведите на экран все символы, встречающиеся в строке, без пробела. alex1994max Помощь студентам 1 09.07.2013 13:25
обработки текста: определить в тексте наиболее часто встречающиеся символы (Delphi) acheron1757 Помощь студентам 6 16.05.2013 12:42
Как решить задачу на си: вывести слова, встречающиеся один раз в строке? NickolayNest Общие вопросы C/C++ 3 04.11.2012 12:28
Найти все числа из массива B(n), встречающиеся более чем в одной строке матрицы A(m,n). Alexander89 Паскаль, Turbo Pascal, PascalABC.NET 2 16.10.2008 12:41