Título: Ayuda Porfavor Raiz en C++
Publicado por: Carloslim2002 en 29 Septiembre 2017, 00:01 am
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 : #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main(int argc, char** argv) { float suma=0, resta=0, multi=0, divi=0, a, b, opcion; float Resultado, Z = 1, P, B, R; cout<<" ¿CUAL ES TU OPREPACION? "<<endl; cout<<"\n1. Sumar"; cout<<"\n2. Restar"; cout<<"\n3. Multiplicar"; cout<<"\n4. Dividir"; cout<<"\n5. Potenciar"; cout<<"\n6. Raiz"<<endl; cin>>opcion; if(opcion==1){ cout<<"Ingrese El Primer Numero"<<endl; cin>>a; cout<<"Ingrese El Segundo Numero"<<endl; cin>>b; suma= a + b; cout<<"El Resultado De La Suma Es:"<<suma<<endl; } if(opcion==2){ cout<<"Ingrese El Primer Numero"<<endl; cin>>a; cout<<"Ingrese El Segundo Numero"<<endl; cin>>b; resta= a - b; cout<<"El Resultado De La Resta Es:"<<resta<<endl; } if(opcion==3){ cout<<"Ingrese El Primer Numero"<<endl; cin>>a; cout<<"Ingrese El Segundo Numero"<<endl; cin>>b; multi= a * b; cout<<"El Resultado De La Multiplicacion Es:"<<multi<<endl; } if(opcion==4){ cout<<"Ingrese El Primer Numero"<<endl; cin>>a; cout<<"Ingrese El Segundo Numero"<<endl; cin>>b; divi= a / b; cout<<"El Resultado De La Divicion Es:"<<divi<<endl; } if(opcion==5){ cout<<"Ingrese La Base"<<endl; cin>>B; cout<<"Ingrese La Potencia"<<endl; cin>>P; float Resultado= pow(B,P); cout<<" El Resultado De "<<B<<" Elevado A La "<<P<<" Es Igual A "<<Resultado<<endl; } if(opcion==6){ cout<<"Ingrese El Tipo De Raiz"<<endl; cin>>B; cout<<"Ingrese El numero"<<endl; cin>>P; Resultado= pow(P,0.5); R= Z / B; cout<<" La raiz a la "<<B<<" De "<<P<<" Es Igual A "<<Resultado<<endl; } getch(); return 0; }
· Los códigos deben ir en etiquetas GeSHi >aquí las reglas del foro (http://foro.elhacker.net/reglas.htm) -Engel Lex
Título: Re: Ayuda Porfavor Raiz en C++
Publicado por: _TTFH_3500 en 29 Septiembre 2017, 02:26 am
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. #include <math.h> #include <stdio.h> int main() { int a, b, op; printf("\tOPERACIONES:\n"); printf(" 1) Suma (Sumandos)\n"); printf(" 2) Diferencia (Minuendo Sustraendo)\n"); printf(" 3) Producto (Multiplicando Multiplicador)\n"); printf(" 4) Divicion Real (Dividendo Divisor)\n"); printf(" 5) Potenciacion (Base Exponente)\n"); printf(" 6) Raiz n-esima (Radicando N)\n"); printf("\nIngrese el codigo de operacion: "); scanf("%d", &op); printf("\nIngrese los operandos: "); scanf("%d %d", &a, &b); printf("\nEl resultado es: "); switch(op) { case 1: printf("%d", a + b); break; case 2: printf("%d", a - b); break; case 3: printf("%d", a * b); break; case 4: printf("%f", (float)a / b); break; case 5: printf("%f", pow(a, b)); break; case 6: printf("%f", pow(a, (float)1 / b)); break; default: printf("\nERROR: opcion no valida.\n"); break; } return 0; }
Título: Re: Ayuda Porfavor Raiz en C++
Publicado por: JavierScars en 1 Octubre 2017, 04:57 am
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í: #include <iostream> #include <math.h> using namespace std; int main(int argc, char** argv) { double suma=0, resta=0, multi=0, divi=0, a, b, resultado, B, P; int opcion; cout<<"¿CUAL ES TU OPREPACION?"<<endl; cout<<"\n1. Sumar"; cout<<"\n2. Restar"; cout<<"\n3. Multiplicar"; cout<<"\n4. Dividir"; cout<<"\n5. Potenciar"; cout<<"\n6. Raiz"<<endl; cin>>opcion; //Primero vez si es una potencia o raiz para evitar leer los valores una y otra vez if(opcion==5){ cout<<"Ingrese La Base"<<endl; cin>>B; cout<<"Ingrese La Potencia"<<endl; cin>>P; double resultado= pow(B,P); cout<<" El resultado De "<<B<<" Elevado A La "<<P<<" Es Igual A "<<resultado<<endl; cin.get(); return 1; } if(opcion==6){ cout<<"Ingrese El Tipo De Raiz"<<endl; cin>>B; cout<<"Ingrese El numero"<<endl; cin>>P; resultado= pow(P,(1/B)); cout<<" La raiz a la "<<B<<" De "<<P<<" Es Igual A "<<resultado<<endl; cin.get(); return 1; } // Si no es potencia ni raiz podemos leer los 2 valores siempre igual cout<<"Ingrese El Primer Numero"<<endl; cin>>a; cout<<"Ingrese El Segundo Numero"<<endl; cin>>b; if(opcion==1){ suma= a + b; cout<<"El resultado De La Suma Es:"<<suma<<endl; cin.get(); return 1; } if(opcion==2){ resta= a - b; cout<<"El resultado De La Resta Es:"<<resta<<endl; cin.get(); return 1; } if(opcion==3){ multi= a * b; cout<<"El resultado De La Multiplicacion Es:"<<multi<<endl; cin.get(); return 1; } if(opcion==4){ divi= a / b; cout<<"El resultado De La Divicion Es:"<<divi<<endl; cin.get(); return 1; } //Si el usuario coloca una opcion invalida cout << "Opcion invalidad por favor ingrese una entrada valida (del 1 al 6)"; cin.get(); return 0; }
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.
|