While de numeros hasta introducir uno más pequeño

Iniciado por sora_ori, 18 Abril 2013, 21:22 PM

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

sora_ori

Buenas,

No consigo hacer este programa en C:

  • Escribir numeros por teclado
  • Acabará cuando el ultimo numero sea más pequeño que el anterior introducido
  • Nos dira la largada de escala, es decir, todos los numeros introducidos excepto el ultimo.

    Ejemplo: 3, 5, 6, 6, 8, 9, 11, 4

    El programa termina cuando introducimos el número 4, y nos responderá 7, que es la cantidad de números que hemos entrado antes del 4.




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

    int main(){
       int num1, num2;
       int i=0;
       
       
       while (num2 <= num1){
             printf("Escribe un numero: ");
             scanf("%d", &num1);
             num2 = num1;
             if (num2 <= num1){
                      i++;
             }
       }
           
           
           printf("Se han contado %d veces", i-1);
           

       
       printf("\n\n");
     system("pause");
     return 0;
    }

pacoperico

#1
Estas usando las variables num1 y num2 antes de darles cualquier valor. Por ejemplo puedes hacer un do..while en lugar del while que tienes.

leosansan

#2
Sin entrar en memoria dinámica para abreviar, esto podría servirte, creo:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>


int main(){
   int num1 ,num2;
   int i=0;
   printf("Escribe un numero: ");
   scanf("%d", &num1);
   for (i=1;;i++){
         printf("Escribe un numero: ");
         scanf("%d", &num2);
         if (num2<num1)
           break;
         else
           num1=num2;
   }
   printf("Se han contado %d veces", i);
   printf("\n\n");
   system("pause");
   return 0;
}

Saluditos!. ....

P.D: Perdón, era con un while:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>


int main(){
    int num1 ,num2;
    int i=0;
    printf("Escribe un numero: ");
    scanf("%d", &num1);
    while (1){
          i++;
          printf("Escribe un numero: ");
          scanf("%d", &num2);
          if (num2<num1)
            break;
          else
            num1=num2;
    }
    printf("Se han contado %d veces", i);
    printf("\n\n");
    system("pause");
    return 0;
}



Saluditos otra vez ....

sora_ori

#3
Perdón por revivir el tema... Estoy haciendo este ejercicio en Python y me da error en el bucle.

SOLUCIONADO!

Código (python) [Seleccionar]

#!/usr/bin/env python

num1 = input('Escribe un numero: ')

i=0

while (True):
i=i+1
num2 = input('Escribe un numero: ')

if (num2<num1):
break
else:
num1=num2

print 'Se han contado',i,'veces'

leosansan

#4
Supongo que estas usando Python 3.X, más que nada por el uso que haces del input.

Pues bien, Lo único que aparentemente te falla es la ausencia de los paréntesis en la instrucción print, que debería ser:

Código (cpp) [Seleccionar]
print ('Se han contado',i,'veces')

Con esa simple corrección el código se ejecuta sin problemas.

Saluditos!!¡...

sora_ori

Ya lo había solucionado, gracias por la ayuda de todos modos :)

Lo había editado el msg con el código correcto.


Saludos