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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2011, 11:43   #1
just4smth
_____________
Пользователь
 
Регистрация: 14.05.2011
Сообщений: 30
По умолчанию [Pascal] Нахождение одинаковых элементов в 2-х одномерных числовых массивах

Задание:
Цитата:
Даны два одномерных числовых массива. Есть ли у них одинаковые элементы?
Реализация:
Код:
Program var15_odnomernii_massiv;
Uses crt;
Const n=3;
Var a:array [1..n] of integer;
    b:array [1..n] of integer;
    i,j:integer;
    rav:boolean;

Begin
        clrscr;
        Writeln('Введите элементы первого массива');
        for i:=1 to n do
            Readln(a[i]);
        Writeln('Введите элементы второго массива');
        for j:=1 to n do
            Readln(b[j]);

        for i:=1 to n do
           for j:=1 to n do
              if a[i]=b[j] then
                 rav:=true
              else
                 rav:=false;

        if rav=true then
           Writeln('Одинаковые элементы есть')
        else
           Writeln('Одинаковых элементов нет');


        Readln;
End.
Но получается так, что переменная rav принимает значение истины, если массивы полностью одинаковые.
Подскажите, как исправить?
just4smth вне форума Ответить с цитированием
Старый 14.05.2011, 11:50   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> как исправить?

Код:
rav := false;
i := 1;
while (not rav and (i <= n)) do begin
           for j:=1 to n do
              if a[i]=b[j] then begin
                 rav:=true
                 break;
             end;
  inc(i);
end;
в паскале же есть break; вроде как.

Код:
if rav=true then
если масло маслянное. Достаточно просто "if rav then"
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 14.05.2011 в 11:53.
veniside вне форума Ответить с цитированием
Старый 14.05.2011, 12:11   #3
just4smth
_____________
Пользователь
 
Регистрация: 14.05.2011
Сообщений: 30
По умолчанию

Цитата:
если масло маслянное. Достаточно просто "if rav then"
Точно.

Спасибо, буду разбираться.
just4smth вне форума Ответить с цитированием
Старый 14.05.2011, 14:19   #4
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Вот программа без brake
Код:
Program Project1;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const n=3;
Var a:array [1..n] of integer;
    b:array [1..n] of integer;
    i,j:integer;
    rav:boolean;

  Begin
 writeln('enter first array');
        for i:=1 to n do
            Readln(a[i]);
         writeln('enter second array');
        for j:=1 to n do
            Readln(b[j]);
       repeat
        rav:=false;
        for i:=1 to n do
           for j:=1 to n do
              if a[i]=b[j] then
                 rav:=true;
                 i:=n;
       until(rav)or(i=n);
        if rav then
           Writeln('true')
        else
           Writeln('false');
        Readln;
End.
Антон Лысенко вне форума Ответить с цитированием
Старый 14.05.2011, 14:24   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Вот программа без brake
бред какой то)
Код:
 rav:=false;
        for i:=1 to n do
           for j:=1 to n do
              if a[i]=b[j] then
                 rav:=true;
не надо тут repeat-until либо цикл for надо поменять либо на while либо на все тот же repeat
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 14.05.2011, 14:28   #6
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
Смущение

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
бред какой то)
Код:
 rav:=false;
        for i:=1 to n do
           for j:=1 to n do
              if a[i]=b[j] then
                 rav:=true;
не надо тут repeat-until либо цикл for надо поменять либо на while либо на все тот же repeat
почему? что тут бредового?)
Антон Лысенко вне форума Ответить с цитированием
Старый 14.05.2011, 14:36   #7
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

а понял что repeat здесь не нужно))) можно просто так:
Код:
 rav:=false;
        for i:=1 to n do
           for j:=1 to n do
              if a[i]=b[j] then
                 rav:=true;
Антон Лысенко вне форума Ответить с цитированием
Старый 14.05.2011, 14:37   #8
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

да то что
Код:
for i:=1 to n do
for j:=1 to n do
в любом случае отработает до конца и твои repeat until нафиг не нужны
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 14.05.2011, 14:37   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как минимум то, что вы забыли begin end в цикле и программа делает немного не то, что вы предлагали.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.05.2011, 14:37   #10
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

ой блин я опять тупанул) здесь можно сообщения удалять?)
Антон Лысенко вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ наследование классов. очень простая ошибка, немогу разобраться в выводе при одинаковых массивах Sanu0074 Помощь студентам 1 02.06.2010 10:33
немного о одномерных массивах Алекс К. Помощь студентам 2 10.03.2009 19:38
Нахождение двух одинаковых элементов в массиве Stas))) Помощь студентам 4 01.06.2007 12:23