
Завдання 1
Лінійний обчислювальний процес.
Скласти алгоритм та написати програму розрахунку за функціями при різних значеннях аргументу:
Обчислити
y=sin3(x2+a)2
-
z=x2/a+cos2(x+b)3,
де a=1,1;
b=0,004;
x=0,2.
А
лгоритм
програми
Лістинг програми
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <locale.h>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
const float a=1.1,b=0.004,x=0.2;
float y,z;
y=pow(sin(pow((pow(x,2)+a),2)),3)-pow((x/b),1/3);
z=(pow(x,2)/a)+pow(cos(pow((x+b),3)),2);
printf("Значение y=%5.2f\n",y);
printf("Значение z=%5.2f\n",z);
getch();
return 0;
}
Результати роботи програми
Завдання 2
Циклічні програми з розгалуженням
Скласти програму обчислення значення функцій при різних значеннях аргументів, заданих інтервалом зміни і величиною кроку, результат представити у вигляді таблиці.
де
Алгоритм програми
Лістинг програми
#include "stdafx.h"
#include <math.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
float z,x;
const float a=2.4,hx=0.5,xn= -3,xk=3;
x=xn;
printf(" X | Z \n-----|-----\n");
while(x<=xk)
{
z=(pow(a,x)*log(abs(x+8)))/(x+1);
printf("%5.2f|%5.2f\n",x,z);
x=x+hx;
}
getch();
return 0;
}
Результати роботи програми
Завдання 3
Одновимірні масиви (з використанням динамічних масивів та покажчиків)
Скласти алгоритм і програму, яка в одновимірному масиві обчислює:
а) кількість елементів масиву, рівних нулю.
б) суму елементів масиву, розташованих після мінімального елементу.
в) упорядкувати елементи масиву за зростанням модулів.
Алгоритм програми
while (a[i]!=min)
+
-
Обчислення суми елементів, розташованих після мінімального
Виведення суми
for (i=0;i<9;i++)
for (j=0; j<9;j++)

Сортування масиву за зростанням модулів
Виведення відсортованого масиву
Кінець
Лістинг програми
#include "stdafx.h"
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
srand(time(0));
int S=0,i,j,x,a[10],kol0=0,min;
printf("Случайно сформированный массив чисел\n\n");
for (i=0;i<10;i++)
{
printf("%i\t",a[i]=rand()%20-10);
if (a[i]==0) kol0++;
}
printf("\nКоличество элементов массива, равных нулю = %i\n",kol0);
min=a[0];
for (i=0;i<10;i++)
{
if (a[i]<=min) min=a[i];
}
i=10-1;
while (a[i]!=min)
{
S+=a[i];
i--;
}
printf("Сумма элементов массива, расположенных после минимального элемента = %i\n",S);
for (i=0;i<9;i++)
for (j=0; j<9;j++)
if (abs(a[j]) > abs(a[j+1]))
{
x = a[j];
a[j] = a[j+1];
a[j+1] = x;
}
printf("\nМассив, упорядоченный по возрастанию модулей\n\n");
for (int i=0;i<10;i++) printf("%i\t",a[i]);
getch();
return 0;
}
Результати
роботи програми
Завдання 4
Двовимірні масиви з підпрограмами
Використовуючи підпрограми скласти алгоритм та програму обробки двовимірного масиву: Нехай задана речова матриця. Розглядаючи її як вектор рядків, упорядкувати її за кількістю непарних елементів в кожному рядку.
Алгоритм програми
Лістинг програми
#include "stdafx.h"
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include <conio.h>
#include <math.h>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
srand((unsigned)time(0));
int a[3][3],i,j,kn1=0,kn2=0,kn3=0,x[3],y[3];
printf("Случайно сформированная матрица\n\n");
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf("%i\t",a[i][j]=rand()%20-10);
}
printf("\n\n");
}
for (j=0;j<3;j++)
{
if (a[0][j]%2==1||a[0][j]%2==-1) kn1++;
if (a[1][j]%2==1||a[1][j]%2==-1) kn2++;
if (a[2][j]%2==1||a[2][j]%2==-1) kn3++;
if (kn1>kn2&&kn2<kn3&&kn1<kn3) x[j]=a[0][j], a[0][j]=a[1][j], a[1][j]=x[j];
else if (kn1>kn2&&kn2<kn3&&kn1>kn3) x[j]=a[0][j], a[0][j]=a[1][j], a[1][j]=a[2][j], a[2][j]=x[j];
else if (kn1<kn2&&kn2>kn3&&kn1<kn3) x[j]=a[1][j], a[1][j]=a[2][j], a[2][j]=x[j];
else if (kn1<kn2&&kn2>kn3&&kn1>kn3) x[j]=a[0][j], y[j]=a[1][j], a[0][j]=a[2][j], a[1][j]=x[j], a[2][j]=y[j];
else if (kn1<kn2&&kn2>kn3&&kn1==kn3) x[j]=a[1][j], a[1][j]=a[2][j], a[2][j]=x[j];
else if (kn1>kn2&&kn2<kn3&&kn1==kn3) x[j]=a[0][j], a[0][j]=a[1][j], a[1][j]=x[j];
else if (kn1==kn2&&kn2<kn3) a[0][j]=a[0][j],a[1][j]=a[1][j],a[2][j]=a[2][j];
else if (kn1==kn2&&kn2>kn3) x[j]=a[0][j], y[j]=a[1][j], a[0][j]=a[2][j], a[1][j]=x[j], a[2][j]=y[j];
else if (kn1>kn2&&kn2==kn3) x[j]=a[0][j], x[j]=a[0][j], a[0][j]=a[1][j], a[1][j]=a[2][j], a[2][j]=x[j];
else if (kn1<kn2&&kn2==kn3) a[0][j]=a[0][j],a[1][j]=a[1][j],a[2][j]=a[2][j];
}
printf("Матрица, упорядоченная по количеству нечетных элементов в каждой строке\n\n");
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf("%i\t",a[i][j]);
}
printf("\n\n");
}
getch();
return 0;
}
Результати
роботи програми
Завдання 5
Обробка символьних рядків
Введене речення обробити так, щоб його послідовність слів надрукувати у зворотному порядку.
Лістинг програми
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <vector>
#include <string>
#include <locale.h>
using namespace std;
std::vector<std::string> split(const std::string& s)
{
std::vector<std::string> vec;
typedef std::string::size_type str_size;
str_size i = 0;
int count = 0;
while (i != s.size())
{
while (isspace(s[i]) && i != s.size()) ++i;
str_size j = i;
while (!isspace(s[j]) && j != s.size()) ++j;
if (i != j)
{
vec.push_back(s.substr(i, j - i));
i = j;
}
}
return vec;
}
std::string makestr(std::vector<std::string> v)
{
std::string buf;
std::vector<std::string>::size_type i = v.size() - 1;
while (i != 0)
{
buf += v[i] + " ";
--i;
}
buf +=v[i];
return buf;
}
int main()
{
setlocale(LC_CTYPE,"Russian");
cout<<"Введите строку символов или предложение"<<endl;
std::string str, newstr;
std::vector<std::string> v;
std::getline(std::cin, str);
v = split(str);
newstr = makestr(v);
cout<<"Строка символов (предложение) в обратной последовательности слов"<<endl;
std::cout << newstr;
getch();
return 0;
}