Ayuda con un codigo

Iniciado por htrorin, 3 Marzo 2017, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

htrorin

Como le hago para que después de cada acción aparezca el menú y solo se salga si oprime la opción 6? Gracias


Código (cpp) [Seleccionar]
#include <algorithm>
#include <vector>
#include <cstdlib>
#define N   5
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
double CalculoPi(int x)

int main(int argc, char *argv[])
{

int v=0;
cout<<"menu principal"<< endl;
cout<<"1 geometria: area del cuadrado"<<endl;
cout<<"2 geometria: area de un triangulo "<<endl;
cout<<"3 fisica: calcular distancia recorrida"<<endl;
cout<<"4 fisica: calcula volaje"<<endl;
cout<<"5 calculo"<<endl;
cout<<"6 salir"<<endl;
cout<< "elige una opcion"<<endl;
cin>>v;      

switch(v)  

{
case 1: cout<<" geometria"<<endl;{

   double a,area;
   cout<<"ingrese el lado del cuadrado"<<endl;
   cin>>a;
   area=a*a;
   cout<<area;
  return 0;
}

break;    
case 2: cout<<"escogiste geometria: area de un triangulo"<<endl;
{
  float altura, area, base;

  printf( "Introduzca base: " );
  scanf( "%f", &base );
  printf( "Introduzca altura: " );
  scanf( "%f", &altura );

  area = base * altura / 2;

  printf( "El area del triangulo es: %f", area );

  return 0;
}

break;

case 3: cout<<" escogiste fisica: calcular distancia recorrida "<<endl;
{
     
     
    int velocidad_constante,tiempo;
     
     int distancia_recorrida;

     
     printf("Ejercicio 01");
     printf("\n\n");
     
     printf ("Ingrese la velocidad del movil (m/s)       : ");
     scanf("%d",&velocidad_constante);
     printf("\n\n");
     
     printf ("Ingrese el tiempo usado por del movil (s)  : ");
     scanf("%d",&tiempo);

     distancia_recorrida = velocidad_constante * tiempo;
     printf("\n\n");
     printf("Distancia recorrida por el movil es: %d ",      
     distancia_recorrida);
   
     getch();

}
break;

case 4: cout<<" escogiste fisica: calcula volaje"<<endl;
{
   float corriente, voltaje, resistencia; /* tres variables */


   printf("Valor de la corriente, en amperes?\n");
   scanf("%f", &corriente);
   printf("Valor de la resistencia, en ohms?\n");
   scanf("%f", &resistencia);

   voltaje=corriente*resistencia; /* calculo de voltaje */

   printf("El valor del voltaje es de %f voltios\n", voltaje);

   return 0;
}
break;

case 5: cout<<" escogiste calculo" ;
{
   double suma;
   int i;

   suma=0.0;

   for (i=0; i<=x; i++)
   {
      if ((i=2)||((i%2)==0))
suma=suma+((double)1/(2*i+1)); //hago una casting, es decir hago saber que la operacion //debera transformarse en un double y asi me dara los decimales
else
suma=suma-((double)1/(2*i+1));
   }

return 4*suma;
}


int main(void)

{
   int x;
   double PI;

   cout <<"Introduzca el numero de terminos que quiere que tenga la sumatoria, a partir de la cual se calcula el numero PI: ";
   cin >> x;

   PI=CalculoPi(x);

   cout <<"El valor del numero PI es: " << PI << endl << endl;

   system("pause");

   return 0;
}
break;

case 6: cout<<" Adios";

break;

default: cout<<" ERROR";
break;

}
getche();
}





Los codigos deben llegar etiquetas GeSHi

MAFUS

Te liadte demasiado con el case 5: tienes un segundo main.

integeroverflow

#2
creo que lo mejor seria usar un ciclo:


int quit = 0;
int v = 0;
while(!quit)
{
       system("clear"); // limpias la pantalla
       mostrar_menu(); // en esta funcion imprimis el menu
      cin >> v;

      switch(v)
      {
            case 1:
                  func_opcion_1();
               break;
            case 2:
                  func_opcion_2();
               break;
            [...] [...] // todas las opciones que necesites
            case 6:
                   quit = 1;
               break;
      }
}


o bien:


    int v = 0;

    do
    {
            system("clear");
            mostrar_menu();
           cin >> v;
           switch(v)
           {
                  case 1:
                     break;
                  case 2:
                     break;
                  case [...]
                  case 6:
                          // si la opcion es 6 no hacemos nada, para la proxima iteracion del ciclo v ya valdria 6 y el bucle se romperia
                       break;
           }
    } while(v != 6);

joseka1234

No voy a ayudar con el código, porque @integeroverflow ya te ha contestado, pero tengo una pregunta: ¿eso compila?

engel lex

Cita de: joseka1234 en  7 Marzo 2017, 00:44 AM
No voy a ayudar con el código, porque @integeroverflow ya te ha contestado, pero tengo una pregunta: ¿eso compila?

no, tiene demsiados errores, linea 10, 112 y 124 viendo solo por encimita
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.