М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Составить программу обработки матрицы размерности nxn.ввод,вывод матрицы и оформить в виде процедур или функций. выполнить программу для n=3. определить имеются ли равные столбцы в матрице(если да то сколько)

👇
Ответ:
Зюна
Зюна
05.02.2020
// 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
4,5(35 оценок)
Ответ:
dinagasanova12
dinagasanova12
05.02.2020
/*задача дурацкая для n > 3, ибо не понятно, что делать:
1) разбить все столбцы на группы одинаковых столбцов и посчитать внутри них число пар. Затем суммировать.
2) разбить столбцы на группы одинаковых столбцов и суммировать количество элементов в каждой из групп, если оно больше 1. То есть найти количество столбцов, для которых среди других столбцов найдется хотя бы один идентичный ему
3) разбить столбцы на группы одинаковых столбцов и вывести количество элементов в каждой группе, если оно больше 1.
Для n=3 дело проще, потому что таких групп максимум одна, поэтому тут, по сути, неоднозначности не возникает (за исключением того, что в первом пункте...)
В общем, решил делать как во втором пункте. ответ в любом случае будет верным.*/
#include <iostream>
using namespace std;
int n, result = 0;
int **ar;//указатель на указатель для создания динамического двумерного массива
bool *Flag;//указатель на первый элемент массива флагов
void create(int n)//создание динамического массива
{
   ar = new int*[n];
   for (int i = 0; i < n; i++)
      ar[i] = new int[n];
   Flag = new bool[n];
   for (int i = 0; i < n; i++)
      Flag[i] = false;
}
void inp(int n) //ввод элементов массива
{
   cout << "Input rows of matrix:\n";
   for (int i = 0; i < n; i++)
   {
      cout << i + 1 << ": ";
      for (int j = 0; j < n; j++)
         cin >> ar[i][j];
   }
}
void outp(int n) //вывод элементов массива
{
   cout << "Elements of matrix:\n";
   for (int i = 0; i < n; i++)
   {
      for (int j = 0; j < n; j++)
         cout << ar[i][j] << " ";
      cout << endl;
   }
}
bool isEqual(int n, int j1, int j2)//проверка на равенство столбцов
{
   bool res = true;
   for (int i = 0; i < n; i++)
   {
      if (ar[i][j1] != ar[i][j2])
      {
         res = false;
         break;
      }
   }
   if (res)//если столбцы равны
    Flag[j2] = true; /*отмечаем столбец как просмотренный, чтобы в следующий раз его не сравнивать с другими столбцами*/
   return res;
}
void calculate(int n)//считаем количество совпадающих столбцов
{
   int k = 1;
   for (int j1 = 0; j1 < n; j1++)
    if (!Flag[j1])
    {
      k = 1;
      for (int j2 = j1 + 1; j2 < n; j2++)
       if (!Flag[j2] && isEqual(n, j1, j2))
          k++;
      if (k > 1)//имеется k одинаковых стобцов по типу столбца j1
         result += k;//плюсует к итоговому результату
    }
}
int main(){
   cout << "Input n: ";
   cin >> n;
   create(n);
   inp(n);//ввод массива
   outp(n);//вывод массива
   calculate(n);//расчет того, что требуется
   if (result > 0)/*количество столбцов, которые совпадают, по крайней мере, с одним из других столбцов*/
      cout << "The number of columns, coinciding with at least one other column, is " << result << endl;
   else //все столбцы разные
      cout << "There is no matching columns\n";
   return 0;
}
4,5(61 оценок)
Открыть все ответы
Ответ:
Анжеkf23
Анжеkf23
05.02.2020
Program Julia9696;
uses crt;
const
n=10;
m=8;
var
A:array[1..n,1..m] of integer;
cur,up,right,down,left,qw,i,j:integer;
begin;
randomize;
writeln(' Alphaeus ');writeln;
writeln ('Програма пошуку всіх елементів масиву А[1..n, 1..m], що менші, ніж усі сусідні');
for i:=1 to n do
begin
for j:=1 to m do
begin
A[i,j]:=random(101)-50;
write(A[i,j]:3, ' ');
end;
writeln;
end;
writeln;
qw:=0;
for i:=1 to n do
for j:=1 to m do
begin
cur:= A[i,j];
up:=0; right:=0;down:=0;left:=0;
if i>1 then
begin
if cur<A[i-1,j] then up:=1;
end
else up:=1;
if i<n then
begin
if cur<A[i+1,j] then down:=1;
end
else down:=1;
if j>1 then
begin
if cur<A[i,j-1] then left:=1;
end
else left:=1;
if j<m then
begin
if cur<A[i,j+1] then right:=1;
end
else right:=1;
if up+right+down+left=4 then
begin
qw:=qw+1;
writeln('Елемент масиву À[',i,',',j,'], що рівний ',A[i,j]:3,', є меншим за своїх сусідів');
end;
end;
writeln('Всього таких елементів: ',qw);
end.
4,4(44 оценок)
Ответ:
11Аслан11
11Аслан11
05.02.2020
#include <iostream>
#include <cassert>

using namespace std;

void pie_price(int a, int b, int n)
{
assert((a >= 0) && (a <= 1000));
assert((b >= 0) && (b <= 99));
assert((n >= 1) && (n <= 1000));
double price = a * 1.0 + b / 100.0;
float res = price * n;
int kop = res * 100;
cout << "Rubles " << res << endl;
cout << "Kopeyks " << kop << endl;
}

int main()
{
int a, b, n;
cin >> a >> b >> n;
pie_price(a, b, n);
}
4,5(55 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