You are on page 1of 2

#include <iostream.

h>
#include <conio.h>
#include <stdio.h>

void leer();
int mostTabla();
void Nx();

int x[10],y[10],n;
float fx[10][10],suma,mult,xn;

main()
{
leer();
mostTabla();
getch();
}

void leer(){
cout<<"\t\tPOLINOMIO DE INTERPOLACION DE NEWTON\n\n";
cout<<"Ingrese el numero de puntos: "; cin>>n;
cout<<"Ingrese los "<<n<<" puntos.\n\n\nx\ny";

for(int i=0;i<n;i++)
{
gotoxy(i*7+5,6); cout<<"["<<(i+1)<<"]";
gotoxy(i*7+6,7); cin>>x[i];
gotoxy(i*7+6,8); cin>>y[i];
fx[i][0]=y[i];
}
}

int mostTabla(){
cout<<"\n\nTABLA DE VALORES \n\n";
cout<<" xi f(xi) ";
for(int i=0;i<n;i++)
{
gotoxy(1,i+14);printf("%3d %3d", x[i], y[i]);
}
for(int i=1;i<n;i++)
{
gotoxy(8*i+9,13);cout<<"f("<<(i-1)<<")";
for(int j=i;j<n;j++)
if((x[j]-x[i-1])!=0)
{
fx[j][i]=(fx[j][i-1]-fx[i-1][i-1])/(x[j]-x[i-1]);
gotoxy(8*i+6,j+14);
printf("%7.2f",fx[j][i]);
}
else
{
textcolor(RED);
gotoxy(2,j+14);
cprintf("%2d",x[j]);
gotoxy(2,13+i);
cprintf("%2d",x[i-1]);

textcolor(WHITE);
textbackground(RED);
gotoxy(8*i+9,j+14);
cprintf(" ");
textbackground(BLACK);
textcolor(RED);
cprintf(" <- ERROR (Division para cero)");
return 0;
}
}

Nx();
return 1;
}

void Nx(){
cout<<"\n\nPOLINOMIO N(x) (Ingrese el valor de x)\n\n";
cout<<"\nx\nNx";
for(int num=0;num<9;num++)
{
gotoxy(num*7+5,17+n); cout<<"["<<(num+1)<<"]";
gotoxy(num*7+6,18+n); cin>>xn;
suma=fx[0][0];
for(int i=1;i<n;i++)
{
mult=1;
for(int j=0;j<i;j++)
mult*=(xn-x[j]);
suma+=(fx[i][i]*mult);
}
gotoxy(num*7+6,19+n); printf("%2.2f",suma);
}
}

You might also like