Вывести сумму элементов столбца матрицы, если в нем нет отрицательных элементов - C (СИ)

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

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

Помогите исправить программу. Выдает неправильный ответ. Задача: а)Вывести сумму элементов столбцы, если в нем нет отрицательных элементов. б)Вывести наим. по модулю сумму элементов параллельных побочной диагонали. Без указателей прога работает.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main()
{
 
int i, j,z, sum, min,N, **A;
 
printf("Введите размер квадратной матрицы");
scanf("%d", &N);
A=(int**)malloc(N * sizeof(int*));
for (i=0; i<N; i++)
A[i]=(int *)malloc(N * sizeof(int));
 
   for (i = 0; i < N; i++)
      for (j = 0; j < N; j++)
 
         scanf("%d",&(*(A+i*N+j)));
for (j = 0; j < N; j++)
   {
      sum = 0;
      for (i = 0; i < N; i++)
      {
         if ((*(A+j*N+i)) >= 0 )
            sum += *(A+j*N+i);
         else
            break;
    
      }
   }
printf("В столбце %d сумма %d\n", j,sum);
   sum = 0;
   
for(j = N-2; j > 0; j--,sum = 0)
   {
      for(i = N-1,z = j; z < N; i--,z++)
         sum += abs(*(A+j*N+z));
      if ( j == N-2)
         min = sum;
      else if (sum < min)
         min = sum;
   }
 
   for(j = N-2; j > 0  ; j--,sum = 0)
   {
      for(i = 0,z = j; z >= 0; i++,z--)
         sum += abs(*(A+j*N+z));
      if ( j == N-2)
         min = sum;
      else if (sum < min)
         min = sum;
   }

printf("Мин сумма = %d\n", min); 

    return 0;                       
 
}

Решение задачи: «Вывести сумму элементов столбца матрицы, если в нем нет отрицательных элементов»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main()
{
    int i, j,z, sum, min,N, **A;
    printf("Введите размер квадратной матрицы");
    scanf("%d", &N);
    A=(int**)malloc(N * sizeof(int*));
    
    for (i=0; i<N; i++)
        A[i]=(int *)malloc(N * sizeof(int));
    
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            scanf("%d",&A[i][j]);
    
    for (j = 0; j < N; j++) {
        sum = 0;
        for (i = 0; i < N; i++) {
            if (A[i][j) >= 0 )
                sum += A[i][j);
            else
                break;
        }
    }
    printf("В столбце %d сумма %d\n", j,sum);
    
    sum = 0;
    for(j = N-2; j > 0; j--,sum = 0) {
        for(i = N-1,z = j; z < N; i--,z++)
            sum += abs(A[i][j));
        if ( j == N-2)
            min = sum;
        else if (sum < min)
            min = sum;
    }
    for(j = N-2; j > 0  ; j--,sum = 0) {
        for(i = 0,z = j; z >= 0; i++,z--)
            sum += abs(A[i][j));
        if ( j == N-2)
            min = sum;
        else if (sum < min)
            min = sum;
    }
    printf("Мин сумма = %d\n", min);
// ------ а здесь удалить массив, обратно тому, как вы его объявили, сначала в цикле A[i], потом А.
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы для работы с I/O и математическими операциями.
  2. Указывается функция main(), которая является точкой входа в программу.
  3. Объявляются переменные:
    • i, j, z, sum, min, N, **A;
    • i используется для обхода строк матрицы;
    • j используется для обхода столбцов матрицы;
    • z используется как вспомогательная переменная для второго вложенного цикла;
    • sum используется для хранения суммы элементов столбца;
    • min используется для хранения минимальной суммы элементов столбца;
    • N используется для хранения размера матрицы;
    • A является двумерным массивом, который будет хранить значения матрицы.
  4. Пользователю предлагается ввести размер квадратной матрицы.
  5. Выделяется память под массив указателей на int, который будет хранить адреса строк матрицы.
  6. В цикле выделяется память под каждую строку матрицы.
  7. В двух вложенных циклах происходит заполнение матрицы значениями.
  8. В цикле по столбцам происходит подсчет суммы элементов каждого столбца без отрицательных значений.
  9. Выводится сумма элементов выбранного столбца.
  10. Находится минимальная сумма элементов столбцов.
  11. Выводится минимальная сумма элементов.
  12. Освобождается выделенная память.
  13. Программа завершается.

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


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

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

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