Форум: "Прочее";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
ВнизПреобразования Pascal в Delphi Найти похожие ветки
← →
Vlad Oshin © (2008-06-03 13:28) [40]Удалено модератором
← →
non1ka © (2008-06-03 13:29) [41]Удалено модератором
← →
non1ka © (2008-06-03 13:34) [42]чувствую себя бревном :(
← →
Vlad Oshin © (2008-06-03 13:48) [43]ты списал пасовскую программку
тебе все написали (и даже функцию gotoxy)
ты сам хоть что-то сделал, здоровый ты мой
зы
ну не люблю я эмо и прочих .. альтернативных феЙ
← →
Vlad Oshin © (2008-06-03 13:48) [44]Удалено модератором
← →
Vlad Oshin © (2008-06-03 13:48) [45]Удалено модератором
← →
@!!ex © (2008-06-03 14:28) [46]> [37] non1ka © (03.06.08 13:20)
Вот так.
Объясняю.
{} - Это комментарий.
Если комментарий содержит знак $ в начале, это значит что это не простой комментарий, а код препроцессора.
Блок
{$IFDEF WIN32}
...
{$ENDIF}
выполняется только под виндой.
Препроцессор смотрит на этот код, и если ОС - не виндовс, то он этот код игнорирует, просто удаляет, если же винда, то обрабатывается команда:
{$APPTYPE CONSOLE}
Эта команда указывает, что приложение не простое, а консольное. С тем самым окошком черным, на котором работает Writeln/Readln
← →
non1ka © (2008-06-03 15:06) [47]
> @!!ex
Спасибо за четкое объяснение... я понял...
> Vlad Oshin
Во первых объсните от куда вы знаете про феЙ???
Во вторых это было давно и не правда, а на тот момент просто интересно...
И зачем троить пост..???
← →
non1ka © (2008-06-03 15:11) [48]
> @!!ex
> {$APPTYPE CONSOLE}
И это означает что производить каки либо изменения с операторами Writeln/Readln не нужно..??
← →
non1ka © (2008-06-03 15:15) [49]Все я понял что не нужно.....
> Vlad Oshin
Ты описал мне процедуру для алгоритма Варнсдорфа. Я про этот алгоритм перебора читал он напоминает впринципе мою задачу. Он так же является рекурсивным как я понимаю. вопрос в следующем заменить GotoXY на данный листинг??
← →
Palladin © (2008-06-03 15:17) [50]
> Блок
> {$IFDEF WIN32}
> ...
> {$ENDIF}
> выполняется только под виндой.
компилируется только если задано Win32, выполнение тут ни причем...
...препроцессора, ни в одном продукте Паскалевского направления от Borland, нет..
> non1ka © (03.06.08 15:06) [47]
и чего"же ты понял?
← →
Vlad Oshin © (2008-06-03 15:20) [51]я описал процедуру
GOTOXY
, причем тут варнсдорф?
> Во первых ......
просто поискал в нете, не мог же ты только тут так здоровско отметится
← →
Vlad Oshin © (2008-06-03 15:20) [52]Удалено модератором
← →
Vlad Oshin © (2008-06-03 15:20) [53]Удалено модератором
← →
non1ka © (2008-06-03 15:22) [54]
> Palladin
Про
Эти строки понятно...
> > {$IFDEF WIN32}
> > ...
> > {$ENDIF}
Это условие что программа должна выполняться на платформах Win32. Это понятно...
{$APPTYPE CONSOLE} Это означает что программа консольная.. т.е. Не оконный Win вариант а именно мною привычный варианткак в Pascale.
Единственное на данный момент не понятно на счет процедуры GotoXY как одни говорят что ее нужно преобразовывать в отдельную процедуры другие говорят оставлять без изменения :(
← →
non1ka © (2008-06-03 15:26) [55]
> Vlad Oshin
Я подумал ты показал типовое описание алгоритма..
Я не знал что именно под мой конкретный премер...
А на счет остального я не понимаю какую цель ты приследовал когда писал в поисковике мой ник :) Для чего!!??? я понимаю ты логичный человек.. тогда объясни мне ЗАЧЕМ?
← →
Kostafey © (2008-06-03 15:28) [56]> Во первых объсните от куда вы знаете про феЙ???
А никто не знает :)
Но вот эта штука компилится:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
Var
Field: Array [1..20] of Array [1..20] of Integer;
N: Integer;
MaxX, MaxY: Integer;
x, y: Integer;
Procedure WritePosition;
Var
X, y: Integer;
Begin
//ClrScr;
For y:=1 to MaxY do
For x:=1 to MaxX do
Begin
//GotoXY (x*4, y*2);
Write (Field[x, y]);
End;
End;
Procedure Move(x, y: Integer);
Begin
N := N+1;
Field [x,y] := N;
If N = MaxX * MaxY Then
Begin
WriteLN ("Anou ?aoaiea!!!");
WritePosition;
//ReadKey;
readln;
Halt;
End;
If (x+2<=MaxX) and (y+1<=MaxY) Then
If Field[x+2, y+1]=0 Then move (x+2, y+1);
If (x+1<=MaxX) and (y+2<=MaxY) Then
If Field[x+1, y+2]=0 Then move (x+1, y+2);
If (x-1>0) and (y+2<=MaxY) Then
If Field[x-1, y+2]=0 Then move (x-1, y+2);
If (x-2>0) and (y+1<=MaxY) Then
If Field[x-2, y+1]=0 Then move (x-2, y+1);
If (x-2>0) and (y-1>0) Then
If Field [x-2, y-1]=0 Then move (x-2, y-1);
If (x-1>0) and (y-2>0) Then
If Field [x-1, y-2]=0 Then move (x-1, y-2);
If (x+1<=MaxX) and (y-2>0) Then
If Field [x+1, y-2]=0 Then move (x+1, y-2);
If (x+2<=MaxX)and (y-1>0) Then
If Field[x+2, y-1] = 0 Then move (x+2, y-1);
N := N - 1;
Field[x, y]:=0;
End;
Begin
//ClrScr;
N := 0;
Write ("Aaaaeoa oe?eio iiey (io 1 ai 20): ");
ReadLn (MaxX);
Write ("Aaaaeoa aunioo iiey (io 1 ai 20): ");
ReadLn(MaxY);
For x:=1 To MaxX Do
For y:=1 To MaxY Do Field[x,y]:=0;
//ClrScr;
Move (1,1);
WriteLn ("?aoaiea ia iaeaaii...");
End.
← →
non1ka © (2008-06-03 15:33) [57]
> Kostafey ©
Ты за коментил. Очистку экрана, ожидание нажатия, и саму процедуру GotoXY;
Если не указывать шаг как можно проделать перебор...
Или просто "//" не значит комментарий... хотя да вроде мне написали что в делфи "{}" значек комментарий... а что тогда означает //....
← →
Palladin © (2008-06-03 15:36) [58]http://www.google.ru/search?hl=ru&q=%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D1%85+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC+delphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
← →
non1ka © (2008-06-03 15:40) [59]
> Palladin
Все я понял.. Я достал уже... :) Спасибо за помощь... Попытаюсь разобраться в остальном сам....
← →
Renegat (2008-06-03 15:40) [60]WriteLn ("?aoaiea ia iaeaaii..."); // все символы строки после двойного фронт-слэша являются комментом
← →
Kostafey © (2008-06-03 15:42) [61]> [57] non1ka © (03.06.08 15:33)
Да, // - однострочный комментарий
{} - многострочный.
Вообще, сама задача кажется дикой.
Использование проприетарной интегрированной среды
для решения академической задачи - это...
имеет смысл разьве что для упрощения задачи
(в случее хорошего владения данной средой).
А для этой задачи FPC - самое оно! :)
← →
non1ka © (2008-06-03 15:52) [62]
> Kostafey
... Ну просто наверное наш примитивный ум не потянул бы более сложные задачи ореентированные на среду Delphi. поэтому преподователь и дал задачу такого типа...
И на счет того кода, который ты выложил ты закоментил GotoXY, по какому правилу тогда будет осуществлятся перебор?
← →
non1ka © (2008-06-03 15:55) [63]все разобрался!!
← →
Kostafey © (2008-06-03 15:56) [64]> наш примитивный ум
Никогда так не говори и не думай :)
> по какому правилу тогда будет осуществлятся перебор?
Как и до того.
Цикл определяет последовательность перебора.
gotoXY лишь определяет положение курсора на экране
перед выводом.
Соответсвенно форматировать вывод нужно будет иначе.
← →
non1ka © (2008-06-03 16:01) [65]вот эта функция написана для позиционирования курсора
procedure GotoXY(X, Y : integer);
begin
Coord.X := X; Coord.Y := Y;
SetConsoleCursorPosition(ConHandle, Coord);
end;
а это Con := GetStdHandle(STD_OUTPUT_HANDLE); консольный вывод.... впринципе помойму не нужен
← →
Kostafey © (2008-06-03 16:05) [66]Ты про это?
http://forum.tsure.ru/lofiversion/index.php/t23712.html
Так, я убежал...
← →
non1ka © (2008-06-03 16:06) [67]
> Kostafey
> Никогда так не говори и не думай :)
Просто мне самому стыдно. Не лежит у меня душа к этому. Не люблю и все. Каждый год новый язык. Сначала ассемблер начали только втягиваться, тут сразу на следующий год с++, Потом паскаль, Вот теперь делфи. А мне некогда разбираться я работаю в другом городе и вообще я понимаю это не оправдание, Но когда стоит выбор чем заниматься после работы (доделать работу, или занятся учебой) приходится выбирать работу. А свещенные выходные и те иногда проводиш в работе :( и нет времени даже с друзьями увидется..
Ладно я себя оправдал хотя бы в своих глазах. И это мою совесть еще на недельку приглоушит :)
← →
Anatoly Podgoretsky © (2008-06-03 16:19) [68]За это время, уже можно было сто раз скачать CRT модуль для Виндоус, даже на самом низкоскоростном модеме и вся работа свелась бы к замене одной строчки с CRT
← →
non1ka © (2008-06-03 16:32) [69]
> Anatoly Podgoretsky
Это задание выдали неделю назад!!! :)
← →
Anatoly Podgoretsky © (2008-06-03 16:39) [70]> non1ka (03.06.2008 16:32:09) [69]
А на поиск нужно несколько секунд и чуть больше, чем этот мини модуль скачать.
← →
ketmar © (2008-06-03 16:53) [71]>[67] non1ka © (2008-06-03 16:06:00)
>Но когда стоит выбор чем заниматься после работы (доделать работу
нет. уволиться.
---
Understanding is not required. Only obedience.
← →
non1ka © (2008-06-03 17:36) [72]
> ketmar
Ага это всегда так решение всех проблем это забить :)
Я вот пытался решить одну проблему вывел половину участников форума из себя и почувствовал себя безумно глупым!!! Весь реультат :)
Но в целом решил :)
← →
Vlad Oshin © (2008-06-03 17:43) [73]ладно, лови
rogram HorseMoving;
{$APPTYPE CONSOLE}
uses
Windows;
Var
Field: Array [1..20] of Array [1..20] of Integer;
N: Integer;
MaxX, MaxY: Integer;
x, y: Integer;
Con: integer;
procedure GotoXY(X,Y:integer);
var
Coord: TCoord;
begin
Coord.x:=X;
Coord.y:=Y;
SetConsoleCursorPosition(Con,Coord);
end;
Procedure WritePosition;
Var
X, y: Integer;
Begin
For y:=1 to MaxY do
For x:=1 to MaxX do
Begin
GotoXY (x*4, y*2);
Write (Field[x, y]);
End;
End;
Procedure Move(x, y: Integer);
Begin
N := N+1;
Field [x,y] := N;
If N = MaxX * MaxY
Then Begin
GotoXY(3,3);
WritePosition;
writeln;
WriteLN (" Есть Решение!!!");
Readln;
Halt;
End;
If (x+2<=MaxX) and (y+1<=MaxY)
Then If Field[x+2, y+1]=0
Then move (x+2, y+1);
If (x+1<=MaxX) and (y+2<=MaxY)
Then If Field[x+1, y+2]=0
Then move (x+1, y+2);
If (x-1>0) and (y+2<=MaxY)
Then If Field[x-1, y+2]=0
Then move (x-1, y+2);
If (x-2>0) and (y+1<=MaxY)
Then If Field[x-2, y+1]=0
Then move (x-2, y+1);
If (x-2>0) and (y-1>0)
Then If Field [x-2, y-1]=0
Then move (x-2, y-1);
If (x-1>0) and (y-2>0)
Then If Field [x-1, y-2]=0
Then move (x-1, y-2);
If (x+1<=MaxX) and (y-2>0)
Then If Field [x+1, y-2]=0
Then move (x+1, y-2);
If (x+2<=MaxX)and (y-1>0)
Then If Field[x+2, y-1] = 0
Then move (x+2, y-1);
N := N - 1;
Field[x, y]:=0;
End;
Begin
Con := GetStdHandle(STD_OUTPUT_HANDLE);
N := 0;
Write ("Введите высоту поля (от 1 до 20):");
ReadLn (MaxX);
Write ("Введите высоту поля (от 1 до 20):");
ReadLn(MaxY);
For x:=1 To MaxX Do
For y:=1 To MaxY Do Field[x,y]:=0;
Move (1,1);
GotoXY(3,3);
WriteLn ("Решение не найдено");
readln;
End.
← →
Vlad Oshin © (2008-06-03 17:43) [74]Удалено модератором
← →
Vlad Oshin © (2008-06-03 17:43) [75]Удалено модератором
← →
non1ka © (2008-06-03 17:50) [76]Удалено модератором
Примечание: сорри, удалено по ошибке
← →
non1ka © (2008-06-03 17:56) [77]
> Vlad Oshin
Спасибо огромное...
Но в целом я уже разобрался...
Теперь у меня опять появились вопросы...
Then Begin
GotoXY(3,3);
WritePosition;
writeln;
WriteLN (" Есть Решение!!!");
Readln;
Halt;
End;
Что означает GotoXY (3,3) мы начинаем движение четко с клетки 3 по горизонтали и 3 по вертикале??
← →
non1ka © (2008-06-03 17:57) [78]Тоесть не правильно выразился при определенных условия тех которые нас неудовлетворяют мы возвращаемся в эту клетку??
← →
non1ka © (2008-06-03 17:58) [79]блин все понял
← →
non1ka © (2008-06-03 18:05) [80]Ладно все не буду больше раздражать!! вас пойду домой попробую сделать как я думаю!! и попробую листинг написанный Человеком ненавидящим альтернативные культуры :)... А результатах сообщу поздне...
Всем огромное спасибо за ваше терпение :)... До встречи
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.044 c