Type arr = array[,] of integer; arrB = array of integer; var A1, A2, A3: arr; B1, B2, B3: arrB; n,m:integer;
procedure Zapoln(var A: arr;k:integer); var i, j, n, m: integer; begin writeln('Массив А',k); n:= Length(A,0); m:= Length(A,1); for i := 0 to n-1 do begin for j := 0 to m-1 do begin A[i,j]:=random(10); write(A[i,j]:2) end; writeln end end;
procedure FormB(a:arr;var b:arrB;n,m,r:integer); var i,j,k:integer; begin writeln('Массив В',r); for i:=0 to n-1 do for j:=0 to m-1 do if (1<=a[i,j]) and (a[i,j]<=3) then begin b[k]:=a[i,j]; write(b[k]:3); k:=k+1 end; writeln end;
function razm(a: arr;n,m:integer):integer; var i,j:integer; begin for i:=0 to n-1 do for j:=0 to m-1 do if (1<=a[i,j]) and (a[i,j]<=3) then result:=result+1 end;
begin write('Введите N1 и M1: '); readln(n,m); SetLength(A1, n, m); Zapoln(A1,1); SetLength(B1, Razm(A1,n,m)); formB(A1,B1,n,m,1); write('Введите N2 и M2: '); readln(n,m); SetLength(A2, n, m); Zapoln(A2,2); SetLength(B2, Razm(A2,n,m)); formB(A2,B2,n,m,2); write('Введите N3 и M3: '); readln(n,m); SetLength(A3, n, m); Zapoln(A3,3); SetLength(B3, Razm(A3,n,m)); formB(A3,B3,n,m,3); end.
#include <iostream> #include <ctime>//Нужно для генерации n - значных чисел using namespace std; int getRandVal(int n);//Функция генерирует случайное n-ое число //Функция вернёт массив цифр составляющих число val //переменная n будет содержать число цифр в массиве //флаг bGetArray определяет записывать ли разряды в //массив или лишь ограничиться подсчётом разрядов числа int * splitValue(int val, int &n, bool bGetArray); //Функция проверяет состоит ли число только из нечётных чисел bool (int val); int main() { int i; int m;//Будет содержать число чисел для анализа int n;//Будет содержать число разрядов для чисел int sum;//Будет содержать сумму чисел int cnt;//Будет содержать кол-во n-значных чисел //состоящих только из нечётных значений int *arr = NULL;//Указатель на массив с n-значн числами while(true) { system("cls"); cout<<"Enter number values in array : ";cin>>m; cout<<"Enter n digits in values : ";cin>>n; arr = new int[m]; cout<<"Generated array of values\n"; for(i = 0; i < m; i++) cout<<(arr[i] = getRandVal(n))<<endl; cout<<"Values in array with only odd numbers\n"; for(sum = (cnt = (i = 0)); i < m; i++) { if((arr[i])) { cout<<arr[i]<<endl; sum = sum + arr[i]; cnt = cnt + 1; } } delete [] arr; if(!cnt) cout<<"array not contain values which consist" <<" only from no-odd numbers\n"; else { cout<<"sum of values which consist" <<" only from no-odd numbers is " <<sum<<endl; //Разбиваем значение суммы на разряды arr = splitValue(sum, n, true); for(cnt = (i = 0); i < n; i++) { if(!(arr[i])) cnt = cnt + 1; } cout<<"given sum contains from "<<cnt<<" odditive numbers\n"; delete [] arr; } system("pause"); } return 0; } int getRandVal(int n) { int val = 0; int nDigits = 0; //Будем продолжать генерацию //пока не сгенерируем случ //n-значное число while(nDigits != n) splitValue((val = rand()%RAND_MAX), nDigits, false); return val; } int * splitValue(int val, int &n, bool bGetArray) { int * arr = NULL;//Указатель на массив с разрядами числа val if(val < 0) val *= -1;//Знак числа нам не нужен //Подсчитываем число разрядов в числе int i, buf = val; for(n = 0; 0 < buf; n++) buf = buf / 10; //Выделяем память под массив чисел if(bGetArray) { arr = new int[n]; for(i = 0; 0 < val; i++) { //Записываем в массив цифры разрядов числа arr[i] = val % 10; val = val / 10; } } return arr; } bool (int val) { bool bRet = true; int nDigits = 0; int * array = splitValue(val,nDigits,true); for(int i = 0; i < nDigits && bRet; i++) { if(array[i]%2 == 0) bRet = false; } delete [] array; return bRet; }
i = 4
Сообщение содержит 4 бита информации