Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы - C (СИ)

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

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

Дана целочисленная квадратная матрица. Опрделить: 1) сумму элементов в тех строках, которые не содержат отрицательных элементов. 2) минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. первую часть сделал, вроде как работает 
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int x[10][10];
  6. int m,n,sum=0,i,j;
  7. printf("Vvedite kolichestvo strok ");
  8. scanf("%d",&m);
  9. printf("Vvedite kolichestvo stolbcov ");
  10. scanf("%d",&n);
  11. printf("Vvedite matricu");
  12. for (i=0; i<m; i++)
  13. for (j=0; j<n; j++)
  14. {
  15. printf("x[%d][%d]= ",i,j);
  16. scanf("%d",&(x[i][j]));
  17. }
  18. printf("vveden massiv \n");
  19. for(i=0;i<m;i++)
  20. {
  21. for (j=0;j<n;j++)
  22. printf("%d ",(x[i][j]));
  23. printf ("\n");
  24. }
  25. for(i=0;i<m;i++)
  26. {
  27. for (j=0;j<n;j++)
  28. if (x[i][j]==0)
  29. break;
  30. else sum+=x[i][j];}
  31. printf ("%d",sum);
  32. return 0;
  33. }
а вот на второй застопорился, подскажите что к чему) p.s. желательно таким же понятным языком)

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

textual
Листинг программы
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.     int n, tmp, total=0;
  8.     bool mark;
  9.     vector <int> total_non_neg;
  10.     cout << "Enter dimension of matrix: ";
  11.     cin >> n;
  12.     tmp = n-1;
  13.     int **ptr = new int*[n];
  14.     for (int i=0; i<n; i++){
  15.         mark = true;
  16.         *(ptr+i) = new int[n];
  17.         for (int j=0; j<n; j++){
  18.             cin >> *(*(ptr+i)+j);
  19.             if(*(*(ptr+i)+j)>-1 && mark)
  20.                 total+=*(*(ptr+i)+j);
  21.             else{
  22.                 mark = false;
  23.                 total = 0;
  24.             }
  25.         }
  26.         if (total){
  27.             total_non_neg.push_back(total);
  28.             total = 0;
  29.         }
  30.     }
  31.    
  32.     cout << endl;
  33.  
  34.     for (int i=0; i<n; i++){
  35.         for (int j=0; j<n; j++){
  36.             cout << *(*(ptr+i)+j) << " ";
  37.         }
  38.         cout << endl;
  39.     }
  40.    
  41.     cout << "\nSum of string with all nonzero elements: " << endl;
  42.    
  43.     for (int i=0; i<total_non_neg.size(); i++){
  44.         cout << "Sum is: " << total_non_neg[i] << endl;
  45.     }
  46.    
  47.     //для элементов диагонали разность между индексами элемента всегда постоянная
  48.     while(tmp!=-n){
  49.         for (int j=0; j<n; j++){
  50.             for (int i=0; i<n; i++){
  51.                 if(j-i==tmp){
  52.                     total+=*(*(ptr+i)+j);
  53.                 }
  54.             }
  55.         }
  56.         tmp--;
  57.         cout << "Sum of diagonal is: " << total << endl;
  58.         total=0;
  59.     }
  60.  
  61.     return 0;
  62. }

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

В этом коде пользователь вводит размер матрицы (n), после чего программа создает матрицу (2D-массив) размером n x n и заполняет ее значениями из ввода пользователя. Затем программа ищет сумму элементов главной диагонали (т.е. элементов, расположенных на диагонали от верхнего левого угла до нижнего правого угла) и добавляет ее к общему значению, если элемент положительный. Если элемент отрицательный или ноль, то программа переходит к следующему элементу, игнорируя текущий. После заполнения матрицы программа выводит ее на экран, а затем выводит суммы элементов главной диагонали. Код также проверяет разность между индексами элементов диагонали, и если она постоянна, то вычисляет сумму элементов диагонали с этой разностью. В конце программа выводит сумму всех элементов главной диагонали.

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


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

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

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы