Autor
|
Tema: Ayuda en Proyecto Simple (Leído 2,580 veces)
|
bestfriend
Desconectado
Mensajes: 5
|
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#include <stdio.h> #include <stdlib.h> #include <cmath> //Variables Globales float b1,b2,b3,d1,d3,h; float I,C; float d2=(h-d1-d3),A1=(b1*d1),A2=(b2*d2),A3=(b3*d3); //Funciones void entrada(){ printf("Hola! Este programa esta diseñado para calcular el momento de inercia(I) y la altura(C) de nuestro Proyecto 1\n"); printf(" \n"); printf("Primero ingrese los datos de anchura de la viga (b1,b2,b3)\n"); printf(" \n"); printf("Ingrese el dato de b1\n"); scanf("\n%f",&b1); printf("Ingrese el dato de b2\n"); scanf("\n%f",&b2); printf("Ingrese el dato de b3\n"); scanf("\n%f",&b3); printf("Ahora proceda a ingresar los datos de altura de altura de la viga (d1,d3,h)\n"); printf("Ingrese el dato de d1\n"); scanf("\n%f",&d1); printf("Ingrese el dato de d3\n"); scanf("\n%f",&d3); printf("Ingrese el dato de h\n"); scanf("\n%f",&h); } void calculo(){ float x=d1,y=(h-C-(d1/2)),z=d2,k=(d3+(d2/2)-C),j=d3,p=(C+(d3/2)); x=pow(x,3); y=pow(y,2); z=pow(z,3); k=pow(k,2); j=pow(j,3); p=pow(p,2); I=(b1*x/12)+(A1*y)+(b2*z/12)+(A2*k)+(b3*j/12)+(A3*p); C=(A1*(h-(d1/2)))+(A2*(d3+(d2/2)))+(A3*(d3/2))/(A1+A2+A3); } //Programa Principal main(){ entrada(); printf("A continuacion se muestran los resultados del calculo\n"); calculo(); printf(" \n"); printf("La altura C de la viga es: %.2f\n",C); printf("El momento de inercia I es: %.2f\n",I); system("pause"); }
Cualquier critica y consejo es absolutamente bienvenido soy un novato en este mundo
|
|
« Última modificación: 16 Mayo 2015, 10:30 am por engel lex »
|
En línea
|
|
|
|
Stakewinner00
|
Para comenzar, no es buena práctica poner todo de variables globales, cuesta más depurar errores.
|
|
|
En línea
|
|
|
|
kaiserr
Desconectado
Mensajes: 242
constancia y dedicacion
|
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=(A1*(h-(d1/2)))+(A2*(d3+(d2/2)))+(A3*(d3/2))/(A1+A2+A3);
Solución: C=((A1*(h-(d1/2)))+(A2*(d3+(d2/2)))+(A3*(d3/2)))/(A1+A2+A3);
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
|
hola... primero... no mezcles librerías standard de c++ con las de c.. usa siempre o unas u otras... #include <cstdio> #include <cstdlib> #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... void calculo(){ float x = d1; float y = h - C - (d1 / 2); float z = d2; float k = d3 + (d2 / 2) - C; float j = d3; float p = C+(d3/2); x = pow(x, 3); y = pow(y, 2); z = pow(z, 3); k = pow(k, 2); j = pow(j, 3); p = pow(p, 2); I = b1 * x / 12; I += A1 * y; I += b2 * z / 12; I += A2 * k; I += b3 * j /12; I += A3*p; C = A1 * (h - d1 / 2); C += A2 * (d3 + d2 / 2); C += A3 * d3 / 2; C /= A1 + A2 + A3; }
(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... 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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con mi troyano de vb6 (simple)
Programación Visual Basic
|
__68_Zauron_Arg
|
8
|
3,061
|
13 Marzo 2008, 22:24 pm
por [{O_o}]
|
|
|
ayuda con simple codigo
PHP
|
Ice_batcH
|
4
|
2,426
|
1 Noviembre 2008, 13:32 pm
por Agente Naranja
|
|
|
ayuda muy simple =)
PHP
|
DarkFire
|
6
|
3,318
|
11 Abril 2009, 10:46 am
por decrypt
|
|
|
AYUDA!!!!!Es muy Simple!!
Programación Visual Basic
|
prometheus48
|
6
|
2,694
|
27 Octubre 2011, 00:22 am
por ignorantev1.1
|
|
|
Ayuda con proyecto de cifrado simple en java
Java
|
Alfrikmx
|
0
|
1,654
|
4 Noviembre 2016, 05:26 am
por Alfrikmx
|
|