1. Дан одномерный целочисленный массив А, состоящий из N элементов, N - заданное...

0 голосов
104 просмотров

1. Дан одномерный целочисленный массив А, состоящий из N элементов, N - заданное натуральное число. Элемент Ai (i=1,2,3…, N) назовем особыми, если он больше суммы остальных элементов. Составить одномерный массив В из особых элементов массива А, оканчивающихся на 5. Если таких элементов нет, то выдать соответствующее текстовое сообщение.2.Дан одномерный массив А, состоящий из N элементов, N - заданное натуральное число. Сколько значений элементов в массиве А встречается .более одного раза.(Язык Паскаль)


Информатика (20 баллов) | 104 просмотров
0

Язык какой ?

0

Какой?

0

Паскаль

0

Есть какие-то требования/ограничения по решению? Эффективность, запрет на использование чего-то, кроме одномерных массивов и т.п.?

0

Никаких ограничений или требований нет

0

Тогда можно писать не ломая голову эффективностью, простейшие многопросмотровые алгоритмы с полным перебором.

0

Например, по первой задаче при первом просмотре данных сделать список претендентов (чисел, оканчивающихся на 5), а при втором промотре выкинуть те, которые не подойдут по ограничению на сумму.

0

Можно было бы по мере ввода данных сразу просматривать массив, но если буквально следовать услорвию, массив уже имеется ("ДАН одномерный..."), поэтому часть программы по созданию и заполнению массива фактически не относится к решению.

0

И, раз ничего не сказано, как массив заполнен, есть резон заполнять его случайными числами, чтобы не париться во вводом на каждом запуске.

Дан 1 ответ
0 голосов

===== PascalABC.NET =====

= 1 =

begin

 var n := ReadInteger('N =');

 var A := ArrRandom(n, -99, 99);

 A.Println;

 // собственно, решение

 var s := A.Sum; // сумма всех элементов массива

 var L := new List; // то, что войдет в массив В

 // берем каждого претендента и сравниваем его с остальной суммой

 for var i := 0 to A.High do

   if (Abs(A[i] mod 10) = 5) and (A[i] > s - A[i]) then

     L.Add(A[i]);

 var B := L.ToArray;

 if B.Length > 0 then

 begin

   Print('Особые элементы:');

   B.Print

 end  

 else

   Print('Нет "особых" элементов');

end.

= 2 =

begin

 var n := ReadInteger('N =');

 var A := ArrRandom(n, -10, 10);

 A.Println;

 // собственно, решение

 var D := new Dictionary; // словарь

 foreach var k in A do // перебор элементов

   if D.ContainsKey(k) then

     D[k] += 1 // +1, если такой элемент был

   else

     D.Add(k, 1); // 1, если элемент встретился впервые

 D.Count(p -> p.Value > 1).Print

end.


image
image
(1.6k баллов)