Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Un extraño problema...programa en C++

Estas en el tema de Un extraño problema...programa en C++ en el foro de C/C++ en Foros del Web. Hola a todos...soy un estudiante nuevo en el mundo de C++ por lo que tengo poca experiencia. Necesito crear un pequeño programa que calcule el ...
  #1 (permalink)  
Antiguo 02/03/2011, 20:41
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Un extraño problema...programa en C++

Hola a todos...soy un estudiante nuevo en el mundo de C++ por lo que tengo poca experiencia. Necesito crear un pequeño programa que calcule el area de ciertas figuras geometricas (cuadrado, triangulo , circulo). Estaba probando con " if " y con "else" pero tengo varios errores..aqui esta el codigo con el que he estado trabajando:


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>

using namespace std;

int main()
{
float figura,cuadrado,triangulo,circulo,lado,base,altura ,radio;
cout<<"digite el nombre de la figura "<<endl;
cin>>figura;
if(figura==cuadrado)
{
cout<<"Digite el valor del lado del cuadrado"<<endl;
cin>>lado;
cout<<"el area del cuadrado es:"<<lado*lado<<endl;
}
else
{
if(figura==triangulo)
{
cout<<"digite el valor de la base del triangulo"<<endl;
cin>>base;
cout<<"digite el valor de la altura del triangulo"<<endl;
cin>>altura;
cout<<"el area del triangulo es:"<<base*altura/2<<endl;
}
else
{
if(figura==circulo)
{
cout<<"digite el valor del radio del circulo"<<endl;
cin>>radio;
cout<<"el area del circulo es:"<<3.1514*radio*radio<<endl;
}
}
}

system("PAUSE");
return EXIT_SUCCESS;
}


Gracias a la persona o a las personas que puedan corregirlo. Existe otra forma de hacer el mismo programa??
  #2 (permalink)  
Antiguo 03/03/2011, 03:26
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Un extraño problema...programa en C++

Vas comparando figura con otras variables float...a las que no has dado ningún valor y que, en todo caso, serían constantes, no variables.

Mejor que con if-else puedes hacerlo con un switch-case, que es más claro.

A tu pregunta que si hay más maneras de hacerlo te diré que sí, pero como todos los programas, siempre hay muchas maneras de hacer lo mismo.
  #3 (permalink)  
Antiguo 03/03/2011, 06:57
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Un extraño problema...programa en C++

Cita:
Iniciado por Heimish2000 Ver Mensaje
Vas comparando figura con otras variables float...a las que no has dado ningún valor y que, en todo caso, serían constantes, no variables.

Mejor que con if-else puedes hacerlo con un switch-case, que es más claro.

A tu pregunta que si hay más maneras de hacerlo te diré que sí, pero como todos los programas, siempre hay muchas maneras de hacer lo mismo.

Gracias por tu ayuda. Me gustaria saber como utilizar un Switch-case para mi problema en particular...entiendo que debe ser una herramienta poderosa pero ahun no tengo la suficiente preparacion para utilizarla. Tal vez alguien con experiencia como tu pueda guiarme...De nuevo gracias.
  #4 (permalink)  
Antiguo 03/03/2011, 10:15
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Un extraño problema...programa en C++

Te estas desviando un poco de lo importante. El swicth-case es solo un estructura similar al if. nada mas. Busca en internet la sintaxis y listo....

Tu problema aca es que vos creaste variables del tipo float y por lo que dice el programa estas tratandolas de usar como si fuesen string.

Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. string figura;
  12. float lado,base,altura ,radio;
  13. cout<<"digite el nombre de la figura "<<endl;
  14. cin>>figura;
  15.  
  16. if(figura.compare("cuadrado") == 0)  {
  17.           cout<<"Digite el valor del lado del cuadrado"<<endl;
  18.           cin>>lado;
  19.           cout<<"el area del cuadrado es:"<<lado*lado<<endl;
  20. }
  21. else if(figura.compare("triangulo") == 0 ) {
  22.          cout<<"digite el valor de la base del triangulo"<<endl;
  23.          cin>>base;
  24.          cout<<"digite el valor de la altura del triangulo"<<endl;
  25.          cin>>altura;
  26.          cout<<"el area del triangulo es:"<<base*altura/2<<endl;
  27. } else if(figura.compare("circulo") == 0) {
  28.            cout<<"digite el valor del radio del circulo"<<endl;
  29.            cin>>radio;
  30.            cout<<"el area del circulo es:"<<3.1514*radio*radio<<endl;
  31. }
  32.  
  33. system("PAUSE");
  34. return EXIT_SUCCESS;
  35. }
  #5 (permalink)  
Antiguo 03/03/2011, 12:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Un extraño problema...programa en C++

Cita:
Iniciado por sam90 Ver Mensaje
Te estas desviando un poco de lo importante. El swicth-case es solo un estructura similar al if. nada mas. Busca en internet la sintaxis y listo....

Tu problema aca es que vos creaste variables del tipo float y por lo que dice el programa estas tratandolas de usar como si fuesen string.

Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. string figura;
  12. float lado,base,altura ,radio;
  13. cout<<"digite el nombre de la figura "<<endl;
  14. cin>>figura;
  15.  
  16. if(figura.compare("cuadrado") == 0)  {
  17.           cout<<"Digite el valor del lado del cuadrado"<<endl;
  18.           cin>>lado;
  19.           cout<<"el area del cuadrado es:"<<lado*lado<<endl;
  20. }
  21. else if(figura.compare("triangulo") == 0 ) {
  22.          cout<<"digite el valor de la base del triangulo"<<endl;
  23.          cin>>base;
  24.          cout<<"digite el valor de la altura del triangulo"<<endl;
  25.          cin>>altura;
  26.          cout<<"el area del triangulo es:"<<base*altura/2<<endl;
  27. } else if(figura.compare("circulo") == 0) {
  28.            cout<<"digite el valor del radio del circulo"<<endl;
  29.            cin>>radio;
  30.            cout<<"el area del circulo es:"<<3.1514*radio*radio<<endl;
  31. }
  32.  
  33. system("PAUSE");
  34. return EXIT_SUCCESS;
  35.  
  36. Gracias Heimish2000 por la ayuda que me has dado.
  37. }
  #6 (permalink)  
Antiguo 03/03/2011, 18:17
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 10 meses
Puntos: 9
Respuesta: Un extraño problema...programa en C++

una solucion alternativa a la de sam90 podria ser la siguiente


Código C++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. enum enumTipoGeometria{tCuadrado=1, tTriangulo, tCirculo};
  10.  
  11. int main()
  12. {
  13.  
  14. int figura;
  15. float lado,base,altura ,radio;
  16. cout<<"digite el nombre de la figura \n1) Cuadrado \n2)Triangulo \n3)Circulo"<<endl;
  17. cin>>figura;
  18.  
  19. if(figura == ::tCuadrado){
  20.     cout<<"Digite el valor del lado del cuadrado"<<endl;
  21.     cin>>lado;
  22.     cout<<"el area del cuadrado es:"<<lado*lado<<endl;
  23. }
  24. else if(figura == ::tTriangulo ) {
  25.     cout<<"digite el valor de la base del triangulo"<<endl;
  26.     cin>>base;
  27.     cout<<"digite el valor de la altura del triangulo"<<endl;
  28.     cin>>altura;
  29.     cout<<"el area del triangulo es:"<<base*altura/2<<endl;
  30. } else if(figura == ::tCirculo) {
  31.     cout<<"digite el valor del radio del circulo"<<endl;
  32.     cin>>radio;
  33.     cout<<"el area del circulo es:"<<3.1514*radio*radio<<endl;
  34. }
  35.  
  36. system("PAUSE");
  37. return EXIT_SUCCESS;
  38. }
  #7 (permalink)  
Antiguo 07/03/2011, 00:53
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Un extraño problema...programa en C++

