0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
1

Напечатать все слова отличные от последнего слова

18.12.2018, 20:17. Показов 1449. Ответов 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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(){
 char txt[512];
  
 char delim[] = " ,.-:!?", word[100];
 int n_txt, n_delim = strlen(delim)-1;
 int s = 0, f = 0, i, j;
 
 printf("Enter text:\n", txt);
 gets(txt);
 n_txt = strlen(txt)-1;
 
 for(i = n_txt; i > 0; i--)
    {
       
   for(j = 0; j < n_delim; j++)   
     if( txt[i] == delim[j] )
    {
       if(f != 0)
         s = i+1;
       break;
     }
     
   if(j == n_delim){
     if( f == 0 )
       f = i;
   }
   else if (s != 0)
     break;
 }
 char *last_word = new char[f-s+1];
 memcpy(last_word, &txt[s], f-s+1);
 last_word[f-s+1] = '\0';
 printf("Last word: %s\nResault:\n", last_word);
 char * pch = strtok (txt, delim);
 while( pch != NULL )
    {
   if( strcmp(pch, last_word) != 0 )
     {strcpy(word, pch);
      word[strlen(word)-1] = '\0';
      if(word[0] != '\0')
        printf("%s ", word);
     }
   pch = strtok (NULL, delim);
 }
 system("pause");
 delete last_word;
 return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2018, 20:17
Ответы с готовыми решениями:

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между...

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так...

Задан текст. Напечатать все слова, отличные от последнего слова
Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое...

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между...

2
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
18.12.2018, 20:17  [ТС] 2
Товарищи!!! Нужна помощь, есть такая вот задачка на плюсах:

"Задан текст напечатать все слова отличные от последнего слова, выполнить предварительное преобразовывание каждое из них по слеждующему правилу: удалить из каждого слова первую и последнюю буквы."

Есть вот такой код, уже найденный на просторах данного форума, праблэм в том, что она удаляет только последнюю букву в словах, а первую нет и я никак не могу найти где ошибка. Либо это не ошибка и надо заново всё делать.

C++ (Qt)
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(){
 char txt[512];
  
 char delim[] = " ,.-:!?", word[100];
 int n_txt, n_delim = strlen(delim)-1;
 int s = 0, f = 0, i, j;
 
 printf("Enter text:\n", txt);
 gets(txt);
 n_txt = strlen(txt)-1;
 
 for(i = n_txt; i > 0; i--)
    {
       
   for(j = 0; j < n_delim; j++)   
     if( txt[i] == delim[j] )
    {
       if(f != 0)
         s = i+1;
       break;
     }
     
   if(j == n_delim){
     if( f == 0 )
       f = i;
   }
   else if (s != 0)
     break;
 }
 char *last_word = new char[f-s+1];
 memcpy(last_word, &txt[s], f-s+1);
 last_word[f-s+1] = '\0';
 printf("Last word: %s\nResault:\n", last_word);
 char * pch = strtok (txt, delim);
 while( pch != NULL )
    {
   if( strcmp(pch, last_word) != 0 )
     {strcpy(word, pch);
      word[strlen(word)-1] = '\0';
      if(word[0] != '\0')
        printf("%s ", word);
     }
   pch = strtok (NULL, delim);
 }
 system("pause");
 delete last_word;
 return 0;
}
0
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
18.12.2018, 20:18  [ТС] 3
Товарищи!!! Нужна помощь, есть такая вот задачка на плюсах:

"Задан текст напечатать все слова отличные от последнего слова, выполнить предварительное преобразовывание каждое из них по слеждующему правилу: удалить из каждого слова первую и последнюю буквы."

Есть вот такой код, уже найденный на просторах данного форума, праблэм в том, что она удаляет только последнюю букву в словах, а первую нет и я никак не могу найти где ошибка. Либо это не ошибка и надо заново всё делать.

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(){
 char txt[512];
  
 char delim[] = " ,.-:!?", word[100];
 int n_txt, n_delim = strlen(delim)-1;
 int s = 0, f = 0, i, j;
 
 printf("Enter text:\n", txt);
 gets(txt);
 n_txt = strlen(txt)-1;
 
 for(i = n_txt; i > 0; i--)
    {
       
   for(j = 0; j < n_delim; j++)   
     if( txt[i] == delim[j] )
    {
       if(f != 0)
         s = i+1;
       break;
     }
     
   if(j == n_delim){
     if( f == 0 )
       f = i;
   }
   else if (s != 0)
     break;
 }
 char *last_word = new char[f-s+1];
 memcpy(last_word, &txt[s], f-s+1);
 last_word[f-s+1] = '\0';
 printf("Last word: %s\nResault:\n", last_word);
 char * pch = strtok (txt, delim);
 while( pch != NULL )
    {
   if( strcmp(pch, last_word) != 0 )
     {strcpy(word, pch);
      word[strlen(word)-1] = '\0';
      if(word[0] != '\0')
        printf("%s ", word);
     }
   pch = strtok (NULL, delim);
 }
 system("pause");
 delete last_word;
 return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2018, 20:18
Помогаю со студенческими работами здесь

Напечатать все слова, отличные от последнего слова, предварительно преобразовать каждое из них по следующему правилу
Задан текст. Напечатать все слова, отличные от последнего слова, предварительно преобразовать...

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по заданному правилу
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между...

Напечатать все слова, отличные от последнего слова.
В файле дана непустая последовательность слов, содержащая от 1 до 8 букв; между соседними словами –...

Напечатать все слова, отличные от последнего слова
Болела пропустила лекции на эту тему помогите разобраться напишите код и объясните почему именно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru