В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка" - 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>

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

  1. Проверяется, является ли текущий символ точкой.
  2. Если текущий символ - точка, то увеличивается счетчик i.
  3. Проверяется, является ли символ на позиции i (с учетом увеличения i в предыдущем условии) не строчной буквой.
  4. Если символ на позиции i не является строчной буквой, то он приводится к верхнему регистру.

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


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

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

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