Помощь - Поиск - Пользователи - Календарь
Полная версия: подсчёт символов
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Гость
Помогите пожалуйста решить задачу на чистом Си.... вводиться строка символов на выходе сведения о колличестве каждого символа в строке.... abcccbd вывод a -1, b - 2, c - 3, d - 1
volvo
#include <stdio.h>

int main() {
char s[256], *p;
int count[256] = {0}, i;

gets(s);
for(p = s; *p; p++) ++count[(int)(*p)];
for(i = 0; i < 256; ++i)
if(count[i]) printf("%c - %d\n", (char)i, count[i]);

return 0;
}
Гость
сообщает об ошибках
volvo
Ничего подобного, я проверял, все работает... Какой компилятор? И какое РАСШИРЕНИЕ файлу ты дал?

Кстати, неплохо было бы привести и ошибки, которые (как ты утверждаешь) появляются...
Гость
У меня тоже всё работает и без ошибок. спасибо volvo - если тебе не трудно поясни пожалуйста принцип работы, что для чего и т.п.
Заранее благодарю
volvo
blink.gif Какой такой принцип работы? Все просто: ходим по всему тексту (это первый for), пока строка не закончится... С каждым символом строки делаем следующее: берем его код (преобразованием к int), и элемент массива count, соответствующий этому коду увеличиваем на 1...

Изначально count весь обнуляется (это достигается записью: int count[256] = {0})... Ну, и распечатываем: перебираем все коды от 0 до 255 (больше просто нет кодов для char smile.gif ); если счетчик для какого-то кода больше 0, то печатаем символ с этим кодом и содержимое счетчика... Где затруднения?
Гость
Я ухнаю так как не очень хорошо пока знаю сам С, спосибо за пояснения, если можно хотелось бы узнать следующую итуацию, мне скзали, что нужно написать аналогичную задачу для целых чисел, т.е. данные это числа, также сообщили, что если делать эту прогу аналогично той, что была для исмволов, то получится довольно неудобно, т.е. на этот раз вводится огромное колличество чисел и надо с ним провернуть тоже, но придумать для этого удобный такой алгоритм....
Очень прошу помочь желательно исхобдником с комментариями
Заранее благодарю
С уважением,
Сергей
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.