Как найти сумму нечетных элементов матрицы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 Program test;
const n=5; m=3;
Var 
a: Array[1..10] of integer;
j,i,k:integer;
begin
  for i:=1 to n do
    for j:=1 to m do begin
      write('A[',i,',',j,'] = ');
      readln (a[i,j]);
  end; 
  for i:=1 to n do begin
    for j:=1 to m do
      write('A[',i,',',j,'] = ',a[i,j]:3,' ');
    writeln;
  end;
  k:=0;
  for i:=1 to n do begin
    for j:=1 to m do begin
      write('A[',i,',',j,'] = ',a[i,j]:3,' ');
      If a[i,j] mod 2 <> 0 then k:=k+a[i,j]
    end;
    writeln
  end;
  writeln('Сумма нечётных элементов матрицы = ',k)
end.

Дана матрица размера N*M. Нужно посчитать сумму элементов в чётных и нечетных строках и столбцах.

Первую часть программы я составил, а вот вторую, убей бог, не получается.

int main()
{
    setlocale(LC_ALL, "Russian");
    int N, M, i, j;
    int result4etn;
    int resultne4etn;
    cout << "Введите колл строк матрицы:";
    cin >> N;
    cout << "Введите колл стоб матрицы: ";
    cin >> M;
    int** mass = new int* [N]; //создаем массив указателей на элементы
    cout << endl;
    cout << "Заполните матрицу " << N << 'х' << M << endl;

    for (i = 0; i < N; i++)
    {
        mass[i] = new int[M]; //создаем массив элементов
    }

    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            cout << "Введите число: ";
            cin >> mass[i][j];
        }
    }

    cout << "Полученная матрица: " << endl;

    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            cout << mass[i][j];
        }

        cout << endl;
    }
}

Nicolas Chabanovsky's user avatar

задан 24 мая 2016 в 7:13

Denis's user avatar

6

Замените свой вывод матрицы на

int
    sum_even_rows = 0,
    sum_odd_rows  = 0,
    sum_even_cols = 0,
    sum_odd_cols  = 0;

cout << "Полученная матрица: " << endl;
for (i = 0; i < N; i++)
{
    for (j = 0; j < M; j++)
    {
        if (i%2 == 0) // четные строки
            sum_even_rows += mass[i][j];
        else
            sum_odd_rows += mass[i][j];

        if (j%2 == 0) // четные столбцы
            sum_even_cols += mass[i][j];
        else
            sum_odd_cols += mass[i][j];

        cout << setw(6) << mass[i][j] << " ";
    }
    cout << endl;
}

cout << "Сумма элементов в четных строках   :  " << sum_even_rows << endl;
cout << "Сумма элементов в нечетных строках :  " << sum_odd_rows  << endl;
cout << "Сумма элементов в четных столбцах  :  " << sum_even_cols << endl;
cout << "Сумма элементов в нечетных столбцах:  " << sum_odd_cols  << endl;

Здесь считаем столбцы/строки с нулевого (т.е. самый первый — четный).

ответ дан 24 мая 2016 в 7:52

Harry's user avatar

HarryHarry

214k15 золотых знаков117 серебряных знаков229 бронзовых знаков

0

Решение короче и без if

int T[2][2] = {};
for (int i=0;i<N;i++)
    for (int j=0;j<M;j++)
        T[i&1][j&1]+=E[i][j];
cout << "Сумма элементов в четных строках   :  " <<T[0][0] + T[0][1]<<endl;
cout << "Сумма элементов в нечетных строках :  " <<T[1][0] + T[1][1]<<endl;
cout << "Сумма элементов в четных столбцах  :  " <<T[0][0] + T[1][0]<<endl;
cout << "Сумма элементов в нечетных столбцах:  " <<T[0][1] + T[1][1]<<endl;

ответ дан 24 мая 2016 в 11:31

pavel's user avatar

pavelpavel

9,7793 золотых знака28 серебряных знаков42 бронзовых знака

I need to write a C program to find the sum of the odd elements of the matrix of m*n order.

Would you please recommend some sites or videos to learn functions, structures, arrays and strings, data types of C programming in a much easy and effective way?

halfer's user avatar

halfer

19.8k17 gold badges98 silver badges185 bronze badges

asked Feb 22, 2016 at 16:14

Kabita Patel's user avatar

4

you need to create a variable initialized to 0 then you need to go through each line and for each element in that line you check it’s parity , if it is odd (element%2==1) then you add it to the sum .

int i,j,s = 0;
for ( j=0;i<matrix_height;j++) // for each line
  for ( i=0;i<matrix_width;i++) // for each element in that line
     if(matrix[i][j]%2==1)
s+= matrix[i][j];

you need to learn using nested loops that is the main topic of this problem

answered Mar 17, 2016 at 16:41

Hassen Dhia's user avatar

Hassen DhiaHassen Dhia

5554 silver badges11 bronze badges

1

Здравствуйте, очень нужна помощь с написанием программы, для меня тема указателей очень больная, так как я не совсем понимаю ее. Суть задания какова:
В каждой строке прямоугольной матрицы, элементами которой являются целые положительные числа, определить сумму нечетных элементов и найти строку с минимальной их суммой.
Программу надо написать с использованием указателей, у меня пока получилось только вывод случайной матрицы, а вот с подсчетом суммы нечетных чисел как-то не очень, выдает ошибку в строке 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,"Ввод элементов матрицы dn");
    output_matr(d,md,nd,"Исходная матрица dn");
    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, случайно не ту написал.

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

 const 
n=4;
var
a:array[1..n,1..n] of integer;
i,j,s:integer;
begin
for i:=1 to n do
    begin 
        for j:=1 to n do
          begin
            a[i,j]:=random(10);
            write('  ',a[i,j]:3);
          end;
        writeln();
    end;
writeln('--------') ; 

for j:=1 to n do
 begin
  s:=0;
  for i:=1 to n do
  if a[i,j] mod 2<>0 then s:=s+a[i,j];
  writeln('Сумма в столбце ',j,'=',s);
 end;

end.

Результат работы программы

Похожие записи/страницы:

  • Определить сумму отрицательных элементов в каждом столбце матрицы — Pascal(Паскаль)
  • Определить сумму четных элементов в каждом столбце матрицы — Pascal(Паскаль)
  • Определить сумму положительных элементов в каждом столбце матрицы — Pascal(Паскаль)
  • дан двумерный целочисленный массив размерности 4х5. Найти столбец,содержащий наименьшую сумму элементов- Pascal(Паскаль)
  • B матрице С[1..N,1..M] переставить столбцы по возрастанию сумм чисел в каждом столбце матрицы — Pascal(Паскаль)
  • Дана матрица размера M
  • Дана матрица размера 5*6. Составить программу для просчёта количества нечётных элементов в каждом столбце матрицы -…
  • Построить новую матрицу, отличающуюся от заданной тем, что на главной диагонали все отрицательные элементы заменены их…

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти сальдо денежных потоков
  • Как проще найти музей как так
  • Как составить графическую модель чисел
  • Как найти парня если есть недостатки
  • Как исправить ошибки в процессоре

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии