- •Министерство образования республики беларусь учреждение образования гомельский государственный технический университет имени п. О. Сухого
- •Лабораторная работа №3 «Программирование разветвляющихся алгоритмов»
- •Задание: Разработать алгоритмы, написать на языке Си программы в соответствиями с заданиями, подготовить тексты для отладки программ. Задания, которые необходимо выполнить, задает преподаватель.
- •Задание 4.1.
- •Задание 4.2.
- •Задача 4.4
Задание 4.2.
Выполнить задачу № 17. Вывести исходные данные и полученные результаты. Исходные данные для отладки программы выбрать самостоятельно так, чтобы проверить все возможные варианты выполнения программы.
задача: Даны три целых числа a, b, c. Найти вещественные корни уравнения ax2+bx+c=0 или вывести сообщение об их отсутствии.
Б
0
1
D=b*b-4*a*c
вывод D
Да
2
Нет
3
6
Да
Нет
x=(0-b)/(2*a)
4
7
10
n=2
8
5
9
10
Таблица соответствия переменных:
Переменные в задаче |
Переменные на языке Си |
Тип |
Комментарий |
х(1) |
х |
float |
результат |
x(2) |
у |
float |
результат |
D |
D |
float |
результат |
a |
a |
float |
исходное данное |
b |
b |
float |
исходное данное |
c |
c |
float |
исходное данное |
Листинг программы
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c,x,y,D;
puts("Введите a,b,c\n");
scanf("%f%f%f", &a,&b,&c);
D=b*b-4*a*c;
printf("D=%.0f\n", D);
if(D>0)
{
x=(0-b+sqrt(D))/(2*a);
y=(0-b-sqrt(D))/(2*a);
printf("корни уравнения x(1)=%.2f, x(2)=%.2f", x,y);
}
else
if(D==0)
{
x=(0-b)/(2*a);
printf("корень уравнения x=%.2f", x);
}
else
{
puts("Нету корней уравнения");
}
fflush(stdin);
getchar();
return(0);
}
Тесты:
тест № |
значение |
значение x (в программе) |
значение x (вычисленное) |
||||
a |
b |
c |
|||||
x(1) |
x(2) |
|
|
||||
1 |
1 |
2 |
1 |
-1 |
– |
-1 |
– |
2 |
3 |
2 |
4 |
– |
– |
– |
– |
3 |
-1 |
4 |
2 |
-0,45 |
4,45 |
-0,45 |
4,45 |
Тесты показали, что программа работает правильно.
Задание 4.3
Проверить,
лежит ли данная точка
внутри окружности
,
на её границе или вне окружности.
0
Блок-схема:
1
2
Да
2
Нет
3
Да
Нет
6
5
8
Таблица соответствия переменных
Переменные в задаче |
Переменные на языке Си |
Тип |
Комментарий |
x |
x |
float |
исходное данное |
y |
y |
float |
исходное данное |
x(0) |
a |
float |
исходное данное |
y(0) |
b |
float |
исходное данное |
Листинг программы:
#include <stdio.h>
#include <math.h>
main()
{
float a,b,x,y;
puts("Введите координаты окружности x и y");
scanf("%f%f",&x,&y);
puts("Введите координаты точки А(x(0),y(0))\n");
scanf("%f%f", &a,&b);
if((a*a+b*b)<sqrt(x*x+y*y))
{puts("Точка А лежит в данной окружности");}
else
if((a*a+b*b)==(x*x+y*y))
{puts("Точка А лежит на границе данной окружности");}
else
{puts("Точка А не находится в данной окружности");}
fflush(stdin);
getchar();
return(0);
}
Тесты:
тест № |
значение |
результат вычисления |
результат выполнения программы |
|||
x |
y |
x(0) |
y(0) |
|||
точка А находится |
||||||
1 |
1 |
1 |
1 |
1 |
на окружности |
на окружности |
2 |
1 |
1 |
2 |
2 |
в окружности |
в окружности |
3 |
2 |
2 |
3 |
3 |
за окружностью |
за окружностью |
Тесты показали, что программа работает правильно
Задание: 4.4
Введите четырехзначное число. Является ли оно палиндромомом.
2222, 6116, 0440. и т.д.
4
3
Таблица соответствия переменных
Переменные в задаче |
Переменные на языке Си |
Тип |
Комментарий |
a |
a |
float |
исходное данное |
b |
b |
float |
исходное данное |
c |
c |
float |
исходное данное |
d |
d |
float |
исходное данное |
Листинг программы:
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c,d;
puts("Введите число a b c d (Вводить каждую цифру отдельно)\n");
scanf("%f%f%f%f", &a,&b,&c,&d);
if(a==d||b==c)
{printf("Введённое число – полиндром”;
}
else
{
printf(“Введённое число – НЕ полиндром ");
}
fflush(stdin);
getchar();
return(0);
}
Тесты:
тест № |
значение |
результат вычисления |
результат выполнения программы |
|||
a |
b |
c |
d |
|||
Введённое число |
||||||
1 |
1 |
2 |
2 |
1 |
полиндром |
полиндром |
2 |
1 |
2 |
3 |
4 |
не полиндром |
не полиндром |
Тесты показали, что программа работает правильно.
