Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
printer
0 / 0 / 0
Регистрация: 20.11.2013
Сообщений: 26
#1

Не работает программа, в чем ошибка? - Pascal ABC

31.05.2014, 17:26. Просмотров 160. Ответов 0
Метки нет (Все метки)

Нужно было написать программу с бинарным поиском в упорядоченном по убыванию массиве, и высчитать временную сложность алгоритма. Но программа не работает, ошибка в процедуре poisc. Не знаю как исправить.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program pro1;
uses op,obrabotki;
var a:mas;
    n,key:integer;
begin
vvod(a,n);
writeln('Исходный массив');
vivod(a,n);
sort(a,n);
writeln('После сортировки');
vivod(a,n);
write(' Введите число:');
poisc(a,n);
end.
Pascal
1
2
3
4
5
unit op;
interface
type mas=array [1..10000] of integer;
implementation
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
unit obrabotki;
 
interface
uses op;
procedure vvod(var a:mas; var n:integer);
procedure vivod (a:mas;n:integer);
procedure sort(var a:mas;n:integer) ;
procedure poisc(a:mas;n:integer);
 
implementation
 
procedure vvod(var a:mas;var n:integer);
var i:integer;
begin
writeln ('Введите количество элементов');
readln(n);
writeln('Введите элементы:');
for i:=1 to n do
Readln(a[i]);
end;
 
procedure vivod (a:mas;n:integer);
var i:integer;
begin
for i:=1 to n do write(a[i]:4);
writeln;
end;
 
procedure sort(var a:mas;n:integer) ;
var i, temp, n_min : integer;
begin
temp:=0;
for i :=1 to n do begin
for n_min :=1 to n do begin
if a[i] > a[n_min] then begin
temp:= a[i];
a[i]:= a[n_min];
a[n_min]:=temp;
end;
 
end;
 
end;
end;
 
procedure poisc(a:mas;n:integer);
var
   i,l,u,r,m,key:integer;
   begin
   l := 1;
    r := n + 1;
    u:=0;
    inc(u,2);
    readln(key);
    While l < r - 1 do
    begin
      m := (l + r) div 2;
      inc(u);
      if a[m] > key then
      begin
      r := m;
      inc(u,2);
      end
        else
        begin
        l := m;
        inc(u,2);
    end;
    begin
    if a[l] = key then WriteLn(l)
    
    else writeln('Данных элементов нет в массиве');
    end;
    writeln('Временная сложность: ',u);
 
end;
end;
end.
Ошибка заключается в том, что он не находит число в массиве, всегда пишет, что такого элемента нет. Так же данную запись и временную сложность он показывает по несколько раз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 17:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает программа, в чем ошибка? (Pascal ABC):

Не работает программа. В чем ошибка? - Pascal
Здравствуйте. Есть задача: Разработать программу вывода значения функции на интервале с шагом h. Все три переменные вводятся с клавиатуры....

Не работает mode в чем ошибка? - Pascal
Вот мой код program Project1; Uses Graph; Var Driver,Mode: Integer; X: Real; Xg,Yg,I: Integer; Begin {Инициализация...

в чем ошибка у меня не работает??? - Pascal
Uses Crt; Var P, U: Real; Y: Byte; Begin ClrScr; P:=100;

Программа по паскалю, не могу понять в чем же ошибка - Pascal
Решила простую задачу по паскалю, однако не все так хорошо, ругается на else var a,b,c,d,e,f,g,j,i,k,y: integer; begin writeln...

Написала программу,а она не работает подскажите в чем ошибка - Pascal ABC
Из целочисленного массива Х удалить все числа, превышающие среднее арифметическое простых элементов массива program f1; var x:arrayof...

Не работает программа, в чём ошибка? - Pascal
Программа считает корни уравнения методом приближений и методом Ньютона, выбивает ошибку 207. Помогите найти проблему ,пожалуйста. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 17:26
Привет! Вот еще темы с ответами:

Программа не работает. Ошибка - Нельзя преобразовать тип IntegerField к integer. Как исправить? - Pascal
uses FormsABC; var a,b,sum,prod: IntegerField; d: Button; procedure MyClick; begin prod.Value := a.Value *...

Программа не работает в Turbo но работает в ABC - Pascal ABC
запуская в ABC всё работает отлично но когда запускаю программу с точно таким же кодом в Турбо так ошибка деления на ноль

Ошибка "операнды имеют неприводимые типы" в чем ошибка? - Pascal ABC
Привет форумчане! Скажите в чем ошибка? при компилировании, выходит ошибка &quot;операнды имеют неприводимые типы&quot; что это может быть {1)...

в чем ошибка - Pascal
привет. в чем тут ошибка program Held; var s,1: integer; begin s:=1; i:=1; while i&lt;5 do begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.