Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Katerina Dobreva en 2 Noviembre 2014, 14:58 pm



Título: Bucle controlado por bandera
Publicado por: Katerina Dobreva en 2 Noviembre 2014, 14:58 pm
Tengo que hacer un bucle controlado por bandera que muestre los números introducidos por teclado en orden creciente. No pide un nuevo número si tecleas uno que no esté ordenado. ¿Cómo puedo corregirlo? Gracias de antemano.

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

int main ()
{
int a, k;

printf("\n\nEscribe un numero en orden creciente:\n\n");
k=a;
do
{
scanf("%d", &a);
}
while (a>k);

system ("pause");
return 0;
}


Título: Re: Bucle controlado por bandera
Publicado por: rir3760 en 2 Noviembre 2014, 16:37 pm
El programa que muestras no imprime números, los lee mientras el numero introducido sea mayor que el anterior, el primer error es no darle un valor inicial a la variable "a" con lo cual esta inicia con un valor no definido, mejor conocido como "basura". El segundo es colocar la sentencia que resguarda el valor anterior "k = a;" fuera del bucle.

La solución mas sencilla es leer el primer valor fuera del bucle y los demás dentro de el:
Código
  1. puts("Escribe numeros en orden ascendente");
  2. scanf("%d", &a);
  3.  
  4. do {
  5.   k = a;
  6.   scanf("%d", &a);
  7. }while (a > k);

En cuanto a la impresión de los números el enunciado es vago ya que no indica si simplemente deben imprimirse de inmediato o almacenarse en un array.

Un saludo


Título: Re: Bucle controlado por bandera
Publicado por: Katerina Dobreva en 2 Noviembre 2014, 16:49 pm
Muchísimas gracias. ¡Ya me sale!