Duda con programa en C

Wenas,

resulta que un ejercicio de practicas de programacion se me resiste y acudo a vosotros todopoderosos eolianos para ver si me sacais del aprieto.
el codigo del programa es el siguiente:

#include
#include

void muestrea (int n, double xmin, double xmax);
double funcion_base (double x) ;
double lee_real(double min, double max);
int lee_entero (int min, int max);

void main()
{
double xmax,xmin;
int n;

/*leemos el numero de valores ( un numero entre 1 y 10) */
n=lee_entero (1, 10);
/*leemos por teclado el valor de xmin (un numero entre -1000 y 1000) */
xmin = lee_real (-1000,1000);
/*leemos por teclado el valor de xmax (un numero entre xmin y 1000) */
xmax = lee_real (xmin,1000);
/*calculamos la expresion -x*sin(x/2) para 'n' valores equidistantes entre xmin y xmax*/
muestrea (n, xmin, xmax);
}

/* La funcion muestrea calcula la equidistancia entre unos puntos y sobre la funcion senoidal a las que llama */
void muestrea (int n, double xmin, double xmax){
double incremento_x,x;
int contador;

incremento_x=(xmax-xmin)/(n-1);
contador=0;
x=xmin;
while(contador {

printf("Y(%.3lf)= %lf\n",x, funcion_base(x)); /*???Me imprime bien solo las 2 primeras iteraciones¿¿¿*/
x=xmin+incremento_x;
contador++;
}
}

/* funcion_base calcula la funcion y = x*seno(x/2) */
double funcion_base (double x) {

double seno;
double resultado;
seno = sin (x/2);
resultado= seno*x;
return resultado;
}

/* La funcion lee_entero se usa para determinar el numero de divisiones para la equidistancia */
int lee_entero(int min, int max) {

int numero;

printf("Introduzca un numero entre %d y %d: ", min, max);
scanf ("%d", &numero);
printf("\n");

while (numeromax)
{
printf("Introduzca un numero entre %d y %d: ", min, max);
scanf ("%d", &numero);
printf("\n");
}
printf("El numero introducido es: %d\n", numero);
printf("\n");

return numero;
}

/* La funcion lee_real se usa para determinar los valores de xmin y xmax en un intervalo cerrado */
double lee_real(double min, double max) {

double numero;

printf("Introduzca un numero entre %.2lf y %.2lf: ", min, max);
scanf ("%lf", &numero);
printf("\n");

while (numeromax)
{
printf("Introduzca un numero entre %.2lf y %.2lf: ", min, max);
scanf ("%lf", &numero);
printf("\n");
}
printf("El numero introducido es: %.2lf\n", numero);
printf("\n");

return numero;
}



el problema reside en q me debe imprimir por pantalla un numero de valores equidistantes 'n', q previamente introduces por teclado, entre dos valores q tu indicas y te calculas esos valores sobre una funcion de seno.las funciones lee_real, lee_entero y funcion_base estan prefectas pq son copias de problemas anteriores.
el problema esq solo me imprime bien las 2 primeras iteraciones, ponga el numero q ponga entre 1 y 10 particiones...
alguien sabe donde puede estar el problema???

saludosss
Amos a ver...


Aqui el marron...
Skareb escribió:void muestrea (int n, double xmin, double xmax){
double incremento_x,x;
int contador;

incremento_x=(xmax-xmin)/(n-1);
contador=0;
x=xmin;
while(contador {

printf("Y(%.3lf)= %lf\n",x, funcion_base(x)); /*???Me imprime bien solo las 2 primeras iteraciones¿¿¿*/
x=xmin+incremento_x;
contador++;
}
}



Si lo he entendido bien, tu problema es que esto:

x=xmin+incremento_x;

deberia ser:

x=x+xmin+incremento_x;

o bien:

x+=xmin+incremento_x;

Pq sino siempre sera xmin+incremento_x, da igual cuantas veces ejecutes esa linea, si no lo sumas al valor anterior de x.

De hecho analizandolo mejor CREO que lo suyo seria asignar primero

x=xmin

y luego en el bucle solo

x+=incremento_x;

pero eso ya analizalo tu que sabes los detalles del problema.

Bueno espero que sea eso y arregles tu problema XD


P.D.- Hay un hilo sobre C, que lo sepas ;)
era eso XD muxas gracias tio eres un hacha, fite el komedero de cabeza q tenia por una simple letra.
weno sigamos programando y mil gracias de nuevo [oki]

Edito: no era eso , la solucion era poner X=x+incremento_x, el xmin una vez entrado en el bulce while no tenia q volver a aparecer, aun asi gracias por hacerme ver q el fallo estaba ahi [barret]
Skareb escribió:Edito: no era eso , la solucion era poner X=x+incremento_x, el xmin una vez entrado en el bulce while no tenia q volver a aparecer, aun asi gracias por hacerme ver q el fallo estaba ahi [barret]


Jeje, por eso, DESPUES (si te fijas) te decia que tenia otra teoria, pero no sabia seguro, pq no sabia seguro de q iba el proceso :P

Me alegro de q te haya servido XD
Qué hacha el Jan...

PD: Y cuánto tiempo libre y ganas de ayudar.
iTor escribió:PD: Y cuánto tiempo libre y ganas de ayudar.


[OFFTOPIC]
Hombre ganas de ayudar, si (me intento ganar el cielo [poraki]), y tiempo libre, el suficiente xDDD
[/OFFTOPIC]
5 respuestas