Ver Mensaje Individual
Antiguo 21/12/2005, 01:05   #8
Efirenet
Usuario Activo
 
Avatar de Efirenet
 
Fecha de ingreso: 06/dic/2004
Mensajes: 84
Efirenet llegará a ser famoso muy pronto
Hola,

a ver, vayamos por pasos. La teoría es: [I]Escribir números por pantalla y tras pulsar el número 0, imprimir el valor ASCII de todos los números previamente escritos.[/I] ¿Ok?
Bueno, pues vamos a echarle un vistazo a tu propuesta:

[PHP]
#include <stdio.h>
main(){
int i,numeros[10];

for(i=0;i<10;i++){
numeros[i]=0;
scanf("%i",&numeros[i]);
if(numeros[i]=0){
for(i=0;i=10;i++)
printf(" letra %c\n",numeros[i]);
}
}
}
[/PHP]

Todo se está haciendo muy bien, hasta el If. Veamos por qué:
¿Como funciona un If en C++? Si el resultado de la expresión del If es = 0, entonces no se entra. Si es <> 0, sí. En éste caso, estás haciendo lo siguiente:

[PHP]
if(numeros[i]=0){
[/PHP]

No estás haciendo una comparación de si numeros[i] es 0; estás asignando a numeros[i] el valor cero. Entonces, el resultado de esa expresión es siempre 0 y no se entra en el If.
Lo que realmente querías hacer es esto:

[PHP]
if(numeros[i]==0){
[/PHP]

Observa que con el == hacemos una comparación y con el = se hace una asignación.

Siguiente punto: Como bien dice el compañero kolmo7, en el siguiente For estás usando el mismo contador que en el for de fuera, luego ahí estás haciendo la picha un lío al programa. Además, estás usando como condición de funcionamiento del bucle que i=10, luego ahí se te va a meter en un bucle infinito (i=10 da un valor distinto de cero, luego no habría nunca una condición de parada). Lo peor de todo es que en ese segundo bucle, estás "tocando" el valor de i, con lo que al volver al primero la i tendrá otro valor y no sale lo que realmente tú querías.

Yo que tú usaría otro contador para el segundo For .
Por último, probablemente, querrás salir del programa tras mostrar los códigos ASCII de lo tecleado, así que te sugiero una instrucción break cuando termines el for ese que tienes anidado (una instrucción break te saca del For en el que te encuentras).

En resumen, que yo lo haría de ésta manera:

[PHP]
#include <stdio.h>
main(){
int cont1, cont2;
int numeros[10];
for(cont1=0;cont1<10;cont1++){
numeros[cont1]=0;
scanf("%i", &numeros[cont1]);
if(numeros[cont1]==0){
for(cont2=0;cont2<10;cont2++)
printf(" letra %c\n",numeros[cont2]);
break;
}
}
}
[/PHP]

Nota: He puesto cont1 y cont2 a los contadores de los bucles, ya que son nombres más descriptivos que una simple i.

Un saludo y felices fiestas
Efirenet está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir