Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 08.02.2014
Сообщений: 61

Правильно ли написана функция, делящая предложение на слова, и связывающая определения в одно предложение?

25.10.2014, 07:36. Показов 1479. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста правильно ли я написала функцию, которая должна делить предложение на слова, потом находить узлы дерева где хранятся определения этих слов и связать все определения в одно предложения при этом массивы использовать нельзя только указатели, потому что нельзя выделять дополнительную память нужно пользоваться только той что уже есть. Функция bstree_lookup(token) находит узел где хранится определение слова и возвращает указатель на него.

Например у меня есть узел дерева где хранится информация что термин (самолет) = определение (летательный аппарат) и второй узел термин (аероплан) = определение (самодельный летательный аппарат) и теперь с помощью указателей я соединяю определения в двух узлах и присваиваю третьему узлу "летательный аппарат самодельный летательный аппарат".



C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void findDefinition()
{  
    struct node *node;
   char *value = "летательный аппарат";
   char *word = "самолет + аероплан";
   int t =0;
   int flag = 0;
 
    char* token = strtok(word,"+");
    while (token !=NULL) 
    {
         if (flag == 1) p[t] = ' ';
         node = bstree_lookup(token);
        *(p+t) = node->definition; 
        *(p+t); // Здесь выдает [Warning] assignment makes integer from pointer without a cast  
        flag = 1;
        token = strtok(NULL,"+");
   }
   addNode(p);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2014, 07:36
Ответы с готовыми решениями:

Дано предложение. Переписать предложение без определённого слова из этого предложения.
Слово вводится с клавиатуры .

Дана строка предложение и слово. Определить число вхождений заданного слова в предложение
С++ Дана строка предложение и слово. Определить число вхождений заданного слова в предложение. При реализации программы необходимо...

Дана строка предложение и слово. Определить число вхождений заданного слова в предложение
Дана строка предложение и слово. Определить число вхождений заданного слова в предложение.

2
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
25.10.2014, 08:41
Тот код, который вы привели, не может компилироваться в принципе, причем с совершенно иными сообщениями об ошибке. Это говорит о том, что вы привели "выдуманный" код, который не совпадает с тем кодом, который вы пытаетесь компилировать в реальности.

Не надо приводить "выдуманный" код. Разглядывать такой код - пустая трата времени. Приведите именно тот реальный код, с которым вы работаете.
0
2 / 2 / 0
Регистрация: 08.02.2014
Сообщений: 61
25.10.2014, 16:37  [ТС]
Вот полностью настоящая функция просто она немного запутанная

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
void miniCompilateur(struct node *tree, char *buf)
{
   int i,j,f;
   char *p;
   int control = 0;
   char words[5][256];
   int flag = 0;
   struct node *node, *node1;
   i=0;
   int fl = 0;
 
 
      for (i = 0; buf[i]!='\0'; i++)// buf это предложение типа "летательное судно = самолет + фероплан"
      if(buf[i] == '=')
      control=+1;
  
   if (control > 0) {  
     
      
    char *wr = strtok(buf,"="); // здесь я отделяю термин от определения что бы закинуть в узел дерева
    if (wr == NULL) return;
    int i=0;
    int j=0;
   
    strcpy(words[i++],wr);
    while ((wr = strtok(NULL,"=")) != NULL) strcpy(words[i++],wr);
    if (words[1]=='\0') return;
    
    for(j=0; j < strlen(words[1]); j++)// здесь проверяю содержит ли определение "+"
    if (words[j] == "+") flag++;
    
    if (flag > 0){    //если есть плюс то я беру слова разделяющие этим плюсом 
    char* token = strtok(words[1],"+");
    int t =0;
    while (token !=NULL) { if (fl == 1) p[t] = ' ';
 
    node1 = bstree_lookup(tree, token); // ищу определение этим словам
    
    
    *(p+t) = node1->definition; *(p+t);  // соединяю эти определения в одно
    fl = 1;
    token = strtok(NULL,"+");
 
}}
    if (flag > 0 && tree ==NULL)  // проверяю если был плюс то в дерево отправляю новое определение (состоящее из двух)
    tree = bstree_create(words[0], p);
    else if (flag > 0 && tree !=NULL)
          bstree_add(tree, words[0], p);
    
    
    if ((tree == NULL)&&(flag==0)){ // если не было плюса то в дерево отправляю старое определение
   
    tree = bstree_create(words[0], words[1]); }
    
         else if ((tree !=NULL)&&(flag==0))  {bstree_add(tree, words[0], words[1]);}}
    
   else {
       if (tree == NULL) printf("the word is unknown");
       else{
       node = bstree_lookup(tree, buf);     
       if (node!= NULL)
       printf("definition = %s", node->definition); 
         else printf("the word is unknown");
      
      }
      }
   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2014, 16:37
Помогаю со студенческими работами здесь

Функция вставки подстроки (слова) в предложение с заданной позиции
Здравствуйте нужно разработать системную функцию на языке С++ и включить ее в системную библиотеку. Выполнить отладку программных модулей...

Нужно что бы функция выдавала все предложение после определенного слова
Вот тут такое дело. Нужно что бы функция выдавала все предложение после определенного слова. Пытался сделать, но получилось только найти...

Если предложение начинается с пробелов, считать строку после пробелов. Правильно ли работает функция?
Скажите пожалуйста правильно ли я написала функцию которая: если предложение начинается с пробелов она считывает строку после пробелов то...

Во введенном тексте задано предложение в котором встречается одно перечисление двух объектов с помощью союза "и". Поменять местами слова соединенные этим союзом.
Во введенном тексте задано предложение в котором встречается одно перечисление двух объектов с помощью союза &quot;и&quot;. Поменять...

С клавиатуры посимвольно вводится предложение. Определить, какое это предложение - повествовательное, вопро
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;locale.h&gt; #include&lt;string.h&gt; int main(){ setlocale (LC_ALL,&quot;Russian&quot;); char st1 =...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru