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

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

25.10.2014, 07:36. Показов 1449. Ответов 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
12923 / 6790 / 1818
Регистрация: 18.10.2014
Сообщений: 17,180
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 17.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru