elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Teorema del seno
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Teorema del seno  (Leído 3,269 veces)
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Teorema del seno
« en: 10 Noviembre 2011, 03:26 am »

 ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)   ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)
 ;-) ;-) ;-) Termine mi primer "programa en C"  ;-)  ;-)  ;-)

bueno, nomas quería compartir mi primer programa ( es sumamente sencillo ), se que me van a criticar por todos lados, pero tengan en cuenta que empece en esta semana C y que los hice solo, ( lo de la función del seno, me fije en la pagina que compartó pucheto: http://www.cplusplus.com/reference/clibrary/cmath/ ) aunque no llegue a usar el asin, por cuestiones de que lo deje en que solo pueda resolver dos incognitas, una del angulo , y otra del lado

acepto criticas igual  :xD

Código
  1. /*Creado por: Chico_Maravilla*/
  2. /*lucas_solymar@hotmail.com*/
  3. /*09/11/2011*/
  4.  
  5. #include <stdio.h>
  6. #include <math.h>
  7. #define PI 3.14159265
  8.  
  9. float a, b, c, aa, bb, cc;
  10.  
  11.  
  12. int main()
  13. {
  14.  
  15.    /*el titulo ocupa varios espacios, pero es el siguiente*/
  16.  
  17.      printf("                    ************************** \n                    ********   ANGULOS  ******\n                    ************************** \n \n \n ");
  18.  
  19.      /*aquì se recojen los datos*/
  20.  
  21.      printf(" Llena los siguientes datos, en el caso de que alguna sea la incognita, escribir un 0 \n \n \n");
  22.      printf("\n \n \n lado a: \n");
  23.      scanf("%f", &a);
  24.      printf(" lado b: \n");
  25.      scanf("%f", &b);
  26.      printf(" lado c: \n");
  27.      scanf("%f", &c);
  28.      printf(" Angulo de A: \n");
  29.      scanf("%f", &aa);
  30.      printf(" Angulo de B: \n");
  31.      scanf("%f", &bb);
  32.      printf(" Angulo de C: \n");
  33.      scanf("%f", &cc);
  34.  
  35.      /*de aqui los angulos*/
  36.  
  37.      if (aa && bb != 0 && cc==0)
  38.      {
  39.             cc=(180-aa)-bb;
  40.             printf(" Angulo C es: %f \n", cc);
  41.             }
  42.      if (bb && cc != 0 && aa==0)
  43.      {
  44.             aa=(180-bb)-cc;
  45.             printf(" Angulo A es: %f \n", aa);
  46.             }
  47.      if (aa && cc != 0 && bb==0)
  48.      {
  49.             bb=(180-cc)-aa;
  50.             printf(" Angulo B es: %f \n", bb);
  51.             }
  52.  
  53.      /*los senos de los angulos*/
  54.  
  55.      float senoA= sin (aa*PI/180);
  56.      float senoB= sin (bb*PI/180);
  57.      float senoC= sin (cc*PI/180);
  58.  
  59.      /*aqui es para saber los lados*/
  60.  
  61.      /*para el lado b*/
  62.      if (a && aa != 0 && bb != 0 && b == 0)
  63.      {
  64.            b= (a * senoB) / senoA;
  65.            printf(" el lado b es: %f \n", b);
  66.            }
  67.  
  68.      /*para el lado c*/
  69.      if (a && aa != 0 && cc != 0 && c == 0)
  70.      {
  71.            c= (a * senoC) / senoA;
  72.            printf(" el lado c es: %f \n", c);
  73.            }
  74.  
  75.      /*para el lado a*/
  76.      if (b && bb != 0 && aa != 0 && a == 0)      
  77.      {
  78.            a= (b * senoA) / senoB;
  79.            printf(" el lado a es: %f \n", a);
  80.            }
  81.  
  82.  
  83.  
  84.      scanf("%d");
  85.      return 0;
  86. }

espero que les sirva  :xD


« Última modificación: 10 Noviembre 2011, 03:47 am por Chico_Maravilla » En línea

Rich_crazy2

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Teorema del seno
« Respuesta #1 en: 10 Noviembre 2011, 03:33 am »

Hola...

Compartir programas con todos nosotros es bueno...

Bien por ti, solo falta esperar a las criticas de los expertos....

Suerte!

 ;-) ;-) ;-)


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Teorema del seno
« Respuesta #2 en: 10 Noviembre 2011, 09:48 am »

¡Buenas!

Enhorabuena por el codigo. Sigue asi. Solo te comentare algun detalle.

En C, las variables se declaran antes de cualquier otra sentencia del programa, por lo tanto, tendras que declararlas justo despues de la cabecera de las fuciones (en este caso al principio de main).

Y otro detalle, que funciona pero creo que tu intencion era otra, en las condiciones. Has puesto:
Código
  1. if (aa && bb != 0 && cc==0)
y expresiones similares.

Igual lo estoy interpretando mal y realmente querias poner esto, pero creo que tu intencion era decir que si aa y bb son distintos de cero y cc es igual a cero... En C y C++ tienes que poner cada condicion de forma explicita y utilizar parentesis para agruparlas. En este caso los parentesis dan igual, pero cuando utilices expresiones mas complejas que impliquen y y o logicos, tendras que tener en cuenta que el y tiene mayor precedencia que el o. Por lo tanto vete acostumbrandote, aunque te parezca que no es necesario, a utilizar parentesis, asi cuando empieces a manejar expresiones mas complicadas te ahorraras problemas. Bueno, la expresion quedaria asi:
Código
  1. if ((aa!=0 && bb != 0) && cc==0)
.

¿Poque funciona el codigo que has puesto? En C las expresiones logicas son valores enteros, cero es falso y no cero eas verdadero, por lo tanto, las expresiones siguientes son equivalentes:
Código
  1. if (aa != 0 && bb != 0 && cc==0)
  2. if (aa && bb && !cc)
  3.  
Ya que si aa != 0, tanto la expresion aa != 0 como solamente aa son verdad, la primera de dara 1, y la segunda sera un valor distinto de cero, por lo que ambas seran verdad. Si cc == 0, significa que cc a secas es falso (ya que cc es cero) por lo tanto ! transformara el cero en uno, por lo que !cc y c == 0, produciran como resultado verdadero.

Recuerda esto:
cero es falso.
no cero es verdadero.
! transforma cero en uno.
! transforma no cero en cero.
&& tiene mayor precedencia que ||
utiliza parentesis para agrupar las expresiones logicas, aunque te parezca que no hace falta, para obligar a que se evaluen en el orden correcto.

Un ejemplo de esto ultimo seria por ejemplo, decidir el color y la forma de un objeto. Imagina que tiene una propiedad color, y otra forma y quieres saber si el objeto es por ejemplo un cubo de color rojo o azul. Lo harias asi:
Código
  1. if((color == ROJO || color == AZUL) && forma == CUBO)
  2.    //...
  3.  
Ya que si lo pones asi:
Código
  1. if(color == ROJO || color == AZUL && forma == CUBO)
  2.    //...
  3.  
&& se evaluara antes que || por lo que realmente estarias evaluando:

Código
  1. if(color == ROJO || (color == AZUL && forma == CUBO))
  2.    //...
  3.  

Ya ves que son detalles, el codigo en general esta bien, sigue trabajando que vas bien.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: Teorema del seno
« Respuesta #3 en: 10 Noviembre 2011, 13:55 pm »

¡Buenas!

Enhorabuena por el codigo. Sigue asi. Solo te comentare algun detalle.

En C, las variables se declaran antes de cualquier otra sentencia del programa, por lo tanto, tendras que declararlas justo despues de la cabecera de las fuciones (en este caso al principio de main).

Y otro detalle, que funciona pero creo que tu intencion era otra, en las condiciones. Has puesto:
Código
  1. if (aa && bb != 0 && cc==0)
y expresiones similares.

Igual lo estoy interpretando mal y realmente querias poner esto, pero creo que tu intencion era decir que si aa y bb son distintos de cero y cc es igual a cero... En C y C++ tienes que poner cada condicion de forma explicita y utilizar parentesis para agruparlas. En este caso los parentesis dan igual, pero cuando utilices expresiones mas complejas que impliquen y y o logicos, tendras que tener en cuenta que el y tiene mayor precedencia que el o. Por lo tanto vete acostumbrandote, aunque te parezca que no es necesario, a utilizar parentesis, asi cuando empieces a manejar expresiones mas complicadas te ahorraras problemas. Bueno, la expresion quedaria asi:
Código
  1. if ((aa!=0 && bb != 0) && cc==0)
.

¿Poque funciona el codigo que has puesto? En C las expresiones logicas son valores enteros, cero es falso y no cero eas verdadero, por lo tanto, las expresiones siguientes son equivalentes:
Código
  1. if (aa != 0 && bb != 0 && cc==0)
  2. if (aa && bb && !cc)
  3.  
Ya que si aa != 0, tanto la expresion aa != 0 como solamente aa son verdad, la primera de dara 1, y la segunda sera un valor distinto de cero, por lo que ambas seran verdad. Si cc == 0, significa que cc a secas es falso (ya que cc es cero) por lo tanto ! transformara el cero en uno, por lo que !cc y c == 0, produciran como resultado verdadero.

Recuerda esto:
cero es falso.
no cero es verdadero.
! transforma cero en uno.
! transforma no cero en cero.
&& tiene mayor precedencia que ||
utiliza parentesis para agrupar las expresiones logicas, aunque te parezca que no hace falta, para obligar a que se evaluen en el orden correcto.

Un ejemplo de esto ultimo seria por ejemplo, decidir el color y la forma de un objeto. Imagina que tiene una propiedad color, y otra forma y quieres saber si el objeto es por ejemplo un cubo de color rojo o azul. Lo harias asi:
Código
  1. if((color == ROJO || color == AZUL) && forma == CUBO)
  2.    //...
  3.  
Ya que si lo pones asi:
Código
  1. if(color == ROJO || color == AZUL && forma == CUBO)
  2.    //...
  3.  
&& se evaluara antes que || por lo que realmente estarias evaluando:

Código
  1. if(color == ROJO || (color == AZUL && forma == CUBO))
  2.    //...
  3.  

Ya ves que son detalles, el codigo en general esta bien, sigue trabajando que vas bien.

¡Saludos!

es verdad  ;D, voy por esa parte en el libro  :xD , gracias por ayudarme  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] Teorema de Pitágoras « 1 2 3 »
Programación C/C++
STANHMAL 22 20,306 Último mensaje 8 Julio 2010, 02:35 am
por .:BlackCoder:.
[Código] Teorema de Pítagoras [Python]
Scripting
@Sthéfano 0 5,871 Último mensaje 26 Julio 2010, 22:34 pm
por @Sthéfano
serie de taylor para seno[solucionado]
Programación C/C++
flony 0 14,693 Último mensaje 13 Abril 2012, 05:17 am
por flony
Teorema Binomial
Programación C/C++
Black Lotus 5 4,894 Último mensaje 18 Abril 2013, 21:42 pm
por leosansan
Teorema del Binomio
Programación C/C++
Black Lotus 1 5,650 Último mensaje 23 Mayo 2013, 16:06 pm
por leosansan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines