Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Сортировка, поиск

Автор: Zas 26.05.2007 23:39

Помогите пожалуйста переписать из Паскаля в Си, пунктуацию си совсем не знаю, если не сложно:
Main.pas


program pagr;
uses g_modulis;
var l, kiek, c, i, p,i1, a_search : integer;
rez, stat : string;
mas : masyvas;
f, outf, st : text;
start,start1,Result: longint;

begin

{$I-}
Assign(f, 'BLA.txt');
Rewrite(f);
for i := 1 to 2000 do
begin
randomize;
mas[i] := random(1000);
write(f, mas[i], ' ');
end;
reset(f);

kiek :=0;
repeat
Writeln(' Enter the result file name: ');
Readln(rez);
Assign(outf, rez);
Rewrite(outf);
Inc(kiek);
if kiek=3 then halt;
until IOResult=0;

kiek :=0;
repeat
Writeln('Enter the statistics file name: ');
Readln(stat);
Assign(st, stat);
Rewrite(st);
Inc(kiek);
if kiek=3 then halt;
until IOResult=0;
{$I+}

p := 1;

while not seekeof(f) do
begin
if seekeoln(f) then
readln(f);
read(f, l);
mas[p] := l;
inc(p);
end;

writeln('First massive');
for i1 :=1 to 2000 do
write(mas[i1],' ');

writeln;
start:=gettime1;
burbulas(mas , n);
writeln('Time of sorting:',gettime1-start, ' mSec');
write(st, gettime1-start );
for c := 1 to 2000 do
begin
write(outf, mas[c]);
write(outf,' ');
write(mas[c],' ');
end;
writeln;
Writeln(' Enter the value of element to find:');
Readln(a_search);

start1:=gettime1;
Result:=Bin_Search (mas, 50, a_search);
if (result > 0) then begin
WriteLn('Time of finding ', GetTime1 - start1);

writeln ('number= ',result) ;
end
else writeln('Not found!');
readln;

close(f);
close(st);
close(outf);
readln;

end.







Module.pas

unit g_modulis;

interface
uses dos;
const n =2000;

type masyvas = array[1..n] of integer;


procedure burbulas(var mas : masyvas; n : integer);
function Gettime1:longint;
Function Bin_Search (mas:masyvas; size:integer; x: integer) : integer;


implementation

procedure burbulas(var mas : masyvas; n : integer);
var i, j, b : integer;
c : boolean;
begin
j:= 1;
repeat
c:=true;
for i:=1 to n-j do
if mas[i] > mas[i+1] then
begin
b:= mas[i];
mas[i]:= mas[i+1];
mas[i+1]:=b;
c:=false;
end;
j:=j+1;
until (j=n) or c
end;

function Gettime1:LongInt;
var h,m,s,ms:word;
begin
gettime(h,m,s,ms);
gettime1:=ms+100*(s+60*(m+60*h));
end;


Function Bin_Search (mas:masyvas; size:integer; x: integer) : integer;

Var left, right, center: integer;
begin
left := 1; right := size;
repeat center := (right + left)
div 2;
if mas[ center ] >= X
then right := center
else left := center;
until (right - left = 1) or (mas[ center ] = X);
bin_search:=center;
end;
end.





Прикрепленные файлы
Прикрепленный файл  pagr.pas ( 1.73 килобайт ) Кол-во скачиваний: 253
Прикрепленный файл  g_modulis.pas ( 1.06 килобайт ) Кол-во скачиваний: 260

Автор: klem4 27.05.2007 13:28

Лучше задание напиши, проще заново будет сделать сразу на c++.

Автор: Zas 27.05.2007 13:36

Цитата(klem4 @ 27.05.2007 9:28) *

Лучше задание напиши, проще заново будет сделать сразу на c++.

Хорошо, только язык должен быть Си а не Си++:

Написать программу на языке Си реализующую двоичный поиск. Функции процедуры должны находиться в отдельном пакете, Начальные данные и конечные находиться в файлах, имена которых вводятся с клавиатуры, так же программа должна собирать статистическую информацию, сколько времени программа затратила на поиск или сортировку

Автор: klem4 1.09.2007 0:59

еще актуально ? unsure.gif