Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Преобразования 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;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.025 c
2-1213685432
Муслик
2008-06-17 10:50
2008.07.20
Проследняя запись в таблице


2-1214108702
WebSQLNeederrr
2008-06-22 08:25
2008.07.20
Выход из цикла, но не выход из процедуры? Как?


4-1193078322
Wiedzmin
2007-10-22 22:38
2008.07.20
Нажатие кнопки мыши


2-1213682803
FormActivate
2008-06-17 10:06
2008.07.20
SetFocus


2-1213665444
ply
2008-06-17 05:17
2008.07.20
вычисляемое поле в датасете