Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
1

Определить порядковый номер заданного слова в каждом предложении текста

23.07.2012, 12:59. Показов 1825. Ответов 1
Метки нет (Все метки)

С помощью текстового редактора создать файл, содержащий текст, длина которого
не превышает 1000 символов (длина строки текста не должна превышать
70 символов).
Имя файла должно иметь расширение DAT.
Написать программу, которая:
• выводит текст на экран дисплея;
• определяет порядковый номер заданного слова в каждом предложении текста
(заданное слово вводится с клавиатуры);
• по нажатию произвольной клавиши поочередно выделяет каждое предложение
текста, а в выделенном предложении — заданное слово.

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
//--------------------------
 void WriteText(char a[], int num[])
  {
   int i = 0,j = 1;
   while (a[i]!='\0')
    {
     i++;
     putc(a[i]);
     if (a[i]=='.')
      {
       j++; 
       printf("\n %d ", num[j]);
      }
     }
   }  
 void WriteWord(char a[], int *num, int lc, int wl)
  {
   int i,j,k,k1,i1;
   char s[100];
   memset(s,'\0',100);
   i1=0;
   i=0;
   j=1;
   k=0;
   k1=0;
   if (((a[j-1]=='\0')||(a[j-1]==' ')||(a[j-1]=='(')||(a[j-1]=='{')||(a[j-1]==',')) && ((a[j+wl]==' ') || (a[j+wl]=='\n') || (a[j+wl]=='\0')||(a[j+wl]=='.')||(a[j+wl]==',')||(a[j+wl]==')')||(a[j+wl]=='}') ))
    {
     textcolor(RED);
     for (k=num;k!=(num+wl);k++)
      {
       s[k1]=s[k1]+a[k];
       k1++;
      }
      j=num+wl;
      cprintf(s);
    
     putchar (a[j]);
     j++;
     if (a[j]=='\n')
      i++;
     if (a[j]=='\0')
      break;
    }
     else
      {
       j++;
       if (a[j]=='\n')
        i++;
      
    }
    putchar (a[j]);
    j++;
  }
 
//--------------------------
 int ReadText(char a[], FILE *fi)
  {
   int i,j,veof;
   memset(a,'\0',700);
   i=1;
   j=0;
   while ((veof=fgetc(fi)) != EOF)
    {
     if (veof=='\n')
      i++;
     j++;
     a[j]=veof;
    }
   return i;
   }
//--------------------------
 void WriteText(char a[])
  {
   int i = 1;
   while (a[i]!='\0')
    {
     putchar(a[i]);
     i++;
    }
  }
//--------------------------
 void SearchWord(char str[],char a[], int *num)
  {
   int i,j,k=0,wl,l=1,varnum1;
   wl=strlen(str);
   i=1;
   j=0;
   while (a[i]!='\0')
    {
     k++;
     if (str[j]==a[i])
      j++;
     else
      j=0;
     if (a[i]=='\n')
      {
       k=0;
       l++;
      } 
     if ((j==wl) && ((a[i-j]==' ')||(a[i-j]=='\0')||(a[i-j]=='(')||(a[i-j]=='{')||(a[i-j]==',')) && ((a[i+1]==' ') || (a[i+1]=='\n') || (a[i+1]=='\0')||(a[i+1]=='.')||(a[i+1]==',')||(a[i+1]==')')||(a[i+1]=='}') ))
      *num[l]=k;
    }  
   }
//--------------------------
 
 main ()
  {
   FILE *fp;
   char a[700];
   char *fname = "D:\\Input1.dat";
   char str[80];
   int num[150];
   int lc,oldnum,varnum,lcw,wl;
   int error = 1;
   int error1 = 2;
   char mode;
   int start = 0;
   memset(str,NULL,80);
   memset(num,0,150);
   oldnum=0;
   varnum=0;
   lcw=1;
   lc=1;
   fp = fopen(fname,"r");
   if (fp != NULL)
    {
     lc=ReadText(a,fp);
     if (mode == 1)
      WriteText(a);
     if ((mode == 2)||(mode == 3))
      {
       WriteText(a);
       printf("\nInput a search word\n");
       scanf("%s",&str);
       wl=strlen(str);
       clrscr();
       while((error!=3)&&(error!=2))
        {
         error=SearchWord(str,a,&num);
         if (error==1)
          {
           clrscr();
           WriteWordInMiddle(a,oldnum,lc,lcw,wl,);
          // getch();
         //  continue;
          }
         if (error==2)
           printf("\nThe search word is not found");
         if (error==3)
           printf("\nThis is the last mention of the search word");
         getch();
        }
      }
      getch();
     fclose(fp);
    }
   else
    {
     printf("File not open");
     getch();
    }
 }
Помогите исправить ошибки.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 12:59
Ответы с готовыми решениями:

Определить порядковый номер слова в строке
Всем привет!Как определить порядковый номер слова в строке?выбираю какой-нибудь слово-он выводил...

Определить порядковый номер первого в последовательности числа, большего заданного n
Дана непустая и упорядоченная по возрастанию последовательность целых чисел, оканчивающаяся числом...

Определить в каждом предложении текста кол-во символов, отличных от букв и пробелов
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000...

