Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод из Turbo среды в Visual 
:(
    Опции темы
kitaynik88
Дата 15.3.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.3.2007

Репутация: нет
Всего: нет



Доброе время суток уважаемые форумчане. 
Несколько слов о самой программе, написанной в среде Турбо. Программа выбирает из предложения самое длинное слово. Строит из букв этого слова другие возможные слова. 
Код программа предоставлен ниже.
Что я прошу так это помощь, советы, подсказки в перекладке сей проги на визуальную среду.
Всем заранее огрмное спасибо. На всякий случай вот ася - 226742723
Код

%trace 
database
    words(string)
domains
    intlist = integer*
predicates
    repeat
    assert_database
    save_and_clear_database
    entrance_point
    find_longest_word(string, string, string)
    isnt_white_space(char)
    get_longest(string, string, string)
    get_needed_word_len(integer, integer)
    check_word_len(integer, integer)
    get_possible_words(string, integer, intlist)
    check_founded_word(string)
    letter_by_number(string, integer, char)
    get_start_list(integer, intlist, intlist)
    get_word(intlist, string, string)
    check_for_end(intlist, integer)
    get_list(intlist, integer, intlist, integer)
    find_new_h(integer, integer, integer, integer, integer)
clauses
  repeat.
  repeat:- repeat.
    
  assert_database:-
    consult("words.dba").
    
  save_and_clear_database :-
    save("words.dba"),
    retract(words(_)),
    fail.
  save_and_clear_database:- !.
  
  get_needed_word_len(WordLen, NeededWordLen) :- 
    repeat,
    write("Input needed length of the word: "),
    readint(N),
    check_word_len(WordLen, N),
    NeededWordLen = N.
  
  check_word_len(Max, N) :-
    N <= Max.
  check_word_len(Max,_) :-
    write("The value must be not more than ", Max),
    nl,
    fail.
    
  entrance_point:-
    makewindow(1,$31,94,"Enter string", 10, 10, 8,44),
    readln(Str),
    find_longest_word(Str, Word, _),
    str_len(Word, WordLen),
    get_needed_word_len(WordLen, NeedWordLen),
    write("Possible words are:"), nl,
    get_start_list(NeedWordLen, [], StartList),
    str_len(Word, MaxN),
    get_possible_words(Word, MaxN, StartList),
    save_and_clear_database.
  entrance_point:-
    write("Something is wrong").
  
  get_start_list(0, List, List).
  get_start_list(WordLen, List, ResList) :-
    WordLen1 = WordLen - 1,
    List1 = [WordLen|List],
    get_start_list(WordLen1, List1, ResList).
  
  check_for_end([], _).
  check_for_end([H|T], MaxN) :-
    H = MaxN,
    MaxN1 = MaxN-1,
    check_for_end(T, MaxN1).
  
  %founds all the possible words
  get_possible_words(_, MaxN, CurList) :-
    check_for_end(CurList, MaxN), !.
  get_possible_words(Word, MaxN, CurList) :-
    get_list(CurList, MaxN, NewList, _),
    get_possible_words(Word, MaxN, NewList), !,
    get_word(NewList, Word, NewWord),
    check_founded_word(NewWord).

  get_list([], _, [], 1).
  get_list([H|T], MaxN, NewList, Add) :-
    get_list(T, MaxN, NewList1, Add1),
    find_new_h(H, MaxN, NewH, Add1, Add),
    NewList = [NewH|NewList1].
    
  find_new_h(H, MaxN, NewH, Add1, Add) :-
    NewH = H + Add1,
    NewH <= MaxN,
    Add = 0.
  find_new_h(_, _, 1, Add1, Add1).
    
  get_word([], _, "").
  get_word([H|T], Word, NewWord) :-
    letter_by_number(Word, H, Letter),
    get_word(T, Word, NewWord1),
    frontchar(NewWord, Letter, NewWord1).

  letter_by_number(Word, 1, Ch) :-
    frontchar(Word, Ch, _).
  letter_by_number(Word, Num, Ch) :-
    frontchar(Word, _, Left),
    Num1 = Num - 1,
    letter_by_number(Left, Num1, Ch).
    
    
  check_founded_word(Word) :-
    words(Word).
  check_founded_word(Word) :-
    write(Word), nl,
    assert(words(Word)).
  
  find_longest_word("", "", "").
  find_longest_word(Str, Word, CurWord):-
    frontchar(Str, C, S1),
    isnt_white_space(C),
    find_longest_word(S1, Word1, NewCurWord),
    frontchar(CurWord, C, NewCurWord),
    get_longest(Word1, CurWord, Word).
  find_longest_word(Str, Word, CurWord):-
    Str<>"",
    frontchar(Str,_,Str1),
    find_longest_word(Str1, Word, _),
    CurWord="".
    
  get_longest(Str1, Str2, Res):-
    str_len(Str1,Len1), str_len(Str2,Len2),
    Len1>Len2,
    Res = Str1.
  get_longest(_, Str2, Str2).
    
    
  isnt_white_space(Ch):-
    Ch<>' ', Ch<>','.
      
goal
  entrance_point.

PM MAIL   Вверх
kitaynik88
Дата 16.3.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.3.2007

Репутация: нет
Всего: нет



ужосъ... и все молчат
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.