Структуры данных: массивы (PascalABC.NET)
Версия от 12:09, 17 июня 2021; Безуглов Сергей (обсуждение | вклад)
Массивы
- Статические массивы
- Динамические массивы
- Учебный модуль для работы с массивами
- Алгоритмы и методы работы с массивами
- Подпрограммы для генерации последовательностей (документация)
Задачи
Вывод всех целых чисел массива через пробел циклом 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.