отчет 1 семестр практика 2 11 вариант
.odtБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И5 «Информационные системы и программная инженерия»
Практическая работа №2 по дисциплине «Информатика: Основы программирования» на тему «Ветвления»
Выполнил: Студент Ситева Софья Борисовна Группа О401Б Преподаватель: Лазарева Татьяна Ильинична
Санкт-Петербург 2020 г.
Задача 1.
Вычислить значение функции , используя условную операцию
Исходные данные:
аргумент, обозначим a, тип double
Результирующие данные:
значение функции, обозначим f, тип double
Таблица тестирования:
Входные данные |
Ожидаемый результат |
Результат работы программы |
0 |
error |
error |
3 |
0.918204 |
1.086091 |
5 |
1.32613 |
1.365406 |
1 |
error |
error |
Схема программы
Текст программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double a, f;
scanf_s("%lf", &a);
if ((a > 0) && (a != 0) && (a != 1))
{
f = cos((a * a + sqrt(a)) / (1 + sin(a) * sin(a) / (2 * a))) + 2, 5 / (2 * log(a));
if (f >= 0)
printf("F = %lf\n", sqrt(f));
else
printf("error");
}
else
printf("error");
}
Задача 2. Вычислить значение функции
Исходные данные:
Аргументы обозначим a и b, тип double.
a ≠ - b
Результирующие данные:
Значение функции, тип double.
Дополнительные переменные:
Индикатор, обозначим f, тип int.
Таблица тестирования:
Входные данные |
Ожидаемый результат |
Результат работы программы |
a=20, b=3 |
17 |
17 |
a=10, b=-6 |
4 |
4 |
a=10, b=-10 |
error |
error |
a=0, b=14 |
14 |
14 |
Схема программы:
Текст программы 1 способом:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a, b, f;
scanf_s("%lf %lf", &a, &b);
if (a > 10)
printf("%lf\n", a - b);
else
if ((a <= 10) && (a > 0) && (b < 0))
(a + b == 0) ? printf("error\n") : printf("%lf\n", (a - b) / (a + b));
else
printf("%lf\n", b);
}
Текст программы 2 способом:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a, b;
int f;
f = 0;
scanf_s("%lf %lf", &a, &b);
(a > 10) ? printf("%lf\n", a - b) : (f = 1);
((a <= 10) && (a > 0) && (b < 0) && (f == 1)) ? (f = 2) : (f = 3);
(f == 2) ? ((a + b == 0) ? printf("error\n") : printf("%lf\n", (a - b) / (a + b))) : (f = f);
(f == 3) ? printf("%lf\n", b): (f = 4);
}
Задача 3.
Даны 2 числа. Если они оба отрицательны, то первое уменьшить на 1, а второе увеличить на 1; если оба положительны, то большее из них удвоить, а меньшее утроить; в противном случае отрицательное из чисел заменить его абсолютным значением
Исходные данные:
Два вещественных числа, обозначим их a и b, тип double.
Результирующие данные:
Два измененных вещественных числа a и b.
Таблица тестирования:
Входные данные |
Ожидаемый результат |
Результат работы программы |
a=-1, b=-3 |
a=-2, b=-2 |
a=-2, b=-2 |
a=6, b=4 |
a=12, b=12 |
a=12, b=12 |
a=3, b=9 |
a=9, b=18 |
a=9, b=18 |
a=-5, b=1 |
a=5, b=1 |
a=5, b=1 |
Схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a, b;
scanf_s("%lf %lf", &a, &b);
if ((a < 0) && (b < 0))
printf("%lf %lf\n", a - 1, b + 1);
else
if ((a > 0) && (b > 0))
if (a > b)
printf("%lf %lf", a * 2, b * 3);
else
printf("%lf %lf", a * 3, b * 2);
else
{
if (a < 0)
a = -a;
else
b = -b;
printf("%lf %lf", a, b);
}
}
Задача 4.
Схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("\n ww ? mesjca");
scanf_s("%d", &n);
switch (n)
{
case 1:;
case 2:;
case 12: printf("\n zima\n");
break;
case 3:;
case 4:;
case 5:printf("\n wesna\n");
break;
case 6:;
case 7:;
case 8:printf("\n leto \n");
break;
case 9:;
case 10:;
case 11:printf("\n osen \n");
break;
default: printf("\n error\n");
}
system("pause");
return 0;
}
Вывод: оператор switch: выполняет действия, основываясь на сравнении значения со списком констант символов или целых чисел. При обнаружении совпадения выполняется оператор или операторы, ассоциированные с данным значением. Оператор default выполняется, если не найдено соответствий.