Подготовка и решение на ПК задач с разветвлением

Цель контрольной работы: приобретение практических навыков по подготовке, отладке и выполнению разветвляющихся программ.

Задача 1. Найти все рациональные корни полинома n-й степени с целыми коэффициентами.

Задание
1.

Для нахождения всех рациональных корней полинома n-й степени с целыми коэффициентами используем теорему

Теорема. Для того чтобы несократимая дробь p/q была корнем уравнения (q¹0) с целыми коэффициентами, необходимо, чтобы число р было делителем свободного члена а0 , а число q – делителем старшего коэффициента an.

Алгоритм:

Исходный код программы:

#include <math. h> //подключение библиотек

#include <iostream>//подключение библиотек

#include <conio. h>//подключение библиотек

#include <stdio. h>//подключениебиблиотек

Using namespace std;

Intmain()//главная функция

{

Doublex, f;//объявление переменных и их типа

X=1.;//присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.) //проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=-1.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=6./24.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=-6./24.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=6./12.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=-6./12.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=6./6.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

X=-6./6.; //присваение значения

F=24.*pow(x,5)+10.*pow(x,4)-pow(x,3)-19.*pow(x,2)-5.*x+6;//описание формулы

If(f==0.)//проверка условия

Printf(“f(x)=%6.2fx=%6.2f\n”,f, x);//вывод результата

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Return 0;

}

Результат роботы:

Задача 2. . Вычислить значение функции Y(x) при различных значениях исходных данных x и a.

Исходные данные (по вариантам) находятся в таблице 2.

Функции Исходные данные
Вар. X A
15

6

2.7

4.5

Исходный код программы

#include <math. h>//подключениебиблиотек

#include <conio. h>//подключениебиблиотек

#include <stdio. h>//подключениебиблиотек

#include <iostream>//подключениебиблиотек

Using namespace std; //подключениебиблиотек

Int main()//главная функция

{

Cout<<“\n\n”;//отступ двух строк (для красоты:-)

Doublex, y,a, b;//объявление переменных и их типа

Cout<<“VvediteX: “;//вывод сообщеня пользователю

Cin>>x;//считывание значения, введенного пользователем

A=4.5;//приcваение значений

B=1/2;//приcваение значений

If (x>=a)//проверка условия

{

Y=(log(1+pow(1+pow(x,2),b)))/(1+exp(1+x*x))+(a+exp(1+x*x));//описание формулы

}

Else

Y=(log(1+pow(1+pow(x,2),2)))/1+exp(1+x*x)+(a-exp(1+x*x));//описаниеформулы

Printf(“f(x)=%2.2f”,y);//вывод результата

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Return 0;

}

Результат роботы:

Задача 3. В восточном календаре принят 60-летний цикл, состоящий из 12- летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи.

По номеру года вывести его название, если 1984 год был началом цикла годом зеленой крысы. Написать программу с использованием оператора switch/case.

Схема алгоритма

Исходный код программы:

#include <iostream>//подключение библиотек

#include <math. h>//подключение библиотек

#include <conio. h>//подключение библиотек

#include <stdio. h>//подключение библиотек

#include <string. h>//подключение библиотек

#include <windows. h>//подключениебиблиотек

Using namespace std;

Charbuf[256];// функция для использования

Char* rus(constchar* text)// русского языка в программе

{ AnsiToOem(text, buf);

Return buf; }

Intmain()//главная функция

{

Inti; //объявление переменных и их типа

Cout<<rus(“Введите год: “);//вывод сообщеня пользователю

Cin>>i; //считывание значения, введенного пользователем

Cout<<rus(“\nГод “);//вывод сообщеня пользователю

While ((i<1984)||(i>1996))//запускцикла

{

If (i<1984) //проверка условия

{i=i+10;}

Else if (i>1996) //проверкаусловия

{i=i-10;}

}

Switch (i)

{

Case 1984: cout<<rus(“зелен”); break;

Case 1985: cout<<rus(“зелен”); break;

Case 1986: cout<<rus(“красн”); break;

Case 1987: cout<<rus(“красн”); break;

Case 1988: cout<<rus(“жолт”); break;

Case 1989: cout<<rus(“жолт”); break;

Case 1990: cout<<rus(“бел”); break;

Case 1991: cout<<rus(“бел”); break;

Case 1992: cout<<rus(“черн”); break;

Case 1993: cout<<rus(“черн”); break;

Case 1994: cout<<rus(“зелен”); break;

Case 1995: cout<<rus(“зелен”); break;

}

While ((i<1984)||(i>1996))

{

If (i<1984) //проверка условия

{i=i+12;}

Else if (i>1996) //проверкаусловия

{i=i-12;}

}

Switch (i)

{

Case 1986: cout<<rus(“ого “); break;

Case 1987: cout<<rus(“ого “); break;

Case 1988: cout<<rus(“ого “); break;

Default: cout<<rus(“ой “); break;

}

Switch (i)

{

Case 1984: cout<<rus(“крысы”); break;

Case 1985: cout<<rus(“коровы”); break;

Case 1986: cout<<rus(“тигра”); break;

Case 1987: cout<<rus(“зайца”); break;

Case 1988: cout<<rus(“дракона”); break;

Case 1989: cout<<rus(“змеи”); break;

Case 1990: cout<<rus(“лошади”); break;

Case 1991: cout<<rus(“овцы”); break;

Case 1992: cout<<rus(“обезьяны”); break;

Case 1993: cout<<rus(“курицы”); break;

Case 1994: cout<<rus(“собаки “); break;

Case 1995: cout<<rus(“свиньи”); break;

}

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Getchar();//функция задержки экрана

Return 0;

}

Результат роботы:

Вывод: выполняя контрольную работу я ознакомился со средствами решения задач разветвляющихся программ на ЭВМ, изучил основные разветвляющиеся конструкции языка С++, функции стандартных библиотек. Я приобрел практические навыки решения задач разветвляющегося характера, их тестирования и отладки.


Подготовка и решение на ПК задач с разветвлением