Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы «уголками» - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Возникла проблема в решении матриц, помогите пожалуйста!!!

1. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первого столбца; элементы последней строки, кроме первого (уже выведенного) элемента; оставшиеся элементы второго столбца; оставшиеся элементы предпоследней строки и т. Д.; последним выводится элемент A1,M. Вот что получилось:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
main()
{ 
      int n,i,j,k,a[n][n],j1;
printf("vvedite razmer matrici: ");
scanf("%d",&n);
      for(i=0;i<=n;i++)
      {
       if (i%2==1)
       for(j=i;j<=n;j++)
       printf("[%d][%d]",i,j);
       if (i%2==0)
       for(j1=i;j1<=n;j++)
       printf("[%d][%d]",j1,i);
        }
}
Если поможет, то у меня есть код Паскаля рабочий:
program n4_4;
const m=5;
var a:array[1..m,1..m] of integer;
    i,j,j1:integer;
begin
for i:=1 to m do
for j:=1 to m do
a[i,j]:=random(100);
 
for i:=1 to m do
begin
if i mod 2=1 then
for j:=i to m do
write('[',i,',',j,'] ');
 
if i mod 2=0 then
for j1:=i to m do
write('[',j1,',',i,'] ');
 
writeln;
end;
readln;
end.
Если не сложно помогите сделать еще 2 задачи, очень нужно! Заранее спасибо)) 2. Дана матрица размера M  N. В каждом ее столбце найти количество элементов, больших среднего арифметического всех элементов этого столбца. 3. Дана матрица размера M  N. Зеркально отразить ее элементы относительно вертикальной оси симметрии матрицы (при этом поменяются местами столбцы с номерами 1 и N, 2 и N – 1 и т. д.). Все коды есть на Паскале, если нужно пишите))

Решение задачи: «Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы «уголками»»

textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <conio.h>
 
main()
{
        int n;  
        srand(time(NULL));
        scanf("%d", &n);
        int **arr = (int **)malloc(n*sizeof(int*));
        if(arr)
        {
                for(int i = 0; i < n; i++)
                {
                     arr[i] = (int*)malloc(n*sizeof(int));
                     for (int j = 0; j < n; ++j)
                        arr[i][j] = rand()%500; 
                     if(!arr[i])
                     {
                          for (int i = 0; i < n; ++i)
                          free(arr[i]);
                          return 0;
                     }
                }
        }
        printf("==========\n");
        for (int i = 0; i < n; ++i)
        {
            for (int j = 0; j < n; ++j)
                printf("%d\t", arr[i][j]);
            printf("\n");
        }
        printf("==========\n\n");
        for (int i = 0; i < n; ++i)
        {
            for (int j = 0; j < n - i; ++j)
                printf("%d ", arr[j][i]);
            for (int j = i + 1; j < n; ++j)
                printf("%d ", arr[n-i-1][j]);
        }
        getch();
        return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлена переменная n типа int, которая содержит размерность матрицы.
  2. Выполняется инициализация генератора случайных чисел.
  3. Выводится приглашение для ввода размера матрицы.
  4. Под динамическую память выделяется массив указателей на int.
  5. В цикле заполняются все элементы матрицы случайными числами.
  6. Выводится приглашение для вывода матрицы.
  7. В двух вложенных циклах выводятся все элементы матрицы.
  8. Выводится приглашение для вывода диагоналей матрицы.
  9. В двух вложенных циклах выводятся элементы главной и побочной диагоналей.
  10. Программа ожидает нажатия клавиши для завершения работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы