Перейти к содержанию

Паскаль - нужна помощь (Задача)


Рекомендуемые сообщения

Дело в том что по летней практике дывным давно, дали задачу на Паскале написать. o_O А теперь после ЛЕТА из башки вылетело ФСЁ!!! Помогите Плиз.

Задача состоит в том Нужно сгенерировать 1000 чисел отсортировав их по возврастанию(записать в файл все это дело) и путем двоичного(бинарного) поиска узнать находится ли любое введенное число в этом файле. *26

PS. Кто сможет реально помочь в этом дам репу!

:help::help::help::help::help::help::help::help::help::help::help::help::help::help::help::help: :help:

Ссылка на комментарий

WTF is "бинарный поиск"?? О_о

program one_thousand;
uses crt;

const n=1000;

var a:array[1..n] of integer;
c,g,i:integer;
f:text;
{-----------------------------------------------Запись в файл------------------------------------------------------}
procedure writef(y:string);
begin
if y='1' then assign(f,'1000/unsort.txt') else assign(f,'1000/sort.txt');
rewrite(f);
for i:=1 to n do
writeln(f,a[i]);
close(f);
end;
{-----------------------------------------------Запись в файл------------------------------------------------------}

begin
clrscr;

{-----------------------------------------------Рэндомайз------------------------------------------------------}
Writeln('Unsorted');
randomize;
for i:=1 to n do begin
a[i]:=random(n+1)-500;
writeln(a[i],' ');
end;
writef('1');
{-----------------------------------------------Рэндомайз------------------------------------------------------}

{-----------------------------------------------Сортировка------------------------------------------------------}
for i:=1 to n do begin
for g:=1 to n do begin
if a[g]>a[i] then begin
c:=a[i];
a[i]:=a[g];
a[g]:=c;
end;
end;
end;
writef('0');

writeln;
writeln('Sorted');
for i:=1 to n do
writeln(a[i]);
{-----------------------------------------------Сортировка------------------------------------------------------}

readkey;
end.

Это без поиска.

ЗЫ Дааа, паскальщик я тот ещё...

Ссылка на комментарий

я туд бинарного поиска не наблюдаю...


const n=1000;
type
myArray :array[1..n] of integer;
var
skey, len:integer;
{возвратит -1 ежели лемент не найден..}
function binarySearch( arr : myArray; element : integer; length : integer ) : integer;
var L, R, i : integer;
find : boolean;
begin
L := 0;
R := length - 1;
find := false;
while ( (L <= R) and (not find) ) do begin
i := (L+R) div 2;
if arr[i] = element then find := true
else if element < arr[i] then R := i - 1
else L := i + 1;
end;
if arr[i] = element then binarySearch := i
else binarySearch := -1;
end;

Ссылка на комментарий

bonfunk Да я понял. *17

Спасибо ОГРОМНЕЙШЕЕ iluvatar и L0K1 за Помощь. :rock:

Вроде работает так что 15 января пойду защищать. o_O Еще раз Спасибо.

Вот что получилось в конечном итоге:

program one_thousand;

uses crt;

const

n=1000;

type

myArray=array[1..n] of integer;

var a:myArray;

c,g,i:integer;

f:text;

skey, len:integer;

{-----------------------------------------------Запись в файл------------------------------------------------------}

procedure writef(y:string);

begin

if y='1' then assign(f,'c:\1000\unsort.txt')

else assign(f,'c:\1000\sort.txt');

rewrite(f);

for i:=1 to n do

writeln(f,a);

close(f);

end;

{-----------------------------------------------Запись в файл------------------------------------------------------}

{-----------------------------------------------Бинарный поиск-----------------------------------------------------}

{возвратит -1 ежели лемент не найден..}

function binarySearch( arr : myArray; element : integer; length : integer ) : integer;

var L, R, i : integer;

find : boolean;

begin

L := 0;

R := length - 1;

find := false;

while ( (L <= R) and (not find) ) do begin

i := (L+R) div 2;

if arr = element then find := true

else if element < arr then R := i - 1

else L := i + 1;

end;

if arr = element then begin

binarySearch := i;

Writeln('Takoi element ', element,' prisutstvuet');

end

else begin

binarySearch := -1;

Writeln('Takogo elementa ', element,' zdes nety');

end;

end;

{-----------------------------------------------Бинарный поиск-----------------------------------------------------}

begin

clrscr;

{-----------------------------------------------Рэндомайз----------------------------------------------------------}

Writeln('Unsorted');

randomize;

for i:=1 to n do begin

a:=random(1001-i);

writeln(a,' ');

end;

writef('1');

{-----------------------------------------------Рэндомайз----------------------------------------------------------}

{-----------------------------------------------Сортировка---------------------------------------------------------}

for i:=1 to n do begin

for g:=1 to n do begin

if a[g]>a then begin

c:=a;

a:=a[g];

a[g]:=c;

end;

end;

end;

writef('0');

writeln;

writeln('Sorted');

for i:=1 to n do

write(' ',a,' ');

{-----------------------------------------------Сортировка---------------------------------------------------------}

Writeln;

Write('Vvedite element dlya poiska := ');

readln(skey);

binarySearch(a, skey, n);

readkey;

end.

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...