Cita:
Iniciado por sanandresm Disculpenme por mi error.
Creo que aquí todos somos humanos y nos confundimos... no será la primera vez que respondo algo que no se parece en nada a lo que han preguntado y doy fe de que no es intencionado.
Como digo siempre, los foros son espacios frios porque es muy complicado saber las intenciones reales de quien escribe... en este caso daba la impresión de que te estabas enrocando y por eso el motivo de mi respuesta anterior.
Con respecto a tu código un par de cosillas, si me permites la crítica constructiva:
Código C:
Ver originalint main()
{
int i, t;
// ...
t=true;
// ...
}
Si pones
t=true lo lógico es que
t sea de tipo
bool. Que luego
bool no sea más que un
typedef de
int es algo que te debería dar igual. Por un lado poner
bool t indica que esa variable la vas a usar para almacenar booleanos. Otro beneficio adicional de
bool es que es su rango puede adaptarse a entornos concretos, por lo que si en un sistema X resulta más óptimo utilizar
unsigned short para gestionar los bool basta con modificar el alias y el código se aprovechará de la mejora mientras que si usas
int...
Además, sigo insistiendo en que
t no significa absolutamente nada luego no deberías usar ese nombre para nada.
¿Estás seguro de que si le dejas al usuario introducir valores no va a menter valores superiores a
1000? Estas tonterías suelen ser una fuente de problemas. Tienes a tu disposición una serie de constantes que te proporcionan los números límite dentro de un rango, es decir tanto el mayor como el menor... lo bueno de usar esas constantes es que se adaptarán automáticamente al sistema en el que trabajes:
Otro tema a mejorar es el ámbito de las variables. En serio, ve acostumbrándote a declarar las variables cuando las necesitas y no al inicio de la función. Esa es una herencia de versiones antiguas de C. Hacer que una variable tenga un ámbito mínimo evita errores tontos... veamos:
Código C:
Ver originalint main()
{
int i,j;
for( i=0; i<10; i++ )
for( j=0; j<10; i++ )
}
El ejemplo es muy tonto pero sirve para el caso. La idea es imprimir 2 veces una secuencia de 0 a 9... pero el programa se queda atascado en el segundo bucle.
Aquí es fácil encontrar el error... ¿pero qué sucedería si añadimos 20 variables más al inicio del main y un par de decenas de líneas de código entre ambos for? lo mismo ya no resulta tan obvio el problema, verdad? Sin embargo:
Código C:
Ver originalint main()
{
for( int i=0; i<10; i++ )
for( int j=0; j<10; i++ )
}
Ahora el compilador nos indica que hay un error...
i no está declarada en el segundo
for. Partiendo de la base de que C es un lenguaje con unas reglas bastante laxas, cualquier medida que podamos implementar para que el compilador nos ayude a detectar problemas debería ser siempre bien recibida. Y en este caso reducir el ámbito de las variables al mínimo es una buena práctica.
Además, esto te permite repetir el nombre de las variables siempre y cuando su ámbito no sea exactamente el mismo:
Código C:
Ver originalint main()
{
int i = 5;
for( int i=0; i<10; i++ )
}
Un saludo.