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

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

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

Здравствуйте, очень нужна помощь с написанием программы, для меня тема указателей очень больная, так как я не совсем понимаю ее. Суть задания какова: В каждой строке прямоугольной матрицы, элементами которой являются целые положительные числа, определить сумму нечетных элементов и найти строку с минимальной их суммой. Программу надо написать с использованием указателей, у меня пока получилось только вывод случайной матрицы, а вот с подсчетом суммы нечетных чисел как-то не очень, выдает ошибку в строке 41 : error C2296: %: недопустимо, левый операнд имеет тип "double" Сам код программы:
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "windows.h"

void input_matr(double **x,int m,int n,char *msg);  
void output_matr(double **x,int m,int n,char *msg);
void wait_press_key(char *msg);
 
int main()
{
 
    double **d,s;
    int i,j,md,nd;
    //Подключение кириллицы в консольном окне
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);      
    //Ввод размеров матрицы
    printf("\nВведите размеры матрицы md, nd (на количество строк и столбцов ограничений нет)\n");
    scanf_s("%d%d",&md,&nd);
    //Создаем динамическую матрицу d с размерами md*nd*sizeof(double)
    //на базе указателя на указатель **d.
    d=(double **)malloc(md*sizeof(double *));//Создается массив указателей, 
    //в котором каждый элемент массива d[i] - это указатель на поле double, 
    //или указатель на одномерный массив double.
    for(i=0;i<md;i++)    //Создаются строки матрицы как одномерные массивы
        d[i]=(double *)malloc(nd*sizeof(double));
    input_matr(d,md,nd,"Ввод элементов матрицы d\n");
    output_matr(d,md,nd,"Исходная матрица d\n");
    wait_press_key("\nДля продолжения программы нажмите любую клавишу\n");
    //В функции input_matr и output_matr матрицы передаются, как массив указателей 
    //(матрица с), и, как указатель на указатель (матрица d).
    //Далее используется функция, которая обрабатывает строки матрицы как
    //одномерные массивы. Определяем сумму нечетных чисел каждой строки.
    for (i = 0; i < nd; i++)
    {   
        s=0;
        for (j = 0; j<md; j++) 
        if (d[i][j] % 2)
           s+=d[i][j];
        printf("%d ", s);
   }
    wait_press_key("\nДля продолжения программы нажмите любую клавишу\n");
}
void input_matr(double **x,int m,int n,char *msg)
{
    int i,j;
    srand((unsigned int) 100); //запускаем генератор псевдослучайных чисел 
    printf(msg);
    for(i=0; i<m;i++)
        for(j=0; j<n;j++)
            //scanf("%lf",(*(x+i)+j));      //ввод матрицы с клавиатуры
            x[i][j]=rand()%100; //заполнение случайными числами
}
//-------------------------------Печать матрицы
void output_matr(double **x,int m,int n,char *msg)
{
    int i,j;
    printf(msg);
    for(i=0; i<m;i++)
        for(j=0; j<n;j++)
             printf("%7.2lf%c",x[i][j],j==n-1?'\n':' ');            
}
//-------------------------------Определение суммы в строке матрицы
void wait_press_key(char *msg)
{
    printf(msg);
    _getch();
}
Буду признателен за помощь!
Ошибку выдает в строке 40, случайно не ту написал.

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

textual
Листинг программы
for (i = 0; i < md; i++)
    {   
        s=0;
        for (j = 0; j<nd; j++) 
        {
         if (d[i][j] % 2 ) s+=d[i][j];
           printf("%d %d %d\n",d[i][j],d[i][j]%2,s);
         }
        printf("%d ", s);
   }

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

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

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

12   голосов , оценка 3.833 из 5
Похожие ответы