M@K_Afferti Опубликовано 9 января, 2008 Жалоба Поделиться Опубликовано 9 января, 2008 Дело в том что по летней практике дывным давно, дали задачу на Паскале написать. А теперь после ЛЕТА из башки вылетело ФСЁ!!! Помогите Плиз. Задача состоит в том Нужно сгенерировать 1000 чисел отсортировав их по возврастанию(записать в файл все это дело) и путем двоичного(бинарного) поиска узнать находится ли любое введенное число в этом файле. *26PS. Кто сможет реально помочь в этом дам репу! :help: Ссылка на комментарий
ТопоРУС Опубликовано 9 января, 2008 Жалоба Поделиться Опубликовано 9 января, 2008 PS. Кто сможет реально помочь в этом дам репу!ясно всё с тобой! *44 Ссылка на комментарий
iluvatar Опубликовано 9 января, 2008 Жалоба Поделиться Опубликовано 9 января, 2008 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);beginif y='1' then assign(f,'1000/unsort.txt') else assign(f,'1000/sort.txt');rewrite(f);for i:=1 to n dowriteln(f,a[i]);close(f);end;{-----------------------------------------------Запись в файл------------------------------------------------------}beginclrscr;{-----------------------------------------------Рэндомайз------------------------------------------------------}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 beginfor 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 dowriteln(a[i]);{-----------------------------------------------Сортировка------------------------------------------------------}readkey;end.Это без поиска.ЗЫ Дааа, паскальщик я тот ещё... Ссылка на комментарий
M@K_Afferti Опубликовано 9 января, 2008 Автор Жалоба Поделиться Опубликовано 9 января, 2008 Спасибо iluvatar за помощь Репу выдал как и обещал!!! Ссылка на комментарий
L0K1 Опубликовано 9 января, 2008 Жалоба Поделиться Опубликовано 9 января, 2008 я туд бинарного поиска не наблюдаю...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 Опубликовано 9 января, 2008 Жалоба Поделиться Опубликовано 9 января, 2008 M@K_Afferti, в следующий раз не шлепаем дубли тем Ссылка на комментарий
M@K_Afferti Опубликовано 10 января, 2008 Автор Жалоба Поделиться Опубликовано 10 января, 2008 bonfunk Да я понял. *17Спасибо ОГРОМНЕЙШЕЕ iluvatar и L0K1 за Помощь. Вроде работает так что 15 января пойду защищать. Еще раз Спасибо.Вот что получилось в конечном итоге: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. Ссылка на комментарий
-makos- Опубликовано 11 января, 2008 Жалоба Поделиться Опубликовано 11 января, 2008 M@K_AffertiСюда пиши терь Ссылка на комментарий
M@K_Afferti Опубликовано 11 января, 2008 Автор Жалоба Поделиться Опубликовано 11 января, 2008 -makos- не понял тебя ты сейчас про что имеешь ввиду? Ссылка на комментарий
-makos- Опубликовано 15 января, 2008 Жалоба Поделиться Опубликовано 15 января, 2008 т.е. вот сюда Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти