4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
1

Массив: Найти min и max в двух заданных массивах, а разницу этих значений записать в массив С...

18.03.2018, 14:56. Показов 3146. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны два массива, обозначим их A и B. Найти максимальный и минимальный элемент из двух массивов (в каждом массиве по 3 элементов), вычесть их (максимальный-минимальный) и полученный элемент записать в массив C. Например:
A:=514
B:=985
C:=840
Есть свое решение, но оно длинное и не рабочее. Однако мне нужен алгоритм, а не решение. Поэтому буду благодарен за подсказку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2018, 14:56
Ответы с готовыми решениями:

Найти max и min элементы массива y и сформировать массив z из элементов массива y, находящихся между max и min y. Записать массив z в обратном порядке
Дан массив Х{80 элементов}. Вычислить {y}_{i}=sin\sqrt{{x}_{i}}+{cos}^{2}{{x}_{1}}^{2} Найти...

Массив: Получить новый массив путем исключения Min и Max значений исходного массива...
Из исходного массива получить новый массив, из которого выбросить максимальное и минимальное...

Массив: Сформировать массив, элементами которого являются разности max и min значений элементов строк матрицы...
Работа с одномерными и двумерными массивами. Дана матрица A размером NxM. Сформировать и вывести...

Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив
Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив

11
Aimez-vous les baguettes?
193 / 26 / 27
Регистрация: 25.10.2017
Сообщений: 165
18.03.2018, 19:30 2
Можно массивы как структуру записать было? (value, value, value), условие непонятное.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7792 / 4616 / 2829
Регистрация: 22.11.2013
Сообщений: 13,111
Записей в блоге: 1
18.03.2018, 19:37 3
8, 4, 0 как получилось?
0
Aimez-vous les baguettes?
193 / 26 / 27
Регистрация: 25.10.2017
Сообщений: 165
18.03.2018, 19:40 4
Вы меня заинтриговали: в массиве по 3 элемента, значит A = (5, 1, 4) , B = (9, 8, 5). Минимум равен 1, Максимум - 9. Разность равна 8. В массиве C должно быть: (8, 0, 0), а у Вас (8, 4, 0).

Добавлено через 3 минуты
Pascal
1
2
3
4
5
6
7
8
9
Var
  A,B,C: array of integer;
Begin
  SetLength(A,3); SetLength(B,3); SetLength(C,3);
  For var i:= 0 to 2 do A[i]:= ReadlnInteger('A['+ i +'] = ');
  For var i:= 0 to 2 do B[i]:= ReadlnInteger('B['+ i +'] = ');
  C[0]:= Max(A.Max,B.Max) - Min(A.Min, B.Min);
  Writeln(C[0]);
end.
0
4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
22.03.2018, 22:16  [ТС] 5
alex5code, прошу прощение за формулировку. Не правильно понял суть задачи. Задача такая:
Кликните здесь для просмотра всего текста
Многозначные целые числа А и В заданы одномерными массивами
своих цифр А=(A1, A2, …, AN), B=(B1, B2, …, BN). Например, число 572
представлено как массив из трёх элементов (5, 7, 2). Составить алгоритм
нахождения разности этих чисел (из большего вычесть меньшее). Результат
вычислений представить в виде массива чисел С=(С1, С2, …, СК)

Вот, то что успел написать за несколько часов:
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
program tur1_4;
   uses crt;
   var A,B,C: array [0..10000] of integer;
         N,i: byte;
         F: boolean;
begin
   ClrScr;
   writeln('Сколько знаков числа будет: ');
   read(N);
   write('Введите значения массива А: ');
   for i:=1 to N do begin
                      read(A[i]);
                    end;
   write('Введите значение массива B: ');
   for i:=1 to N do begin
                      read(B[i]);
                    end;
   for i:=1 to (N+1) do begin
                      if (A[i]>B[i]) then begin
                                             C[i]:=A[N-i]-B[N-i];
                                          end
                      else if (A[i]<B[i]) then begin
                                                 if (A[N-i]<B[N-i]) then begin 
                                                                            A[i]:=A[N]+1;
                                                                            C[i]:=A[i]-B[N-i];
                                                                         end;
                                               end;
                    end;
   for i:=1 to N do begin
                      write(C[i]);
                    end;
   while not keypressed do;
end.
И логика, если я правильно понял:
5 7 2
3 1 2
-----
2 6 0 (программа выводит 620)
0
Status 418
Эксперт Python
4581 / 2348 / 602
Регистрация: 26.11.2017
Сообщений: 5,264
Записей в блоге: 3
23.03.2018, 06:32 6
Лучший ответ Сообщение было отмечено bormant как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
begin
  var (a, b) := ReadInteger2;
  var (x, y) := (a.ToString, b.ToString);
  var maxlen := Max(x.Count, y.Count);
  x := x.PadLeft(maxLen, '0');
  y := y.PadLeft(maxLen, '0');
  var c := x.Zip(y, (i, j)-> Max(i.ToDigit, j.ToDigit) - Min(i.ToDigit, j.ToDigit)).ToArray;
  c.Println;
end.
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,045
23.03.2018, 09:09 7
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

eaa, конструкцию можно сократить:
Pascal
7
  var c := x.Zip(y, (i, j)-> abs(i.ToDigit - j.ToDigit)).ToArray;
0
4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
28.03.2018, 14:49  [ТС] 8
eaa, JuriiMW, да, но как же использование массивов? Впрочем, решение найдено, но ваша идея меня подтолкнула, спасибо.
0
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,045
29.03.2018, 06:57 9
a.ToString — получаем массив символов!

.ToArray — получаем массив чисел!

c.Println — выводим массив чисел!

Какие ещё вам массивы нужны?
0
4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
21.04.2018, 19:20  [ТС] 10
JuriiMW, здравствуйте. Разобрался в чем тут дело, наконец. У Вас просто оптимизированный код, с которым ранее не сталкивался. Я же использовал совсем иные "технологии":
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
program tur1_3;
   uses crt;
   type chislo= array [1..10] of integer;
   var A,B,C,s1,s2: chislo;
        K,N,i: byte;
           F: boolean;
   {-------------Установка большего и меньшего числа ------------}
   procedure maxmin(N1:byte; s,g: chislo; var max,min: chislo);
     var l: byte;
   begin
     for l:=1 to N1 do begin
                         max[l]:=s[l];
                         min[l]:=g[l];
                       end;
   end;
  {-----------------------------------------------------------------------------}
begin
   ClrScr;
   writeln('Введите количество цифр : ');
   read(N);
   for i:=1 to N do begin
                      writeln('Введите ',i,'-ю цифру  числа  A: ');
                      readln(A[i]);
                      writeln('Введите ',i,'-ю цифру числа  B: ');
                      readln(B[i]);
                    end;
   F:=false;
   i:=1;
   while (F=false) do
     begin
        if A[i]>B[i] then begin
                            writeln('Большее число в массиве A ');
                            F:=true;
                            maxmin(N,A,B,s1,s2);
                          end;
        if B[i]>A[i] then begin
                            writeln('Большее число в массиве B');
                            F:=true;
                            maxmin(N,B,A,s1,s2);
                            end;
        if A[i]=B[i] then i:=i+1;
     end;
 
   for i:=N downto 1 do
       begin
         if s1[i]>=s2[i]
         then C[i]:=s1[i]-s2[i]
         else begin
              s1[i]:=s1[i]+10;
              C[i]:=s1[i]-s2[i];
              s1[i-1]:=s1[i-1]-1;
              end;
       end;
   for i:=1 to N do
     write(A[i]);
   writeln;
   for i:=1 to N do
     write(B[i]);
   writeln;
   for i:=1 to N do
     write(C[i]);
  while not keypressed do;
end.
Однако это не оптимизировано, да и много тут надо доделывать. Лишние нули (незначащие) не отбрасывает и т.д.
Извините за оффтоп, очень хочется представить свой код.
0
Модератор
9996 / 5354 / 3337
Регистрация: 17.08.2012
Сообщений: 16,324
23.04.2018, 02:28 11
Цитата Сообщение от Uni_programist Посмотреть сообщение
У Вас просто оптимизированный код
Uni_programist, ничего подобного. Просто Вы написали программу на Pascal ABC, а JuriiMW - на Pascal ABC.NET. Это совершенно разные диалекты паскаля.
0
4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
23.04.2018, 22:52  [ТС] 12
Cyborg Drone, просто вот эти конструкции пока что мне не знакомы, возможно я их ранее видел, но на практике применять не приходилось.
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Просто Вы написали программу на Pascal ABC, а JuriiMW - на Pascal ABC.NET
Ну программа написана была в Free Pascal 2.6.0, но, как оказалось она и работает и в Pascal ABCNET.
0
23.04.2018, 22:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2018, 22:52
Помогаю со студенческими работами здесь

Образовать массив из элементов, встречающихся одновременно в двух заданных массивах
Даны два массива. Образовать третий массив из элементов встречающихся в обоих массивах.

Сформировать одномерный массив из произведений max и min значений матрицы
Не могу сформировать одномерный массив из произведений max и min значений матрицы А:( Dim...

Сгенерировать массив. Вывести массив. Найти и вывести max и min значения элементы массива, а так же их индексы
Сгенерировать массив. Вывести массив. Найти и вывести max и min значения элементы массива, а так же...

Найти разницу между min и max числами
нужно найти разницу между min и max числами безумно нужна помощь! Добавлено через 52 минуты...

Дан одномерный массив A[N]. Найти max(a2,a4,...a2*k)+min(a1,a3,...,a2*k+1
Дан одномерный массив A. Найти max(a2,a4,...a2*k)+min(a1,a3,...,a2*k+1=-O)

Дан массив s[n] найти min и max элементы массива
Помогите решить Дан массив s найти min и max элементы массива


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru