В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка" - C (СИ) (79014)
Формулировка задачи:
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". Если в следующем слове первый символ – строчная буква, то заменить ее на прописную.
У меня почти получилось, но в слове "точка." заменяется на главную только первая буква "Точка.", а надо чтобы все. Помогите разобраться
#include <conio.h> #include <stdio.h> void input_string(char a[]); //прототип функции ввода строки void spellcheck(char a[]); //прототип функции проверки правописания void output_string(char a[]); //прототип функции вывода строки void main () { clrscr(); char a[1000]; //переменная, используемая для хранения строки a[0]='\0'; input_string(a); spellcheck(a); output_string(a); getch(); } void input_string(char a[]) { char c=0; printf("Enter \"1\" If you want to take a prepared text,\n\renter other figure if you want to enter text manually\n\r"); scanf("%d",&c); //выбор ввода строки - вручную или с ипользованием файла 3.txt if (c==1) { FILE *mytext; if ( (mytext=fopen("3.txt","r"))!=NULL) //строка береться из файла и записывается в массив а { int i=0; while(!feof(mytext)) { fscanf(mytext,"%c", &a[i]); i++; } fclose(mytext); a[i-1]='\0'; printf("\n\r"); } else printf("text not found\n\r"); } else { fflush(stdin); printf ("enter text\n"); //строка вводиться вручную for(int i=0;(a[i-1]!='\n')||(i==1000);i++) scanf ("%c", &a[i]); a[i]='\0'; } } void spellcheck(char a[]) // поиск строчной буквы и ее замена на прописную { if (a[0]>='a'&&a[0]<='z') a[0]=a[0]-'a'+'A'; for (int i=2;a[i]!='\0';i++) if (a[i-2]=='.'&&a[i-1]==' '&&a[i]>='a'&&a[i]<='z') a[i]=a[i]-'a'+'A'; } void output_string(char a[]) { int i=0; while(a[i]!='\0') { printf ("%c", a[i]); //вывод исправленной строки i++; } }
Решение задачи: «В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка"»
textual
Листинг программы
if(ch == '.') { i++; if(string[i] != toupper(string[i]) { string[i] = toupper(string[i]); } } //toupper - эквивалент в верхнем регистре. //содержится в библиотеке #include <ctype.h>
Объяснение кода листинга программы
- Проверяется, является ли текущий символ точкой.
- Если текущий символ - точка, то увеличивается счетчик i.
- Проверяется, является ли символ на позиции i (с учетом увеличения i в предыдущем условии) не строчной буквой.
- Если символ на позиции i не является строчной буквой, то он приводится к верхнему регистру.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д