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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2010, 12:17   #1
Svetlanka_ya
 
Регистрация: 17.04.2010
Сообщений: 6
По умолчанию С Паскаля на Си++

Здравствуйте, уважаемые программисты)
Совсем недавно перешли с языка Паскаль на Си++)Переход дается сложно, если честно
Помогите, пожалуйста, перевести программу с языка Паскаль на Си++С




{Программа решает следующую задачу:
Отсортировать линейный массив, используя быструю нерекурсивную сортировку, и найти индекс элемента в нем,
используя последовательный поиск с конца массива.
}
program Poisk;
const
nmax=100;
type
item=record key: integer; end;
index=0..nmax;
Vector=array[1..Nmax] of item;
var
a: Vector;
l1,l2,n,b,i: integer;

procedure vvodmas( var a : vector); {Процедура заполняет массив случайными числами}
var
i : integer;
begin {vvodmas}
randomize;
for i :=1 to N do
a[i].key:=random(100);
end; {vvodmas}

procedure vivodmas (var a : vector); {Процедура выводит мaссив на экран}
var
i : integer;
begin {vivodmas}
for i :=1 to N do
write(a[i].key : 4,'' );
end; {vivodmas}



{Процедура осуществляет быструю нерекурсивную сортировку}
procedure QSort(var L,R:integer);
const m=12;
var i,j:index;
x,w: item;
s:0..m;
stack:array[1..m] of record L,R:index END;
begin
s:=1;
stack[1].L:=1;
stack[s].R:=n;
repeat {выбор запроса из вершины стека}
l:=stack[s].l;
r:=stack[s].r;
s:=s-1;
repeat
i:=L;
j:=R;
x:=a[(L+R)div 2];
repeat
while a[i].key<x.key do
i:=i+1 ;
while x.key<a[j].key do
j:=j-1 ;
if i<=j then
begin
w:=a[i];
a[i]:=a[j];
a[j]:=w;
inc(i);
dec(j);
end
until i>j;
if i<R then
begin {запись в стек запроса на сортировку правой части}
s:=s+1;
stack[s].L:=i;
stack[s].R:=R;
end;
R:=j;
until L>=R
until s=0
end;

{Процедура ищет индекс элемента в массиве}
Procedure Find(a1: integer; var j:integer);
begin
j:=n;
while (j>=1) and (a[j].key<>a1) do
dec(j);
if (j>=1) then
writeln('Indeks elementa ',a1,' = ',j)
else
writeln('element ', a1,' NE naiden');
end;

begin
writeln('Введите ра3мерность массива');
readln(n);
Vvodmas(a);
writeln('Исходный массив');
Vivodmas(a);
writeln;
QSort(l1,l2);
writeln('Отсортированный массив массив');
Vivodmas(a);
writeln;
writeln('Введите число, которое хотите найти');
readln(b);
Find(b,i);
end.
Svetlanka_ya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод с Паскаля на С RamilFaz Общие вопросы C/C++ 3 08.04.2010 14:40
С паскаля на c++ Sparky Помощь студентам 1 09.03.2010 16:56
от паскаля к с++ WOLFak Обсуждение статей 11 27.01.2010 00:18
из Паскаля в С++ Lees27 Общие вопросы C/C++ 1 14.09.2009 23:29
Графика Паскаля netbioz Помощь студентам 6 03.06.2009 08:06