Есть ответ 👍

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

220
347
Посмотреть ответы 3

Ответы на вопрос:


// 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

/* дурацкая для 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; }

//pascalabc.net 3.2 сборка 1318 var   n,first,oth: integer; begin readln(n); first: =n mod 10; oth: =n div 10; if first< > 0 then writeln(first,oth) else writeln('x не трёхзначеное'); end. пример ввода: 234 пример вывода: 423

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS