Определить все символы строки и их количество - C (СИ)
Формулировка задачи:
В общем, в одной из частей программы нужно считать строку из файла, и определить все символы, входящие туда и их количество. Пример: в файле написано АНТОН, значит результатом работы программы должно стать А -1, Н - 2, Т - 1, О-1, записано в столбик. Я знаю, что надо записывать в два массива: в один символы, в другой количество. Не понимаю, как пропускать символ, если повторяется, и вообще не совсем понял. Можно написать функцию, отображающую этот процесс? Заранее спасибо.
Решение задачи: «Определить все символы строки и их количество»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdlib.h> #define k 30 #define a 1000 void Fnc1(); int main() { Fnc1(); return 0; } void Fnc1() { int i,j,n,m; char max; FILE *file; char arr[a],str[k]; int number[k]; file = fopen("out.txt", "r"); // открываем файл для чтения j = 0; fgets(arr,sizeof(arr),file); //заносим все из файла в массив max = arr[0]; for( i = 0; i < strlen(arr); i++) { if (arr[i] > max) max = arr[i]; } max++; //находим максимальный еллемент в массиве и добавляем к нему единицу. Тоесть получаем символ,которого нет в файле. m = i = 0; while (arr[i] != '\0') { if (arr[i] != max) { n = 0; str[m] = arr[i]; for(j=0;j<strlen(arr);j++) { if (arr[j] == str[m]) { arr[j] = max; //если букву проверили то заменим ее на символ который мы себе сделали n++; } } number[m] = n; m++; } i++; } str[m] = '\0'; for(m = 0; m < strlen(str); m++) printf("%c: %d\n",str[m],number[m]); fclose(file); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с файлами и строками
- Объявляем функцию
Fnc1
, которая будет выполнять все необходимые операции - В функции
main
вызываемFnc1
- Открываем файл
out.txt
для чтения с помощьюfopen
и сохраняем указатель на файл в переменнуюfile
- Считываем все содержимое файла в массив
arr
с помощьюfgets
- Находим максимальный символ в массиве
arr
- Создаем новый символ, который больше максимального на единицу и не встречается в файле
- Проходим по массиву
arr
и заменяем все вхождения символаmax
на новый символ - Считаем количество вхождений каждого символа в массиве
arr
и сохраняем результаты в массивnumber
- Закрываем файл с помощью
fclose
- Выводим количество вхождений каждого символа в массиве
str
с помощьюprintf
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д