Определить все символы строки и их количество - 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);
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с файлами и строками
  2. Объявляем функцию Fnc1, которая будет выполнять все необходимые операции
  3. В функции main вызываем Fnc1
  4. Открываем файл out.txt для чтения с помощью fopen и сохраняем указатель на файл в переменную file
  5. Считываем все содержимое файла в массив arr с помощью fgets
  6. Находим максимальный символ в массиве arr
  7. Создаем новый символ, который больше максимального на единицу и не встречается в файле
  8. Проходим по массиву arr и заменяем все вхождения символа max на новый символ
  9. Считаем количество вхождений каждого символа в массиве arr и сохраняем результаты в массив number
  10. Закрываем файл с помощью fclose
  11. Выводим количество вхождений каждого символа в массиве str с помощью printf

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы