elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:05  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 295 veces)
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



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

 ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)   ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)
 ;-) ;-) ;-) 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
/*Creado por: Chico_Maravilla*/
/*lucas_solymar@hotmail.com*/
/*09/11/2011*/
 
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
 
float a, b, c, aa, bb, cc;
 
 
int main()
{
 
   /*el titulo ocupa varios espacios, pero es el siguiente*/
 
     printf("                    ************************** \n                    ********   ANGULOS  ******\n                    ************************** \n \n \n ");
 
     /*aquì se recojen los datos*/
 
     printf(" Llena los siguientes datos, en el caso de que alguna sea la incognita, escribir un 0 \n \n \n");
     printf("\n \n \n lado a: \n");
     scanf("%f", &a);
     printf(" lado b: \n");
     scanf("%f", &b);
     printf(" lado c: \n");
     scanf("%f", &c);
     printf(" Angulo de A: \n");
     scanf("%f", &aa);
     printf(" Angulo de B: \n");
     scanf("%f", &bb);
     printf(" Angulo de C: \n");
     scanf("%f", &cc);
 
     /*de aqui los angulos*/
 
     if (aa && bb != 0 && cc==0)
     {
            cc=(180-aa)-bb;
            printf(" Angulo C es: %f \n", cc);
            }
     if (bb && cc != 0 && aa==0)
     {
            aa=(180-bb)-cc;
            printf(" Angulo A es: %f \n", aa);
            }
     if (aa && cc != 0 && bb==0)
     {
            bb=(180-cc)-aa;
            printf(" Angulo B es: %f \n", bb);
            }
 
     /*los senos de los angulos*/
 
     float senoA= sin (aa*PI/180);
     float senoB= sin (bb*PI/180);
     float senoC= sin (cc*PI/180);
 
     /*aqui es para saber los lados*/
 
     /*para el lado b*/
     if (a && aa != 0 && bb != 0 && b == 0)
     {
           b= (a * senoB) / senoA;
           printf(" el lado b es: %f \n", b);
           }
 
     /*para el lado c*/
     if (a && aa != 0 && cc != 0 && c == 0)
     {
           c= (a * senoC) / senoA;
           printf(" el lado c es: %f \n", c);
           }
 
     /*para el lado a*/
     if (b && bb != 0 && aa != 0 && a == 0)      
     {
           a= (b * senoA) / senoB;
           printf(" el lado a es: %f \n", a);
           }
 
 
 
     scanf("%d");
     return 0;
}

espero que les sirva  :xD


« Última modificación: 10 Noviembre 2011, 03:47 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 »

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: 604


Cuando me afeito, recuerdo porque me dejo barba.


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

¡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
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
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
if (aa != 0 && bb != 0 && cc==0)
if (aa && bb && !cc)
 
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
if((color == ROJO || color == AZUL) && forma == CUBO)
   //...
 
Ya que si lo pones asi:
Código
if(color == ROJO || color == AZUL && forma == CUBO)
   //...
 
&& se evaluara antes que || por lo que realmente estarias evaluando:

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

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

¡Saludos!
En línea

¡¡¡Feliz año nuevo!!!
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



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

¡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
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
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
if (aa != 0 && bb != 0 && cc==0)
if (aa && bb && !cc)
 
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
if((color == ROJO || color == AZUL) && forma == CUBO)
   //...
 
Ya que si lo pones asi:
Código
if(color == ROJO || color == AZUL && forma == CUBO)
   //...
 
&& se evaluara antes que || por lo que realmente estarias evaluando:

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

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
Generador de Onda Seno
Electrónica
dmantil 6 3,929 Último mensaje 14 Octubre 2010, 00:58
por skapunky
La paradoja Einstein-Podolsky-Rosen y el teorema de Bell - Opiniones « 1 2 3 »
Foro Libre
Truckee 35 3,399 Último mensaje 7 Junio 2010, 17:39
por ABDERRAMAH
[C] Teorema de Pitágoras « 1 2 »
Programación C/C++
STANHMAL 22 2,676 Último mensaje 8 Julio 2010, 02:35
por .:BlackCoder:.
[Código] Teorema de Pítagoras [Python]
Scripting
@Sthéfano 0 1,191 Último mensaje 26 Julio 2010, 22:34
por @Sthéfano
serie de taylor para seno[solucionado]
Programación C/C++
flony 0 144 Último mensaje 13 Abril 2012, 05:17
por flony
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines