Главная страница

Отчет по лабораторной работе 1 по дисциплине Программирование


Скачать 2.6 Mb.
НазваниеОтчет по лабораторной работе 1 по дисциплине Программирование
Дата01.11.2022
Размер2.6 Mb.
Формат файлаdocx
Имя файлаProgrammirovanie_1.docx
ТипОтчет
#765568

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение
высшего образования

Иркутский национальный исследовательский технический университет

Институт информационных технологий и анализа данных

наименование института

Отчет

по лабораторной работе №1
по дисциплине «Программирование»

«Разветвляющийся вычислительный процесс»

наименование темы

Вариант №10


Выполнил студент




ЭВМб-20-1










Д.Б.Цыденжапов







шифр




подпись




И.О. Фамилия

Проверил
















Е.А.Осипова













подпись




И.О. Фамилия

Работа защищена с оценкой



Иркутск 2020 г.

Задача №45

1. Условие задачи

Даны действительные числа A,B,C,D. Если A<=B<=C<=D, то каждое число заменить наибольшим из них; если A>B>C>D, то число оставить без изменения; в противном случае все числа заменяются их квадратами.

2. Математическое описание

Если A<=B<=C<=D, то переменной max мы присваиваем значение D, а затем каждой переменной присваиваем значение max. Если нет, то проверяем условие A>B>C>D. Если это условие выполняется то значения остаются неизменными, иначе каждая переменная возводиться в квадрат.

3. Таблица 1 – Внешние спецификации



Имя

Назначение

Тип

Ед. из

ОДЗ

1

A

Число

Дейст.

-

-1.7e+308 …1.7e+308

2

B

Число

Дейст.

-

-1.7e+308 …1.7e+308

3

C

Число

Дейст.

-

-1.7e+308 …1.7e+308

4

D

Число

Дейст.

-

-1.7e+308 …1.7e+308

5

max

Свободная переменная

Дейст.

-

-1.7e+308 …1.7e+308

6

exit

Булево значение

Логич.

-

true и false

7

С1

Сообщение

Текст.

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

8

С2

Сообщение

Текст.

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

Таблица сообщений

С1: «Введите действительные числа A, B, C и D через пробел».

С2: «Wrong Input!».

4. Алгоритмизация

5. Проектирование тестов

Таблица2-Таблица тестов

№ теста

Исходные данные

Результат

Примечания

A

B

C

D

A

B

C

D

1

1

2

3

4

4

4

4

4

-

2

0

3

2

1

0

9

4

1

-

3

3

3

3

3

3

3

3

3

-

4

А

Б

3

4

-

-

-

-

Wrong Input!

6. Проверка правильности алгоритма с помощью таблицы тестов



Рисунок 1 – Результат выполнения программы для теста №1



Рисунок 2 – Результат выполнения программы для теста №2



Рисунок 3 – Результат выполнения программы для теста №3



Рисунок 4 – Результат выполнения программы для теста №4

7. Кодирование алгоритма или запись языка на языке C++

#include

using namespace std;
int main()

{

double A, B, C, D, max;

bool fail=true;

cout << "Введите действительные числа A, B, C и D через пробел: " << endl;

cin >> A >> B >> C >> D;
do

{

if ( cin.fail() ){

cout << "Wrong Input!" << endl;

return 0;

}

else

fail = false;
cin.clear();

cin.ignore( cin.rdbuf()->in_avail() );

}while( fail );
if (A<=B && B<=C && C<=D)

{

int max = A;

if (B > max)

max = B;

if (C > max)

max = C;

if (D > max)

max = D;

A = max; B = max; C = max; D = max;

}

else if (!(A>B && B>C && C>D))

{

A = A*A;

B = B*B;

C = C*C;

D = D*D;

}

cout << "Результат: " << A << ' ' << B << ' ' << C << ' ' << D;

return 0;

}

Задача №59и

1. Условие задачи

Заданы действительные числа X и Y. Определить, принадлежит ли точка с координатами (X,Y) заштрихованной части плоскости.



2. Математическое описание

Используем следующие математические положения и формулы:

  1. Чтобы обозначить нужные нам линии, воспользуемся формулой: .

  2. По формуле находим уравнение для нижней линии и заштриховываем область выше неё: y .

  3. Также находим уравнение для левой линии и заштриховываем область справа от неё: y .

  4. Убираем всё выше верхней линии с помощью уравнения: 0>x>-y.

  5. Убираем полностью первую четверть.

3. Таблица



Имя

Назначение

Тип

Ед. из.

ОДЗ

1

x

Координата точки х

Дейст.

-

-1.7e+308 …1.7e+308

2

y

Координата точки у

Дейст.

-

-1.7e+308 …1.7e+308

3

C1

Сообщение

Текст

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

4

C2

Сообщение

Текст

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

5

C3

Сообщение

Текст

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

Таблица сообщений

С1: «Принадлежит»

С2: «Не принадлежит»

С3: «Введите значения x и y:»

4. Алгоритмизация




  1. Проектирование тестов

№ теста

Исходные данные

Результат

x

y

1

-1

0.5

«Принадлежит»

2

-1

1

«Принадлежит»

3

1

0

«Принадлежит»

4

1

0.5

«Не принадлежит»

5

-1

2

«Не принадлежит»



  1. Проверка правильности алгоритма с помощью таблицы тестов



Рисунок 1 – Результат выполнения программы для теста №1



Рисунок 2 – Результат выполнения программы для теста №2



Рисунок 3 – Результат выполнения программы для теста №3



Рисунок 4 – Результат выполнения программы для теста №4

  1. Кодирование алгоритма или запись алгоритма на языке C++

#include

#include

using namespace std;
int main()

{

double x,y;

cout << "Введите значения х и у: " << endl;

cin >> x >> y;

if ((x>=0 && y<=0) || (x<=0 && y<=0) || (x<=0 && y>=0)) {

if (!(0>x && x>-y)){

if ((y>=(x-1)/3) && (y<=2*x+3)) {

cout << "Принадлежит!";

}

else {

cout << "Не принадлежит!";

}

}

else {

cout << "Не принадлежит!";

}

}

else {

cout << "Не принадлежит!";

}

return 0;

}

Задача№80г

1.Условие задачи

Пусть D - заштрихованная часть плоскости (см. рис. 3) и пусть задана точка своими координатами (X,Y). Запись (X,Y) D означает, что точка с координатами X, Y лежит внутри заштрихованной области D. Определить значение функции U следующим образом:





2. Математическое модель

Используем следующие математические положения и формулы:

  1. Чтобы обозначить нужные нам линии, воспользуемся формулой: .

  2. Заштрихованная область находиться в 1 и 4 четверти.

  3. Вырезаем маленький кружок с помощью уравнения: x*x+y*y<=0.09 && x>0 && y>0.

  4. Для круга находим уравнение: x*x+y*y==1.

3. Таблица



Имя

Назначение

Тип

Ед. из.

ОДЗ

1

x

Координата точки х

Действ.

-

-1.7e+308 …1.7e+308

2

y

Координата точки у

Действ.

-

-1.7e+308 …1.7e+308

3

fail

Булево значение

Лог.

-

true и false

4

C1

Сообщение

Текст

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

5

C2

Сообщение

Текст

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

6

C3

Сообщение

Текст

-

[А..Я],[а..я],[A..Z],[a..z],(,),(:),(!)

Таблица сообщений

С1: «Значение U равно: »

С2: «Wrong Input!»

С3: «Введите значения x и y: »

4. Алгоритмизация

  1. Проектирование тестов

Таблица тестов

№ теста

Исходные данные

Результат

Примечания

x

y

U

1

1

2

0

-

2

0.2

0.1

0.8

-

3

0.5

0.5

0.5

-

4

А

Б

-

Wrong Input!



  1. Проверка правильности алгоритма с помощью таблицы тестов



Рисунок 1 – Результат выполнения программы для теста №1



Рисунок 2 – Результат выполнения программы для теста №2



Рисунок 3 – Результат выполнения программы для теста №3



Рисунок 4 – Результат выполнения программы для теста №4

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

#include

#include

using namespace std;
int main()

{

double x, y, u;

bool fail=true;

cout << "Введите значение x и y:" << endl;

cin >> x >> y;

do

{

if ( cin.fail() ){

cout << "Wrong Input!" << endl;

return 0;

}

else

fail = false;
cin.clear();

cin.ignore( cin.rdbuf()->in_avail() );

}while( fail );
if (y>=0){

if (!(x*x+y*y<=0.09 && x>0 && y>0)){

if (x*x+y*y==1){

u=(x*x-1);

}

else{

u=(abs(x-1));

}

}

else{

u=(abs(x-1));

}

}

else{

u=(abs(x-1));

}

cout << "Значение U равно: " << u;

return 0;

}


написать администратору сайта