Структуры данных: массивы (PascalABC.NET)

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

Массивы

Задачи

Вывод всех целых чисел массива через пробел циклом For

1 Begin    
2   var a := Arr(1, 3, 6, 33, 21, 67, 4);
3   for var i := 0 to a.Length-1 do
4   begin
5     Write($'{a[i]} ');
6   end;
7   Writeln();
8   a.Print();
9 end.

Сделать массив из первых n нечётных чисел

Вариант 1

1 // var a: array of integer;
2 Begin  
3   var n := ReadInteger('Введите n:');
4   var a := new integer[n];
5   for var i := 0 to n-1 do
6     a[i] := 2*(i+1) - 1;
7   a.Print;
8 end.

Вариант 2

1 Begin    
2   var n := ReadInteger('Введите n:');
3   var a := SeqGen(n, i -> 2*(i+1)-1);
4   a.Print;
5 end.

Сгенерировать массив случайных чисел

 1 Begin
 2   var a: array of integer;
 3   a := new integer[10];
 4   Randomize();
 5   for var i := 0 to a.Length-1 do
 6     a[i] := -10 + random(21); // 21 = 10 - (-10) + 1
 7   
 8 //  var a := SeqRandomInteger(10, -10, 10).ToArray();  
 9   
10   a.Print();
11 end.

Вывести все содержащиеся в массиве нечетные числа в порядке возрастания их индексов, а также их количество

 1 Begin
 2   var count := 0;
 3   var a := SeqRandomInteger(10, 0, 100).ToArray();  
 4   a.Println();
 5   
 6   for var i := 0 to a.Length-1 do
 7   begin
 8     if (a[i] mod 2 = 1) then
 9     begin
10       Write($'{a[i]} ');
11       count += 1;
12     end;
13   end;
14   Writeln();
15   
16   Writeln($'Количество нечётных чисел = {count}.');
17 end.

Разделить массив на два: на положительные+ноль и отрицательные числа

Вариант 1

 1 Begin
 2   var count := 0;
 3   var a := SeqRandomInteger(10, -100, 100).ToArray();  
 4   a.Println();
 5   
 6   var pos := new integer[10];
 7   var posIndex := 0;
 8   var neg := new integer[10];
 9   var negIndex := 0;
10   
11   for var i := 0 to a.Length-1 do
12   begin
13     if (a[i] >=0) then
14     begin
15       pos[posIndex] := a[i];
16       posIndex += 1;
17     end
18     else
19     begin
20       neg[negIndex] := a[i];
21       negIndex += 1;
22     end;
23   end;
24   
25   for var i := 0 to posIndex-1 do Write($'{pos[i]} ');
26   Writeln();
27   for var i := 0 to negIndex-1 do Write($'{neg[i]} ');
28   Writeln();
29 end.

Вариант 2

 1 Begin
 2   var count := 0;
 3   var a := SeqRandomInteger(10, -100, 100).ToArray();  
 4   a.Println();
 5   
 6   var pos := new List<integer>();  
 7   var neg := new List<integer>();
 8   
 9   for var i := 0 to a.Length-1 do
10   begin
11     if (a[i] >=0) then
12       pos.Add(a[i])
13     else
14       neg.Add(a[i]);
15   end;
16   
17   pos.Println();
18   neg.Println();
19 end.

Вариант 3

 1 Begin
 2   var count := 0;
 3   var a := SeqRandomInteger(10, -100, 100).ToArray();  
 4   a.Println();
 5   
 6   var pos := a.Where(num -> num >= 0).ToArray();
 7   var neg := a.Where(num -> num <  0).ToArray();
 8   
 9   pos.Println();
10   neg.Println();
11 end.

Задачник