Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 14

Сравнение элементов 3 массивов из 10 чисел

22.08.2020, 10:21. Показов 2672. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Уважаемое сообщество,
Ни подскажете как сравнить элементы 3 масивов из 10 чисел на равенство, одного числа в 1 массиве, со 2 числом во 2 и 3 массииве,
Есть 3 массива из 10 натуральных чисел, эти числа вводятся пользователем с клавиатуры,
После их ввода их, эти числа 1,2, и 3 массива нужно сравнить, равны ли они между собой
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
var
  a:array[1..10] of integer;
  b:array[1..10] of integer;
  c:array[1..10] of integer;
 i,j,k: integer;
Begin
 
Writeln('введите 1 карточку, это 10 целых чисел в строку через пробел');
for i:=1 to 10 do
 Begin
   Read(a[i]);
   Write(' ',a[i]);
 End;
   Readln;
   Readln;
 
Writeln('введите 2 карточку, это 10 целых чисел в строку через пробел');
for j:=1 to 10 do
 Begin
   Read(b[j]);
   Write(' ',b[j]);
 End;
   Readln;
   Readln;
 
Writeln('введите 3 карточку, это 10 целых чисел в строку через пробел');
for k:=1 to 10 do
 Begin
   Read(c[k]);
   Write(' ',c[k]);
 End;
   Readln;
   Readln;
 
x:=0;
 for i:=1 to 10 do
 for j:=1 to 10 do
 for k:=1 to 10 do
 if a[i]=b[j]=c[k] then x:=x+1;
 Write('Число ',a[i],' повторяется ',x,' раз' в карточке ', ,' ?? )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.08.2020, 10:21
Ответы с готовыми решениями:

Сравнение элементов массивов
дан массив из 6ти элементов и дан массив из трех элементов .надо заполнить третий массив который не будет содержать элементы второго...

Сравнение элементов массивов
Даны два массива натуральных чисел A(m) и B(n). Найти наибольший элемент в массиве А, которого нет в массиве В......Помогите решить,...

Сравнение двух массивов чисел в эксель
Приветствую всех. Нужна помощь с экселем. Есть два массива чисел, нужно найти и похожесть в процентах. Например один массив от другого...

40
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 14
23.08.2020, 16:28  [ТС]
Студворк — интернет-сервис помощи студентам
Pascal
x:=0;
 for i:=1 to 10 do
 for j:=1 to 10 do
 for k:=1 to 10 do
 if (a[i]=b[j]) and (a[i]=c[k]) then x:=x+1;
 Write('Число ',a[i],' повторяется ',x,' раз' в карточке ', ,' ?? )
readln;
но все должно работать, почему одинаковые числа, не выводятся
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
23.08.2020, 20:51
Психоделика какая то. Попробую реализовать, но там будет непростое решение. Завтра вечером отпишу, вышло или нет.

Добавлено через 3 минуты
Так погоди. У тебя есть три массива, тебе что нужно? А) Сравнивать абсолютно все элементы между собой? Б) Сравнение элементов трех массивов по индексам? a[1] c, b[1], c c[1]?
0
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 14
24.08.2020, 17:47  [ТС]
Blocked,
куда вы пропали, как дела, вышла ли у вас реализация задачи
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
25.08.2020, 06:28
Так ты мне ответь на мой вопрос, я его задал выше
0
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 14
25.08.2020, 14:22  [ТС]
Blocked,
У нас есть 3 массива из 10 элементов, каждый, элементы каждого массива, это числа,
Нужно сравнить абсолютно все элементы массивов между собой,
Сравнение элементов этих 3 массивов идёт по индексам, a[i], b[j], и c[k]
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
25.08.2020, 14:47
Тут самое простое как я писал в прошлой теме, это создание буферного массива и его зеркало, куда будут помещены все 30 элементов, и проверить каждый с использованием индекса проверяемого элемента, (чтобы число само себя не считало), в зеркало помещать значение повторения числа по индексу. Будешь ты использовать сразу три массива, либо сгонишь все в один, здесь как не крути, ты будешь привязан к конкретному числу итераций проверки.
0
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 14
25.08.2020, 14:53  [ТС]
А какой код использовать ?
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
25.08.2020, 15:15
Скину чуть позже целиком код программы
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
25.08.2020, 15:25
Цитата Сообщение от it-coder Посмотреть сообщение
А какой код использовать ?
it-coder, я не очень понимаю, что тебе нужно получить в итоге, а от этого сильно зависит алгоритм сравнения и выдачи результата.

