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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 20:35   #1
Adu
Новичок
Джуниор
 
Регистрация: 25.05.2010
Сообщений: 1
По умолчанию Программа на паскале. Перевод на С++

Помогите, пожалуйста, перевести программу с Паскаля на С++.
Задача: Составить программу, которая переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы его элементы оказались в обратном порядке.
Код:
type       slovo= string;

           link	= ^kom; 
           kom	= record
            ini  : slovo;
            next : link;
	         end;     
	
 var sl:slovo; i,nnn:integer;
    L:link;


procedure del(var n : link; num:integer);
var
   neo, ind : link;
   i	    : integer;
begin
   if n<>nil then begin
   if num=1 then begin
      neo:=n;
      n:=n^.next;
      dispose(neo);
   end
   else begin
      i:=0;
      ind:=n;
      while (i<>num-2) and (ind^.next<>nil) do begin
	 i:=i+1;
	 ind:=ind^.next;
      end;
      if ind^.next<>nil then begin
	 neo:=ind^.next;
	 ind^.next:=neo^.next;
	 dispose(neo);
      end;
   end;
   end;
end; {КОНЕЦ процедуры del }
{****************************************}
procedure add(var n : link; x:slovo; num:integer);
var
   neo, ind : link;
   i	    : integer;
begin
   new(neo);
   neo^.ini:=x;
   if n=nil then begin
      n:= neo;
      neo^.next:=nil;
   end
   else if num=1 then begin
      neo^.next:=n;
      n:= neo;
   end
   else begin
      i:=0;
      ind:= n;
      while (i<>num-2) and (ind^.next<>nil) do begin
	 i:= i+1;
	 ind:= ind^.next;
      end;
      neo^.next:=ind^.next;
      ind^.next:= neo;
   end;
end; {КОНЕЦ процедуры add }
{******************************************}
procedure veiwnaob(n : link);
var
   ind : link;
   i,bb   : integer;
   mmm:array[1..1000] of string [10];
begin
   ind:=n;
   i:=0;
   if ind=nil then writeln ('List is empty')
   else begin

      while ind<>nil do begin
	 i:=i+1;
   mmm[i]:=ind^.ini; 
	 ind:=ind^.next;
      end;
   end;
         bb:=0;
   for i:=nnn downto 1 do  
    begin inc(bb);del(L,bb); 
    add(L,mmm[i],bb); end;  
end; 
{******************************************}
procedure veiw(n : link);
var
   ind : link;
   i   : integer;
begin
   ind:=n;
   i:=0;
   if ind=nil then writeln ('List is empty')
   else begin
      writeln; writeln('The list is');
      while ind<>nil do begin
	 i:=i+1;
	 writeln(i,')  ',ind^.ini);
	 ind:=ind^.next;
      end;
   end;
end; 
{******************************************}

begin
write('Vvedite kol-vo slov v spiske: '); readln(nnn); 
writeln('Vvedite sam SPISOK L: ');
for i:=1 to nnn do begin
write(i,' slovo= '); readln(sl); add(L,sl,i); end; 

veiwnaob(L); 
veiw(L); 
readln; readln;
end.

Последний раз редактировалось Adu; 25.05.2010 в 20:45. Причина: не правильно оформила
Adu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод в другие системы исчисления программа есть abelix Помощь студентам 7 19.03.2010 08:52
Программа на паскале Absent Помощь студентам 3 28.05.2009 17:14
Программа в паскале Batonchik Помощь студентам 9 18.01.2009 15:07