Prueba este, es una tarea mia, cambiale algunos valores y elimina variables que no ocupes

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.  
  9.  string resp;    
  10.  int area_trapecio;
  11.  int base_mayor;
  12.  int base_menor;
  13.  int altura;
  14.  int area_rectangulo;
  15.  int largo;
  16.  int ancho;
  17.  double area_corona;
  18.  double p;
  19.  int radio_mayor;
  20.  int radio_menor;
  21.  int area_rombo;
  22.  int diagonal_mayor;
  23.  int diagonal_menor;
  24.  int opcion;
  25.  
  26.  
  27.  while("resp !=s")  
  28.  {      
  29.       cout<<setw(30)<<"Calculo Geometrico"<<endl;
  30.       cout<<"Para saber el area del trapecio, digite #1:"<<endl;
  31.       cout<<"Para saber el area del rectangulo, digite #2:"<<endl;
  32.       cout<<"Para saber el area del corona circular, digite #3:"<<endl;
  33.       cout<<"Para saber el area del rombo, digite #4:"<<endl;
  34.       cin >> opcion;
  35.       {
  36.          
  37.       if (opcion==1)
  38.       {          
  39.                     cout <<setw(25)<<"****Area del trapecio!****\n" << endl;
  40.                     cout << "digite la base mayor: " << endl;
  41.                     cin >> base_mayor;
  42.                     cout << "digite la base menor:" << endl;
  43.                     cin >> base_menor;
  44.                     cout << "digite la altura:" << endl;
  45.                     cin >> altura;
  46.                     area_trapecio = ((base_mayor+base_menor)*altura)/2;
  47.                     cout <<"El area es igual a:"<<" "<<area_trapecio <<  endl;
  48.                     cout << "La formula del area del trapecio es \n(B + b)*h/2\n\n     ******\n    *      *\n   *        *\n  *          *\n"
  49.                     " **************\n" << endl;}
  50.                    
  51.         else                    
  52.         {
  53.                        
  54.           if (opcion==2)
  55.           {          
  56.                        cout <<setw(25)<< "*****Area del rectangulo!*****\n" << endl;
  57.                        cout << "Digite el largo:" << endl;
  58.                        cin >> largo;
  59.                        cout << "Digite la ancho:" << endl;
  60.                        cin >>ancho;
  61.                        area_rectangulo=largo*ancho;
  62.                        cout <<"El area es igual a:"<<" "<< area_rectangulo<< endl;
  63.                        cout << "La formula del area del rectangulo es: a=l*h\n    ***********\n    *         *\n    *         *\n"
  64.                        "    *         *\n    ***********" << endl;}
  65.          else
  66.           {
  67.                            
  68.            if (opcion==3)
  69.            {          
  70.                        cout <<setw(25)<<"*****Corona Circular!*****\n" << endl;
  71.                        cout << "Digite el radio mayor:" << endl;
  72.                        cin >> radio_mayor;
  73.                        cout << "Digite el radio menor:" << endl;
  74.                        cin >> radio_menor;
  75.                        p=3.1416;
  76.                        area_corona=p*((radio_mayor*radio_mayor)-(radio_menor*radio_menor));
  77.                        cout <<"El area es:"<<" "<< area_corona << "\n" << endl;
  78.                        cout << "La formula del area de la corona circular es: p(R^2-r^2)\n\n"
  79.                        "\n\n      *    \n   *     *\n  *       *\n  *       *\n   *     *\n      *" << endl;}
  80.                                          
  81.            else
  82.            {
  83.                                
  84.               if (opcion==4)
  85.               {      
  86.                       cout <<setw(25)<<"*****Rombo!*****\n" << endl;
  87.                       cout << "Digite la diagonal mayor:" << endl;
  88.                       cin >> diagonal_mayor;
  89.                       cout << "Digite la diagonal menor" << endl;
  90.                       cin >>diagonal_menor;
  91.                       area_rombo=diagonal_mayor*diagonal_menor/2;
  92.                       cout <<"El area es:"<<" "<<area_rombo<< "\n" << endl;
  93.                       cout << "La formula del area del rombo es: a=D*d/2\n\     *   \n   *   * \n  *     *\n *       *\n"
  94.                       "  *     *\n   *   *\n     *" << endl;}
  95.                       else
  96.                       {
  97.                           if (opcion>4)
  98.                           {
  99.                           cout << "ERROR:Numero no permitido, Valido del 1 al 4" << endl;}
  100.                           }
  101.                          
  102.                        }
  103.                     }
  104.                 }
  105.                 cout <<"Desea el usuario realizar otro calculo: S/N?"<< endl;
  106.                 cin >> resp;
  107.                
  108.                 if ( resp!="s" )
  109.                                              
  110.                    
  111.                return 0; }
  112.                    
  113.         }
  114. }

Etiquetas: c/c++, extraño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.