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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en Proyecto Simple
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en Proyecto Simple  (Leído 2,391 veces)
bestfriend

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda en Proyecto Simple
« en: 15 Mayo 2015, 23:13 pm »

Hola soy nuevo y llevo alrededor de 2 meses "programando" y necesito ayuda porque mi programa no me devuelve el resultado de un dato en especifico (la altura C). El proyecto es el siguiente https://drive.google.com/file/d/0B-T3GRGCH9STWHNHM2ZUdWl0ZzA/view?usp=sharing

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <cmath>
  4. //Variables Globales
  5. float b1,b2,b3,d1,d3,h;
  6. float I,C;
  7. float d2=(h-d1-d3),A1=(b1*d1),A2=(b2*d2),A3=(b3*d3);
  8.  
  9. //Funciones
  10. void entrada(){
  11.     printf("Hola! Este programa esta diseñado para calcular el momento de inercia(I) y la altura(C) de nuestro Proyecto 1\n");
  12.     printf(" \n");
  13.     printf("Primero ingrese los datos de anchura de la viga (b1,b2,b3)\n");
  14.     printf(" \n");
  15.     printf("Ingrese el dato de b1\n");
  16.     scanf("\n%f",&b1);
  17.     printf("Ingrese el dato de b2\n");
  18.     scanf("\n%f",&b2);
  19.     printf("Ingrese el dato de b3\n");
  20.     scanf("\n%f",&b3);
  21.     printf("Ahora proceda a ingresar los datos de altura de altura de la viga (d1,d3,h)\n");
  22.     printf("Ingrese el dato de d1\n");
  23.     scanf("\n%f",&d1);
  24.     printf("Ingrese el dato de d3\n");
  25.     scanf("\n%f",&d3);
  26.     printf("Ingrese el dato de h\n");
  27.     scanf("\n%f",&h);
  28. }
  29.  
  30. void calculo(){
  31.      float x=d1,y=(h-C-(d1/2)),z=d2,k=(d3+(d2/2)-C),j=d3,p=(C+(d3/2));
  32.  
  33.      x=pow(x,3);
  34.      y=pow(y,2);
  35.      z=pow(z,3);
  36.      k=pow(k,2);
  37.      j=pow(j,3);
  38.      p=pow(p,2);
  39.  
  40.      I=(b1*x/12)+(A1*y)+(b2*z/12)+(A2*k)+(b3*j/12)+(A3*p);
  41.      C=(A1*(h-(d1/2)))+(A2*(d3+(d2/2)))+(A3*(d3/2))/(A1+A2+A3);
  42. }
  43.  
  44. //Programa Principal
  45. main(){
  46.       entrada();
  47.       printf("A continuacion se muestran los resultados del calculo\n");
  48.       calculo();
  49.       printf(" \n");
  50.       printf("La altura C de la viga es: %.2f\n",C);
  51.       printf("El momento de inercia I es: %.2f\n",I);
  52.       system("pause");
  53.  
  54. }
  55.  

Cualquier critica y consejo es absolutamente bienvenido soy un novato en este mundo :rolleyes:


« Última modificación: 16 Mayo 2015, 10:30 am por engel lex » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Ayuda en Proyecto Simple
« Respuesta #1 en: 15 Mayo 2015, 23:49 pm »

Para comenzar, no es buena práctica poner todo de variables globales, cuesta más depurar errores.



En línea

kaiserr

Desconectado Desconectado

Mensajes: 242


constancia y dedicacion


Ver Perfil
Re: Ayuda en Proyecto Simple
« Respuesta #2 en: 16 Mayo 2015, 00:03 am »

Para continuar, creo que C no te dará el resultado que quieres porque le falta un parentesis para englobar todas las sumas y luego dividirlas en el denominador.

Ahora:
Código
  1. C=(A1*(h-(d1/2)))+(A2*(d3+(d2/2)))+(A3*(d3/2))/(A1+A2+A3);
  2.  

Solución:
Código
  1. C=((A1*(h-(d1/2)))+(A2*(d3+(d2/2)))+(A3*(d3/2)))/(A1+A2+A3);
  2.  

Primero se evaluarán las operaciones de multiplicación , división y módulo y luego las de suma y resta.

Un consejo, cuando quieras debuguear un programa de manera cutre, puede poner prints en las zonas que te interesen conocer el valor de una variable.
Si utilizas algún IDE puedes utilizar los debuguers que incorporan y seguir las variables a lo largo de la ejecución.
« Última modificación: 16 Mayo 2015, 00:07 am por kaiserr » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda en Proyecto Simple
« Respuesta #3 en: 16 Mayo 2015, 10:43 am »

hola...

primero... no mezcles librerías standard de c++ con las de c.. usa siempre o unas u otras...

Código
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>

a tu error lo que dice kaiserr es cierto... el calculo está malo... recomiendo los cálculos hacerlos por partes para que tengas una buena legibilidad y usar variables tan legibles como puedas para que el código sea fácil de interpretar...

creo que esto no solo resuelve el problema, sino que ayuda a leer el código mucho veces mejor... al final para el compilador va a ser idéntico...

Código
  1. void calculo(){
  2.      float x = d1;
  3.      float y = h - C - (d1 / 2);
  4.      float z = d2;
  5.      float k = d3 + (d2 / 2) - C;
  6.      float j = d3;
  7.      float p = C+(d3/2);
  8.  
  9.      x = pow(x, 3);
  10.      y = pow(y, 2);
  11.      z = pow(z, 3);
  12.      k = pow(k, 2);
  13.      j = pow(j, 3);
  14.      p = pow(p, 2);
  15.  
  16.      I = b1 * x / 12;
  17.      I += A1 * y;
  18.      I += b2 * z / 12;
  19.      I += A2 * k;
  20.      I += b3 * j /12;
  21.      I += A3*p;
  22.  
  23.      C = A1 * (h - d1 / 2);
  24.      C += A2 * (d3 + d2 / 2);
  25.      C += A3 * d3 / 2;
  26.      C /= A1 + A2 + A3;
  27. }

(sabiendo que primero se divide y multiplica, después se suma y resta)

lo que dice Stakewinner00 es muy cierto... no es buena practica hacer todo en variables globales... eso se guarda para cuando no hay más solución práctica, sin contar que la linea 7 es terrible...

Código
  1. float d2=(h-d1-d3),A1=(b1*d1),A2=(b2*d2),A3=(b3*d3);

no le has dado ningún valor a las variables... va a hacer calculos con la basura que consiga en la ram

es como que lleges a alguien y le digas "si me dices cuanto es A*B + C, te doy 100$" y despues de decirle "te equivocaste A era 1, B era 1 y C era 0"
« Última modificación: 16 Mayo 2015, 10:47 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con mi troyano de vb6 (simple)
Programación Visual Basic
__68_Zauron_Arg 8 2,868 Último mensaje 13 Marzo 2008, 22:24 pm
por [{O_o}]
ayuda con simple codigo
PHP
Ice_batcH 4 2,270 Último mensaje 1 Noviembre 2008, 13:32 pm
por Agente Naranja
ayuda muy simple =)
PHP
DarkFire 6 3,109 Último mensaje 11 Abril 2009, 10:46 am
por decrypt
AYUDA!!!!!Es muy Simple!!
Programación Visual Basic
prometheus48 6 2,525 Último mensaje 27 Octubre 2011, 00:22 am
por ignorantev1.1
Ayuda con proyecto de cifrado simple en java
Java
Alfrikmx 0 1,568 Último mensaje 4 Noviembre 2016, 05:26 am
por Alfrikmx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines