Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++ / лабы / lr2 / отчет2

.doc
Скачиваний:
18
Добавлен:
30.04.2013
Размер:
101.38 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Московский государственный институт электроники и математики (технический университет)

Кафедра «Вычислительная техника»

ОТЧЕТ

о лабораторной работе №2

Вариант: 22

Исполнитель:

студент группы С-31

Москва – 2009г.

I. Разработать программу, которая находит все рациональные корни полинома n-й степени с целыми коэффициентами. При решении таких задач используется теорема.

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

Если уравнение имеет целые коэффициенты, а старший коэффициент равен единице (т.е. аn=1), то рациональными корнями этого уравнения могут быть только целые числа, которые являются делителями свободного члена а0.

f(x) = 12 x5 + 18 x4 - 45 x3 - 45 x2 + 18 x + 12

Алгоритм

Цикл_для

( i = 1; i <= a0; i++)

Нет

(а0/i)==1

да

Нет

a5*pow(x,5) +a4*pow(x,4)+

a3*pow(x,3)+a2*pow(x,2)+

a1*x+a0) == 0

Да

Нет

a5*pow(x,5) +a4*pow(x,4)+

a3*pow(x,3)+a2*pow(x,2)+

a1*x+a0) == 0

Да

Цикл_для i

Текст программы

#include <math.h>

#include <stdio.h>

int main ()

{

int n =5;

printf("Shilak E.M. \n");

printf("Gruppa C-31 \n");

printf("Variant 22 \n");

printf("Naxozdenie racionalnix kornej polinoma \n");

int a5 = 12, a4 = 18, a3 = -45, a2 = -45, a1 = 18, a0 = 12;

printf("korni polinoma: \n");

for (int i = 1; i <= a0; i++)

if (a0 % i == 0)

{

int x;

x = i;

if ((a5*pow(x,5) + a4*pow(x,4)+a3*pow(x,3)+a2*pow(x,2)+a1*x+a0) == 0)

printf(" %i \n", x);

x = -i;

if ((a5*pow(x,5) + a4*pow(x,4)+a3*pow(x,3)+a2*pow(x,2)+a1*x+a0) == 0)

printf(" %i \n", x);

}

printf("Nagmite 'Enter' dlya vihoda.\n");

getchar();

return 0;

}

Внешняя спецификация.

6