Bucle controlado por bandera

Iniciado por Katerina Dobreva, 2 Noviembre 2014, 14:58 PM

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

Katerina Dobreva

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;
}

rir3760

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:
puts("Escribe numeros en orden ascendente");
scanf("%d", &a);
   
do {
   k = a;
   scanf("%d", &a);
}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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Katerina Dobreva

Muchísimas gracias. ¡Ya me sale!