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;
}
}
задан 24 мая 2016 в 7:13
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
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
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
19.8k17 gold badges98 silver badges185 bronze badges
asked Feb 22, 2016 at 16:14
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 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. Составить программу для просчёта количества нечётных элементов в каждом столбце матрицы -…
- Построить новую матрицу, отличающуюся от заданной тем, что на главной диагонали все отрицательные элементы заменены их…

