Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ подсчёт символов

Автор: Гость 22.09.2006 12:55

Помогите пожалуйста решить задачу на чистом Си.... вводиться строка символов на выходе сведения о колличестве каждого символа в строке.... abcccbd вывод a -1, b - 2, c - 3, d - 1

Автор: volvo 22.09.2006 13:39

#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;
}

Автор: Гость 22.09.2006 13:50

сообщает об ошибках

Автор: volvo 22.09.2006 14:10

Ничего подобного, я проверял, все работает... Какой компилятор? И какое РАСШИРЕНИЕ файлу ты дал?

Кстати, неплохо было бы привести и ошибки, которые (как ты утверждаешь) появляются...

Автор: Гость 27.09.2006 1:47

У меня тоже всё работает и без ошибок. спасибо volvo - если тебе не трудно поясни пожалуйста принцип работы, что для чего и т.п.
Заранее благодарю

Автор: volvo 27.09.2006 1:53

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

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

Автор: Гость 2.10.2006 1:25

Я ухнаю так как не очень хорошо пока знаю сам С, спосибо за пояснения, если можно хотелось бы узнать следующую итуацию, мне скзали, что нужно написать аналогичную задачу для целых чисел, т.е. данные это числа, также сообщили, что если делать эту прогу аналогично той, что была для исмволов, то получится довольно неудобно, т.е. на этот раз вводится огромное колличество чисел и надо с ним провернуть тоже, но придумать для этого удобный такой алгоритм....
Очень прошу помочь желательно исхобдником с комментариями
Заранее благодарю
С уважением,
Сергей