Найти сумму элементов в тех столбцах матрицы, которые не содержат отрицательных элементов - C (СИ) (74305)
Формулировка задачи:
Задача:
Дана целочисленная квадратная матрица. Определить:
1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
2) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Код работает как надо.
Теперь этот код с указателями, вот тут у меня проблемы. Читаю книжку и на примеры смотрю, мне кажется что, что-то понимаю, а на практике сложно.
В if поставил указатели, не правильно сравнивает. Укажите на ошибки. Спасибо
#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; }
Решение задачи: «Найти сумму элементов в тех столбцах матрицы, которые не содержат отрицательных элементов»
textual
Листинг программы
#include <locale.h>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д