// PascalABC.NET 3.2, сборка 1425 от 22.04.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк в матрице:'); var m:=ReadInteger('Количество столбцов в матрице:'); Writeln('*** Исходная матрица [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-9,9); a.Println(3); Writeln(3*a.ColCount*'-'); // 1. удалить строки с нулевыми элементами var v:=a.Rows.Select(x->x.All(y->y<>0)).ToArray; var q:=new integer[v.Where(r->r=true).Count,a.ColCount]; var k:=0; for var i:=0 to v.Count-1 do if v[i] then begin q.SetRow(k,a.Row(i)); k+=1 end; Writeln('Матрица, не содержащая строк с нулями'); a:=Copy(q); a.Println(3); // 2. отсортировать элементы первого столбца по возрастанию a.SetCol(0,a.Col(0).OrderBy(x->x).ToArray); Writeln('Матрица с отсортированной колонкой 1'); a.Println(3); // 3. игры с k и b var b:integer; Write('Введите значения b и 1<=k<=',a.RowCount,': '); Read(b,k); for var j:=k to a.RowCount-1 do a[j,m-1]+=b; Writeln('Матрица с модифицированной последней колонкой'); a.Println(3) end.
Var a,b:integer; Begin Write('a = ');ReadLn(a); Write('b = ');ReadLn(b); if a mod b = 0 then WriteLn(b,' - делитель ',a) else WriteLn(b,' не является делителем ',a) End.
Вторая программа:
Var a,b:real; Begin WriteLn('a и b - катеты прямоугольного треугольника'); Write('a = ');ReadLn(a); Write('b = ');ReadLn(b); WriteLn('S = ',a*b/2); WriteLn('P = ',Sqrt(a*a+b*b)+a+b); End.
Пример работы программы:
a и b - катеты прямоугольного треугольника a = 3 b = 4 S = 6 P = 12
Примечание: программа не проверяет, существует ли треугольник и является ли он прямоугольным.
Третья программа:
Var a,b,c,D:real; Begin WriteLn('ax^2 +bx +c = 0'); Write('a = ');ReadLn(a); Write('b = ');ReadLn(b); Write('c = ');ReadLn(c); D:=b*b-4*a*c; if D < 0 then Write('Действительных корней нет') else Begin WriteLn('x1 = ',(-b-Sqrt(D))/(2*a)); WriteLn('x2 = ',(-b+Sqrt(D))/(2*a)); End End.
Четвёртая программа:
Var a,b,c:real; Begin Write('Введите три числа: ');ReadLn(a,b,c); a:=Abs(a-c); b:=Abs(b-c); if a < b then WriteLn('Первое число ближе к третьему') else if a > b then WriteLn('Второе число ближе к третьему') else WriteLn('Первое и второе число - одинаково близки к третьему') End.
Пример работы программы:
Введите три числа: 1 2 3 Второе число ближе к третьему
Введите три числа: 1 1 3 Первое и второе число - одинаково близки к третьему
Введите три числа: 2 1 13 Первое число ближе к третьему
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-9,9);
a.Println(3); Writeln(3*a.ColCount*'-');
// 1. удалить строки с нулевыми элементами
var v:=a.Rows.Select(x->x.All(y->y<>0)).ToArray;
var q:=new integer[v.Where(r->r=true).Count,a.ColCount];
var k:=0;
for var i:=0 to v.Count-1 do
if v[i] then begin
q.SetRow(k,a.Row(i)); k+=1
end;
Writeln('Матрица, не содержащая строк с нулями');
a:=Copy(q);
a.Println(3);
// 2. отсортировать элементы первого столбца по возрастанию
a.SetCol(0,a.Col(0).OrderBy(x->x).ToArray);
Writeln('Матрица с отсортированной колонкой 1');
a.Println(3);
// 3. игры с k и b
var b:integer;
Write('Введите значения b и 1<=k<=',a.RowCount,': '); Read(b,k);
for var j:=k to a.RowCount-1 do a[j,m-1]+=b;
Writeln('Матрица с модифицированной последней колонкой');
a.Println(3)
end.
Пример
Количество строк в матрице: 5
Количество столбцов в матрице: 8
*** Исходная матрица [5,8] ***
-4 -8 4 -4 8 -6 5 -2
2 -7 -4 6 8 4 9 -8
0 -8 -4 -7 -4 -7 6 -3
6 -4 -8 9 -7 -5 -3 -2
-9 7 -1 -2 -9 9 7 4
Матрица, не содержащая строк с нулями
-4 -8 4 -4 8 -6 5 -2
2 -7 -4 6 8 4 9 -8
6 -4 -8 9 -7 -5 -3 -2
-9 7 -1 -2 -9 9 7 4
Матрица с отсортированной колонкой 1
-9 -8 4 -4 8 -6 5 -2
-4 -7 -4 6 8 4 9 -8
2 -4 -8 9 -7 -5 -3 -2
6 7 -1 -2 -9 9 7 4
Введите значения b и 1<=k<=4: 5 2
Матрица с модифицированной последней колонкой
-9 -8 4 -4 8 -6 5 -2
-4 -7 -4 6 8 4 9 -8
2 -4 -8 9 -7 -5 -3 3
6 7 -1 -2 -9 9 7 9
Замечание: Под удалением без всяких условностей понимается именно удаление. Матрица после удаления просто содержит меньшее количество строк.
Var a,b:integer;
Begin
Write('a = ');ReadLn(a);
Write('b = ');ReadLn(b);
if a mod b = 0 then WriteLn(b,' - делитель ',a)
else WriteLn(b,' не является делителем ',a)
End.
Вторая программа:
Var
a,b:real;
Begin
WriteLn('a и b - катеты прямоугольного треугольника');
Write('a = ');ReadLn(a);
Write('b = ');ReadLn(b);
WriteLn('S = ',a*b/2);
WriteLn('P = ',Sqrt(a*a+b*b)+a+b);
End.
Пример работы программы:
a и b - катеты прямоугольного треугольника
a = 3
b = 4
S = 6
P = 12
Примечание: программа не проверяет, существует ли треугольник и является ли он прямоугольным.
Третья программа:
Var
a,b,c,D:real;
Begin
WriteLn('ax^2 +bx +c = 0');
Write('a = ');ReadLn(a);
Write('b = ');ReadLn(b);
Write('c = ');ReadLn(c);
D:=b*b-4*a*c;
if D < 0 then Write('Действительных корней нет')
else
Begin
WriteLn('x1 = ',(-b-Sqrt(D))/(2*a));
WriteLn('x2 = ',(-b+Sqrt(D))/(2*a));
End
End.
Четвёртая программа:
Var a,b,c:real;
Begin
Write('Введите три числа: ');ReadLn(a,b,c);
a:=Abs(a-c);
b:=Abs(b-c);
if a < b then WriteLn('Первое число ближе к третьему')
else if a > b then WriteLn('Второе число ближе к третьему')
else WriteLn('Первое и второе число - одинаково близки к третьему')
End.
Пример работы программы:
Введите три числа: 1 2 3
Второе число ближе к третьему
Введите три числа: 1 1 3
Первое и второе число - одинаково близки к третьему
Введите три числа: 2 1 13
Первое число ближе к третьему