• Sábado 14 de Diciembre de 2024, 20:39

Autor Tema:  Mezclar 2 For  (Leído 1710 veces)

tocinonaro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Mezclar 2 For
« en: Martes 22 de Junio de 2010, 02:59 »
0
Hola, tengo un problema.
Un enunciado me pide, muestre un programa en c, que imprima en pantalla los numeros desde un valor inicial, hasta un valor final, ingresados por el usuario, en forma descente como ascendente.

Yo hice el programa en principio de forma ascendente, luego lo hice descendente, pero no puedo Mezclarlos los 2, osea si los quiero mostrar de forma ascendente y descendente solo me muestra la primera forma.

En forma ascendente:

Citar
#include <stdio.h>
#include <conio2.h>
main(){
       int i, b, x;
       denuevo:
       printf("Ingrese un valor inicial ");
       scanf("%d", &i);
       printf("Ingrese un valor final ");
       scanf("%d", &b);
       if(i < 1 || b < 0){
       printf("Ingrese un numero positivo");
       getche();
       clrscr();
       goto denuevo;}
       else{
      for(i=(i+1); i<b; i++){
      printf("Numeros %dn", i);
      }
      getche();
      }
      }

En forma descendente:

Citar
#include <stdio.h>
#include <conio2.h>
main(){
       int i, b, x;
       denuevo:
       printf("Ingrese un valor inicial ");
       scanf("%d", &i);
       printf("Ingrese un valor final ");
       scanf("%d", &b);
       if(i < 1 || b < 0){
       printf("Ingrese un numero positivo");
       getche();
       clrscr();
       goto denuevo;}
       else{
      for(b=(b-1); i<b; b--){
      printf("Numeros %dn", b);
      }
      getche();
      }
      }

Ascendente y Descendente:

Citar
#include <stdio.h>
#include <conio2.h>
main(){
       int i, b, x;
       denuevo:
       printf("Ingrese un valor inicial ");
       scanf("%d", &i);
       printf("Ingrese un valor final ");
       scanf("%d", &b);
       if(i < 1 || b < 0){
       printf("Ingrese un numero positivo");
       getche();
       clrscr();
       goto denuevo;}
       else{
       for(i=(i+1); i<b; i++)
      printf("Numeros %dn", i);
      for(b=(b-1); i<b; b--)
      printf("Numeros %dn", b);
      getche();
      }
      }

Como se ve en esta ultimo, lo que hice fue poner los 2 for, tanto el que cumplia la funcion de ascendente como el de descendente y no funciona el ultimo.
Saludos
Gracias desde ya!

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Mezclar 2 For
« Respuesta #1 en: Miércoles 23 de Junio de 2010, 18:24 »
0
En el primer for estás cambiando el valor de i, aumentandolo hasta que tiene el valor de b. Por lo que en el segundo bucle se inicia con un valor de i que no es el proporcionó el usuario.
La solución es una variable auxiliar:
Código: C
  1. #include <stdio.h>
  2. #include <conio2.h>
  3. main(){
  4. int i, b, x;
  5. denuevo:
  6. printf("Ingrese un valor inicial ");
  7. scanf("%d", &i);
  8. printf("Ingrese un valor final ");
  9. scanf("%d", &b);
  10. if(i < 1 || b < 0){
  11. printf("Ingrese un numero positivo");
  12. getche();
  13. clrscr();
  14. goto denuevo;}
  15. else{
  16. for(x=(i+1); x<b; x++)
  17. printf("Numeros %dn", x);
  18. for(b=(b-1); i<b; b--)
  19. printf("Numeros %dn", b);
  20. getche();
  21. }
  22. }
  23.