ГДЗ Информатика 10 класс Семакин §26 Типовые задачи обработки массивов

1. Какими способами можно заполнить массив значениями?

Вопросы и задания

1 способ: генератор случайных чисел

2 способ: непосредственно ввод с клавиатуры

3 способ: присваивания элементам массива определённых значений

4 способ: заполнение массива с помощью формул

5 способ: заполнение массива из внешнего файла.

 

2. Как можно вычислять целые случайные числа в диапазоне от -50 до 0?

Writeln(-50+(Random(50)))

3. Как можно вычислять вещественные случайные числа в диапазоне от 2,5 до 10?

Writeln(2.5+(Random(7.5)))

4. Даны два вектора {xi}, {yi}, i = 1, . . ., 10, упорядоченные по возрастанию. Соедините их в один вектор {zi}, i = 1, . . ., 20 так, чтобы сохранилась упорядоченность.

begin   var a := ArrRandomInteger(10);

 a.Sort;

   var b := ArrRandomInteger(10);

 b.Sort;

   var c := new integer[20];

      writeln('Array 1:');

 a.println;

   writeln('Array 2:');

 b.println;

      var i := 0;

   var j := 0;

   var k := 0;

   while (i < 10) and (j < 10) do   begin     if a[i] < b[j] then     begin       c[k] := a[i];

       i := i + 1;

     end else begin       c[k] := b[j];

       j := j + 1;

     end;

     k := k + 1;

   end;

   while i < 10 do   begin     c[k] := a[i];

     i := i + 1;

     k := k + 1;

   end;

   while j < 10 do   begin     c[k] := b[j];

     j := j + 1;

     k := k + 1;

   end;

      writeln('Merged array:');

 c.println;

 end.

5. Дан массив, состоящий из 100 целых чисел. Выведите все числа, которые встречаются в этом массиве:

а) несколько раз;

 

б) только по одному разу.

А)

var a:array[1..100] of integer;

 i,j:integer;

 procedure swap(var x,y: integer);

    var t: integer;

  begin     t := x;

     x := y;

     y := t  end;

 begin for i:=1 to 100 do a[i]:=random(100);

 for j:=1 to 99 do for i:=1 to 100-j do if a[i] > a[i+1] then swap(a[i],a[i+1]);

 for i:=2 to 99 do if (a[i]=a[i+1]) or (a[i]=a[i-1]) then writeln('a[',i,']=',a[i]);

 end.

 

Б)

var a:array[1..100] of integer;

 i,j:integer;

 procedure swap(var x,y: integer);

    var t: integer;

  begin     t := x;

     x := y;

     y := t  end;

 begin for i:=1 to 100 do a[i]:=random(100);

 for j:=1 to 99 do for i:=1 to 100-j do if a[i] > a[i+1] then swap(a[i],a[i+1]);

 if a[1]<>a[2] then writeln('a[1]=',a[1]);

 for i:=2 to 99 do if (a[i]<>a[i+1]) and (a[i]<>a[i-1]) then writeln('a[',i,']=',a[i]);

 if a[100]<>a[99] then writeln('a[100]=',a[100]);

 end.

 

6. В целочисленной матрице размером 10 х 10 найдите максимальное значение и индексы всех элементов, равных ему.

var ar: array[1..10,1..10] of integer;

 i,j,max,count:integer;

 begin count:=1;

 max:=0;

 randomize;

 for i:=1 to 10 do begin for j:=1 to 10 do begin ar[i,j]:=random(10)+1;

 if (j mod 10=0) then writeln(ar[i,j]) else write(ar[i,j],’ ‘);

 if (ar[i,j] > max) then max:=ar[i,j];

 end;

 end;

 

for i:=1 to 10 do

begin for i:=1 to 10 do

begin for j:=1 to 10 do

begin if (ar[i,j] = max) then

begin writeln(‘Индекс ‘,count,’ элемента = ‘,i,’ ‘,j);

 inc(count);

 end;

 end;

 end;

 end.

 

7. Матрицу размером 5 х 10 заполните случайными двоичными цифрами (0 и 1). Определите номер строки с наибольшим количеством нулей.

Var   x: Array[1..5,1..10] of Integer;

   i,j,max,t,st: Integer;

 BEGIN Writeln(‘Матрица:’);

 For i:=1 to 5 do begin   For j:=1 to 10 do   begin     x[i,j]:=Random(2);

     If x[i,j]=0 Then Inc(t);

     Write(x[i,j]:2);

   end;

   If t>max Then   begin     max:=t;

     st:=i;

   end;

   t:=0;

   Writeln end;

 Writeln(‘Строка с наиб. кол-вом нулей: ‘,st);

 END.

8. В двоичной матрице размером 10 х 10 (см. задание 7) найдите совпадающие строки.

type   matrix = array [1..5, 1..10] of byte;

   var   a: matrix;

   i, j, sum, nom, max: integer;

   begin   randomize;

   for i := 1 to 5 do     for j := 1 to 10 do       a[i, j] := random(2);

   for i := 1 to 5 do   begin     for j := 1 to 10 do       write(a[i, j], ‘ ‘);

     writeln;

   end;

   nom := 0;

max := 0;

   for i := 1 to 10 do   begin     sum := 0;

     for j := 1 to 5 do     begin       if a[j, i] = 0 then       begin         inc(sum);

       end;

     end;

     if sum > max then     begin       nom := i;

       max := sum;

     end;

     sum := 0;

   end;

   writeln(‘номер столбца ‘, nom);

 end.

 

 

Сообщить о неточной информации
Проверочный код, год рождения Д.И.Менделеева:
В каком задании/вопросе ошибка:
Как должно быть: