|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.05.2010, 12:17 | #1 |
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод с Паскаля на С | 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 |