// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 procedure MatInput(a:array[,] of integer); begin Writeln('Вводите элементы матрицы построчно, в конце нажимая Enter'); for var i:=0 to Length(a,0)-1 do begin Write(i+1,': '); for var j:=0 to Length(a,1)-1 do Read(a[i,j]); end end;
procedure MatPrint(a:array[,] of integer); begin for var i:=0 to Length(a,0)-1 do begin for var j:=0 to Length(a,1)-1 do Print(a[i,j]); Writeln end end;
function IsEqual(a:array[,] of integer; j1,j2:integer; flag:array of boolean):boolean; // равны ли столбцы с индексами j1 и j2 begin if flag[j2]=False then begin Result:=True; for var i:=0 to Length(a,0)-1 do if a[i,j1]<>a[i,j2] then begin Result:=False; Break end; flag[j2]:=Result end end;
begin var n:=ReadInteger('Задайте число строк (столбцов) матрицы:'); var a:array[,] of integer; var m:=ArrFill(n,False); SetLength(a,n,n); MatInput(a); Writeln('*** Принятая матрица ***'); MatPrint(a); var k:=1; for var i:=0 to n-2 do for var j:=i+1 to n-1 do if IsEqual(a,i,j,m) then Inc(k); if k>1 then Writeln('Количество совпадающих столбцов равно ',k) else Writeln('нет совпадающих столбцов') end.
Тестовое решение Задайте число строк (столбцов) матрицы: 3 Вводите элементы матрицы построчно, в конце нажимая Enter 1: 1 2 2 2: 3 5 5 3: 2 2 2 *** Принятая матрица *** 1 2 2 3 5 5 2 2 2 Количество совпадающих столбцов равно 2
На языке С++
Объяснение:
#include <iostream>
using namespace std;
long double fact(int N)
{
if(N < 0) // если пользователь ввел отрицательное число
return 0; // возвращаем ноль
if (N == 0) // если пользователь ввел ноль,
return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1 =)
else // Во всех остальных случаях
return N * fact(N - 1); // делаем рекурсию.
}
int main(){
double ans=1,x;
cin>>x;
double temp=1,tempx,step;
while(temp>=0.000001){
tempx=1;
for(int i=1;i<step;i++)
tempx *= x;
temp = tempx / fact(step);
ans+=temp;
step++;
}
cout<<ans;
return 0;}