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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2015, 01:12   #1
votsar
Пользователь
 
Регистрация: 27.11.2015
Сообщений: 22
По умолчанию Паскаль.Даны два символьных массива,в каждом из которых нет повторяющихся элементов.Есть ли в массивах разные элементы?

Паскаль.Даны два символьных массива,в каждом из которых нет повторяющихся элементов.Есть ли в массивах разные элементы?Напишите программу.
votsar вне форума Ответить с цитированием
Старый 27.11.2015, 09:08   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
логичное ф = 0
для і от леваяграницаА до праваяграницаА
   для j от леваяграницаB до праваяграницаB
    если а[i] = b[j] тогда ф = 1; выход цикла для
   конец для
конец для
если ф тогда вывод сообщения "есть совпадения"
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.11.2015, 09:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

есть ещё достаточно экзотическое решение с помощью использования множеств
Но сразу предупреждаю, это не пойдёт в Unicode-версиях Паскаля (FreePascal/свежие версии Delphi и т.п.)
но в старом добром "классическом" Паскале отработает как надо!


Код:
const
  n = 5;
var a, b, res : set of char;
  m1, m2 : array[1..5] of char;
  i, cnt : integer;
begin
  WriteLn('Программа определения различных символов в двух массивах');
  {ввод массива m1 и заполнение множества a}
  a:=[];
  i:=1;
  repeat
    Write('Введите ',i,'-й элемент первого массива: ');
    Read(m1[i]);
    if m1[i] in a then WriteLn('Неверно! Такой символ уже есть в массиве!')
    else begin Include(a, m1[i]); Inc(i)  end;
  until i>n;
  {ввод массива m2 и заполнение множества b}
  b:=[];
  i:=1;
  repeat
    Write('Введите ',i,'-й элемент второго массива: ');
    Read(m2[i]);
    if m2[i] in b then WriteLn('Неверно! Такой символ уже есть в массиве!')
    else begin Include(b, m2[i]); Inc(i)  end;
  until i>n;
  
  {ввод закончен. Теперь, собственно,сама программа!}
  res := (a-b)+(b-a);
  cnt := 0;
  for i:=0 to 255 do
    if chr(i) in res then Inc(cnt);

  if cnt=0 then WriteLn('В массивах нет разных символов')
   else WriteLn('В массивах есть различные элементы в количестве ',cnt,' шт.');

end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2015, 11:39   #4
votsar
Пользователь
 
Регистрация: 27.11.2015
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
есть ещё достаточно экзотическое решение с помощью использования множеств
Но сразу предупреждаю, это не пойдёт в Unicode-версиях Паскаля (FreePascal/свежие версии Delphi и т.п.)
но в старом добром "классическом" Паскале отработает как надо!


Код:
const
  n = 5;
var a, b, res : set of char;
  m1, m2 : array[1..5] of char;
  i, cnt : integer;
begin
  WriteLn('Программа определения различных символов в двух массивах');
  {ввод массива m1 и заполнение множества a}
  a:=[];
  i:=1;
  repeat
    Write('Введите ',i,'-й элемент первого массива: ');
    Read(m1[i]);
    if m1[i] in a then WriteLn('Неверно! Такой символ уже есть в массиве!')
    else begin Include(a, m1[i]); Inc(i)  end;
  until i>n;
  {ввод массива m2 и заполнение множества b}
  b:=[];
  i:=1;
  repeat
    Write('Введите ',i,'-й элемент второго массива: ');
    Read(m2[i]);
    if m2[i] in b then WriteLn('Неверно! Такой символ уже есть в массиве!')
    else begin Include(b, m2[i]); Inc(i)  end;
  until i>n;
  
  {ввод закончен. Теперь, собственно,сама программа!}
  res := (a-b)+(b-a);
  cnt := 0;
  for i:=0 to 255 do
    if chr(i) in res then Inc(cnt);

  if cnt=0 then WriteLn('В массивах нет разных символов')
   else WriteLn('В массивах есть различные элементы в количестве ',cnt,' шт.');

end.
вот что он мне выдает
Изображения
Тип файла: jpg п.jpg (75.3 Кб, 113 просмотров)
votsar вне форума Ответить с цитированием
Старый 27.11.2015, 12:04   #5
votsar
Пользователь
 
Регистрация: 27.11.2015
Сообщений: 22
По умолчанию

Просит ввести только i-ый элемент первого массива и выполняет программу(
votsar вне форума Ответить с цитированием
Старый 27.11.2015, 12:09   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

такого просто не может быть.
Что у Вас за Паскаль?

дело в том, что для строчки кода
Код:
    Write('Введите ',i,'-й элемент первого массива: ');
НЕ МОЖЕТ вывести сообщение "Введите i-й элемент....."
вместо i будет выводится ЧИСЛО.
если это не так - выбрасывайте этот Паскаль в помойку.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2015, 12:14   #7
votsar
Пользователь
 
Регистрация: 27.11.2015
Сообщений: 22
По умолчанию

да, все правильно,выводит сообщение введите 1-й элемент первого массива
после ввода завершает программу
votsar вне форума Ответить с цитированием
Старый 27.11.2015, 12:19   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы так и не ответили, какой у Вас Паскаль...

и я не могу понять, ПОЧЕМУ ВЫ программу НАБИРАЛИ ВРУЧНУЮ!
при этом с ошибками?!!
Выделить тут, на форуме, скопировать в буфер обмена, открыть любой текстовый редактор, вставить код программы
и сохранить в текстовый файл с расширением .PAS - неужели это так сложно?!!!!


Теперь об ошибках.
Вы при переносе программы, например, неверно задаёте условие выхода из цикла!
сравните
Код:
until i>n;
и что Вы написали...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2015, 12:30   #9
votsar
Пользователь
 
Регистрация: 27.11.2015
Сообщений: 22
По умолчанию

турбо паскаль.
Не знал что так можно((сейчас сделаю
votsar вне форума Ответить с цитированием
Старый 27.11.2015, 12:32   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

хм..у меня закосячило на вводе 1 масива. Приглашает ввести 1-й елемент, ввожу 1 жме ентер, дальше пишет с новой строки приглашения ввода 2-3 елементов и только после 4-го приглашения можна ввести новое значение
Изображения
Тип файла: jpg ATT.jpg (98.5 Кб, 66 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть два массива. Записать в выходной файл числа от 1 до N, которых в этих двух массивах нет dimon_snake Паскаль, Turbo Pascal, PascalABC.NET 3 06.11.2015 00:12
Удалить слова, у которых нет повторяющихся букв Odent Паскаль, Turbo Pascal, PascalABC.NET 3 30.09.2015 12:50
Даны три одномерных массива. В каждом массиве вычислить сумму четных элементов и вывести на экран максимальную из них. Яночка190 Общие вопросы Delphi 0 14.01.2013 15:00
Ассемблер.Заданы два массива слов.сли в каждом из них есть 2 отрицательных числа, то каждый 2-й элемент Лилея Помощь студентам 0 21.01.2011 20:20
Даны три массива по 10 элементов в каждом. ЮРИЙ ЮРЫЧ Помощь студентам 0 23.12.2009 19:38