Для заданной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали - C (СИ)

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

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

Для заданной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали.
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
 
int summa(int *ar,int n)
  {
  int m,j,i,k;
  int S=0, Smax=-10000;
  m=n;
  for (j=1;j<n;j++)
    {
    k=0;
    S=0;
    for (i=0; i<m-1; i++)
      {
      S=S+(*(ar+i*n+j+k));
      k++;
      }
    m--;
    if (S>Smax) {Smax=S;}
    }
  m=n;
  for (i=1;i<n;i++)
    {
    k=0;
    S=0;
    for (j=0; j<m-1; j++)
      {
      S=S+(*(ar+(i+k)*n+j));
      k++;
      }
    m--;
    if (S>Smax) {Smax=S;}
    }
  return Smax;
}
 
void main()
  {
  int i,j,n,Smax,k;  //,p=-3,b=7;
  int Pr[100];
  int *a;
  clrscr();
//  randomize();
  printf("vvedite razmernost matrici: ");
  scanf("%d",&n);
  printf("\n ");
  a=(int*)malloc (n*n*sizeof(int));
  for (i=0;i<n;i++)
    {
    for (j=0;j<n;j++)
      {
    //  *(a+i*n+j)=random(b-p+1)+p;
      //     printf("%d\t", *(a+i*n+j));
      printf("a[%d,%d]=",i+1,j+1);
      scanf("%d",(a+i*n+j));
      }
    }
  printf("\n ");
  for(i=0;i<n;i++)
скажите пожалуйста, что нужно изменить чтобы было не параллельных главной, а наоборот-побочной. Заранее спасибо.

Решение задачи: «Для заданной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали»

textual
Листинг программы
#include "stdafx.h"
 
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <Windows.h>
 
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int menu = 0;
    do 
    {
 
 
        srand(time(NULL));
 
 
        int **a = NULL;
        int height = 0;
        int width = 0; 
        int temp = 0;
 
        printf("Демонстрация работы с массивами\n");
        printf("Введите размерность массива(ширина, высота): ");
        scanf("%d %d", &width, &height );
 
        a = new int*[height];
        for (int i = 0; i < height; i = i+1)
        {   
            a[i] = new int[width];
        }
 
        for (int i = 0; i < height; i = i+1)
        {
            for (int j = 0; j < width; j = j+1)
            {
                a[i][j] = rand() % 10;
            }
 
        }
 
        for (int i = 0; i < height; i = i+1)
        {
 
            for (int j = 0; j< width; j = j+1)
            {
                printf("%d", a[i][j]);
            }
            printf("\n");               
        }
 
 
 
        for (int i = 0; i < height; i = i+1)
        {
            delete [] a[i];
        }
 
        delete []a;
 
        {
            printf("Повторить? 1-ДА, 0-НЕТ");
            scanf("%d" , &menu);
        }
 
 
 
    }
    while (menu != 0);
    getchar();
 
    return 0;
}

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

В этом коде:

  1. a - это динамический массив (массив указателей), который хранит указатели на подмассивы. Он инициализируется как NULL, а затем инициализируется новыми указателями на подмассивы.
  2. height и width - это переменные, которые хранят высоту и ширину матрицы соответственно. Они инициализируются вводом пользователя.
  3. temp - это временная переменная, которая используется в цикле для временного хранения значения.
  4. printf и scanf - это функции ввода-вывода, используемые для отображения и ввода данных соответственно.
  5. srand и rand - это функции для инициализации и генерации случайных чисел соответственно.
  6. new и delete - это операторы динамического выделения и освобождения памяти соответственно.
  7. menu - это переменная, которая используется в цикле do-while для контроля повторения программы.
  8. getchar - это функция для получения символа ввода из консоли.
  9. return 0 - это оператор, который указывает на успешный конец выполнения программы.

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


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

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

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