Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
97
Добавлен:
29.04.2018
Размер:
1.12 Mб
Скачать

Лабораторная работа № 16. Массивы и ссылки при работе с функциями

7

1. Найти в матрице первый столбец, все элементы которого отрицательны, и среднее арифметическое этих элементов. Вычесть полученное значение из всех элементов матрицы.

2. Написать функцию mn с переменным числом параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции.

#include <iostream>

using namespace std;

int findMin(int **A, int row, int col)

{

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

{

int negativeNum = 0;

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

{

if (*(*(A + i) + j) < 0)

negativeNum = negativeNum + 1;

}

if (negativeNum == row)

return j;

}

return -1;

}

int getAverage(int **A, int row, int nn)

{

int sum = 0;

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

sum = sum + *(*(A + i) + nn);

return sum / row;

}

void deduct(int **A, int row, int col, int *nc)

{

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

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

*(*(A + i) + j) = *(*(A + i) + j) - *nc;

}

void main()

{

setlocale(LC_CTYPE, "Rus");

int **A, row, col, i, j;

cout << "Введите число строк матрицы "; cin >> row;

cout << "Введите чиcло столбцов "; cin >> col;

A = new int*[row];

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

A[i] = new int[col];

for (i = 0; i < row; i++)

for (j = 0; j < col; j++)

{

cout << "Введите A[" << i << "],[" << j << "]= ";

cin >> *(*(A + i) + j);

}

int negCol = findMin(A, row, col);

if (negCol >= 0)

{

cout << "Индекс отрицательного столбца: " << negCol << endl;

int average = getAverage(A, row, negCol);

cout << "Среднее арифметическое: " << average << endl;

deduct(A, row, col, &average);

}

cout << "Результирующая матрица:"<<endl;

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

{

cout << endl;

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

cout << "A[" << i << "," << j << "] =" << *(*(A + i) + j) << "\t";

}

for (int k = 0; k < row; k++)

delete A[k];

delete[] A;

}

#include <iostream>

using namespace std;

double mn(bool isInt, int n, ...)

{

if (isInt == true)

{

int *p = &n;

int min = 10000;

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

{

if (*(++p) < min)

min = *(++p);

}

return min;

}

else return 0;

}

void main()

{

cout << mn(true, 8, 5, 8, 3, 12, 1, -1, 3, 5) << endl;

cout << mn(true, 2, 8, 3) << endl;

cout << mn(false, 5, 1.1, 2.6, 4, -3, 5) << endl;

}

#include <iostream>

using namespace std;

int fmin (int n, ...)

{ int *p = &n; int min;

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

{ if (i==1) min=*(p+1);

if (*(p+1)<min) min=*(p+1);

cout<<min<<" "<<*(p+1)<<endl;

p++;

}

return min;

}

void main()

{ cout << "fmin = " << fmin(6,4,5,1,2,3,0)<<endl; }

58

Соседние файлы в папке Пустовалова 1 сем