Найти сумму элементов в тех столбцах матрицы, которые не содержат отрицательных элементов - C (СИ) (74305)

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

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

Задача: Дана целочисленная квадратная матрица. Определить: 1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов; 2) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <locale>
#define n 3
int main()
{
    int i,j,a[n][n],l,min;
    setlocale(LC_ALL,"russian_russia.1251");
    srand(time(NULL));
    printf("Матрица\n\n");
//****************************
    for (i=0;i<n;i++)
    { //****************************Вывод массива
        for (j=0;j<n;j++)
        {
            a[i][j]=rand()%10-2;
            if (a[i][j]<0) printf("%d ",a[i][j]);
            else
            printf(" %d ",a[i][j]);
        }
        printf("\n");
    }
//************************************
 
//****************************
    printf("\nCчитает столбцы с положительными элементами\n");
    for(int j=0;j<n;j++)
   { //****************************Сумма столбцов
     int p=0;
     int jsum=0;
     for(i=0;i<n;i++)
     if (a[i][j]>-1) p++;
     if(p==n)
        {
           for(int k=0;k<n;k++)
           jsum+=a[k][j];
        }
      printf("\nSumma stolbca # %d  = %d",j+1,jsum);
   }
//************************************
min=1000;
//************************************
for(l=0;l<2*n-1;l++)
 { //****************************Минимальный элемент побочных диагоналей
    if (l<n)
    {
        for(i=0;i<l;i++)
        for(j=0;j<l;j++)
        {
            if (min>a[i][j]) min=a[i][j];
        }   
    }
    else 
    {
        for(i=l-n+1;i<n;i++)
        for(j=l-n+1;j<n;j++)
        {
            if (min>a[i][j]) min=a[i][j];
        }
    }
    
 }
printf("\n\nМинимальный элемент параллельных диагоналей, побочной диагонали = %d",min);
return 0;
}
Код работает как надо. Теперь этот код с указателями, вот тут у меня проблемы. Читаю книжку и на примеры смотрю, мне кажется что, что-то понимаю, а на практике сложно.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <locale>
#define n 3
//#define m 3
int main()
{
    int l,min,i,j,a[n][n];
    int *pa;
    pa=&a[0][0];/* указателю pa присваиваем адрес нулевого элемента матрицы pa[n][n] */
    setlocale(LC_ALL,"russian_russia.1251");
    srand(time(NULL));
    printf("\n");

    for (i=0;i<n;i++)
    { //****************************Вывод массива
        for (j=0;j<n;j++)
        {
            *pa/*a[i][j]*/=rand()%10-2;         
            if (*pa/*a[i][j]*/<0) printf("%d ",*pa/*a[i][j]*/);
            else
            printf(" %d ",*pa/*a[i][j]*/);
            pa++;
        }
        printf("\n");
    }

    printf("\nВыводит сумму элементов положительных столбцов\n");
    pa-=n*n;/* указателю pa присваиваем первоначальный адрес */
    pa=&a[0][0];

    for(j=0;j<n;j++)
   { //****************************Сумма столбцов
     int p=0;
     int jsum=0;
     
     for(i=0;i<n;i++)
     if (*pa/*a[i][j]*/>-1) p++; pa++;
     
        if(p==n)
        {
           for(int k=0;k<n;k++)
           jsum+=a[k][j];
        }
     printf("\nСумма элементов # %d столбца = %d",j+1,jsum);
     pa++;
   }

pa-=n*n;/* указателю pa присваиваем первоначальный адрес */
min=100;

for(l=0;l<2*n-1;l++)
 { //****************************Минимальный элемент побочных диагоналей
    if (l<n)
    {
        for(i=0;i<l;i++)
        for(j=0;j<l;j++)
        {
            if (min>*pa/*a[i][j]*/) min=*pa/*a[i][j]*/; pa++;
        }   
    }
    else 
    {
        for(i=l-n+1;i<n;i++)
        for(j=l-n+1;j<n;j++)
        {   
            if (min>*pa/*a[i][j]*/) min=*pa/*a[i][j]*/; pa++;
        }
    }
    
 }
printf("\n\nМинимальный элемент из параллельных диагоналей, побочной диагонали = %d",min);
return 0;
}
В if поставил указатели, не правильно сравнивает. Укажите на ошибки. Спасибо

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

textual
Листинг программы
#include <locale.h>

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


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

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

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