- •Щоденник-звіт з навчальної практики База практики________________________________________________________
- •1 Теоретичні відомості
- •2 Практичне завдання
- •2.1 Завдання № 1
- •2.2 Завдання № 2
- •2.3 Завдання № 3
- •2.4 Завдання № 4-5
- •2.5 Завдання № 6
- •2.6 Завдання № 7
- •3 Індивідуальні завдання
- •3.1 Програмування лінійних алгоритмів
- •3.2 Програмування алгоритмів, що розгалужуються
- •3.3. Програмування циклічних алгоритмів
- •3.4 Програмування з використанням одновимірних масивів
- •3.5 Покажчики. Програмування з використанням динамічних двовимірних масивів
- •Висновок
- •Література
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 Виконання завдання