Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Кетти
1

В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка"

09.12.2010, 07:59. Показов 1359. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". Если в следующем слове первый символ – строчная буква, то заменить ее на прописную.

У меня почти получилось, но в слове "точка." заменяется на главную только первая буква "Точка.", а надо чтобы все. Помогите разобраться

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#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++;
 }
}
 Комментарий модератора 
Используйте теги форматирования кода.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2010, 07:59
Ответы с готовыми решениями:

В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка"
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом...

В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". В следующем слове первую строчную букву заменить
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом...

Найти конец предложения, обозначенный символом "точка"
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом...

Как задать конец предложения - точка с последующим символом новой строки
задача. Разработать функцию, которая осуществляет замену в заданном предложении всех малых...

1
55 / 59 / 14
Регистрация: 26.11.2010
Сообщений: 192
09.12.2010, 09:01 2
файл посимвольно читайте в буффер, и проверяйте равен ли символ '.':
C++
1
2
3
4
5
6
7
8
9
10
 if(ch == '.')
 {
  i++;
      if(string[i] != toupper(string[i]) 
         {
          string[i] = toupper(string[i]); 
         }
 }
//toupper - эквивалент в верхнем регистре.
//содержится в библиотеке #include <ctype.h>
ваше:
C++
1
2
3
4
5
6
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';
}
заменяем:
C++
1
2
3
4
5
      if(string[i] != toupper(string[i]) 
         {
          string[i] = toupper(string[i]); 
         }
 }
P.S. Сейчас работу доделаю и напишу как надо.

Добавлено через 35 минут
строка задается так: qwerty.uiopasd.fghjkl.kdfldkfldf.fodfd
на выходе: qwerty.Uiopasd.Fghjkl.Kdfldkfldf.Fodfd
ну вот и готово:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
 
void main()
{
clrscr();
char ch;
int i=0;
int k=0;
char buff[50]= "/0";
FILE *f;
f = fopen ("C:\\read.txt", "r");
while(ch!=EOF)
{
ch = getc(f);
buff[i] = ch;
i++;
}
fclose(f);
 
for(int j = 0;j < 50; j++)
 {
 if(buff[j] == '.')
   {
    if(buff[j+1] != toupper(buff[k+1]))
         {
          buff[k+1] = toupper(buff[k+1]);
          k--; j--;
         }
 }
k++;
}
cout<<endl<<buff;
getch();
}
если надо так (замените на код представленный ниже):
строка задается так: qwerty. uiopasd. fghjkl. kdfldkfldf. fodfd
на выходе: qwerty. Uiopasd. Fghjkl. Kdfldkfldf. Fodfd
то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int j = 0;j < 50; j++)
 {
 if(buff[j] == '.')
   {
    if(buff[j+2] != toupper(buff[k+2]))
         {
          buff[k+2] = toupper(buff[k+2]);
          k-=2; j-=2;
         }
 }
k++;
}
0
09.12.2010, 09:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2010, 09:01
Помогаю со студенческими работами здесь

Дан список слов. Найти наиболее длинную последовательность слов, чтобы конец предыдущего совпадал с началом следующего
Дан список слов. Найти наиболее длинную последовательность слов, чтобы конец предыдущего совпадал с...

Напишите программу, определяющую число слов в строке. Одно слово от другого отделяется одним пробелом. В конце предложения стоит точка
Напишите программу, определяющую число слов в строке. Одно слово от другого отделяется одним...

Вводится текст. Конец ввода точка. Найти количество предложений, предложения разделяются "!"
Вводится текст. Конец ввода точка. Найти количество предложений, предложения разделяются &quot;!&quot;....

Вводится текст. Конец ввода точка. Найти количество букв слов, слова разделяются пробелом
Вводится текст. Конец ввода точка. Найти количество букв слов, слова разделяются пробелом.

Конец предложения точка с последующим пробелом
задача. Разработать функцию, которая осуществляет замену в заданном предложении всех малых...

Если в предложении нет слов содержащих С то вставить в конец предложения фразу
После каждого предложения, в котором нет слов содержащих символ С, вставить строку There is no...

Нахождение слов с определённым символом в строке
Уже не первый раз задаю вопрос с таким заданием, но уже вторую неделю ничего не выходит....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru