Const N = 3; M = 4; Var A:array[1..N,1..M] of integer; i,j,iMax:integer; S,Max:real; Begin Randomize; WriteLn('Исходная матрица:'); For i:= 1 to N do Begin For j:= 1 to M do Begin A[i,j]:=random(21)-10; Write(A[i,j]:3,' '); End; WriteLn End; Max:=0; iMax:=1; For j:= 1 to M do Max:=Max+A[1,j]; For i:= 2 to N do Begin For j:= 1 to M do S:=S+A[i,j]; if S>Max then Begin Max:=S; iMax:=i; End; End; Write('Искомая строка:'); For j:= 1 to M do Write(' ',A[iMax,j]) End.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк в матрице:'); var m:=ReadInteger('Количество столбцов в матрице:'); Writeln('*** Исходная матрица [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); Writeln('Строка с наибольшей суммой:'); a.Row(a.Rows.Select(r->r.Sum).ToArray.IndexMax).Println end.
2. Школьное решение в стиле языка ТурбоПаскаль 1983г
const nn=20; var i,j,n,m,k,s,max:integer; a:array[1..nn,1..nn] of integer; begin Write('Количество строк в матрице: '); Read(n); Write('Количество столбцов в матрице :'); Read(m); Writeln('*** Исходная матрица [',n,',',m,'] ***'); Randomize; max:=-100; for i:=1 to n do begin s:=0; for j:=1 to m do begin a[i,j]:=Random(199)-99; Write(a[i,j]:4); s:=s+a[i,j] end; Writeln; if s>max then begin max:=s; k:=i end end; for i:=1 to 4*n do Write('-'); Writeln; Writeln('Строка с наибольшей суммой:'); for j:=1 to m do Write(a[k,j],' '); Writeln end.
Gennadevna-Darya1216
18.12.2022
1. Современное короткое, но скорее всего, мало понятное школьнику решение
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 function LineLen(a,b:(real,real)):= Sqrt(Sqr(b.Item1-a.Item1)+Sqr(b.Item2-a.Item2));
begin var a:array[1..3] of (real,real); var x,y:real; Writeln('Введите три пары координат x,y'); for var i:=1 to 3 do begin Read(x,y); a[i]:=(x,y) end; Writeln('Периметр треугольника равен ',LineLen(a[1],a[2])+ LineLen(a[1],a[3])+LineLen(a[2],a[3])) end.
Тестовое решение: Введите три пары координат x,y 3 -3.5 -6 8 4 5.2 Периметр треугольника равен 33.7449685386805
2. Традиционное, но возможно тоже не очень понятное школьнику решение
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 type Point=record x,y:real end;
function LineLen(a,b:Point):real; begin Result:=Sqrt(Sqr(b.x-a.x)+Sqr(b.y-a.y)); end;
var a:array[1..3] of Point;
begin Writeln('Введите три пары координат x,y'); for var i:=1 to 3 do Read(a[i].x,a[i].y); Writeln('Периметр треугольника равен ',LineLen(a[1],a[2])+ LineLen(a[1],a[3])+LineLen(a[2],a[3])) end.
Svetlaru70
18.12.2022
1. Программа, создающая тестовый файл.
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 begin var f: file of integer; var t:integer; Assign(f,'input.dat'); Rewrite(f); for var j:=1 to 5 do begin for var i:=1 to 10 do begin t:=Random(10,99); Write(f,t) end; for var i:=1 to 10 do begin t:=-Random(10,99); Write(f,t) end end; f.Close; end.
2. Программа, которую требовалось написать
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 begin var f,g: file of integer; var a:=new integer[20]; var t:integer; Assign(f,'input.dat'); Reset(f); Assign(g,'output.dat'); Rewrite(g); while not f.Eof do begin for var i:=0 to 19 do Read(f,a[i]); a:=a[10:15]+a[0:5]+a[15:20]+a[5:10]; for var i:=0 to 19 do Write(g,a[i]) end; f.Close; g.Seek(0); while not g.Eof do begin Read(g,t); Print(t) end; g.Close end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Напишите программу, которая выводит на экран строку матрицы, сумма значений элементов которой наибольшая (pascal)
N = 3;
M = 4;
Var
A:array[1..N,1..M] of integer;
i,j,iMax:integer;
S,Max:real;
Begin
Randomize;
WriteLn('Исходная матрица:');
For i:= 1 to N do
Begin
For j:= 1 to M do
Begin
A[i,j]:=random(21)-10;
Write(A[i,j]:3,' ');
End;
WriteLn
End;
Max:=0;
iMax:=1;
For j:= 1 to M do
Max:=Max+A[1,j];
For i:= 2 to N do
Begin
For j:= 1 to M do
S:=S+A[i,j];
if S>Max then
Begin
Max:=S;
iMax:=i;
End;
End;
Write('Искомая строка:');
For j:= 1 to M do
Write(' ',A[iMax,j])
End.
Пример работы программы:
Исходная матрица:
8 0 -7 -1
-2 -10 -4 -10
5 -1 10 -6
Искомая строка: 8 0 -7 -1