Автор: Пользователь скрыл имя, 28 Января 2011 в 23:37, лабораторная работа
1. Цель работы:
Написать программу для умножения двух полиномов произвольного размера.
ГУАП
КАФЕДРА №
ОТЧЕТ
ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
доц.,к.т.н. | А.С. Слюсаренко | |||
должность, уч. степень, звание | подпись, дата | инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №3 |
Умножение полиномов. |
по курсу: Программирование на языках высокого уровня |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. | 1963 | С.А. Дементьев | |||
подпись, дата | инициалы, фамилия |
Санкт-Петербург
2010
Написать программу для умножения двух полиномов произвольного размера.
Полиномы должен быть вида Pm(x)=amxm+…+a0
Далее строится временная матрица ctmp,где ctmp[i][j]=a[i]*b[j]
Далее из ctmp строится
результирующий полином c,где c[k]=c[k]+a[i][j]
и i+j=k
2.1 Блок-схема алгоритма умножения полиномов и нахождение его в точке.
2.1.1 Блок-схема
подпрограммы Ввод.
2.1.2 Блок-схема подпрограммы В точке х.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void vivodom(int im,float *a)
{
for (int i=im;i>=0;i--)
printf("%0.1f*x^%
printf("\n");
}
void vvodom(int im,float *a)
{
for (int i=im;i>=0;i--)
{
printf("pri x^%d:",i);scanf("%f",&*(a+i));
}
}
float findx(float *c,float x,int l)
{
float *tmp;
tmp=(float*)calloc(l+1,s
*(tmp+0)=*(c+0);
for(int i=1;i<=l;i++)
{
*(tmp+i)=*(c+i)*
*(tmp+i)+=*(tmp+i-
}
return *(tmp+l);
free(tmp);
}
int main()
{
int i,j,m,n,k;
float *a,*b,*c,*ctmp;
printf("Polinomy vvodiatsya vida Pn(x)=an*x^n+...+a1*x+a0 !!!\n");
printf("Vvedite razmernost' Pm(x):");scanf("%d",&m);
printf("Vvedite razmernost'
Pn(x):");scanf("%d",&n);
a=(float*)calloc(m+1,siz
b=(float*)calloc(n+1,siz
c=(float*)calloc(m+n+1,s
ctmp=(float*)calloc((m+
printf("----------------
printf("Vvedite koeficenty pri \"x\" dlia P%d(x)\n",m);
vvodom(m,a);
printf("Vvedite koeficenty pri \"x\" dlia P%d(x)\n",n);
vvodom(n,b);
printf("----------------
for (i=0;i<=m;i++)
for (j=0;j<=n;j++)
*(ctmp+i*(n+
for (i=0;i<=m;i++)
for (j=0;j<=n;j++)
for (k=0;k<=m+n;k++)
if(i+j==k)
*(c+k)+= *(ctmp+i*(n+1)+j);
vivodom(m,a);
vivodom(n,b);
vivodom(m+n,c);
printf("\n--------------
printf("----------------
printf("Vvedyte X:");scanf("%f",&x);
printf("Otvet:%0.2f\n", findx(c,x,m+n));
system("pause");
free(a);
free(b);
free(c);
free(ctmp);
return 0;
}