Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2012, 13:12   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию переделать код из паскалевского в делфи

мне нужно понять, как заменить writeLn и readLn на вывод, например в какой-то Edit. вот код программы:
Код:
uses crt;
 
type
   list = ^node;
   node = record
      inf : integer;
      next : list;
   end;
 
var
   phead, ptail : list;
   p, q : list;
   value : integer;
 
begin
   repeat
      write('-> '); readln(value); { вводим очередное значение для занесения в список }
      if value <> -1 then { сравниваем его с каким-то значением обозначающим "ввод окончен" }
      begin
         new(p); { нет, еще не закончен - тогда выделяем память и делаем что надо }
         p^.inf := value;
         p^.next := nil;
 
         if phead = nil then phead := p { если список был пуст (головной эл-т = 0), значит новый элемент будет первым }
         else ptail^.next := p; { список уже не был пуст - "прикрепляем" новый элемент к "хвосту" }
 
         ptail := p; { "хвостом" теперь будет новый элемент }
      end;
   until value = -1; { повторяем. пока пользователь не введет значение, по которому ввод прекращается }
 
 
   p := phead; { печатаем список }
   while p <> nil do
   begin
      write(p^.inf:4);
      p := p^.next;
   end;
   writeln;
 
   { а здесь - самое интересное: переносим последний элемент в начало }
 
   p := phead^.next; { p настраиваем на ВТОРОЙ элемент }
   q := phead; { q - на первый }
   while p^.next <> nil do { и, пока p не достигнет конца списка ... }
   begin
      p := p^.next; { ... одновременно продвигаем p и q }
      q := q^.next;
   end;
 
   { в результате у нас p будет указывать на последний элемент,
   а q - на предпоследний. Ну, а теперь простая логика: }
 
   ptail := q; { "хвост" списка переносится на предпоследний элемент. т.е., на q }
   p^.next := phead; { следующим за последним (который будем переносить вперед) должен быть первый }
   phead := q^.next; { новое начало списка - за предпоследним элементом }
   q^.next := nil; { и отсекаем связь между предпоследним и бывшим последним... }
 
 
   p := phead; { еще раз выводим список на печать }
   while p <> nil do
   begin
      write(p^.inf:4);
      p := p^.next;
   end;
   writeln;
 
   readln;
 
end.
то есть тут мы просим пользователя ввести данные в список через readLn а в делфи какой элемент лучше использовать? и с выводом то же самое! помогите доработать код.
gylayko вне форума Ответить с цитированием
Старый 29.09.2012, 13:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что значит - "переделать в Delphi"?!
Вам нужно приложение с оконными формами (интерфейсом)?
Если нужно оставить тот же вид и ту же функциональность, то в Delphi есть такое понятие, как "консольное приложение"

Достаточно выкинуть модуль CRT и в начале программы дописать
Код:
program ВашаПрограмма;

{$APPTYPE CONSOLE}
как Readln и Writeln заработают так же, как они работали раньше в TurboPascal.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2012, 13:39   #3
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

о, спасибо! а какой-то Edit или что-то еще не нужно, чтобы туда выводило?
просто если так делать, получается пустая форма без чего-либо!
gylayko вне форума Ответить с цитированием
Старый 29.09.2012, 14:02   #4
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

New>Other>Console Application
В окне кода пишешь код программы. Никаких форм кроме консольного окна не будет. И CRT не забудь выбросить.
hon вне форума Ответить с цитированием
Старый 29.09.2012, 14:17   #5
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

спасибо! все работает.
gylayko вне форума Ответить с цитированием
Старый 29.09.2012, 15:07   #6
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

а вот если мне нужно не консольное, а полноценное приложение?
то есть, чтобы было Memo и чтобы пользователь вводил элементы в это Memo. и результат в отдельном Memo
gylayko вне форума Ответить с цитированием
Старый 29.09.2012, 15:32   #7
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

то есть, я попытался сделать вот так:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
   list = ^sp;
   sp = record
      inf: integer;
      next: list;
   end;
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   head, hvost : list;
   p, q : list;
   x : integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   repeat

      x:=StrToInt(Memo1.Text); 
      if x <> -1 then 
      begin
         new(p); 
         p^.inf:= x;
         p^.next:= nil;

         if head = nil then
         head:= p 
         else hvost^.next:= p; 

         hvost:= p; 
      end;
   until x = -1; 
   p:= head^.next; 
   q:= head; 
   while p^.next <> nil do 
   begin
      p:= p^.next; 
      q:= q^.next;
   end;

   hvost:= q; 
   p^.next:= head; 
   head:= q^.next; 
   q^.next := nil; 


   p:= head; 
   while p <> nil do
   begin
      Memo2.Text:=IntToStr(p^.inf);
      p:= p^.next;
   end;

end;

end.
но в результате ничего не получается, а выдает ошибку "это не переменная типа integer" на любые переменные.
gylayko вне форума Ответить с цитированием
Старый 29.09.2012, 15:35   #8
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Ну тогда создавайте НЕ консольное приложение. Какии проблемы? Накините пару компонентов и интерфейс готов =)
Delphi_ProGer вне форума Ответить с цитированием
Старый 29.09.2012, 16:23   #9
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

Цитата:
Сообщение от Delphi_ProGer Посмотреть сообщение
Ну тогда создавайте НЕ консольное приложение. Какии проблемы? Накините пару компонентов и интерфейс готов =)
так вот я и сделал НЕ консольное! на код гляньте. там используются Editы и Button.
gylayko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
небольшой код переделать из паскаля в делфи alexanderrrr Помощь студентам 2 16.06.2012 12:54
Переделать в код Delphi!! Настена290 Помощь студентам 2 01.02.2012 15:52
переделать с делфи код в СИ Dezolyator Фриланс 7 24.05.2010 23:19
Переделать код Hepri Работа с сетью в Delphi 3 20.08.2009 20:28
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37