Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2008, 22:08   #1
koir
 
Регистрация: 08.06.2008
Сообщений: 5
По умолчанию help.Паскаль 7.0.Принадлежность A к B:ошибка в while надо 2 оператора

ЗАДАНИЕ:
По предлагаемому алгоритму, написать программу.
На Вход подаются: Два упорядоченных множества A и B (массивы).
Нужно проверить, принадлежит A к B или нет. Если да, то 1, нет, то 0.
Выход: да или нет (1 или 0, true или false).

ОПИСАНИЕ АЛГОРИТМА (по нему программу составит нужно):
i:=1; j:=1; // указатели на начало множеств
пока i№ |A|+1 и j№ |B|+1 цикл
если A[i] < B[j] то вернуть 0 и выход // элемент A отсутствует в B
иначе если A[i] > B[j] то j:=j+1 // переход к след. элементу B
иначе // элементы совпали – перейти к следующим
i:=i+1; j:=j+1;
конец если
конец цикла
если i=|A|+1 то вернуть 1 иначе вернуть 0.<


ЧТО Я ДЕЛУЮ:
Код:
uses crt; 
const n=5; 
var a: array [1..n] of integer; 
var b: array [1..n] of integer;
var i,j,x,y: integer; 
begin 
clrscr; 
writeln('a[i]'); 

for i:=1 to n do 
begin write('Eneter ',i,' Element : '); 
readln(x); a[i]:=x; 
end; 

writeln; writeln('b[i]'); 

for i:=1 to n do begin write('Eneter ',i,' Element : '); 
readln(y); b[i]:=y; 
end; 

i:=1; j:=1; 
while (a[i]+1) and (b[i]+1) do 
begin 
if a[i] < a[i]+1 then return 0; 
else 
begin 
if a[i] > b[i] then j:=j+1; 
else i:=i+1; j:=j+1; 
end; 
end;
if i:=a[i]+1 then return 1; else return 0; 

readkey; 
end.
пишет ошибку ((( 40-ю boolean expression expected и скорее, всего по устранению этой ошибки, там будут ещё ошибки. Я новичок, но стараюсь.

СКАЖИТЕ, ЧТО ДЕЛАЮ НЕ ТАК:

Пожалуйста, ответьте, горит.

From Stilet: Что бы ты не делал но пост свой оформляй читабельно - если вставляешь код то оформляй его в специальные теги кода.

Последний раз редактировалось Stilet; 09.06.2008 в 07:56.
koir вне форума Ответить с цитированием
Старый 08.06.2008, 22:24   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

А какое выражение Вам нужно в условии цикла? Объединять их можно как угодно с помощью логических операций AND, OR, NOT и скобок, но это должны быть булевы выражения, а не "|A|+1". Пока не совсем ясно, что нужно, посмотрите скажем на поиск подстроки в строке: http://programmersforum.ru/showpost....9&postcount=13 - тоже, своего рода, поиск подмножества.

По второму вопросу
Цитата:
Что такое упорядоченный массив (множество) (не точно знаю)?
Ну как что. Массив, который как-либо упорядочен - по возрастанию, убыванию, чётности и т.п.
B_N вне форума Ответить с цитированием
Старый 09.06.2008, 00:21   #3
koir
 
Регистрация: 08.06.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
А какое выражение Вам нужно в условии цикла?
ну ведь там указано на вход подаются два множества (массивы). допустим одномерные.

Цитата:
Сообщение от B_N Посмотреть сообщение
Объединять их можно как угодно с помощью логических операций AND, OR, NOT и скобок, но это должны быть булевы выражения, а не "|A|+1". Пока не совсем ясно, что нужно, посмотрите скажем на поиск подстроки в строке: http://programmersforum.ru/showpost....9&postcount=13 - тоже, своего рода, поиск подмножества.
while ( a[i]+1 ) and ( b[i]+1 ) do
все равно пишет ошибку 40-ую . ниже приведу весь код, который написал.

Цитата:
Сообщение от B_N Посмотреть сообщение
По второму вопросу
Ну как что. Массив, который как-либо упорядочен - по возрастанию, убыванию, чётности и т.п.
спасибо, буду теперь точно знать. сомнения были.


Вот, что я делаю:
код переместил в первое сообщение.

Последний раз редактировалось koir; 09.06.2008 в 00:28.
koir вне форума Ответить с цитированием
Старый 09.06.2008, 03:56   #4
Snoopy
Форумчанин Подтвердите свой е-майл
 
Аватар для Snoopy
 
Регистрация: 14.01.2008
Сообщений: 163
По умолчанию

Цитата:
while ( a[i]+1 ) and ( b[i]+1 ) do
все равно пишет ошибку 40-ую .
Вам же B_N написал что в условиях цикла должно быть логическое выражение
К примеру
Код:
while ((a[i]+1)<0) and ((b[i]+1)>0) do
Snoopy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Надо написать прогу АРМ оператора обменного пукта валют Александр Светлов Фриланс 4 10.11.2008 21:51
Вчем ошибка?(Паскаль) NTFS Помощь студентам 1 03.04.2008 08:58
Подскажите где у меня ошибка(Паскаль) NTFS Помощь студентам 3 02.04.2008 19:28
Помоги с задачей плз очень надо.Паскаль menlo Помощь студентам 7 03.11.2007 16:40