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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 17:46   #1
Proger_1
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 21
По умолчанию подсчёт символов с в строке

Доброго времени суток. Начали изучать язык с++, дали домой несколько задачек, все сделал кроме одной... не знаю как тут быть (язык изучать начали только что и препод особо не обьяснил ничего по языку си++, якобы паскаль изучали, разберёмся), а задача такая:
Программа считывает последовательность символов (0 - конец последовательности). Подсчитывает кол-во больших и малых букв, соответствующим вашим инициалам. (например К, к, О или о). Вывести гистограмму с помощью звёздочек такого вида:
К 5 *****
к 3 ***
О 2 **
о 4 ****

Использовать оператор выбора switch. Для рисования гистограммы использовать цикл do- while.
Подскажите как такое можно реализовать? нельзя использовать никакие другие более сложные операторы, (ещё ничего не проходили) Ну скажем как найти одинаковые символы это несложно, if s[i] == s[i+1] then inc(k).
Ну это как пример, но когда символы разные и их много, мы ведь не знаем сколько их будет отличающихся друг от друга, поэтому не знаем сколько взять переменных что бы потом их увеличивать ( пример inc(k)). Вообщем не доезжаю, обьясните, как этот switch тут использовать ?
Proger_1 вне форума Ответить с цитированием
Старый 08.03.2010, 18:31   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

например так
Код:
switch(s[i])
{
     case 'K': big++;
     break;
     case 'k': small++;
     break;
}
NiCola999 вне форума Ответить с цитированием
Старый 08.03.2010, 18:44   #3
Proger_1
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 21
По умолчанию

Значит мне надо в switch прописать все буквы от А до Я , причём как большие так и маленькие ? Ведь неизвестно какие буквы введёт пользователь, К - это как я понимаю лишь пример, а ввести можно любые буквы наверное.
Proger_1 вне форума Ответить с цитированием
Старый 08.03.2010, 19:14   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

вы же сами написали
Цитата:
Подсчитывает кол-во больших и малых букв, соответствующим вашим инициалам. (например К, к, О или о)
я так понимаю, пользователь вводит свои инициалы и потом строку ?
NiCola999 вне форума Ответить с цитированием
Старый 08.03.2010, 19:21   #5
Proger_1
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 21
По умолчанию

Блин, я сам не врубаюсь, что за непонятное условие... я думал просто вводится строка, и в ней считаются одинаковые буквы, если вводятся просто инициалы, это ведь просто две буквы, и там только по одной звёздочки всегда надо выводить, непонятное что-то... и что значит 0 - конец последовательности ? Может кто-то понял условие ? Вообще на завтра надо сделать, но если не разберусь с условием, пойду к преподу за разьяснениями :/
Proger_1 вне форума Ответить с цитированием
Старый 08.03.2010, 19:56   #6
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Все в задании сказано
Вводим строку для примера:
ололОлОлоабракадабракКкк0
Инициалы
КО
Дальше в массив 4х2 заносим в 1 столбец буквы КкОо, во второй столбец количествой появлений даной буквы в тексте.
Дальше в свитч передаем по очереди все 4 буквы, и в case для каждого варианта делаем обработку.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 11.03.2010, 22:31   #7
alex2693
Пользователь
 
Аватар для alex2693
 
Регистрация: 09.04.2009
Сообщений: 30
По умолчанию

не надо все буквы переписать
Цитата:
if(str=='A' && str=='Z')++big;
else if(str>='a' && str<='z')++small;
else if(str>=0 && str <=9)++cifry;
Помогло?Скажи спасибо!☺☻☺☻
alex2693 вне форума Ответить с цитированием
Старый 11.03.2010, 22:41   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Учитывая специфику среднестатистических универских заданий, подразумевается следующее:
Инициалы Вы использовать должны свои и это жестко задается в коде. Получается что-то вроде вариантов задания на каждого студента. Дальше идёт цикл по строке и свич с 4 условиями к,К,о,О (к и о заменяете на свои инициалы соответственно).
Код:
switch (s[i])
{
case 'К': ++big_k; break;
case 'к': ++small_k; break;
case 'О': ++big_o; break;
case 'о': ++small_o; break;
}
Соответственно подсчитываете количество повторов каждой буквы и выводите на экран. Всё элементарно.
pu4koff вне форума Ответить с цитированием
Старый 11.03.2010, 22:45   #9
alex2693
Пользователь
 
Аватар для alex2693
 
Регистрация: 09.04.2009
Сообщений: 30
По умолчанию

Цитата:
switch (s[i])
{
case 'К': ++big_k; break;
case 'к': ++small_k; break;
case 'О': ++big_o; break;
case 'о': ++small_o; break;
}
учитывая что в англ алфавите около 30 букв,+30 заглавных,надо объявлять 60 переменных?И в цикле 60 условаий написать?
Помогло?Скажи спасибо!☺☻☺☻
alex2693 вне форума Ответить с цитированием
Старый 12.03.2010, 09:02   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от alex2693 Посмотреть сообщение
учитывая что в англ алфавите около 30 букв,+30 заглавных,надо объявлять 60 переменных?И в цикле 60 условаий написать?
В задании указано:
Цитата:
Подсчитывает кол-во больших и малых букв, соответствующим вашим инициалам.
Так что только 4 переменные и 4 условия. Собственно я готовый switch написал. Осталось в цикл обернуть и вывод результата написать.
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт гласных в строке Геннадий Вершинин Microsoft Office Word 1 11.12.2009 16:00
замена символов в строке euhenia Помощь студентам 3 30.11.2009 20:59
Полезно : Подсчёт формулы в строке (+-*/) Lime Помощь студентам 2 09.07.2009 22:04
Подсчёт пробелов в ведённой строке prikolist Общие вопросы C/C++ 10 10.04.2009 15:52