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. Составить программу для просчёта количества нечётных элементов в каждом столбце матрицы -…
- Построить новую матрицу, отличающуюся от заданной тем, что на главной диагонали все отрицательные элементы заменены их…