в качестве чернового варианта попробуй такой код:
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
var
  a:array[1..10] of integer;
  b:array[1..10] of integer;
  c:array[1..10] of integer;
  i,j, x, y, z: integer;
Begin
 
  Writeln('введите 1 карточку, это 10 целых чисел в строку через пробел');
  for i:=1 to 10 do Read(a[i]);
  Readln;
 
  Writeln('введите 2 карточку, это 10 целых чисел в строку через пробел');
  for i:=1 to 10 do Read(b[i]);
  Readln;
 
  Writeln('введите 3 карточку, это 10 целых чисел в строку через пробел');
  for i:=1 to 10 do  Read(c[i]);
  Readln;
 
  {совпадения чисел из первого массива со вторым и с третьим, а так же второго с третьим}
  for i:=1 to 10 do begin
    x := 0;
    y := 0;
    for j:=1 to 10 do begin
        if a[i]=b[j] then inc(x);
        if a[i]=c[j] then inc(y);
    end;
   
    z:=0;
    for j:=1 to 10 do 
      if b[i]=c[j] then inc(z);
 
    if x>0 then
        Writeln('Число ',a[i],' из карточки 1 повторяется  ',x,' раз во второй карточке.' );
    if y>0 then
        Writeln('Число ',a[i],' из карточки 1 повторяется  ',y,' раз в третьей карточке.' );
    if z>0 then
        Writeln('Число ',b[i],' из карточки 2 повторяется  ',z,' раз в третьей карточке.' );
  end;
  
  ReadLn
end.
если на примере покажешь, что тебя в результатах не устраивает, поправлю.
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
25.08.2020, 16:52
Вот если оно, добавлю комментарии для ясности работы.
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
const
  arr_length = 10;
var
  a,b,c:array[1..arr_length] of integer;
  buff,x_buff:array[1..arr_length * 3] of integer;
  crd, crd_num, x_crd_num, val:integer;
begin
  for crd := 1 to 3 do
    begin
      writeln('Ввод карты №: '+crd);
      for crd_num := 1 to arr_length do
        begin
          Write('Ввод карты №: '+crd+' значения '+crd_num+' : ');
          readln(val);
          case crd of
            1 : a[crd_num] := val;
            2 : b[crd_num] := val;
            3 : c[crd_num] := val;
          end;
        end;
    end;
  for crd := 1 to 3 do
    for crd_num := 1 to arr_length do
      case crd of
       1 : buff[crd_num] := a[crd_num];
       2 : buff[crd_num + arr_length] := b[crd_num];
       3 : buff[crd_num + arr_length * 2] := c[crd_num];
      end;
  for crd_num := 1 to arr_length * 3 do
    for x_crd_num := 1 to arr_length * 3 do
        if (crd_num <> x_crd_num) then
          if (buff[crd_num] = buff[x_crd_num]) and (buff[x_crd_num] <> -1) then
            begin
              inc(x_buff[crd_num]);
              buff[x_crd_num] := -1;
            end;         
  for crd := 1 to 3 do
    begin
      write('Карта номер: '+crd+' : ');
      for crd_num := 1 to arr_length do
       case crd of
        1 : write(' '+a[crd_num]);
        2 : write(' '+b[crd_num]);
        3 : write(' '+c[crd_num]);
       end;
      writeln;
    end;
  for crd_num := 1 to arr_length * 3 do
    if x_buff[crd_num] <> 0 then
        begin
          inc(x_buff[crd_num]);
          writeln('Число: '+buff[crd_num]+' повторяется: '+x_buff[crd_num] + ' раз.');
        end;
  readln;
end.
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
27.08.2020, 16:03
Извиняюсь за долгое отсутствие, я дополнил программу, но руки не дошли закинуть пораньше, в дополнении пишет какое число сколько повторяется в каждой из карт
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
79
const
  arr_length = 10;
