Практическая работа №1 по Проектирование алгоритмов



Download 0,87 Mb.
Sana11.06.2022
Hajmi0,87 Mb.
#656356
TuriПрактическая работа
Bog'liq
pr 1


МИНИСТЕРСТВО ПО РАЗВИТИЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОММУНИКАЦИЙ РЕСПУБЛИКИ УЗБЕКИСТАН
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИ
ФАКУЛЬТЕТ РАДИО И МОБИЛЬНАЯ СВЯЗЬ

Практическая работа № 1


по Проектирование алгоритмов
Выполнил:Нуриддинов Абдуллох 813-20
Задание №1

  1. Составить программу вычисления квадратного уравнения.

  2. #include

  3. #include

  4. using namespace std;


  5. int main()

  6. {

  7. double a;

  8. double b;

  9. double c;

  10. double x;

  11. cout << "Введите значение a: ";

  12. cin >> a;

  13. cout << "Введите значение b: ";

  14. cin >> b;

  15. cout << "Введите значение c: ";

  16. cin >> c;

  17. if((b*b - 4*a*c) >= 0) //Если дискриминант больше или равен 0

  18. {

  19. x = ( -1*b + sqrt(b*b - 4*a*c) ) / (2 * a);

  20. cout << "Первый корень равен " << x << endl;

  21. x = ( -1*b - sqrt(b*b - 4*a*c) ) / (2 * a);

  22. cout << "Второй корень равен " << x << endl;

  23. }

  24. else

  25. {

  26. cout << "Дискриминант меньше 0, корни невещественные." << endl;

  27. }


  28. return 0;

  29. }

2.Реализовать программу вычисления площади треугольника по формуле Герона.


include // std::cout, std::fixed
#include // std::setprecision //данную библиотеку подключаем для того, чтобы установить количество знаков после запятой
#include //данную библиотеку подключаем для того, чтобы была возможность извлечь корень и возвести в квадрат
using namespace std;
//функция рассчитывает расстояние между двумя точками с заданными координатами
double distance (double x1, double y1, double z1,
double x2, double y2, double z2)
{
return sqrt( pow(x1-x2, 2) + pow(y1-y2, 2) + pow(z1-z2, 2));
}
//функция вычисляет площадь треугольника по формуле Герона
double Geron (double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3)
{
double a,b,c,P;//стороны треугольника и полупериметр
a = distance(x1,y1,z1, x2,y2,z2);
b = distance(x2,y2,z2, x3,y3,z3);
c = distance(x1,y1,z1, x3,y3,z3);
P = (a+b+c)/2;
return sqrt(P*(P-a)*(P-b)*(P-c));
}
//функция вычисляет площадь полной поверхности пирамиды
double square (double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3,
double x4, double y4, double z4)
{
double S1,S2,S3,S4,S;//площади треугольников и площадь полной поверхности пирамиды
S1 = Geron(x1,y1,z1,x2,y2,z2,x3,y3,z3);
S2 = Geron(x1,y1,z1,x2,y2,z2,x4,y4,z4);
S3 = Geron(x1,y1,z1,x3,y3,z3,x4,y4,z4);
S4 = Geron(x2,y2,z2,x3,y3,z3,x4,y4,z4);
S = S1+S2+S3+S4;
return S;
}
int main()
{
double x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4;//координаты вершин пирамиды
cin >> x1 >> y1 >> z1
>> x2 >> y2 >> z2
>> x3 >> y3 >> z3
>> x4 >> y4 >> z4;
double S = square (x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4);
cout << fixed << setprecision(1) << S << endl;
return 0;
}

Задание № 2


#include
#include

using namespace std;

const int N = 10;

int main()


{
int mass[N], max, min;

cout << "Элементы: |";


for(int r = 0; r {
mass[r] = rand()%99;
cout << mass[r] << "|";
}
cout << endl;

max = mass[0];
min = mass[0];
for(int r = 1; r {
if(max < mass[r]) max = mass[r];
if(min > mass[r]) min = mass[r];
}
cout << "Min: " << min << endl;
cout << "Max: " << max << endl;

return 0;
}

Задание №3


#include
using namespace std;
int main()
{
int row1, row2, col1, col2;
double** a, ** b, ** c;
system("chcp 1251");
system("cls");
cout << "Введите количество строк первой матрицы: ";
cin >> row1;
cout << "Введите количество столбцов первой матрицы: ";
cin >> col1;
cout << "Введите количество строк второй матрицы: ";
cin >> row2;
cout << "Введите количество столбцов второй матрицы: ";
cin >> col2;
if (col1 != row2)
{
cout << "Умножение невозможно!";
cin.get(); cin.get();
return 0;
}
// Ввод элементов первой матрицы
a = new double* [row1];
cout << "Введите элементы первой матрицы" << endl;
for (int i = 0; i < row1; i++)
{
a[i] = new double[col1];
for (int j = 0; j < col1; j++)
{
cout << "a[" << i << "][" << j << "]= ";
cin >> a[i][j];
}
}
// Вывод элементов первой матрицы
for (int i = 0; i < row1; i++)
{
for (int j = 0; j < col1; j++)
cout << a[i][j] << " ";
cout << endl;
}
// Ввод элементов второй матрицы
b = new double* [row2];
cout << "Введите элементы второй матрицы" << endl;
for (int i = 0; i < row2; i++)
{
b[i] = new double[col2];
for (int j = 0; j < col2; j++)
{
cout << "b[" << i << "][" << j << "]= ";
cin >> b[i][j];
}
}
// Вывод элементов второй матрицы
for (int i = 0; i < row2; i++)
{
for (int j = 0; j < col2; j++)
{
cout << b[i][j] << " ";
}
cout << endl;
}
// Умножение матриц
c = new double* [row1];
for (int i = 0; i < row1; i++)
{
c[i] = new double[col2];
for (int j = 0; j < col2; j++)
{
c[i][j] = 0;
for (int k = 0; k < col1; k++)
c[i][j] += a[i][k] * b[k][j];
}
}
// Вывод матрицы произведения
cout << "Матрица произведения" << endl;
for (int i = 0; i < row1; i++)
{
for (int j = 0; j < col2; j++)
cout << c[i][j] << " ";
cout << endl;
}
cin.get(); cin.get();
return 0;
}

Задание № 4


#include // добавляем функции для ввода и вывода на экран
#include // добавляем математические функции

// функция, интеграл


double f(double x)
{
return sin(x);
}

int main()


{
int i; // счётчик
double Integral; // здесь будет интеграл
double a = 0.0, b = 1.0; // задаём отрезок интегрирования
double h = 0.1;// задаём шаг интегрирования

double n; // задаём число разбиений n

n = (b - a) / h;
// вычисляем интеграл по формуле центральных прямугольников
Integral = 0.0;
for(i = 1; i <= n; i++)
Integral = Integral + h * f(a + h * (i - 0.5));
cout << "I1 = " << Integral << "\n";

// вычисляем интеграл по формуле трапеций


Integral = h * (f(a) + f(b)) / 2.0;
for(i = 1; i <= n-1; i++)
Integral = Integral + h * f(a + h * i);
cout << "I2 = " << Integral << "\n";

// вычисляем интеграл по формуле Симпсона


Integral = h * (f(a) + f(b)) / 6.0;
for(i = 1; i <= n; i++)
Integral = Integral + 4.0 / 6.0 * h * f(a + h * (i - 0.5));
for(i = 1; i <= n-1; i++)
Integral = Integral + 2.0 / 6.0 * h * f(a + h * i);
cout << "I3 = " << Integral << "\n";

system("pause");


}

Задание № 5


a) Метод последовательных приближений (метод итераций)
#define _USE_MATH_DEFINES
#include
#include
using namespace std;
double find(double x, double eps)
{
double rez; int iter = 0;
cout << "x0= " << x << " ";
do {
rez = x;
x = 1 / (sin(M_PI*x / 180));
iter++;
} while (fabs(rez - x) > eps && iter<20000);
cout << iter << " iterations" << endl;
return x;
}
int main()
{
cout << find(7, 0.00001);
cin.get();
return 0;
}

b) Метод Ньютона (метод касательных)
#define _USE_MATH_DEFINES
#include
#include
using namespace std;
double find(double x, double eps)
{
double f, df; int iter = 0;
cout << "x0= " << x << " ";
do {
f = sin(M_PI*x / 180) - 1 / x;
df = M_PI / 180 * cos(M_PI*x / 180) + 1 / (x*x);
x = x - f / df;
iter++;
} while (fabs(f) > eps && iter<20000);
cout << iter << " iterations" << endl;
return x;
}
int main()
{
cout << find(1, 0.00001);
cin.get(); return 0; }

c) Метод секущих (метод хорд)
#define _USE_MATH_DEFINES
#include
#include
using namespace std;
double find(double x0, double x1, double eps)
{
double rez = x1, f0, f;
int iter = 0;
cout << "x0= " << x0 << " x1= " << x1 << " ";
do {
f = sin(M_PI*rez / 180) - 1 / rez;
f0 = sin(M_PI*x0 / 180) - 1 / x0;
rez = rez - f / (f - f0)*(rez - x0);
iter++;
} while (fabs(f) > eps && iter<20000);
cout << iter << " iterations" << endl;
return rez;
}
int main()
{
cout << find(1.0, 10.0, 0.000001);
cin.get(); return 0;
}

d) Метод половинного деления (метод дихотомии)


#define _USE_MATH_DEFINES
#include
#include
using namespace std;
double func(double x)
{
return (sin(M_PI*x / 180) - 1 / x);
}
double find(double x0, double x1, double eps)
{
double left = x0, right = x1, x, fl, fr, f;
int iter = 0;
cout << "x0= " << x0 << " x1= " << x1 << " ";
do {
x = (left + right) / 2;
f = func(x);
if (f > 0) right = x;
else left = x;
iter++;
} while (fabs(f) > eps && iter<20000);
cout << iter << " iterations" << endl;
return x;
}
int main()
{
cout << find(1.0, 10.0, 0.000001);
cin.get(); return 0;
}

Download 0,87 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish