- •Минск 2016 Лабораторная работа № 1. Способы представления алгоритмов
- •Лабораторная работа № 3. Ввод и вывод информации
- •Лабораторная работа № 4. Разветвляющиеся программы
- •Лабораторная работа № 5. Циклические программы
- •Лабораторная работа № 6. Отладка программ
- •Лабораторная работа № 7. Вычисление сумм, произведений, экстремумов
- •Лабораторная работа № 8. Решение инженерных задач на основе циклических программ
- •Лабораторная работа № 12. Обработка символьной информации
- •Лабораторная работа № 14. Динамические массивы и функции пользователя
- •Лабораторная работа № 16. Массивы и ссылки при работе с функциями
Лабораторная работа № 14. Динамические массивы и функции пользователя
# include <iostream>
using namespace std;
void massiv();
void matrix();
int main(void)
{
setlocale(LC_CTYPE, "Russian");
int c;
do
{
cout << endl;
cout << "Введите" << endl;
cout << "1-одномерный массив" << endl;
cout << "2-работа с матрицей" << endl;
cout << "3-выход" << endl;
cin >> c;
switch (c)
{
case 1: massiv(); break;
case 2: matrix(); break;
case 3: break;
}
} while (c != 3);
}
void massiv()
{
int size = 0, i, n;
float *M, sum = 0, avar, mn;
cout << "Введите размер массива ";
cin >> size;
M = new float[size];
for (i = 0; i < size; i++)
{
cout << "Введите " << i + 1 << " элемент ";
cin >> *(M + i);
sum += *(M + i);
}
avar = sum / size;
mn = abs(*M - avar);
n = 0;
for (i = 0; i < size; i++)
if (*(M + i) > avar)
{
n = n + 1;
}
cout << "Количество элементов больших среднего арифметического=" << n;
cout << endl;
delete[] M;
}
void matrix()
{
int **A, row, col, i, j, max;
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 C = 0;
for (i = 0; i < row; i++){
int D = 0;
for (j = 0; j <col; j++)
if (*(*(A + i) + j) == 0)
{
D = D + 1;
}
if (D == 0)
C = C + 1;
}
cout << "Количество строк не содержащих ни одного нулевого элемента " << C << endl;
max = -2000000000;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
int c = 0;
int e = *(*(A + i) + j);
for (int k = 0; k < row; k++)
for (int l = 0; l < col; l++)
if (*(*(A + k) + l) == e)
c = c + 1;
if (c > 1)
if (max < e) {
max = e;
}
}
}
cout << "Максимальное из чисел, встречающееся болше одного раза: " << max << endl;
for (int k = 0; k < row; k++)
delete A[k];
delete[] A;
}
Лабораторная работа № 15. Указатели как параметры и результаты функции
7 |
e x + x 4 |
#include <iostream>
#include <math.h>
using namespace std;
double f(double x)
{
return exp(x) + x - 4;
}
double fs(double x)
{
return exp(x) + 1;
}
double fs2(double x)
{
return exp(x);
}
double dichotomyMethod(double(*g) (double), double a, double b, double e)
{
while (fabs(a - b) > 2.0*e)
{
double x = (a + b) / 2.0;
if (g(x)*g(a) <= 0)
b = x;
else
a = x;
}
return (a + b) / 2.0;
}
double tangentMethod(double(*g) (double), double(*gs) (double), double(*gs2) (double), double a, double b, double e)
{
double x, x1;
if (g(a)*gs2(a) > 0)
x1 = a;
else
x1 = b;
x = x1;
do
{
x = x1;
x1 = x - (g(x) / gs(x));
} while (fabs(x1 - x) > e);
return x1;
}
void main()
{
setlocale(LC_CTYPE, "Russian");
double a, b, e;
cout << "Введите левую границу интервала (a) "; cin >> a;
cout << "Введите правую границу интервала (b) "; cin >> b;
cout << "Введите точность решения (e) "; cin >> e;
cout << "Корень решения методом дихотомии:" << dichotomyMethod(&f, a, b, e) << endl;
cout << "Корень решения методом касательных:" << tangentMethod(&f, &fs, &fs2, a, b, e) << endl;
}
8 |
Написать программу, которая осуществляет сравнение двух строк и выводит сообщение о том, какие символы совпадают. |
#include <iostream>
using namespace std;
char* getSimilar(char* a, char *b)
{
int c = 0;
int l1 = strlen(a);
int l2 = strlen(b);
int max = l1;
int min = l2;
if (l2 > max)
max = l2;
min = l1;
for (int i = 0; i <= min; i++)
{
for (int j = 0; j <= max; j++)
{
if (a[i] == b[j])
c = c + 2;
}
}
char* result = new char[c + 2];
c = 0;
for (int i = 0; i <= min; i++)
{
for (int j = 0; j <= max; j++)
{
if (a[i] == b[j])
{
result[c] = a[i];
result[c + 1] = ' ';
c = c + 2;
}
}
}
result[c] = 0;
return result;
}
void main()
{
setlocale(LC_CTYPE, "Russian");
char* s1 = new char[256];
char* s2 = new char[256];
cout << "Введите первую первую строку "; cin >> s1;
cout << "Введите вторую строку "; cin >> s2;
char* r = getSimilar(s1, s2);
cout << "Совпадающие символы двух строк: " << r << endl;
delete[]r;
}