var
  a,b,c:array[1..arr_length] of integer;
  buff,x_buff:array[1..arr_length * 3] of integer;
  arr_val:array[1..3] of integer;
  crd, crd_num, x_crd_num, val:integer;
begin
  for crd := 1 to 3 do
    begin
      writeln('Ввод карты №: '+crd);
      for crd_num := 1 to arr_length do
        begin
          Write('Ввод карты №: '+crd+' значения '+crd_num+' : ');
          readln(val);
          case crd of
            1 : a[crd_num] := val;
            2 : b[crd_num] := val;
            3 : c[crd_num] := val;
          end;
        end;
    end;
  for crd := 1 to 3 do
    for crd_num := 1 to arr_length do
      case crd of
       1 : buff[crd_num] := a[crd_num];
       2 : buff[crd_num + arr_length] := b[crd_num];
       3 : buff[crd_num + arr_length * 2] := c[crd_num];
      end;
  for crd_num := 1 to arr_length * 3 do
    for x_crd_num := 1 to arr_length * 3 do
        if (crd_num <> x_crd_num) then
          if (buff[crd_num] = buff[x_crd_num]) and (buff[x_crd_num] <> -1) then
            begin
              inc(x_buff[crd_num]);
              buff[x_crd_num] := -1;
            end;         
  for crd := 1 to 3 do
    begin
      write('Карта номер: '+crd+' : ');
      for crd_num := 1 to arr_length do
       case crd of
        1 : write(' '+a[crd_num]);
        2 : write(' '+b[crd_num]);
        3 : write(' '+c[crd_num]);
       end;
      writeln;
    end;
  crd_num := 1;
  while crd_num < arr_length * 3 do
    begin
    if x_buff[crd_num] <> 0 then
      begin
      for crd := 1 to 3 do
        begin
        for x_crd_num := 1 to arr_length do
           case crd of
             1 : if a[x_crd_num] = buff[crd_num] then inc(arr_val[crd]);
             2 : if b[x_crd_num] = buff[crd_num] then inc(arr_val[crd]);
             3 : if c[x_crd_num] = buff[crd_num] then inc(arr_val[crd]);   
           end;   
        end;
        for val := 1 to 3 do
            if arr_val[val] <> 0 then writeln(' Число: '+buff[crd_num]+' в карте №: '+val+' повторяется: '+arr_val[val]+' раз.');
        for val := 1 to 3 do
          arr_val[val] := 0;
        end;
        inc(crd_num);
     end; 
  {  
  for crd_num := 1 to arr_length * 3 do
    if x_buff[crd_num] <> 0 then
        begin
          inc(x_buff[crd_num]);
          writeln('Число: '+buff[crd_num]+' повторяется: '+x_buff[crd_num] + ' раз.');
        end;
  }
  readln;
end.
0
 Аватар для ogner
22 / 26 / 4
Регистрация: 26.03.2017
Сообщений: 193
04.09.2020, 12:32
Blocked, Что это за конструкции такие? Какой Pascal такое распознать может?
Pascal
1
write('Карта номер: '+crd+' : ');
1
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
04.09.2020, 13:16
Цитата Сообщение от ogner Посмотреть сообщение
Какой Pascal такое распознать может?
PascalABC.NET понимает такую конструкцию, он умеет вызывать нужные методы, в частности, в коде
Pascal
1
2
3
4
5
var crd : Integer;
begin
  for crd := 1 to 3 do
      write('Карта номер: '+crd+' : ');
end.
он у crd вызовет метод .ToString
т.е. по факту будет строчка
Pascal
1
      write('Карта номер: '+crd.ToString+' : ');
Но я согласен, писать такое в ветке Pascal - моветон и нарушение!

