Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <stdlib.h> int main() { int x[10][10]; int m,n,sum=0,i,j; printf("Vvedite kolichestvo strok "); scanf("%d",&m); printf("Vvedite kolichestvo stolbcov "); scanf("%d",&n); printf("Vvedite matricu"); for (i=0; i<m; i++) for (j=0; j<n; j++) { printf("x[%d][%d]= ",i,j); scanf("%d",&(x[i][j])); } printf("vveden massiv \n"); for(i=0;i<m;i++) { for (j=0;j<n;j++) printf("%d ",(x[i][j])); printf ("\n"); } for(i=0;i<m;i++) { for (j=0;j<n;j++) if (x[i][j]==0) break; else sum+=x[i][j];} printf ("%d",sum); return 0; }
Решение задачи: «Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы»
#include <iostream> #include <vector> using namespace std; int main(){ int n, tmp, total=0; bool mark; vector <int> total_non_neg; cout << "Enter dimension of matrix: "; cin >> n; tmp = n-1; int **ptr = new int*[n]; for (int i=0; i<n; i++){ mark = true; *(ptr+i) = new int[n]; for (int j=0; j<n; j++){ cin >> *(*(ptr+i)+j); if(*(*(ptr+i)+j)>-1 && mark) total+=*(*(ptr+i)+j); else{ mark = false; total = 0; } } if (total){ total_non_neg.push_back(total); total = 0; } } cout << endl; for (int i=0; i<n; i++){ for (int j=0; j<n; j++){ cout << *(*(ptr+i)+j) << " "; } cout << endl; } cout << "\nSum of string with all nonzero elements: " << endl; for (int i=0; i<total_non_neg.size(); i++){ cout << "Sum is: " << total_non_neg[i] << endl; } //для элементов диагонали разность между индексами элемента всегда постоянная while(tmp!=-n){ for (int j=0; j<n; j++){ for (int i=0; i<n; i++){ if(j-i==tmp){ total+=*(*(ptr+i)+j); } } } tmp--; cout << "Sum of diagonal is: " << total << endl; total=0; } return 0; }
Объяснение кода листинга программы
В этом коде пользователь вводит размер матрицы (n), после чего программа создает матрицу (2D-массив) размером n x n и заполняет ее значениями из ввода пользователя. Затем программа ищет сумму элементов главной диагонали (т.е. элементов, расположенных на диагонали от верхнего левого угла до нижнего правого угла) и добавляет ее к общему значению, если элемент положительный. Если элемент отрицательный или ноль, то программа переходит к следующему элементу, игнорируя текущий. После заполнения матрицы программа выводит ее на экран, а затем выводит суммы элементов главной диагонали. Код также проверяет разность между индексами элементов диагонали, и если она постоянна, то вычисляет сумму элементов диагонали с этой разностью. В конце программа выводит сумму всех элементов главной диагонали.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д