Contador hacia atrás

12 enero 2007
jralbendin

PensandoVamos a comenzar una serie de problemas relacionados con la programación. En este primer caso, voy a exponer tres programas escritos en C y tenéis que responder razonadamente a las siguentes preguntas:

  • ¿Sabríais decir cuál será la salida de cada uno de ellos?
  • ¿Sabríais decir cuál tardará MENOS y cual MÁS en ejecutar

Sería estupendo que respondiéseis sin necesidad de ejecutar el código. Pero me conformo con que vuestra contestación sea correcta. Programa #1

#include  int main()
{
int counter=(int)1e8;
while (counter>0){
counter--;
}
printf("Contador: %d",counter);
return 0;
}

Programa #2

#include  int main()
{
float counter=(float)1e8;
while (counter>0){
counter--; }
printf("Contador: %f",counter);
return 0;
}

Programa #3

#include  int main()
{
double counter=(double)1e8;
while (counter>0){
counter--;
}
printf("Contador: %lf",counter);
return 0;
}
  • La salida es la misma en los tres, es una cuenta atras hasta 0, solo que empleando tipos de variables distintas en cada programa, en la primera int, en la segunda float y la tercera double. Tardara menos en ejecutarse el que usa una variable entera, ya que no ha de calcular decimales.

  • Puesto que es el mismo programa en los tres casos, la salida tambien es la misma en los tres, 0. Y con respecto al que tardaria mas y menos en ejecutar: el que tardaria mas es el que tiene tipo de dato double, y el que tardaria menos es el que tiene de tipo de dato int, puesto que no tiene que calcular decimales.

  • En el programa 1,para comenzar no esta bien escrito, ya que en la libreria no esta definida correctamente, ademas de no mostrar ningun resultado ya que le falta un getchar(); despues de imprimir counter. Suponiendo que el ejercicio estuviera bien escrito y compilara, el contador se le asigna el valor 1*10 elevadao a 8 y mientras sea mayor k cero se va descontando uno y muestra el valor de cero que es el que tiene el contador al final.

  • En el programa 2,para comenzar y como pasa en el anterior, no esta bien escrito, ya que en la libreria «»no esta definida correctamente, ademas de no mostrar ningun resultado ya que le falta un getchar(); despues de imprimir counter. Suponiendo que el ejercicio estuviera bien escrito y compilara, Tenemos una variable flotante que hace la funcion de contador a la que se le asigna el valor 1*10 elevadao a 8 y mientras sea mayor k cero se va descontando uno y muestra el valor de cero que es el que tiene el contador al final. Este programa tardará mas que el 1, ya que cuenta las variables con decimales, lo cual hace que la cuenta atras sea mas lenta.

  • En el programa 3,para comenzar y como pasa en el anterior, no esta bien escrito, ya que en la libreria stdio.h no esta definida correctamente, ademas de no mostrar ningun resultado ya que le falta un getchar(); despues de imprimir counter. Suponiendo que el ejercicio estuviera bien escrito y compilara, Tenemos una variable flotante con muchos decimales que hace la funcion de contador a la que se le asigna el valor 1*10 elevadao a 8 y mientras sea mayor k cero se va descontando uno y muestra el valor de cero con decimales, que es el que tiene el contador al final. Este programa tardará mas que el 1 y el 2, ya que cuenta las variables con muchos decimales, lo cual hace que la cuenta atras sea mas lenta todavia.

Los comentarios están cerrados.