Помогите пожалуйста решить задачу на чистом Си.... вводиться строка символов на выходе сведения о колличестве каждого символа в строке.... abcccbd вывод a -1, b - 2, c - 3, d - 1
#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 - если тебе не трудно поясни пожалуйста принцип работы, что для чего и т.п.
Заранее благодарю
Какой такой принцип работы? Все просто: ходим по всему тексту (это первый for), пока строка не закончится... С каждым символом строки делаем следующее: берем его код (преобразованием к int), и элемент массива count, соответствующий этому коду увеличиваем на 1...
Изначально count весь обнуляется (это достигается записью: int count[256] = {0})... Ну, и распечатываем: перебираем все коды от 0 до 255 (больше просто нет кодов для char ); если счетчик для какого-то кода больше 0, то печатаем символ с этим кодом и содержимое счетчика... Где затруднения?
Я ухнаю так как не очень хорошо пока знаю сам С, спосибо за пояснения, если можно хотелось бы узнать следующую итуацию, мне скзали, что нужно написать аналогичную задачу для целых чисел, т.е. данные это числа, также сообщили, что если делать эту прогу аналогично той, что была для исмволов, то получится довольно неудобно, т.е. на этот раз вводится огромное колличество чисел и надо с ним провернуть тоже, но придумать для этого удобный такой алгоритм....
Очень прошу помочь желательно исхобдником с комментариями
Заранее благодарю
С уважением,
Сергей