Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Конвертация данных string в char*
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Kurt_Rassel Kurt_Rassel вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.09.2006
По умолчанию 09.10.2006, 09:39

Блин, что то я запутался кажись...

Вот написал функцию, которая должна возвращать первый Char в строке:

Код:
class predicates
    first_member:(char*) -> char procedure (i).
clauses
    first_member([C|_]) = C.
    first_member([]) = ' '.
И пытаюсь ее использовать, допустим так:

Код:
class predicates
    is_q_atom:(string) determ (i).
clauses
    is_q_atom(X) :- first_member(convert(char*, X)) = 'Q'.
Компилер говорит синтаксическая ошибка...
Может я что-то в convert'е не понимаю... в хелпе он так описан:
ReturnTerm = convert ( returnDomain, InputTerm )
HELP!!!
Ответить с цитированием
  (#2 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 09.10.2006, 11:51

Предикат convert не преобразует string в char*.
Для преобразования строки в список символов обычно используют предикат string::frontChar, делается это рекурсивно.
Ответить с цитированием
  (#3 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,909
Сказал(а) спасибо: 2
Поблагодарили 297 раз(а) в 297 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 09.10.2006, 23:48

Kurt_Rassel пишет:
Цитата:
Вот написал функцию, которая должна возвращать первый Char в строке...
Вы написали функцию first_member, которая возвращает первый Char не в строке, а в списке. А потом пытаетесь использовать эту функцию в предикате is_q_atom, который работает со строкой. Вам лучше переписать first_member так, чтобы он работал не со списком, а со строкой.
В VIP нет прямого преобразования: список_символов <-> строка.
Чуствую по запаху Ваших исходников, чо Вы раньше изучали ISO-Пролог.
Ответить с цитированием
  (#4 (permalink)) Старый
Kurt_Rassel Kurt_Rassel вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.09.2006
По умолчанию 11.10.2006, 10:38

Спасибо за совет, переделал так:

class predicates
is_q_atom:(string) determ (i).
clauses
is_q_atom(S) :-
string::frontChar(S, C, _),
C='Q'.

Цитата:
Чуствую по запаху Ваших исходников, чо Вы раньше изучали ISO-Пролог.
Чутье Вас обманывает. В прологе я новичок (пытаюсь параллельно делать свой проект в VIP7 и AMZI+ECLIPSE; с VIP7 как то быстрее получается пока, во многом благодаря этом форуму, а вот с с AMZI - плохо двигается, документации мало, хотелось бы для быстрого старта что-то типа "Популярное пособие Visual Prolog for Tyros" - как оказалось там есть все что нужно для создания первого проекта), имею десять лет стажа в старом добром С++. Так как там естессно строгая типизация, то была операция "привидение типа", где говоришь компилеру, к примеру, воспрнимай указатель на строку как указатель на char, int или какой угодно тип данных. Для работы с указателями и, с функциями обработки строк такое часто использовалось. Показалось что и VIP7 есть что-то подобное.
Ответить с цитированием
  (#5 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,909
Сказал(а) спасибо: 2
Поблагодарили 297 раз(а) в 297 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.10.2006, 23:46

Kurt_Rassel пишет:
Цитата:
имею десять лет стажа в старом добром С++.
Честно говоря сначала я так и подумал, т.к. для С++ это преобразование - обычное дело. Однако потом подумал, что вряд ли сист станет учить Пролог - не барское это дело

Kurt_Rassel пишет:
Цитата:
Показалось что и в VIP7 есть что-то подобное.
К сожалению нет.
А какая задача подвигла Вас использовать Пролог?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Kurt_Rassel Kurt_Rassel вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.09.2006
По умолчанию 12.10.2006, 06:51

Цитата:
Kurt_Rassel пишет:

Честно говоря сначала я так и подумал, т.к. для С++ это преобразование - обычное дело. Однако потом подумал, что вряд ли сист станет учить Пролог - не барское это дело :)
А какая задача подвигла Вас использовать Пролог?
Ну почему же "не станет", пролог очень интересная система. Основная его идея - программно управляемый перебор - это как раз то что нужно для многих задач. Что-то подобное приходилось реализовывать и на С++ , в моем дипломном проекте, ну конечно с большими упрощениями. :)
В то время был доступен только турбо пролог для дос, поэтому он всерьез не воспринимался, и еще он был интерпретатор кажется..
А сейчас VIP7 - симпатичная среда разработки, классы, визуальный интерфейс для виндовс-формочек - уже достаточно весело!

А задача, которая подвигла - экспертная система.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив типа char или string malloc Джеки Вопросы начинающих программистов 1 08.03.2011 16:37
Вставить пробелы char вместо string vinceman С/С++ 5 13.01.2011 01:08
Преобразование типа String в Char Виталик 1 Delphi 4 19.05.2008 10:13
Как String перевести в char это я .NET 2 01.05.2008 21:25
Конвертация из TString в Char imported_Hold[On] C++ Builder 5 14.05.2006 10:08
Преобразование файлов String в Char pavlo13 Вопросы начинающих программистов 7 11.03.2006 20:07
Конвертация char или int в двух баитный bin для com-porta MaMaV C++ Builder 13 14.10.2005 13:46
String & char как перевести Eugene_ .NET 15 02.02.2005 17:21
Как реализовать такую формулу string:=string+char Алексеев Николай Delphi 8 24.08.2004 12:48
Как с можно привести тип int к типу char* или string sn C++ на Unix 2 18.04.2004 09:08
Как реализовать string и array of char на форме andrey_pst Delphi 3 26.09.2003 17:45



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов