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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 22:13   #1
gvilon
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 10
Плохо Переписать с Паскаля на С++

Есть функция для сортировки списка вставками на Паскале.
Нужно переписать функцию на С++.


Код:
function sort(head1:List):List;
var newList, cur, sel:List;
begin
  newList:=nil;
  while head1 <> nil do
  begin
    sel:=head1;
    head1:=head1^.next;
    if (newList = nil) or (sel^.inf < newList^.inf) then
    begin
      sel^.next:=newList;
      newList:=sel;
    end
    else
    begin
      cur:=newList;
      while(cur^.next <> nil) and (cur^.next^.inf < sel^.inf) do
       cur:=cur^.next;
      sel^.next:=cur^.next; cur^.next:=sel;
    end;
  end;
  sort:=newList;
end;
Вот небольшая програмка где используется єта функция..
Код:
type List = ^TList;
  TList = record
    inf: byte;
    next: List;
  end;

var head:List;

procedure createList();
var current, x:List;
  i:integer;
begin
  new(current);
  head:=current;
  current^.inf:=random(10);
  for i:=1 to 10 do
  begin
    new(current^.next);
    current:=current^.next;
    current^.inf:=random(10);
  end;
  current^.next:=nil;
end;

function sort(head1:List):List;
var newList, cur, sel:List;
begin
  newList:=nil;
  while head1 <> nil do
  begin
    sel:=head1;
    head1:=head1^.next;
    if (newList = nil) or (sel^.inf < newList^.inf) then
    begin
      sel^.next:=newList;
      newList:=sel;
    end
    else
    begin
      cur:=newList;
      while(cur^.next <> nil) and (cur^.next^.inf < sel^.inf) do
       cur:=cur^.next;
      sel^.next:=cur^.next; cur^.next:=sel;
    end;
  end;
  sort:=newList;
end;

procedure printList(a:List);
var current:List;
begin
  current:=a;
  while current <> nil do
  begin
    write(current^.inf:5);
    current:=current^.next;
  end;
  writeln;
end;

begin
  createList;
  printList(head);
  head:=sort(head);
  printList(head);
end.
Буду очень рад если поможете...
gvilon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно переписать процедуры с Паскаля на функции в С++ gvilon Общие вопросы C/C++ 1 21.10.2011 21:16
переписать из паскаля в делфи(выдать уровни на ногу порта) ovram Фриланс 4 04.01.2011 22:04
Переписать задачу из паскаля на СИ Drago56 Общие вопросы C/C++ 1 14.12.2010 17:40
Переписать insolent Общие вопросы C/C++ 6 24.08.2010 14:32
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37