Дана строка состоящая из слов, разделенных запятыми. Определить порядковый номер слова минимальной длины
Дана строка состоящая из слов, разделенных запятыми. Определить порядковый номер слова минимальной...

1
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
23.07.2012, 13:23 2
кто ж писал вообще этот код..
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
void WriteText(char a[], int num[])
{
    int i = 0,j = 1;
    while (a[i]!='\0')
    {
        i++;
        putchar(a[i]);
        if (a[i]=='.')
        {
            j++; 
            printf("\n %d ", num[j]);
        }
    }
}  
void WriteWord(char a[], int *num, int lc, int wl)
{
    int i,j,k,k1,i1;
    char s[100];
    memset(s,'\0',100);
    i1=0;
    i=0;
    j=1;
    k=0;
    k1=0;
    if (((a[j-1]=='\0')||(a[j-1]==' ')||(a[j-1]=='(')||(a[j-1]=='{')||(a[j-1]==',')) && ((a[j+wl]==' ') || (a[j+wl]=='\n') || (a[j+wl]=='\0')||(a[j+wl]=='.')||(a[j+wl]==',')||(a[j+wl]==')')||(a[j+wl]=='}') ))
    {
        textcolor(RED);
        for (k=*num;k!=*(num+wl);k++) // num это указатель, надо поставить * для обращения
        {
            s[k1]=s[k1]+a[k];
            k1++;
        }
        j=*(num+wl);
        cprintf(s);
 
        putchar (a[j]);
        j++;
        if (a[j]=='\n')
            i++;
        //if (a[j]=='\0')
            //break; предназаначен для выхода из цикла.. тут его нет 
    }
    else
    {
        j++;
        if (a[j]=='\n')
            i++;
 
    }
    putchar (a[j]);
    j++;
}
 
//--------------------------
int ReadText(char a[], FILE *fi)
{
    int i,j,veof;
    memset(a,'\0',700);
    i=1;
    j=0;
    while ((veof=fgetc(fi)) != EOF)
    {
        if (veof=='\n')
            i++;
        j++;
        a[j]=veof;
    }
    return i;
}
//--------------------------
void WriteText(char a[])
{
    int i = 1;
    while (a[i]!='\0')
    {
        putchar(a[i]);
        i++;
    }
}
//--------------------------
void SearchWord(char str[],char a[], int *num)
{
    int i,j,k=0,wl,l=1,varnum1;
    wl=strlen(str);
    i=1;
    j=0;
    while (a[i]!='\0')
    {
        k++;
        if (str[j]==a[i])
            j++;
        else
            j=0;
        if (a[i]=='\n')
        {
            k=0;
            l++;
        } 
        if ((j==wl) && ((a[i-j]==' ')||(a[i-j]=='\0')||(a[i-j]=='(')||(a[i-j]=='{')||(a[i-j]==',')) && ((a[i+1]==' ') || (a[i+1]=='\n') || (a[i+1]=='\0')||(a[i+1]=='.')||(a[i+1]==',')||(a[i+1]==')')||(a[i+1]=='}') ))
            num[l]=k; // здесь * не нужна
    }  
}
//--------------------------
 
int main ()
{
    FILE *fp;
    char a[700];
    char *fname = "D:\\Input1.dat";
    char str[80];
    int num[150];
    int lc,oldnum,varnum,lcw,wl;
    int error = 1;
    int error1 = 2;
    char mode;
    int start = 0;
    memset(str,NULL,80);
    memset(num,0,150);
    oldnum=0;
    varnum=0;
    lcw=1;
    lc=1;
    fp = fopen(fname,"r");
    if (fp != NULL)
    {
        lc=ReadText(a,fp);
        if (mode == 1)
            WriteText(a);
        if ((mode == 2)||(mode == 3))
        {
            WriteText(a);
            printf("\nInput a search word\n");
            scanf("%s",&str);
            wl=strlen(str);
            clrscr();
            while((error!=3)&&(error!=2))
            {
                error=SearchWord(str,a,num); // & наверное лишний.. а функция SearchWord ничего не возвращает
                // поэтому нет смысла присваивать error что-то
                if (error==1)
                {
                    clrscr();
                    WriteWordInMiddle(a,oldnum,lc,lcw,wl);// этой функции нет
                    // getch();
                    //  continue;
                }
                if (error==2)
                    printf("\nThe search word is not found");
                if (error==3)
                    printf("\nThis is the last mention of the search word");
                getch();
            }
        }
        getch();
        fclose(fp);
    }
    else
    {
        printf("File not open");
        getch();
    }
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2012, 13:23

Определить, какие слова и в каком количестве можно создать из букв заданного текста
Здравствуйте! Помогите, пожалуйста решить следующее задание. Даны некоторый текст и словарь с N...

Строка:во введенном предложении определить порядковый номер заданного слова предложения
1) в веденном предложении определить порядковый номер заданного слова предложения

Определить порядковый номер первой встреченной буквы 'к' в предложении
1. Дано предложение. Определить порядковый номер первой встреченной буквы 'к'. Если такой буквы...

Поиск слова, встречающегося в каждом предложении текста
Дан файл, содержащий текст на русском языке. Найти слово, встречающееся в каждом предложении, или...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.