Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Курс / Практика / Практика Пуха.doc
Скачиваний:
0
Добавлен:
30.05.2020
Размер:
1.69 Mб
Скачать

3.2 Програмування алгоритмів, що розгалужуються

При виконанні завдання передбачити вибір вигляду функції f(x): sh(x), x2 або ex. Передбачити виведення інформації про вибрану гілку обчислень.

Код програми:

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

double x,y,f,a,s;

int k;

cout << "Vvedite x "; cin >> x;

cout << "Vvedite y "; cin >> y;

cout << "Viberite f: 1 - sh(x), 2 - x^2, 3 - exp(x)";

cin >> k;

switch(k)

{

case 1: f=sinh(x); break;

case 2: f=pow(x,2); break;

case 3: f=exp(x); break;

default: cout << "Ne vuibrana funkciya "; return 1;

}

if (x/y>0) {

//cout << "Net rezultata" << endl;

//return 1;

s=pow(x+log(y),3);

} else

if (x/y<0) s=2/3+log(abs(sin(y)));

else s=pow((x*x),1/3);

cout << "RESULT = " << s << endl;

system("pause");

return 0;

}

Рис. 12 Виконання завдання

Рис. 13 Виконання завдання (другий варіант)

Рис. 14 Виконання завдання (третій варіант)

3.3. Програмування циклічних алгоритмів

Вивести на екран таблицю значень функції Y(x) і її розкладання в ряд S(x) для x, що змінюється від а до b з кроком h = (b – а)/10, таблиця 3.1.

Таблиця 3.1

а

b

S(x)

n

Y(x)

13

–2

–0.1

160

Код програми:

#include <iostream>

#include <iomanip>

#include <math.h>

using namespace std;

int main(){

double a,b,h,x,y,s,p;

int n,i;

cout << "Vvedite a,b,h,n" << endl;

cin >> a >> b >> h >> n;

x=a;

do

{

p=s=1;

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

{

p *= -(pow((1+x),2))+(pow((1+x),4))/2;

s += p;

}

y=log(1/(2+2*x+x*x));

cout << setw(15) << x << setw(15) << s << setw(15) << y << endl;

x += h;

}

while (x <= b+h/2);

cout << endl;

system("pause");

return 0;

}

Рис. 15 Виконання завдання

3.4 Програмування з використанням одновимірних масивів

Заданий масив з до символів. Видалити з нього повторні входження каж-дого символу.

Код програми:

#include <iostream>

#include <set>

#include <string>

#include <algorithm>

#include <iterator>

#include <sstream>

int main(){

std::string s;

getline (std::cin, s);

std::istringstream ist(s);

std::istream_iterator<char> st(ist), fn;

std::set<char> stt(st, fn);

std::copy(stt.begin(), stt.end(), std::ostream_iterator<char>(std::cout, " "));

return 0;

}

Рис. 16 Виконання завдання

3.5 Покажчики. Програмування з використанням динамічних двовимірних масивів

У матриці розміром NXM знайти максимальний серед елементів, лежачих нижче за побічну діагональ, і мінімальний серед елементів, лежачих вище за головну діагональ.

Код програми:

#include <iostream>

#include <iomanip>

#include <ctime>

int main()

{

setlocale(LC_ALL, "Russian");

int row,column;

std::cout << "Введите кол-во строк в матрице: ";

std::cin >> row;

std::cout << "Введите кол-во столбцов в матрице: ";

std::cin >> column;

int **MAS = new int *[row];

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

MAS[i] = new int [column];

srand(time(NULL));

std::cout << "Матрица: " << std::endl;

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

{

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

{

MAS[i][j]=10-rand()%21;

std::cout << std::setw(3) << MAS[i][j];

}

std::cout << std::endl;

}

int min=MAS[0][1];

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

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

if ((j>i) && (MAS[i][j]<min)) min=MAS[i][j];

int max=MAS[0][1];

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

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

if ((j>i) && (MAS[i][j]>max)) max=MAS[i][j];

std::cout << "Наименьший элемент, лежащий выше главной диагонали: " << min<<std::endl;

std::cout << " Mаксимальный среди элементов, лежащих ниже побочной " << max<<std::endl;

std::cout << std::endl;

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

delete []MAS[i];

delete []MAS;

system("pause");

return 0;

}

Рис. 17 Виконання завдання