![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
maksimla |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
Задание
Предположим, имеем первичных цифр массив. Напишите функцию, реализующую алгоритм двоичного поиска в таком массиве. Результаты функции - элемент массива, который равен функции аргументу, номер или 0. я так непонел результаты какие надо вывести пример можете написать -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание коряво написано.
Я понял так, что нужно вывести элемент массива и его номер в случае успеха поиска и 0, если поиск потерпел неудачу (нет такого элемента в массиве). |
maksimla |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
чтото неищит у меня цыфров
Код program Bevarde2; const count =10; m:array [1..count] of byte=(10,9,8,7,6,5,4,3,2,1); var n,i,first,last:integer; a,low, high, mid:integer; found:boolean; begin WriteLn('massiv uporedocennij'); for i:= 1 to count do write(m[i]:3,' '); writeln; writeln; write('vvedite cislo kotoroe icete'); readln(a); low:=1; high:=count; found:=false; while (low<=high) and (not found) do begin i:=(low+high) div 2; if a<m[i] then high:=i-1 else if a>m[i] then low:=i+1 else found:=true; end; if found then writeln('naiden') else writeln('nenaiden'); Readln; end. Добавлено через 2 мин. вот эту нашол но чегото у меня неищит Код function BSearch (item: DataArray; count:integer; key:DataItem):integer; var low, high, mid: integer; found:boolean; begin low:=1; high:=count; found:=false; { не найден } while (low<=high) and (not found) do begin mid:=(low+high) div 2; if key<item[mid] then high:=mid-1 else if key>item[mid] then low:=mid+1 else found:=true; { найден } end; if found then BSearch:=mid else BSearch:=0; { не найден } end; { конец поиска } -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
вот эту нашол но чегото у меня неищит Когда же ты научишься точнее формулировать проблему? Это же в первую очередь тебе самому лучше..Приведи ВСЮ программу и опиши, что именно работает неправильно. "Не ищет" можно понимать тысячью разных способов. В том числе, и что ты ее не запускал, например.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
вот массив есть в программе у меня я ввожу в поиск цифру которая есть в массиве а выводит что нету ее в массиве
-------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
вот массив есть в программе у меня я ввожу в поиск цифру которая есть в массиве а выводит что нету ее в массиве Еще раз прошу: приведи полный текст программы.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
![]()
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
перегрелся я уже вот программка все работает сечас надо както поиск в функцию перевести
program Bevarde2;
const count =10;
m:array [1..count] of byte=(10,9,8,7,6,5,4,3,2,1);
var n,i,first,last,a:integer;
found:boolean;
begin
WriteLn('massiv uporedocennij');
for i:= 1 to count do write(m[i]:3,' '); writeln; writeln;
write('vvedite cislo kotoroe icete');
readln(n);
first:=1;
last:= count;
found:= false;
repeat
i:=(first +last) div 2;
writeln(i);
if m[i] = n then found:=true
else
begin
if m[i]>n then first :=i+1
else last:=i-1
end;
until (found= true) or (first>last);
if found then writeln ('iskomii',n,'v massive',i)
else
writeln('netu cisla ',n,'v massive');
Readln;
end.
непонел этого как это в незу что выводить надо Результаты функции - элемент массива, который равен функции аргументу, номер или 0. -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
перегрелся я уже вот программка все работает сечас надо както поиск в функцию перевести Явно перегрелся ![]() непонел этого как это в незу что выводить надо Тебе же Ozzя сказал: функция должна давать номер найденного элемента. Кстати, в той функции все было правильно..Результаты функции - элемент массива, который равен функции аргументу, номер или 0. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
maksimla |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
а теперь процедуру сказали сделать я сделал но одна ошибка есть. Ошибку не нашел но добавил единицу и все в порядке можете сказать что не так я сделал?
это двоичный поиск program rasti;
const max=100;
type masyv=array [1..max] of integer;
var x:masyv;
a,n,i:integer;
c:text;
procedure poisk(m:masyv; max,j:integer);
var tr:boolean; i1,i2:integer;
begin
tr:=false;
i1:=1; i2:=max+1;
while (i1<i2) and (not tr) do
begin i:=(i1+i2)div 2;
if x[i]=a then tr:=true
else if x[i]<a then i1:=i+1
else i2:=i;
end;
if not tr then
writeln('v masyve x cisla ',a,' netu')
else
writeln('Skaiciui ',a,' lygus ',i,' masyvo narys');
end;
begin
assign(c,'test.txt');
Reset(c);
Readln(c,n);
for i:=1 to n do
begin
read(c,x[i]);
writeln(i:4,' ',x[i]);
end;
write('vvedite iskomoe cislo ');
readln(a);
poisk(x,n,a);
readln
end.
числа записаны в файл в возвращающем порядке и если в поиск вводишь самое последнее число то оно не находится при в процедуре i2:=max а если плюс один то все в порядке странно можете объяснить что не так я сделал. -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
![]() ![]() |
![]() |
Текстовая версия | 19.04.2025 0:29 |