C/C++
Нужна ваша помощь по программированию C++
Составить программу для двухмерной обработки массива. Поменять местами столбцы матрицы, содержащие минимальные и максимальные элементы.
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<unistd.h>
#define one 5
#define two 5
#define MAX 100
#define MIN -100
typedef struct result
{
int min;
int max;
int min_i;
int min_j;
int max_i;
int max_j;
} result;
//функция вычисления
//максимального и
//минимального элементов:
result MinMax(int *arr, int One, int Two)
{
result res;
int min=MAX, max=MIN, min_i, min_j, max_i, max_j;
for(int i = 0; i < one; i++)
{//for i
for(int j = 0; j < two; j++)
{//for j
if( *(arr+i*two+j) < min )
{min = *(arr+i*two+j); min_i=i; min_j=j;}
if( *(arr+i*two+j) > max )
{max = *(arr+i*two+j); max_i=i; max_j=j;}
}//for j
}//for i
res.min=min;
res.max=max;
res.min_i=min_i;
res.min_j=min_j;
res.max_i=max_i;
res.max_j=max_j;
return res;
}
int main()
{
int array[one][two];
result res;
srand(time(NULL));
printf("Array:\n");
for(int i = 0; i < one; i++)
{
for(int j = 0 ; j < two; j++)
{
if(rand()%2==0)
array[i][j] = rand()%MAX;
else
array[i][j] = (-1)*(rand()%MAX);
printf("%3d ",array[i][j]);
};
printf("\n");
}
res=MinMax(array,one,two);
printf("\n\nMinimal element = %4d ",res.min);
printf("[%d][%d]",1+res.min_i,1+res.min_j);
printf("\nMaximal element = %4d ",res.max);
printf("[%d][%d]",1+res.max_i,1+res.max_j);
//перестановка столбцов
//с минимальным и
//максимальным элементами:
for(int i = 0; i < one; i++)
array[i][res.min_j]^=
array[i][res.max_j]^=
array[i][res.min_j]^=array[i][res.max_j];
//вывод итоговой матрицы
//с переставленными столбцами:
printf("\n\nResult Array:\n");
for(int i = 0; i < one; i++)
{
for(int j = 0; j < two; j++)
{
printf("%3d ",array[i][j]);
};
printf("\n");
}
fflush(stdout);//сброс буфера
sleep(10);//пауза
return 0;
}

#include<time.h>
#include<stdlib.h>
#include<unistd.h>
#define one 5
#define two 5
#define MAX 100
#define MIN -100
typedef struct result
{
int min;
int max;
int min_i;
int min_j;
int max_i;
int max_j;
} result;
//функция вычисления
//максимального и
//минимального элементов:
result MinMax(int *arr, int One, int Two)
{
result res;
int min=MAX, max=MIN, min_i, min_j, max_i, max_j;
for(int i = 0; i < one; i++)
{//for i
for(int j = 0; j < two; j++)
{//for j
if( *(arr+i*two+j) < min )
{min = *(arr+i*two+j); min_i=i; min_j=j;}
if( *(arr+i*two+j) > max )
{max = *(arr+i*two+j); max_i=i; max_j=j;}
}//for j
}//for i
res.min=min;
res.max=max;
res.min_i=min_i;
res.min_j=min_j;
res.max_i=max_i;
res.max_j=max_j;
return res;
}
int main()
{
int array[one][two];
result res;
srand(time(NULL));
printf("Array:\n");
for(int i = 0; i < one; i++)
{
for(int j = 0 ; j < two; j++)
{
if(rand()%2==0)
array[i][j] = rand()%MAX;
else
array[i][j] = (-1)*(rand()%MAX);
printf("%3d ",array[i][j]);
};
printf("\n");
}
res=MinMax(array,one,two);
printf("\n\nMinimal element = %4d ",res.min);
printf("[%d][%d]",1+res.min_i,1+res.min_j);
printf("\nMaximal element = %4d ",res.max);
printf("[%d][%d]",1+res.max_i,1+res.max_j);
//перестановка столбцов
//с минимальным и
//максимальным элементами:
for(int i = 0; i < one; i++)
array[i][res.min_j]^=
array[i][res.max_j]^=
array[i][res.min_j]^=array[i][res.max_j];
//вывод итоговой матрицы
//с переставленными столбцами:
printf("\n\nResult Array:\n");
for(int i = 0; i < one; i++)
{
for(int j = 0; j < two; j++)
{
printf("%3d ",array[i][j]);
};
printf("\n");
}
fflush(stdout);//сброс буфера
sleep(10);//пауза
return 0;
}

Похожие вопросы
- Знатоки C++ и математики. Нужна ваша помощь.
- Задание по программированию c++, буду благодарен помощи
- Программирование C++, нужна помощь)
- Нужна помощь в программировании на языке C++
- Задача по программированию C++
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Что такое #include <iostream>, std using namespace std В языке программирования C++?
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха
- Контрольная по алгоритмизации и программированию! C++
- Язык программирования c++