Сравнение элементов векторов - Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Дали такую задачу: даны два вектора одинаковой длины, надо сравнить их и если элементы в этих векторах совпадают, то вывести на экран "да", в противном случае "нет". Пытался через множества сравнить, но не получилось. Например даны вектора: 2 1 2 0 0 1 2 2 все элементы в них одинаковые, надо вывести на экран "да", но сравнивая множествами не выходит, так как множества не учитывают повторение элементов, например: 2 2 1 0 2 1 0 0 Паскаль выводит мне "да", хотя вектора отличаются по элементам. Вот код через множества, может кто нибудь сможет помочь, каким то иным способом:
Листинг программы
  1. program p;
  2. const
  3. n = 3;
  4. vect_min=0;
  5. vect_max=2;
  6. var
  7. vector1,vector2:array[1..n] of integer;
  8. a, b, c:set of 0..9;
  9. i, j:integer;
  10.  
  11. begin
  12. randomize;
  13. for i:=1 to n do
  14. begin
  15. vector1[i]:=random(vect_max-vect_min+1)+vect_min;
  16. include(a,vector1[i]);
  17. end;
  18. writeln;
  19. for i:=1 to n do
  20. begin
  21. vector2[i]:=random(vect_max-vect_min+1)+vect_min;
  22. include(b,vector2[i]);
  23. end;
  24. for i:=1 to n do
  25. begin
  26. write(' ',vector1[i]);
  27. end;
  28. writeln;
  29. for i:=1 to n do
  30. begin
  31. write(' ',vector2[i]);
  32. end;
  33. writeln;
  34. c:=a-b;
  35. if (a=b) then
  36. writeln('В векторах одинаковые элементы');
  37. if (a<>b) then
  38. writeln('В векторах разные элементы');
  39. end.
Заранее благодарю!

Решение задачи: «Сравнение элементов векторов»

textual
Листинг программы
  1. var a,b:array[1..nmax] of integer;
  2.     n,i,j,k,p:byte;
  3. begin
  4. repeat
  5. write('Размер массивов n=');
  6. readln(n);
  7. until n in [1..nmax];
  8. writeln('Введите элементы вектора А:');
  9. for i:=1 to n do
  10.  begin
  11.   write('al[',i,']=');
  12.   readln(a[i]);
  13.  end;
  14. writeln('Введите элементы вектора B:');
  15. for i:=1 to n do
  16.  begin
  17.   write('bl[',i,']=');
  18.   readln(b[i]);
  19.  end;
  20. writeln('Вектор A:');
  21. for i:=1 to n do
  22. write(a[i],' ');
  23. writeln;
  24. writeln('Вектор B:');
  25. for i:=1 to n do
  26. write(b[i],' ');
  27. writeln;
  28. i:=1;
  29. while i<=n do
  30.  begin
  31.   j:=1;p:=0;
  32.   while j<=n do
  33.    begin
  34.     if b[j]=a[i] then //если нашли одинаковую пару
  35.      begin
  36.       p:=1;
  37.       for k:=i to n-1 do //удаляем эти элементы из своих массивов
  38.       a[k]:=a[k+1];
  39.       for k:=j to n-1 do
  40.       b[k]:=b[k+1];
  41.       n:=n-1;//умньшаем n
  42.       break;
  43.      end
  44.     else j:=j+1;
  45.    end;
  46.   if p=0 then i:=i+1;
  47.  end;
  48. if n=0 then write('Да')
  49. else write('Нет');
  50. end.

Объяснение кода листинга программы

  1. Создаются два массива a и b типа array[1..nmax] of integer.
  2. Переменные n, i, j, k, p инициализируются.
  3. В цикле repeat-until запрашивается размер массивов n и проверяется, что n не превышает nmax.
  4. В цикле for считываются элементы вектора a и записываются в соответствующие ячейки массива a.
  5. Аналогично считываются элементы вектора b и записываются в соответствующие ячейки массива b.
  6. Выводится содержимое векторов a и b.
  7. Запускается цикл while, который выполняется, пока не будет найдена пара элементов в векторах a и b.
  8. Внутри цикла while переменная j инициализируется значением 1, а переменная p устанавливается равной 0.
  9. Цикл for считывает элементы векторов a и b с индексами от i до n-1 и удаляет их из соответствующих массивов.
  10. Если цикл завершается без прерывания, то переменная p устанавливается равной 1.
  11. Если цикл завершается, то переменная i увеличивается на 1.
  12. Если цикл завершается и p равно 0, то выводится буква Д.
  13. Если цикл завершается и p не равно 0, то выводится буква Н.
  14. Если n равно 0, то выводится буква Д.
  15. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы