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