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

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

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

Здравствуйте, очень нужна помощь с написанием программы, для меня тема указателей очень больная, так как я не совсем понимаю ее. Суть задания какова: В каждой строке прямоугольной матрицы, элементами которой являются целые положительные числа, определить сумму нечетных элементов и найти строку с минимальной их суммой. Программу надо написать с использованием указателей, у меня пока получилось только вывод случайной матрицы, а вот с подсчетом суммы нечетных чисел как-то не очень, выдает ошибку в строке 41 : error C2296: %: недопустимо, левый операнд имеет тип "double" Сам код программы:
Листинг программы
  1. #include "stdio.h"
  2. #include "math.h"
  3. #include "conio.h"
  4. #include "windows.h"
  5.  
  6. void input_matr(double **x,int m,int n,char *msg);
  7. void output_matr(double **x,int m,int n,char *msg);
  8. void wait_press_key(char *msg);
  9. int main()
  10. {
  11. double **d,s;
  12. int i,j,md,nd;
  13. //Подключение кириллицы в консольном окне
  14. SetConsoleOutputCP(1251);
  15. SetConsoleCP(1251);
  16. //Ввод размеров матрицы
  17. printf("\nВведите размеры матрицы md, nd (на количество строк и столбцов ограничений нет)\n");
  18. scanf_s("%d%d",&md,&nd);
  19. //Создаем динамическую матрицу d с размерами md*nd*sizeof(double)
  20. //на базе указателя на указатель **d.
  21. d=(double **)malloc(md*sizeof(double *));//Создается массив указателей,
  22. //в котором каждый элемент массива d[i] - это указатель на поле double,
  23. //или указатель на одномерный массив double.
  24. for(i=0;i<md;i++) //Создаются строки матрицы как одномерные массивы
  25. d[i]=(double *)malloc(nd*sizeof(double));
  26. input_matr(d,md,nd,"Ввод элементов матрицы d\n");
  27. output_matr(d,md,nd,"Исходная матрица d\n");
  28. wait_press_key("\nДля продолжения программы нажмите любую клавишу\n");
  29. //В функции input_matr и output_matr матрицы передаются, как массив указателей
  30. //(матрица с), и, как указатель на указатель (матрица d).
  31. //Далее используется функция, которая обрабатывает строки матрицы как
  32. //одномерные массивы. Определяем сумму нечетных чисел каждой строки.
  33. for (i = 0; i < nd; i++)
  34. {
  35. s=0;
  36. for (j = 0; j<md; j++)
  37. if (d[i][j] % 2)
  38. s+=d[i][j];
  39. printf("%d ", s);
  40. }
  41. wait_press_key("\nДля продолжения программы нажмите любую клавишу\n");
  42. }
  43. void input_matr(double **x,int m,int n,char *msg)
  44. {
  45. int i,j;
  46. srand((unsigned int) 100); //запускаем генератор псевдослучайных чисел
  47. printf(msg);
  48. for(i=0; i<m;i++)
  49. for(j=0; j<n;j++)
  50. //scanf("%lf",(*(x+i)+j)); //ввод матрицы с клавиатуры
  51. x[i][j]=rand()%100; //заполнение случайными числами
  52. }
  53. //-------------------------------Печать матрицы
  54. void output_matr(double **x,int m,int n,char *msg)
  55. {
  56. int i,j;
  57. printf(msg);
  58. for(i=0; i<m;i++)
  59. for(j=0; j<n;j++)
  60. printf("%7.2lf%c",x[i][j],j==n-1?'\n':' ');
  61. }
  62. //-------------------------------Определение суммы в строке матрицы
  63. void wait_press_key(char *msg)
  64. {
  65. printf(msg);
  66. _getch();
  67. }
Буду признателен за помощь!
Ошибку выдает в строке 40, случайно не ту написал.

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

textual
Листинг программы
  1. for (i = 0; i < md; i++)
  2.     {  
  3.         s=0;
  4.         for (j = 0; j<nd; j++)
  5.         {
  6.          if (d[i][j] % 2 ) s+=d[i][j];
  7.            printf("%d %d %d\n",d[i][j],d[i][j]%2,s);
  8.          }
  9.         printf("%d ", s);
  10.    }

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

Вывод сумм нечетных элементов матрицы d и их порядковые номера: 1) Инициализация переменной s, которая будет хранить сумму нечетных элементов. 2) Перебор всех элементов матрицы d. 3) Проверка на нечетность элемента d[i][j] с помощью оператора % (остаток от деления). 4) Если элемент нечетный, то прибавляем его к переменной s. 5) Выводим на экран значение элемента d[i][j], его нечетность и текущую сумму s. 6) Выводим на экран текущую сумму s. 7) Переходим к следующей итерации цикла.

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


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

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

12   голосов , оценка 3.833 из 5

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

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

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