Дан двумерный массив целых чисел. в пятой строке имеются элементы, равные 13. определить номер столбца, в котором расположен самый левый из таких элементов. (в паскале)
// PascalABC.NET 3.2, сборка 1370 от 24.12.2016 // Внимание! Если программа не работает, обновите версию!
begin var m:=ReadInteger('Количество строк в массиве:'); var n:=ReadInteger('Количество столбцов в массиве:'); var a:=MatrFill(m,n,0); for var i:=0 to m-1 do for var j:=0 to n-1 do Read(a[i,j]); Writeln('В 5-й строке число 13 встречено в колонке ', a.Row(4).IndexOf(13)+1) end.
Пример Количество строк в массиве: 7 Количество столбцов в массиве: 8 -4 10 -6 19 -3 -6 18 -9 16 12 18 8 14 11 4 10 -10 -4 -7 13 11 -4 4 -2 -6 1 11 8 1 11 7 8 18 6 14 -7 -8 13 5 13 -1 6 14 8 -5 11 -2 -5 20 16 7 -4 6 5 20 -10 В 5-й строке число 13 встречено в колонке 6
) от единиц, справа налево отсчитывать разряды - единицы, десятки, сотни... и выясняем, что 6 - это десятки миллионов. И говорим: "шесть/десят семь миллионов...". Переходя к математической записи можно заметить, что 67453422 = 6 × 10⁷ + 7 × 10⁶ + 4 × 10⁵ + 5 × 10⁴ + 3 × 10³ + 4 × 10² + 2 × 10¹ + 2 × 10⁰ Если число не целое, то десятичную дробь мы тоже может записать по разрядам. Рассмотрим пример. 0.384 - это ноль целых и триста (три сотни) восемьдесят (восемь десятков) четыре тысячных. Но это число можно представить и иначе: И теперь пример нецелого числа. 192.64 = 1 × 10² + 9 × 10¹ + 2 × 10⁰ + 6 × 10⁻¹ + 4 × 10⁻² Мы проставляем степени десяти начиная с нулевой для позиции единиц влево с нарастанием на единицу и вправо с уменьшением на единицу. Это и есть расширенная запись числа. Но её можно проводить по любому основанию, а не только по основанию 10. В частности, для двоичной системы мы будем записывать степени уже не десятки. а двойки. 11.101₂ = 1 × 2¹ + 1 × 2⁰ + 1 × 2⁻¹ + 0 × 2⁻² + 1 × 2⁻² И останется только выполнить нужные действия. На единицу можно не умножать, достаточно просто брать сами значения степеней двойки, а на ноль тоже незачем умножать - просто отбрасывать соответствующие слагаемые. Получаем 2¹ + 2⁰ + 2⁻¹ + 2⁻³ = 2 + 1 + 1/2 + 1/8 = 3 + 0.5 + 0.125 = 3.625 Вот и все! Так же поступаем и с прочими примерами. 101.1₂ = 2² + 2⁰ + 2⁻¹ = 4 + 1 + 1/2 = 5.5 1101.1101₂ = 2³ + 2² + 2⁰ + 2⁻¹ + 2⁻² + 2⁻⁴ = 8 + 4 + 1 + 1/2 + 1/4 + 1/16 = 13 + (8+4+1)/16 = 13 + 13/16 = 13.8125
Var a: array[1..8] of integer; i, b, min: integer; begin b := 1; for i := 1 to 8 do begin write('Введите ', i, '-ый элемент массива '); Readln(a[i]); //Вводим число if i = 1 then min := a[i] else // Если это первое число то min:= это число if min > a[i] then begin //Если min оказывается больше введённого числа min := a[i]; //то min:= это чило b := i; //и переменной b := номер этого числа в массиве end; end; Write('Первоначальный массив | '); for i := 1 to 8 do write(a[i], ' '); // Выводим этот массив Writeln('| Индекс минимального элемента ', b, '. Число ', a[b]); // Переменную b и элемент стоящий на месте b Write('Преобразованный массив| '); for i := 1 to 8 do begin a[i] := a[i] - min; //Преобразуем массив вычитая из элемента i - min write(a[i], ' '); // И сразу выводим преобразованное число end; write('|'); end. //конец
// Внимание! Если программа не работает, обновите версию!
begin
var m:=ReadInteger('Количество строк в массиве:');
var n:=ReadInteger('Количество столбцов в массиве:');
var a:=MatrFill(m,n,0);
for var i:=0 to m-1 do
for var j:=0 to n-1 do Read(a[i,j]);
Writeln('В 5-й строке число 13 встречено в колонке ',
a.Row(4).IndexOf(13)+1)
end.
Пример
Количество строк в массиве: 7
Количество столбцов в массиве: 8
-4 10 -6 19 -3 -6 18 -9
16 12 18 8 14 11 4 10
-10 -4 -7 13 11 -4 4 -2
-6 1 11 8 1 11 7 8
18 6 14 -7 -8 13 5 13
-1 6 14 8 -5 11 -2 -5
20 16 7 -4 6 5 20 -10
В 5-й строке число 13 встречено в колонке 6