Дан массив а размерностью (m, n). найти произведение положительных элементов расположенных выше диагонали и заменить все нулевые элементы исходного массива на полученное произведение.
Var ma:array of array of integer; n,m,i,j,res:integer; b:boolean; begin randomize; res:=1; b:=false; read(m,n); setlength(ma,m); for i:=0 to m-1 do setlength(ma[i],n); writeln('First matrix:'); for i:=0 to m-1 do begin writeln; for j:=0 to n-1 do begin ma[i,j]:=random(10); write(ma[i,j]:5); end; end; if n>m then begin for i:=0 to m-1 do for j:=i+1 to n-1 do if ma[i,j]>0 then begin; res:=res*ma[i,j]; b:=true; end; end else begin for i:=0 to n-1 do for j:=i+1 to n-1 do if ma[i,j]>0 then begin; res:=res*ma[i,j]; b:=true; end; end; if b=false then res:=0; writeln; writeln('Final array:'); for i:=0 to m-1 do begin writeln; for j:=0 to n-1 do begin if ma[i,j]=0 then ma[i,j]:=res; write(ma[i,j]:5); end; end; writeln; writeln('res=',res); end.
1. PascalABC.NET 3.3.5, сборка 1644 от 23.03.2018 Внимание! Если программа не работает, обновите версию!
begin var (a,b):=ReadInteger2; Range(a,b).Aggregate(Biginteger(1),(p,q)->p*q).Println end.
Результат показан во вложении 1. Большое число получилось)))
2. Free Pascal
program ideone;
var a,b,i:integer; p:extended;
begin Read(a,b); p:=1; for i:=a to b do p:=p*i; Writeln(p) end.
Результат приведен во вложении 2. К сожалению, на интервале данных [1;2018] в этой версии Паскаля недостаточно диапазона значений представляемого результата и было вычислено произведение на [1;1000]. Для [1;2018] выводится Inf - машинная бесконечность.
Язык C++. 1. #include <iostream> using namespace std; int main() { int i; cout <<"Введите число: " << endl; cin >> i; cout << "Вы ввели число: " << i << endl; }
2. #include <iostream> using namespace std; int main (){ int i; cout << "Vvod" << endl; cin >> i; i %= 10; if(i %2 != 0) cout << "Нечетная" << endl; else cout << "Четная" << endl; }
3. #include<iostream> using namespace std; int main (){ for(int k = 0; k<4; k++){ cout << "random number = " << rand() << endl; } }
4. #include <iostream> using namespace std; int main(){ int i,a,b,c; cin >> i; c = i%10; b =(i/10)%10; a = i/100; if(i*i==a*a*a+b*b*b+c*c*c) cout<<"Является."<<endl; else cout<<"Не является."<<endl; }
5. #include <iostream> #include <cmath> const double pi = 3.1415926536; using namespace std; int main(){ float x = 0; cout << "Введите x: " << endl; cin >> x; cout << "y = " << sin((pi*(3.2+(sqrt(1+x))))/180)/abs(5*x) << endl; }
Добавляем "pi" и делим на 180, чтобы "sin" был в градусах.
Var
ma:array of array of integer;
n,m,i,j,res:integer;
b:boolean;
begin
randomize;
res:=1;
b:=false;
read(m,n);
setlength(ma,m);
for i:=0 to m-1 do
setlength(ma[i],n);
writeln('First matrix:');
for i:=0 to m-1 do
begin
writeln;
for j:=0 to n-1 do
begin
ma[i,j]:=random(10);
write(ma[i,j]:5);
end;
end;
if n>m then
begin
for i:=0 to m-1 do
for j:=i+1 to n-1 do
if ma[i,j]>0 then
begin;
res:=res*ma[i,j];
b:=true;
end;
end
else
begin
for i:=0 to n-1 do
for j:=i+1 to n-1 do
if ma[i,j]>0 then
begin;
res:=res*ma[i,j];
b:=true;
end;
end;
if b=false then res:=0;
writeln;
writeln('Final array:');
for i:=0 to m-1 do
begin
writeln;
for j:=0 to n-1 do
begin
if ma[i,j]=0 then ma[i,j]:=res;
write(ma[i,j]:5);
end;
end;
writeln;
writeln('res=',res);
end.