впрочем, TC на эту тему давно забил, вот Blocked и резвится.
1
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
04.09.2020, 17:14
Какое еще нарушение? Если там автоматически адаптирует целочисленное под вывод в строку, зачем усложнять если это предусмотрено?
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
04.09.2020, 17:22
Вот вам пример
Миниатюры
Сравнение элементов 3 массивов из 10 чисел   Сравнение элементов 3 массивов из 10 чисел  
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
04.09.2020, 17:28
Второй косячный, вот перескринил
Миниатюры
Сравнение элементов 3 массивов из 10 чисел  
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
04.09.2020, 17:41
Посмотри на свое решение, где там перевод целочисленных массивов в строку?
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
04.09.2020, 17:50
Цитата Сообщение от Blocked Посмотреть сообщение
Если там автоматически адаптирует целочисленное под вывод в строку, зачем усложнять если это предусмотрено?
Ты реально не понимаешь, чем ветка https://www.cyberforum.ru/pascal/ отличается от ветки https://www.cyberforum.ru/pascalabc-net/ ?

Поясню, в этой ветке обсуждается код, который подходит для любой версии Паскаля, соответствующей стандарту (для простоты скажем ISO 7185)
Не понимаешь, что это означает? поясню, это такой код, который скомпилируется и будет корректно работать в разные IDE/компиляторах Паскаля. Например, во Free Pascal.

а то, что на PascalABC.NET можно всяких уродцев и монстров плодить, так это не новость.
Вот тебе, например, код на PascalABC.NET
тыц
Pascal
1
2
3
begin
  SeqWhile(ReadInteger, i -> i div 10, i -> i > 0).Sum(i -> i mod 10).Print
end.
и вот - тыц
Pascal
1
2
3
4
5
6
7
8
##
var n := ReadlnInteger('Введите число n = ');
var k := ReadlnInteger('Сколько раз должно встретиться это число в ряду. k = ');
var MaxInSeqNk := k div 2 + n;  //  Максимальное число в ПодРяду где N встречается k-ый раз
var IndexEndOfSeqNk := MaxInSeqNk * MaxInSeqNk; // Индекс конца ПодРяда где N k-й раз
var IndexNk := IndexEndOfSeqNk - MaxInSeqNk + 1  // Сдвиг до индекса максимаольного числа ПодРяда
  + if k.IsEven then -(MaxInSeqNk - n) else MaxInSeqNk - n; // Сдвиг влево или вправо от макс.числа до Nk
$'"{n}" встречается {k}-й раз в позиции: {IndexNk}'.Println
и вот
Pascal
1
2
3
4
uses School;
begin
  Factorize(ReadInteger).Print
end.
Это всё тоже Pascal?

Просто если ты пишешь код под PascalABC.NET, так и пиши его в соответствующем разделе, а тут, будь добр, используй стандарты языка Pascal.

впрочем, это моё личное мнение, которое тебя ни к чему не обязывает.
0
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 172
04.09.2020, 17:52
Посмотри на свое решение, зачем ты мне это пишешь, если сам ошибаешься?
0
 Аватар для mr-Crocodile
3054 / 1673 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
04.09.2020, 17:57
Цитата Сообщение от Blocked Посмотреть сообщение
Посмотри на свое решение, где там перевод целочисленных массивов в строку?
нигде нет.
потому что я нигде к строке String не прибавляю число Integer

а Write / Writeln описаны в стандарте языка Паскаль.
и да, там через запятую можно указывать переменные РАЗНОГО типа.

Добавлено через 2 минуты
смотри сюда - https://ideone.com/dNMO1p
Pascal
1
2
3
4
5
6
7
program ideone;
var 
  i : integer;
begin
    for i:=1 to 3 do
      Writeln('Число повторяется  ',i,' раз во второй карточке.' )
end.
а теперь вставь туда свой код и попробуй выполнить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2020, 17:57

Сравнение двух массивов чисел в эксель
Приветствую всех. Возникла проблема с сравнением массивов в экселе. Суть вопроса: есть два массива чисел разной длины. Их нужно сравнить,...

Сравнение элементов двух массивов
#include &lt;iostream&gt;; #include &lt;iostream&gt; #include&lt;locale&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Rus&quot;); int a; ...

Сравнение массивов на совпадение элементов
есть два целочисленных массива одинаковой длины,нужно вывести количество совпадающих элементов

Сравнение элементов двух массивов
Здравствуйте. Необходимо сравнить элементы двух массивов (всё тянется из бд), и если элементы совпадут, то вывести строки с...

Сравнение элементов строковых массивов
Всем привет и всех с прошедшим! :) При разработке программки столкнулся с проблемой: есть 2 строковых массива типа String^, нужно...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru