Подсчитать количество строк начинающихся и заканчивающихся одним символом - C (СИ) (69557)

Узнай цену своей работы

Формулировка задачи:

Необходимо использовать fopen, fscanf. Благодарю за помощь!

Решение задачи: «Подсчитать количество строк начинающихся и заканчивающихся одним символом»

textual
Листинг программы
/*В текстовом файле подсчитать количество строк,
которые начинаются и оканчиваются одной и той же буквой.*/
 
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main()
{
    int m=0, k=0;
    int i=0;
    char l;
    FILE *fp;
    char string[255][255], str[255][255];
    int c;
    if((fp=fopen("1.txt", "r"))!=NULL)
    {
        while ((c=fgetc(fp))!=EOF)
        {
            if(c!='\n')
            {
            string[i][k]=c;
            string[i][k + 1] = '\0';
            k++;//тут сдвигаемся по i строке
            }
            else
            {
                string[i][k]=c;
                i++;//переход на новую строку
                k=0;//обнуляем чтобы записывать с начала новой строки
                m++;//колчичество строк
            }
        }
    }
    fclose(fp);
        int j=0, s=0;
    for(i=0, j=0; i<m+1;i++)
        {
            do
            {  if ((string[i][j]>='a') && (string[i][j]<='z') || (string[i][j]>='A') && (string[i][j]<='Z'))//если буквы эти есть,то
                    {
                        str[i][s]=string[i][j];//пишем в str
                        j++;//передвигаемся по исходному массиву по i строке
                        s++;//передвигаемся по полученному массиву по i строке
                    }
                    else// если другие символы, то двигаемся по i строке дальше
                        j++;
            }
            while(string[i][j]!='\0');//пока не встретится '\0' в исходном массиве в i строке
            j=0;s=0;// обнуляем чтобы начать с новой строки с начала
        }
        int len1=0, kol=0;
 
        for(i=0; i<m+1;i++)
        {
            len1=strlen(str[i]);//длина i строки
            for(j=0; j<len1; j++)
            {
                if((str[i][j]>='A') && (str[i][j]<='Z'))//если большая буква, то меняем на маленькую
                {
                    str[i][j]=str[i][j]-'A'+'a';
                }
            }
        }
        for(i=0; i<m+1;i++)
        {
            len1=strlen(str[i]);
            if((str[i][0]>='a') && (str[i][0]<='z'))//если первый символ буква, то продолжаем дальше...
            {
                if(str[i][0]==str[i][len1-1])//если первый элемент и последний элемент совпадают, то тогда выполняем тело цикла
                {
                    kol++;//счетчик на строки которые нужны
                }
            }
        }
        printf("B faile %d ctrok(a)(u) kotorbIe na4unautcya i zakanchuBautcya na odny i ty je bykBy", kol);
 
    getch();
}

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

В этом коде реализована подсчет количества строк в текстовом файле, которые начинаются и заканчиваются одной и той же буквой. Список действий:

  1. Создаются необходимые переменные и буферы для работы с файлом и строками.
  2. Открывается файл для чтения.
  3. В цикле считывается каждый символ из файла до конца строки.
  4. Если текущий символ не является символом новой строки, он добавляется в текущую строку.
  5. Когда встречается символ новой строки, текущая строка сохраняется в массиве строк, увеличивается счетчик строк, и начинается новая строка.
  6. После чтения всего файла, строки проверяются на соответствие условию (начинаются и заканчиваются одной и той же буквой).
  7. Выводится количество строк, удовлетворяющих условию.

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


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

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

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