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

Лабораторная работа № 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;

}

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