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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Como retornar a un paso anterior?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como retornar a un paso anterior?  (Leído 2,594 veces)
skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
¿Como retornar a un paso anterior?
« en: 20 Noviembre 2011, 20:15 pm »

Hola a todos, en mi intento de seguir aprendiendo en esto de la programacion, me surgió esta duda, que no consigo encontrar por internet, la cual es la siguiente:

Dispongo de este programa:

Código:
/*Escribe un programa que pregunte al usuario los dos lados de un rectángulo y
presente por pantalla el cálculo del perímetro (suma de los lados) y el área (base por
altura).*/

# include <stdio.h>
# include <stdlib.h>

int main()
{ int lado_menor,lado_mayor,base,altura,perimetro,area;

      printf("\n Introduce el valor del lado menor:");
      scanf("%d",&lado_menor);
     
      printf("\n Introduce el valor del lado mayor:");
      scanf("%d",&lado_mayor);
     
                              if(lado_mayor<lado_menor)
                                                       printf("El lado mayor tiene que ser mayor que el menor");
                                                       
                                                       else
                                                       
     
      printf("\n Introduce el valor de la base:");
      scanf("%d",&base);
     
      printf("\n introduce el valor de la altura:");
      scanf("%d",&altura);
     
      perimetro=(lado_menor*2)+(lado_mayor*2);
      area=(base*altura);
     
      printf("\n El perimetro es:%d",perimetro);
   
      printf("\n El area es:%d",area);



system("Pause");
return 0;
   


Bien pues me gustaría saber como puedo retornar , en caso de que el valor del lado mayor sea menor, a la pregunta de introducir el lado mayor.


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: ¿Como retornar a un paso anterior?
« Respuesta #1 en: 20 Noviembre 2011, 20:18 pm »

Lo que haces es un loop que se repite hasta que el dato ingresado sea el correcto:

Código
  1. scanf("%d", &lado_mayor);
  2. while (lado_mayor < lado_menor) {
  3.    printf("El lado mayor tiene que ser mayor que el menor");
  4.    scanf("%d", &lado_mayor);
  5. }
  6.  

o

Código
  1. int error_flag = 0;
  2.  
  3. do {
  4.  error_flag = 0;
  5.  //pedir valor
  6.  scanf("%d", &lado_mayor);
  7.  if (lado_mayor < lado_menor) {
  8.    erro_flag = 1;
  9.    //mostrar algún error
  10.  }
  11.  
  12. } while (error_flag);
  13.  



Saludos


« Última modificación: 20 Noviembre 2011, 20:38 pm por RyogiShiki » En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: ¿Como retornar a un paso anterior?
« Respuesta #2 en: 20 Noviembre 2011, 21:58 pm »

Lo que haces es un loop que se repite hasta que el dato ingresado sea el correcto:

Código
  1. scanf("%d", &lado_mayor);
  2. while (lado_mayor < lado_menor) {
  3.    printf("El lado mayor tiene que ser mayor que el menor");
  4.    scanf("%d", &lado_mayor);
  5. }
  6.  

o

Código
  1. int error_flag = 0;
  2.  
  3. do {
  4.  error_flag = 0;
  5.  //pedir valor
  6.  scanf("%d", &lado_mayor);
  7.  if (lado_mayor < lado_menor) {
  8.    erro_flag = 1;
  9.    //mostrar algún error
  10.  }
  11.  
  12. } while (error_flag);
  13.  



Saludos

Gracias!!.No termino de comprender la primera opcion, podrías explicarme como debería de ir, porque amí me sale un bucle infinito, siento las molestias
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: ¿Como retornar a un paso anterior?
« Respuesta #3 en: 20 Noviembre 2011, 22:18 pm »

Mira es muy simple, primero pides el dato del número menor, una vez leido  pides el dato del número mayor, justo después colocas el loop en él la condición será evaluada como verdadera o falsa, si es falsa el loop no se ejecuta, si es verdadera se ejecuta hasta que la condición sea falsa. Digamos:

Numero Menor: 10
Numero Mayor: 5
 Se evelua la condición para entrar o no al loop:
 Numero mayor < Numero menor : Si (true)
    Entramos al loop
    solicitamos de nuevo el número: 15
    reinicia el loop y se vuelve a evaluar la expresión:
 Numero mayor < numero menosr: No (false)
 La condición no se cumple, el loop no se ejecuta y el flujo normal del programa continua.

En definitiva sería algo así:

Código
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.      int lado_menor,lado_mayor,base,altura,perimetro,area;
  7.      printf("\n Introduce el valor del lado menor:");
  8.      scanf("%d",&lado_menor);
  9.  
  10.      printf("\n Introduce el valor del lado mayor:");
  11.      scanf("%d",&lado_mayor);
  12.      //----------------------------
  13.      while (lado_mayor < lado_menor) {
  14. printf(" El lado mayor tiene que ser mayor que el menor");
  15. printf("\n Intentalo nuevamente: ");
  16. scanf("%d", &lado_mayor);
  17.      }
  18.      //---------------------------                                                
  19.  
  20.      printf("\n Introduce el valor de la base:");
  21.      scanf("%d",&base);
  22.  
  23.      printf("\n introduce el valor de la altura:");
  24.      scanf("%d",&altura);
  25.  
  26.      perimetro=(lado_menor*2)+(lado_mayor*2);
  27.      area=(base*altura);
  28.  
  29.      printf("\n El perimetro es:%d",perimetro);
  30.  
  31.      printf("\n El area es:%d",area);
  32.  
  33.  
  34.  
  35.      system("Pause");
  36.      return 0;
  37. }
  38.  

Saludos
« Última modificación: 20 Noviembre 2011, 23:10 pm por RyogiShiki » En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: ¿Como retornar a un paso anterior?
« Respuesta #4 en: 20 Noviembre 2011, 22:29 pm »

Claro!!, ya me ha salido :), muchas gracias por tu atencion compi
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: ¿Como retornar a un paso anterior?
« Respuesta #5 en: 20 Noviembre 2011, 22:31 pm »

De nada, Me alegra que te haya funcionado.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como se programa un Motor paso a paso!!!
Electrónica
drahcir 1 2,934 Último mensaje 2 Diciembre 2005, 19:40 pm
por Fabios Arts
Antena Biquad con DD como reflector. Paso a paso.
Materiales y equipos
tache 2 4,542 Último mensaje 22 Octubre 2008, 04:39 am
por tache
como retornar un int como un string c++?
Programación C/C++
andrex.125 2 3,584 Último mensaje 16 Mayo 2013, 20:26 pm
por andrex.125
Como retornar una matriz.
Programación C/C++
SirLancelot53 7 3,438 Último mensaje 24 Enero 2014, 04:07 am
por SirLancelot53
¿Como es posible retornar estructuras con la convencion de llamadas cdecl?
Programación C/C++
Usuario887 4 3,725 Último mensaje 7 Marzo 2021, 16:28 pm
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines