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


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda Porfavor Raiz en C++
« en: 29 Septiembre 2017, 00:01 »

Tengo que realizar un programa para la escuela y consiste en hacer una calculadora con suma resta divicion multiplicacion exponente y raiz; ya tengo todas las operaciones menos la raiz, el chiste es que yo introduzca el tipo de raiz y el numero y que me de el resultado pero a la hora de hacerlo me da de resultado solo uno :

Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6. int main(int argc, char** argv) {
  7. float suma=0, resta=0, multi=0, divi=0, a, b, opcion;
  8. float Resultado, Z = 1, P, B, R;
  9. cout<<" ¿CUAL ES TU OPREPACION? "<<endl;
  10.  
  11. cout<<"\n1. Sumar";
  12. cout<<"\n2. Restar";
  13. cout<<"\n3. Multiplicar";
  14. cout<<"\n4. Dividir";
  15. cout<<"\n5. Potenciar";
  16. cout<<"\n6. Raiz"<<endl;
  17.  
  18. cin>>opcion;
  19.  
  20.  
  21. if(opcion==1){
  22. cout<<"Ingrese El Primer Numero"<<endl;
  23. cin>>a;
  24.  
  25. cout<<"Ingrese El Segundo Numero"<<endl;
  26. cin>>b;
  27. suma= a + b;
  28. cout<<"El Resultado De La Suma Es:"<<suma<<endl;
  29. }
  30. if(opcion==2){
  31. cout<<"Ingrese El Primer Numero"<<endl;
  32. cin>>a;
  33.  
  34. cout<<"Ingrese El Segundo Numero"<<endl;
  35. cin>>b;
  36. resta= a - b;
  37. cout<<"El Resultado De La Resta Es:"<<resta<<endl;
  38. }
  39. if(opcion==3){
  40. cout<<"Ingrese El Primer Numero"<<endl;
  41. cin>>a;
  42.  
  43. cout<<"Ingrese El Segundo Numero"<<endl;
  44. cin>>b;
  45. multi= a * b;
  46. cout<<"El Resultado De La Multiplicacion Es:"<<multi<<endl;
  47. }
  48. if(opcion==4){
  49. cout<<"Ingrese El Primer Numero"<<endl;
  50. cin>>a;
  51.  
  52. cout<<"Ingrese El Segundo Numero"<<endl;
  53. cin>>b;
  54. divi= a / b;
  55. cout<<"El Resultado De La Divicion Es:"<<divi<<endl;
  56. }
  57. if(opcion==5){
  58. cout<<"Ingrese La Base"<<endl;
  59. cin>>B;
  60.  
  61. cout<<"Ingrese La Potencia"<<endl;
  62. cin>>P;
  63.  
  64. float Resultado= pow(B,P);
  65.  
  66. cout<<" El Resultado De "<<B<<" Elevado A La "<<P<<" Es Igual A "<<Resultado<<endl;
  67. }
  68. if(opcion==6){
  69. cout<<"Ingrese El Tipo De Raiz"<<endl;
  70. cin>>B;
  71.  
  72. cout<<"Ingrese El numero"<<endl;
  73. cin>>P;
  74.  
  75. Resultado= pow(P,0.5);
  76. R= Z / B;
  77.  
  78. cout<<" La raiz a la "<<B<<" De "<<P<<" Es Igual A "<<Resultado<<endl;
  79. }
  80.  
  81. getch();
  82. return 0;
  83.  
  84. }


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 29 Septiembre 2017, 00:56 por engel lex » En línea

_TTFH_3500

Desconectado Desconectado

Mensajes: 95



Ver Perfil
Re: Ayuda Porfavor Raiz en C++
« Respuesta #1 en: 29 Septiembre 2017, 02:26 »

Citar
    Resultado= pow(P,0.5);
    R= Z / B;

¿Qué es R?, ¿Qué es Z?, ¿Por qué usas 0.5?
Si quieres hallar la raiz n-esima de a es: pow(a, 1/n) Notese que si n es entero entonces 1/n devuelve la división entera. Si quieres hallar la raiz cuadrada es elevar a la 0.5
conio.h No es una libreria estandar y NO debes usarla.

Código
  1. #include <math.h>
  2. #include <stdio.h>
  3.  
  4. int main() {
  5. int a, b, op;
  6. printf("\tOPERACIONES:\n");
  7. printf(" 1) Suma (Sumandos)\n");
  8. printf(" 2) Diferencia (Minuendo Sustraendo)\n");
  9. printf(" 3) Producto (Multiplicando Multiplicador)\n");
  10. printf(" 4) Divicion Real (Dividendo Divisor)\n");
  11. printf(" 5) Potenciacion (Base Exponente)\n");
  12. printf(" 6) Raiz n-esima (Radicando N)\n");
  13. printf("\nIngrese el codigo de operacion: ");
  14. scanf("%d", &op);
  15. printf("\nIngrese los operandos: ");
  16. scanf("%d %d", &a, &b);
  17. printf("\nEl resultado es: ");
  18. switch(op) {
  19. case 1: printf("%d", a + b); break;
  20. case 2: printf("%d", a - b); break;
  21. case 3: printf("%d", a * b); break;
  22. case 4: printf("%f", (float)a / b); break;
  23. case 5: printf("%f", pow(a, b)); break;
  24. case 6: printf("%f", pow(a, (float)1 / b)); break;
  25. default: printf("\nERROR: opcion no valida.\n"); break;
  26. }
  27. return 0;
  28. }


En línea

JavierScars

Desconectado Desconectado

Mensajes: 114



Ver Perfil
Re: Ayuda Porfavor Raiz en C++
« Respuesta #2 en: 1 Octubre 2017, 04:57 »

Hay muchos "detalles" en tu código.
Para mejorar tu eficiencia te recomiendo
-No usar conio.h (como dice el comentario de arriba es una librería no-estándar)
-Usa double en vez de float: En realidad no hay gran diferencia entre usar ambos en cuanto a memoria o rendimiento y se recomienda encarecidamente trabajar con double ya que tiene un nivel mas alto de precisión y evita así la perdida de valores, de la misma manera se recomienda trabajar siempre con int en vez de usar short y evitar los unsigned a menos que sea extremadamente necesario.
-Aprende a usar el switch
-Reusa tu codigo, si lees puedes encontrar que muchas veces repites el mismo codigo.
-Las opciones deberían ser un numero entero int.
Tu programa retocado quedaría así:

Código
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4. int main(int argc, char** argv) {
  5. double suma=0, resta=0, multi=0, divi=0, a, b, resultado, B, P;
  6. int opcion;
  7. cout<<"¿CUAL ES TU OPREPACION?"<<endl;
  8. cout<<"\n1. Sumar";
  9. cout<<"\n2. Restar";
  10. cout<<"\n3. Multiplicar";
  11. cout<<"\n4. Dividir";
  12. cout<<"\n5. Potenciar";
  13. cout<<"\n6. Raiz"<<endl;
  14.  
  15. cin>>opcion;
  16.  
  17. //Primero vez si es una potencia o raiz para evitar leer los valores una y otra vez
  18.  
  19. if(opcion==5){
  20. cout<<"Ingrese La Base"<<endl;
  21. cin>>B;
  22.  
  23. cout<<"Ingrese La Potencia"<<endl;
  24. cin>>P;
  25.  
  26. double resultado= pow(B,P);
  27.  
  28. cout<<" El resultado De "<<B<<" Elevado A La "<<P<<" Es Igual A "<<resultado<<endl;
  29. cin.get();
  30. return 1;
  31. }
  32.  
  33. if(opcion==6){
  34. cout<<"Ingrese El Tipo De Raiz"<<endl;
  35. cin>>B;
  36.  
  37. cout<<"Ingrese El numero"<<endl;
  38. cin>>P;
  39.  
  40. resultado= pow(P,(1/B));
  41.  
  42. cout<<" La raiz a la "<<B<<" De "<<P<<" Es Igual A "<<resultado<<endl;
  43. cin.get();
  44. return 1;
  45. }
  46.  
  47.  
  48. // Si no es potencia ni raiz podemos leer los 2 valores siempre igual
  49. cout<<"Ingrese El Primer Numero"<<endl;
  50. cin>>a;
  51.  
  52. cout<<"Ingrese El Segundo Numero"<<endl;
  53. cin>>b;
  54.  
  55. if(opcion==1){
  56. suma= a + b;
  57. cout<<"El resultado De La Suma Es:"<<suma<<endl;
  58. cin.get();
  59. return 1;
  60. }
  61.  
  62. if(opcion==2){
  63. resta= a - b;
  64. cout<<"El resultado De La Resta Es:"<<resta<<endl;
  65. cin.get();
  66. return 1;
  67. }
  68.  
  69. if(opcion==3){
  70. multi= a * b;
  71. cout<<"El resultado De La Multiplicacion Es:"<<multi<<endl;
  72. cin.get();
  73. return 1;
  74. }
  75.  
  76. if(opcion==4){
  77. divi= a / b;
  78. cout<<"El resultado De La Divicion Es:"<<divi<<endl;
  79. cin.get();
  80. return 1;
  81. }
  82. //Si el usuario coloca una opcion invalida
  83.  
  84. cout << "Opcion invalidad por favor ingrese una entrada valida (del 1 al 6)";
  85. cin.get();
  86. return 0;
  87. }
  88.  
P.D1: Asumo que no sabes crear funciones por eso no las utilizo al igual que el switch
P.D2: El uso de cin.get() aunque es mejor que el uso de getch() no estan vistos como buenas practicas, aunque para lo que buscas esta bien.
« Última modificación: 1 Octubre 2017, 05:10 por JavierScars » En línea

Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines