Постановка задачи.
Вычислить заданное целочисленное выражение для данных a, b в формате int, используя оператор if. Результат Х - тоже целочисленный (signed int или long int).
Описание входных и выходных данных
Исходные данные: a, b.
Результат: Х – целочисленное значение арифметического выражения.
Набор тестов
Исходные данные: a= b= | |||||
Выходные данные: Х= | Нет решений | -125 | Нет решений |
Описание алгоритма.
Из условия задачи следует, что все переменные имеют целочисленный тип, поэтому преобразования типов выполнять нет необходимости.
Для нахождения значения Х необходимо проверить отношения между переменными a и b:
1) Если a>b и b ≠ 0, то Х = а/b + 7.
2) Если a=b, то Х = -125.
3) Если a<b и a ≠ 0, то Х = (3*b +9) % a.
Во всех остальных случаях задача не имеет решения.
Решение задачи можно разбить на несколько этапов:
1. Вводим исходные данные a, b.
2. Определяем, отношения между переменными a, b и область допустимых значений.
3. Вычисляем Х, через соответствующее выражение.
5. Блок-схема решения задачи.
![]() | |||
![]() |
Текст программы.
#include "stdio.h"
#include "conio.h"
void main()
{
int a, b, x;
printf("\nВычисление целочисленного выражения\n");
printf("vvedite a -->");
scanf ("%i",&a);
printf("vvedite b -->");
scanf ("%i",&b);
if (a > b)
if (b!= 0)
{x = a/b + 7;
printf("Значение целочисленного выражения = %i \n ", x);
}
else printf("Нет решений\n");
else if (a==b)
{x = -125;
printf("Значение целочисленного выражения = %i \n ", x);
}
else if (a!= 0)
{x = (3*b+9)%a;
printf("Значение целочисленного выражения = %i \n ", x);
}
else printf("Нет решений\n");
getch(); //задержка выхода из программы
}
Анализ результатов и выводы.
В данной лабораторной работе были рассмотрены операции целочисленного деления: «/ » - выделение целой части и «% » - выделение остатка отделения. Данные операции имеют место, если все операнды арифметического выражения целочисленные.
Проверка результатов работы программы дала положительные результаты.
Пример отчета о выполнении лабораторной работы № 3
ЛАБОРАТОРНАЯ РАБОТА № 3
На тему: «Реализация разветвляющихся алгоритмов»
1. Постановка задачи. Вычислить значение функции y=f(x) при заданном действительном значении аргумента х:
2.Описание входных и выходных данных
Исходные данные: х – аргумент функции.
Промежуточные данные: - промежуточная переменная, добавленная для удобства написания алгоритма.
Результат: у – значение функции.
3.Набор тестов
Исходные данные: х= | -3 | -2.5 | |||
Выходные данные: у= | Нет решений | -0.083333 | Нет решений | 4.356709 |
4. Описание алгоритма.
Из условия задачи следует, что значение у зависит от значения переменной х, которая может принимать значение из интервала . Этот интервал разбит на три части:
, в каждой из которых у вычисляется по одной из формул:
,
и
соответственно. Это хорошо видно, если отобразить заданные функции графически.
Решение задачи можно разбить на несколько этапов:
1. Вводим исходные данные х.
2. Определяем, в какой интервал попадает х: в первый (I), второй (II) или третий (III), что бы определить через какую функцию вычислить у.
3. Определяем, попадает ли х в область определения найденной функции: ,
или
. Если да, то вычисляем значение функции и выводим результат, если нет – выводим на экран соответствующее сообщение о невозможности решения данной задачи.
5. Блок-схема решения задачи.
![]() |
6.Текст программы.
#include "stdio.h"
#include "conio.h"
#include "math.h"
int main()
{
float x,y,q;
printf("\nВычисление значения функции\n");
printf("vvedite x -->");
scanf ("%f",&x);
q = x*x-x-12;
if (x<-2)
{
if (q>=0)
{y=sqrt(sqrt(sqrt(q)));
printf("y= %f \n ",y);
}
else printf("Resheniy net \n");
}
else
if (x<3)
{if (q!=0)
{
y=1/(q);
printf("y= %f \n",y);
}
else printf("Resheniy net \n");
}
else
if (q>0)
{
y=log(q);
printf("y= %f \n",y);
}
else printf("Resheniy net \n");
getch();//задержка выхода из программы
return 0;
}
7.Анализ результатов и выводы
Разработанная программа вычисления значения функции y=f(x) при введенном с клавиатуры значении аргумента х решает поставленную задачу в полном объеме. При написании программы использовался полный оператор условного перехода
if (<условие>) <действие1> else <действие2>;
Программная реализация приведенного алгоритма отличается от самого алгоритма. Это связанно с особенностями используемого языка программирования С/С++, и с запретом на использование оператора безусловного перехода:
goto <метка>;
В качестве недостатка программной реализации можно отметить наличие большого числа одинаковых функций по выводу результата на экран или его отсутствия. Для устранения данного недостатка необходимо изменить алгоритм решения задачи.
Пример отчета о выполнении лабораторной работы № 4
ЛАБОРАТОРНАЯ РАБОТА № 4
На тему: «Вывод рекуррентных формул для вычисления функциональных рядов»
Постановка задачи.
Вывести рекуррентную формулу и написать программу вычисления функционального ряда. Исходные данные: действительное – х, натуральное – n.