C/C++
Обработка двумерных массивов в функциях
Вычислить сумму модулей всех отрицательных элементов матрицы
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
int main()
{
const int n = 5, m = 5; /* Размеры матрицы */
int A[n][m];
/* геренрируем значения матрицы */
srand(time(NULL));
for(int x = 0; x < n; x++)
{
for(int y = 0; y < m; y++)
{
A[x][y] = rand() % 23 * pow(-1.0, rand() % 3);
printf("%d ", A[x][y]);
}
putchar('\n');
}
putchar('\n');
/* вычисляем сумму... */
int sum = 0;
for(int x = 0; x < n; x++)
for(int y = 0; y < m; y++)
if(A[x][y] < 0)
sum += fabs( A[x][y] );
/* вывод результата на экран */
printf("%d\n", sum);
return 0;
}
#include <time.h>
#include <stdlib.h>
#include <math.h>
int main()
{
const int n = 5, m = 5; /* Размеры матрицы */
int A[n][m];
/* геренрируем значения матрицы */
srand(time(NULL));
for(int x = 0; x < n; x++)
{
for(int y = 0; y < m; y++)
{
A[x][y] = rand() % 23 * pow(-1.0, rand() % 3);
printf("%d ", A[x][y]);
}
putchar('\n');
}
putchar('\n');
/* вычисляем сумму... */
int sum = 0;
for(int x = 0; x < n; x++)
for(int y = 0; y < m; y++)
if(A[x][y] < 0)
sum += fabs( A[x][y] );
/* вывод результата на экран */
printf("%d\n", sum);
return 0;
}
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<unistd.h>
#include<math.h>
#define MAX 10
int SumAbsNegative(int *arr, int n, int m)
{
int sum=0;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
if( (*(arr+i*m+j)) < 0 )
sum = fabs(sum)+fabs(*(arr+i*m+j));
return sum;
}
int main()
{
int **array, N, M;
printf("Enter size of array[N][M]");
printf("\nN = ");
scanf("%d",&N);
printf("\nM = ");
scanf("%d",&M);
array=(int**)malloc(N*sizeof(int*));
if(array)
{//if array
for(int i = 0; i < N; i++)
{//for i
array[i]=(int*)malloc(M*sizeof(int));
if(!array[i])
{//if! array
printf("\nError. Column not created.");
exit(1);
}//if! array
}//for i
srand(time(NULL));
printf("Array:\n");
for(int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
{
if(rand()%2==0)
array[i][j]=rand()%MAX;
else
array[i][j]=(-1)*(rand()%MAX);
printf("%3d ",array[i][j]);
};
printf("\n");
}
int **pa=array;
printf("\n\nSum of |negative elements| = %d\n\n",
SumAbsNegative(*pa,N,M));
for(int i = 0; i < N; i++)
free(array[i]);
free(array);
}//if array
else
printf("\nError. Array not created.");
fflush(stdout);
sleep(10);
return 0;
}
#include<time.h>
#include<stdlib.h>
#include<unistd.h>
#include<math.h>
#define MAX 10
int SumAbsNegative(int *arr, int n, int m)
{
int sum=0;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
if( (*(arr+i*m+j)) < 0 )
sum = fabs(sum)+fabs(*(arr+i*m+j));
return sum;
}
int main()
{
int **array, N, M;
printf("Enter size of array[N][M]");
printf("\nN = ");
scanf("%d",&N);
printf("\nM = ");
scanf("%d",&M);
array=(int**)malloc(N*sizeof(int*));
if(array)
{//if array
for(int i = 0; i < N; i++)
{//for i
array[i]=(int*)malloc(M*sizeof(int));
if(!array[i])
{//if! array
printf("\nError. Column not created.");
exit(1);
}//if! array
}//for i
srand(time(NULL));
printf("Array:\n");
for(int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
{
if(rand()%2==0)
array[i][j]=rand()%MAX;
else
array[i][j]=(-1)*(rand()%MAX);
printf("%3d ",array[i][j]);
};
printf("\n");
}
int **pa=array;
printf("\n\nSum of |negative elements| = %d\n\n",
SumAbsNegative(*pa,N,M));
for(int i = 0; i < N; i++)
free(array[i]);
free(array);
}//if array
else
printf("\nError. Array not created.");
fflush(stdout);
sleep(10);
return 0;
}
Похожие вопросы
- Создать и вывести двумерный массив через функции
- Программирование. Обработка двумерных массивов (матриц)
- Обработка одномерных массивов в функциях
- Двумерные массивы C++, ничего не понимаю((( Нужна помощь
- Запись и чтение двумерного массива в бинарный файл
- Двумерный массив C++
- Задача.Программирование.С++.Динамический двумерный массив.
- Ввести двумерный массив A(n x m)
- Указатель превращается в двумерный массив. (Си)
- Как работать с элементами динамического массива из функции?