Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы - 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 и заполняет ее значениями из ввода пользователя. Затем программа ищет сумму элементов главной диагонали (т.е. элементов, расположенных на диагонали от верхнего левого угла до нижнего правого угла) и добавляет ее к общему значению, если элемент положительный. Если элемент отрицательный или ноль, то программа переходит к следующему элементу, игнорируя текущий. После заполнения матрицы программа выводит ее на экран, а затем выводит суммы элементов главной диагонали. Код также проверяет разность между индексами элементов диагонали, и если она постоянна, то вычисляет сумму элементов диагонали с этой разностью. В конце программа выводит сумму всех элементов главной диагонали.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д