Título: PROBLEMA CON UNA VARIABLE
Publicado por: magv1991 en 21 Febrero 2014, 13:53 pm
Hey que onda, pues tengo este programa que no cambia las variables t3 y t4, toma el valor inicial definido antes del primer while, y necesito que tome el ultimo valor despues del while interno para iniciar el ciclo. Alguna ayuda :P #include <stdio.h> #include <stdlib.h> #include <math.h> FILE *doc; //usaremos un archivo para guardar los datos obtenidos// int main(int argc, char *argv[]) { doc =fopen("posicion del mecanismo 1.txt","w+"); //abrimos y nombramos un archivo de texto// float r1, r2, r3, r4, t1, t2, t3, t4, f1, f2, dt3, dt4, i, pi; pi=3.14159265359; //el valor de pi lo usaremos para la conversion de grados a radianes y viceversa// r1 =sqrt(pow(47.5,2)+pow(64,2)); //r1 representa al eslabon fijo y no cambia// r2=14; //r2 representa al eslabon motriz y no cambia// r3=80; //r3 representa al eslabon acoplador y no cambia// r4=51.26; //r4 representa al eslabon salida y no cambia// t1 =atan(64/-47.5)+pi ; //t1 representa al angulo de r1 desde las abscisas positivas y no cambia// t2=45; //t2 representa al angulo inicial de r2 desde las abscisas positivas y varia independientemente// t3=105*pi/180; //at3 representa la primer aproxiamcion al angulo inicial de r3 desde las abscisas positivas y varia en funcion de t2// t4=30*pi/180; //at4 representa la primer aproximacion al angulo inicial de r4 desde las abscisas positivas y varia en funcion de t2// i=1; //i es el numero de iteraciones a realizar del metodo de Newton-Raphson// fprintf(doc , " t2\t t3\t\t t4\n"); //escribimos los datos en el archivo de texto// while (t2<=405) //se calcularan los valores reales de los angulos t3 y t4 para valores de t2 desde 45 hasta 360 grados// { while (i<=3) //se realizaran 3 iteraciones para determinar el valor real de t3 y t4 para un cierto valor de t2// { f1 =r1 *cos(t1 )+r4 *cos(t4 )-r2 *cos(t2 *pi /180)-r3 *cos(t3 ); //f1 y f2 representan al vector solucion// f2 =r1 *sin(t1 )+r4 *sin(t4 )-r2 *sin(t2 *pi /180)-r3 *sin(t3 ); //del sistema matricial// dt3 =(f1 *cos(t4 )+f2 *sin(t4 ))/(r3 *(cos(t3 )*sin(t4 )-sin(t3 )*cos(t4 ))); //dt3 y dt4 representan al vector// dt4 =(f1 *cos(t3 )+f2 *sin(t3 ))/(r4 *(cos(t3 )*sin(t4 )-sin(t3 )*cos(t4 ))); //incognita del sistema matricial// t3=t3+dt3; //t3+dt3 representa el valor real de t3 para un cierto valor de t2// t4=t4+dt4; //t4+dt4 representa el valor real de t4 para un cierto valor de t2// i=i+1; //iteramos para obtener valores de t3 y t4 que se aproximen mas al real// } printf("%3.0f\t%3.4f\t\t%3.4f\n", t2 , t3 *180/pi , t4 *180/pi ); fprintf(doc , "%3.0f\t%3.4f\t\t%3.4f\n", t2 , t3 *180/pi , t4 *180/pi ); //escribimos los datos en el archivo de texto// t2=t2+1; } fclose (doc ); //cerramos y guardamos el archivo// return 0; }
Título: Re: PROBLEMA CON UNA VARIABLE
Publicado por: eferion en 21 Febrero 2014, 14:04 pm
La verdad es que el código es un poco infumable.
Deberías plantearte usar nombres de variables que digan algo... no tiene sentido tener que ir a los comentarios cada vez que veo un tX para saber qué se supone que ha de contener.
Además, la librería math.h ya tiene un define PI , te puedes ahorrar esa variable.
Los valores que son constantes casi es mejor declararlos con #define o con const. de esa forma te aseguras que no los vas a poder modificar por error.
Otro detalle a tener en cuenta es que "i" no está siendo inicializada en cada pasada del primer bucle... por lo que sólo entrarás en el segundo bucle una vez.
Título: Re: PROBLEMA CON UNA VARIABLE
Publicado por: NikNitro! en 21 Febrero 2014, 14:19 pm
Yo eso no lo leo... Si lo cambias me avisas. Con seguir los consejos de eferion debería bastar.
Salud;)
|