Pascal abc.для двумерного массива 9*9 найдите элемент, который расположен «по центру» (т.е. от него до левого края и до правого края, до верхнего края и до нижнего края одинаковое расстояние). какая у него координата?
//PascalABC.NET 3.1 сборка 1219 procedure PrintMatrix(a: array[,] of integer); begin for var i := a.GetLowerBound(0) to a.GetUpperBound(0) do begin writeln; for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do write(a[i, j], ' '); end; writeln; end;
begin var a := MatrixRandom(9, 9, 10, 99); PrintMatrix(a); var i := (a.GetLowerBound(0) + a.GetUpperBound(0)) div 2 + (a.GetLowerBound(0) + a.GetUpperBound(0)) mod 2; var j := (a.GetLowerBound(1) + a.GetUpperBound(1)) div 2 + (a.GetLowerBound(1) + a.GetUpperBound(1)) mod 2; writeln('A[', i, ', ', j, '] = ', a[i, j]); end.
Когда читаешь подобные условия, возникает чувство, что оно плохо переведено с другого языка. Так вроде нет - в профиле указано, что язык русский и возраст 15 лет...
"Ввести натуральное число". Какое число, что оно должно обозначать? Ну хорошо, ввели некое число. Далее: "Ввести количество чисел". Количество - это значит, СКОЛЬКО чисел будет обрабатываться в программе. Допустим, 10. И теперь: "Найти произведение...". А где взять значения этих чисел? А нигде! Зато дадут "много ". Ни языка программирования, ни даже намека на то, что нужна программа. А может, программа и не нужна, а нужна блок-схема? ... И только определенный опыт подсказывает, что "Ввести натуральное число" на самом деле означает "Ввести количество чисел", а "Ввести количество чисел" на самом деле подразумевает ввести сами эти числа в указанном количестве.
var n,m,i:integer; p:longint; begin Write('Количество чисел: '); Read(n); p:=1; Writeln('Введите указанное количество целых чисел'); for i:=1 to n do begin Read(m); if m<0 then p:=p*m end; Writeln('Произведение отрицательных числе равно ',p) end.
Тестовое решение: Количество чисел: 6 Введите указанное количество целых чисел 45 -12 -2 6 0 -8 Произведение отрицательных числе равно -192
Var a:array [1..20] of integer; i,p:integer; n:real; m:longint; begin n:=0; p:=0; m:=1; write ('Массив: '); for i:=1 to 20 do begin a[i]:=random(101)-50; write (a[i],' '); end; for i:=1 to 20 do begin n:=n+a[i]; end; n:=n/20; writeln; writeln; write ('Среднее арифметическое = ',n); for i:=1 to 19 do begin if a[20]<>a[i] then p:=p+1; end; writeln; write ('Кол-во чисел отличных от последнего в массиве = ',p); for i:=1 to 20 do begin if a[i]<0 then m:=m*a[i]; end; writeln; write ('Произведение отрицательных чисел массива = ',m); end.
procedure PrintMatrix(a: array[,] of integer);
begin
for var i := a.GetLowerBound(0) to a.GetUpperBound(0) do
begin
writeln;
for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do
write(a[i, j], ' ');
end;
writeln;
end;
begin
var a := MatrixRandom(9, 9, 10, 99);
PrintMatrix(a);
var i := (a.GetLowerBound(0) + a.GetUpperBound(0)) div 2 + (a.GetLowerBound(0) + a.GetUpperBound(0)) mod 2;
var j := (a.GetLowerBound(1) + a.GetUpperBound(1)) div 2 + (a.GetLowerBound(1) + a.GetUpperBound(1)) mod 2;
writeln('A[', i, ', ', j, '] = ', a[i, j]);
end.