Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda Codigo

Estas en el tema de Ayuda Codigo en el foro de C/C++ en Foros del Web. Buenas, estoy intentando pasar este programa que me calcula el polinomio de lagrange a clases y objetos, este programa originalmente hecho para correr con C++ ...
  #1 (permalink)  
Antiguo 06/10/2010, 17:36
 
Fecha de Ingreso: octubre-2010
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Ayuda Codigo

Buenas, estoy intentando pasar este programa que me calcula el polinomio de lagrange a clases y objetos, este programa originalmente hecho para correr con C++ linux.
Yya he pasado el codigo a una version en POO pero me genera algunos errores

Notas: le he añadido una funcion que introduce los nodos de manera dinamica ya que el programa original a continuacion los manejaba desde un archivo que ya contenia los datos.

Uso como compilador Turbo C++
SO: Windos 7 (tal ves algo tenga que ver)

Les agradeceria mucho su ayuda



****************************************PROGRMA ORIGINAL""""""""""""

#include <iostream>
#include <fstream>
using namespace std;
#include <iomanip>

void monomio2(int n, double *x, double *D);

int main () {

cout << "Polinomio de interpolacion de Lagrange\n\n";

ifstream label1 ("datos//datos.in");

int n, i, j, k;

label1 >> n;

double *x, *xp, *f, *L, *D, producto, sum, *P;

x = new double [n], xp = new double [n], f = new double [n];

L = new double [n], D = new double [n], P = new double [n];

cout << "Numero de pares ordenados = " << n << "\n\n";

cout << "Valores de x y f(x)\nx f(x)\n";

for (i= 0; i < n; i++){

label1 >> x[i] >> f[i];

cout << x[i] << setw(5) << setiosflags(ios::right) << f[i] << "\n";

}

cout << endl;

for (k = 0; k < n; k++){

producto = 1;

for (i = 0; i < n; i++){

if (i != k) producto = producto * (x[k] - x[i]);

}

L[k] = f[k]/producto;

}

cout << "Coeficientes de interpolacion de Lagrange\n\n";

cout.setf(ios::fixed);

cout.precision(1);

for (i= 0; i < n; i++){

cout << "L(" << n-i-1 << ") = " << setw(4) << setiosflags(ios::right) << L[i] << endl;

}

cout << endl;

for (k = 0; k < n; k++){

j = 0;

for (i = 0; i < n; i++){

if (i != k) {xp[j] = x[i]; j += 1;}

}

monomio2 (n-1, xp, D);

for (i= 0; i < n; i++){

P[i] = P[i] + L[k]*D[i];
.
}


}

cout << "Polinomio de interpolacion de Lagrange (grado " << n-1 << ")\n\n";

for (i= 0; i < n; i++){

cout << "P(" << n-i-1 << ") = " << setw(4) << setiosflags(ios::right) << P[i] << endl;
.
}

return 0;

}
.
void monomio2(int n, double *x, double *D){

double *E;
.
E = new double [n];

D[0] = 1;

D[1] = -x[0];

for (int i = 1; i < n; i++) {

for (int k =1; k < i+1; k++) {

E[k] = D[k] + D[k-1]*(-x[i]);

}

D[i+1] = D[i]*(-x[i]);

for (int j = 1; j < i+1; j++) {

D[j] = E[j];

}

}

delete E;


""""""""""""""""""""""""""""""""""""""PROGRAMA MODIFICADO POR MI""""""""

Soy un poco nuevo con la programacion con objetos asi que tal ves existan algunos errores fatales

"""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""

#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <iomanip.h>

class Lagrange{

public:
vectores(int n);
calc(int n);
void monomio2(int n, double *x, double *D);
private:
int tam;
int X,Y;
int n, i, j, k;
double *x, *xp, *f, *L, *D, producto, sum, *P;
};

Lagrange::vectores(int n){

x=new double[X];
f=new double[Y];

for(i=1;i<=n;i++) {

cout<<"\nx"<< i<<"..";
cin>>x[i];
cout<<"y"<< i<<"..";
cin>>f[i];
cout<<"\n";

} }

Lagrange::calc(int n){

/*x = new double [n],*/ xp = new double [n] /*,f = new double [n]*/;
L = new double [n], D = new double [n], P = new double [n];

/*for (i= 0; i < n; i++){

cout << "L(" << n-i-1 << ") = " << setw(4) << setiosflags(ios::right) << L[i] << endl;

}*/

cout << endl;
for (k = 0; k < n; k++){
producto = 1;

for (i = 0; i < n; i++){
if (i != k) producto = producto * (x[k] - x[i]);

}

L[k] = f[k]/producto;

}

cout << "Coeficientes de interpolacion de Lagrange\n\n";

cout.setf(ios::fixed);

cout.precision(1);

for (i= 0; i < n; i++){

cout << "L(" << n-i-1 << ") = " << setw(4) << setiosflags(ios::right) << L[i] << endl;

}

cout << endl;

for (k = 0; k < n; k++){

j = 0;

for (i = 0; i < n; i++){

if (i != k) {xp[j] = x[i]; j += 1;}

}

monomio2 (n-1, xp, D);

for (i= 0; i < n; i++){

P[i] = P[i] + L[k]*D[i];

}
}

cout << "Polinomio de interpolacion de Lagrange (grado " << n-1 << ")\n\n";

for (i= 0; i < n; i++){

cout << "P(" << n-i-1 << ") = " << setw(4) << setiosflags(ios::right) << P[i] << endl;

}

return 0;

}



void Lagrange::monomio2(int n, double *x, double *D){

double *E;

E = new double [n];

D[0] = 1;
D[1] = -x[0];

for (int i = 1; i < n; i++) {

for (int k =1; k < i+1; k++) {

E[k] = D[k] + D[k-1]*(-x[i]);

}

D[i+1] = D[i]*(-x[i]);

for (int j = 1; j < i+1; j++) {

D[j] = E[j];

}
}

delete E;

}

int main(){

int n;
Lagrange A;
cout<<"cuantos datos desea ingresar ";
cin>>n;
A.vectores(n);
A.calc(n);
A.monomio2(n,0,0);
}
  #2 (permalink)  
Antiguo 06/10/2010, 18:06
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Ayuda Codigo

Primero que todo fijate que los metodos calc y vectores deberian tener un tipo. Segundo podrias especificar los errores al compilar. O en que parte falla el programa.

PD: Usa el highlight!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:32.