Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
187.07 Кб
Скачать

Вариант №7

Дана матрица вещественных чисел A[N][M]. Сформировать матрицу B[N][M], поместив на место первой строки и первого столбца те, на пересечении которых находится максимальный по модулю элемент.

#include <iostream>

#include <math.h>

void inputA(double **a, int n, int m){

puts("Введите элементы матрицы А:");

for(int i=0; i<n; ++i)

for(int j=0; j<m; ++j)

scanf("%lf", &a[i][j]);}

void outputArr(double **a, int n, int m){

for(int i=0; i<n; ++i){

for(int j=0; j<m; ++j)

printf("%lf\t", a[i][j]);

printf("\n");}}

void IndexMax(double **a, int n, int m, int &i_max, int &j_max){

double max=fabs(a[0][0]);

i_max=0;j_max=0;

for(int i=1; i<n; ++i){

for(int j=1; j<m; ++j)

if(fabs(a[i][j])>max){

max=fabs(a[i][j]);

i_max=i;j_max=j;} }}

void Transform(double **a, double **b, int n, int m) { int indexR, indexC;

IndexMax(a,n,m, indexR, indexC);

//переписываем в b матрицу а

for(int i=0; i<n; ++i){

for(int j=0; j<m; ++j){b[i][j]=a[i][j];} }

//выносим на первое место, сдвигаем

double buf;

for(int j=0; j<m; ++j){

buf=b[indexR][j];int k=indexR;

while(k>0){ b[k][j]=b[k-1][j]; --k;}

b[0][j]=buf;}

//выносим столбец вперед, сдвигаем

for(int i=0; i<n; ++i){ buf=b[i][indexC];

int k=indexC;

while(k>0){ b[i][k]=b[i][k-1]; --k;}

b[i][0]=buf;}}

void main(){

setlocale(LC_ALL, "Russian");

double **A, **B; int n, m;

puts("Кол-во строк:"); scanf("%d",&n);

puts("Кол-во столбцов:"); scanf("%d", &m);

if(n<=0||m<=0){puts("Ошибка!!!");system("pause");

return;}

A=new double*[n];B=new double*[n];

for(int i=0; i<n; ++i){

A[i]=new double[m];B[i]=new double[m];}

inputA(A, n, m);

Transform(A, B, n, m);

puts("Матрица А:");outputArr(A, n, m);

puts("Матрица В:");outputArr(B, n, m);

//удаление матриц

for(int i=0; i<n; ++i)

{

delete [] A[i];

delete [] B[i];

}

delete [] A;

delete [] B;

}

Дан массив действительных чисел X[N]. Вычислить Y = max (X[i]) - min (X[i]) . Вывести вычисленное значение на экран.

#include <iostream>

using namespace std;

void Vvod(int n, double *arr)

{

for(int i = 0; i < n; i++)

{

cout << "arr[" << i << "]: ";

cin >> arr[i];

}

}

void Vivod(int n, double *arr)

{

for(int i = 0; i < n; i++)

{

cout << arr[i] << " ";

}

}

void main()

{

int n;

cout << "Razmer: "<<endl;

cin >> n;

double *A = new double[n];

cout << "Massiv A" << endl;

Vvod(n, A);

double max = -1000;

double min = 1000;

double result;

for(int i = 0; i < n; i++)

{

if(A[i] > max)

{

max = A[i];

}

if(A[i] < min)

{

min = A[i];

}

}

result = max - min;

cout << "\nMassiv A" << endl;

Vivod(n, A);

cout << "\nMax - Min = " << result;

cout << endl;

delete[] A;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]