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

no se usar el bucle do while

Estas en el tema de no se usar el bucle do while en el foro de C/C++ en Foros del Web. Paso a comentarles mi inconveniente, en una de esas doy con la solucion , en el programa que veran a continuacion ( consiste en la ...
  #1 (permalink)  
Antiguo 02/12/2012, 21:45
 
Fecha de Ingreso: diciembre-2012
Mensajes: 1
Antigüedad: 12 años, 1 mes
Puntos: 0
no se usar el bucle do while

Paso a comentarles mi inconveniente, en una de esas doy con la solucion , en el programa que veran a continuacion ( consiste en la realizacion de operaciones , calulo de area, perimetro , etc) cada vez que termina la operacion y muestra el resultado , procede a cerrarce la pantalla , lo que yo quisiera es que en vez de cerrarce vuelva al menu principal , asi de esta manera no sea engorroso y deba abrir el programa nuevamente para cada operacion a realizar , desde ya muchas gracias Esta es solo una parte del programa ya que no puedo ponerlo completo pero con que lo haga en una de las opciones ya sera muy util gracias nuevamente


Código:
#include <stdio.h>
#include <stdlib.h> 

//Programa para calcular el area y perimetro de un triangulo, un cuadrado, un circulo o un rectangulo y volumen de piramide,prisma,cilindro

int a, van, vbn, vcn, vdn, ven, vfn, vgn, vhn, vin, vjn, vkn;

float k, y, l, m, v, g, z, p, h, i, j, q, x, s, ra, al, la, lo, ha, vv, ll, aa, hh;

float pericua, areacua, perirec, arearec, longit, areacir, pritric, peritria, pritrib, areatri, volumc, volump, volumpr;

float pi=3.141592;


int main(){


do{
printf("\n ********** PROGRAMA PARA CALCULO DE AREA, PERIMETRO Y VOLUMEN **********");
printf("\n");
printf("\n Usted desea trabajar sobre:");
printf("\n");
printf("\n 1 Figuras geometricas");
printf("\n 2 Cuerpos geometricos");
printf("\n");
scanf("%d",&a);

if(a<1||a>2)
{
printf("\n El numero es incorrecto");
printf("\n");
system("pause");
system("cls");
}
 
}while(a<1||a>2);
switch(a)
{
case 1:
     int b;
     do{
     printf("**** FIGURAS GEOMETRICAS ****");
     printf("\n");
     printf("Desea trabajar con:");
     printf("\n");
     printf("\n 1 Cuadrado");
     printf("\n 2 Rectangulo");
     printf("\n 3 Circulo");
     printf("\n 4 Triangulo");
     printf("\n");
     scanf("%d",&b);
     
     if(b<1 || b>4)
     {
     printf("\n El numero ingresado es incorrecto");
     printf("\n");
     system("pause");
     system("cls");
     }
     
     }while(b<1 || b>4);
     
     switch(b)
     {
     case 1:
            int c;
            do{
            printf("Desea calcular:");
            printf("\n");
            printf("\n 1 Perimetro");
            printf("\n 2 Area");
            printf("\n");
            scanf("%d",&c);
            
            if(c<1 || c>2)
            {
            printf("\n El numero ingresado es incorrecto");
            printf("\n");
            system("pause");
            system("cls");
            }
            
            }while(c<1 || c>2);
            
            switch(c)
            {
            case 1:
                   do{
                   printf("Ingrese un lado del cuadrado:");
                   scanf("%f",&k);
                   if(k>0)
                   {pericua = k*4;
                   van = 1;
                   printf("El perimetro del cuadrado es: %f", pericua);
                   printf("\n");
                   }
                   else
                   {printf("El dato ingresado no puede ser negativo!");
                    printf("\n");
                   }
                   }
                   while(van==0);
                   break;
            case 2:
                   do{
                   printf ("Ingrese un lado del cuadrado: ");
                   scanf("%f", &y);
                   if(y>0)
                   {areacua = y*y;
                   vbn = 1;
                   printf ("El area del cuadrado es: %f", areacua);     
                   printf("\n");
                   }
                   else
                   {printf("El dato ingresado no puede ser negativo!");
                    printf("\n");
                   }
                   }
                   while(vbn==0);
                   }
                   system("pause");
                   
                   
          
                   
     break;
     
     case 2:
            int d;
            do{
            printf("Desea calcular:");
            printf("\n");
            printf("\n 1 Perimetro");
            printf("\n 2 Area");
            printf("\n");
            scanf("%d",&d);
            
            if(d<1 || d>2)
            {
            printf("\n El numero ingresado es incorrecto");
            printf("\n");
            system("pause");
            system("cls");
            }
            
            }while(d<1 || d>2);
            
            switch(d)
            {
            case 1:
                   do{
                   printf("Ingrese el ancho del rectangulo:");
                   scanf("%f",&l);
                   if(l>0)
                   {printf("Ingrese el largo del rectangulo:");
                   scanf("%f",&m);
                   if(m>0)
                   {perirec = l+l+m+m; 
                   printf("El perimetro del rectangulo es: %f", perirec);
                   printf("\n");
                   vcn=1;
                   }
                   else
                   {printf("El largo ingresado del rectangulo no puede ser negativo!");
                    printf("\n");
                   }
                   }
                   else
                   {printf("El ancho ingresado del rectangulo no puede ser negativo!");  
                    printf("\n");
                   }
                   }
                   while(vcn==0);
     
            
            break;
            
            case 2:
                   do{
                   printf("Ingrese la base del rectangulo:");
                   scanf("%f", &v);
                   if(v>0)
                   {printf("Ingrese la altura del rectangulo:");
                   scanf("%f", &g);
                   if(g>0)
                   {arearec = v*g;
                   printf("El area del rectangulo es: %f", arearec);
                   printf("\n");
                   vdn = 1;
                   }
                   else
                   {printf("La medida de la altura ingresada no puede ser negativa!");
                    printf("\n");
                   }
                   }
                   else
                   {printf("La medida de la base ingresada no puede ser negativa!");
                    printf("\n");
                   }
                   }                   
                   while(vdn==0);
                   }
                   system("pause");
  #2 (permalink)  
Antiguo 02/12/2012, 22:15
 
Fecha de Ingreso: diciembre-2012
Mensajes: 7
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: no se usar el bucle do while

al finalizar tu opcion que hayas elegido, intenta ocupar un "IF statement".

asi cuando el usuario escoja la opcion matematica deseada

al finalizar esta pregunta "desea hacer otra operacion?"
if(opc=1)
*opcion a regresar a menu*

if(opc=2)
printf("adios");
*opcion finalizar programa*
  #3 (permalink)  
Antiguo 02/12/2012, 22:22
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 13 años
Puntos: 94
Respuesta: no se usar el bucle do while

Hola!
Cita:
no se usar el bucle do while
si te anda el codigo es porque lo sabes usar...


Asi como pones fragmentos de codigo en los distintos do-while, si pones todo el codigo dentro de un do while vas a poder regresar al menu; tambien tendrias que agregar una opcion mas para indicar fin del programa:

Código C:
Ver original
  1. int main() {
  2.  
  3.    do{
  4.    .........
  5.    printf("\n 3 Fin del programa\n");
  6.    
  7.    ........ /* todo el codigo del programa */
  8.    
  9.    }while(opcion!=3);
  10.  
  11.    return 0;
  12. }


Saludos

Etiquetas: bucle, int, programa, usar
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 18:06.