- •Минск 2016 Лабораторная работа № 1. Способы представления алгоритмов
- •Лабораторная работа № 3. Ввод и вывод информации
- •Лабораторная работа № 4. Разветвляющиеся программы
- •Лабораторная работа № 5. Циклические программы
- •Лабораторная работа № 6. Отладка программ
- •Лабораторная работа № 7. Вычисление сумм, произведений, экстремумов
- •Лабораторная работа № 8. Решение инженерных задач на основе циклических программ
- •Лабораторная работа № 12. Обработка символьной информации
- •Лабораторная работа № 14. Динамические массивы и функции пользователя
- •Лабораторная работа № 16. Массивы и ссылки при работе с функциями
Лабораторная работа № 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; }