Подсчитать количество строк начинающихся и заканчивающихся одним символом - 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();
- }
Объяснение кода листинга программы
В этом коде реализована подсчет количества строк в текстовом файле, которые начинаются и заканчиваются одной и той же буквой. Список действий:
- Создаются необходимые переменные и буферы для работы с файлом и строками.
- Открывается файл для чтения.
- В цикле считывается каждый символ из файла до конца строки.
- Если текущий символ не является символом новой строки, он добавляется в текущую строку.
- Когда встречается символ новой строки, текущая строка сохраняется в массиве строк, увеличивается счетчик строк, и начинается новая строка.
- После чтения всего файла, строки проверяются на соответствие условию (начинаются и заканчиваются одной и той же буквой).
- Выводится количество строк, удовлетворяющих условию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д