Cita:
Iniciado por Kike87 Hola. Soy nuevo en el foro, y creo se puede hacer una solución un poco "viva" para esta situación:
Tengan en cuenta este código en c++, simple, pero el cual resuelve el problema
include <iostream>
using namespace std;
int main() {
int a,b,c;
int a=b=c=5;
cout<<a<<b<<c<<"\b"<<" ";
return 0;
}
En este caso, lo que se hace es imprimir todos los números de seguido, cuando se llega al último de ellos se retrocede el puntero(la rayita _ que aparece en la pantalla de msdos) y se imprime un espacio, el cual reemplaza al último valor. Eso "impide que se vea al valor" aunque esté almacenado en la memoria.
Podrias aplicar el mismo criterio, cuando llegues al momento de imprimir el último elemento, que será el cero, dile al compilador que imprima \b y luego un espacio en blanco.
Como dije previamente, es un poco "avivado" :)
Bienvenido al foro.
Tres cosillas:
- El código decóralo con la etiqueta del lenguaje que corresponda (mira el desplegable "Highlight" al escribir el mensaje)
- Estaría bien que el código compilase (falta la '#' del include y el 'int' de a=b=c=5 sobra ;) )
- No veo qué tiene que ver este código con la pregunta realizada por RGT
Cita:
Iniciado por RGT Llevo ese código, pensé que al ser 0 no entraría al WHILE, además como puedo imprimirlos si no se puede utilizar arreglos.
Alguien puede ayudarme con estas dos cosas, alguna idea?.
Tu código tiene dos problemas:
- liNumero no está incializado... esto implica que, aunque dificil, se puede dar que el valor inicial de liNumero fuese 0 y tu programa fallaría
- liContadora lo inicializas a 0 y lo incrementas cada vez que entras en el while antes incluso de pedir el valor, luego liContadora SIEMPRE va a valer 1 o más aunque el primer valor introducido sea 0. Prueba a inicializar liContadora a -1
También puedes evitar la incialización de liNumero cambiando el while por un do-while:
Código C++:
Ver originalint main()
{
//Declaración de variables
int liNumero, liContadora = -1;
//Entrada de datos
do
{
liContadora++;
printf("Ingrese un n\243mero: ", 163); } while (liNumero != 0);
//Procesamiento
//Salida de datos
printf("\nCantidad de valores le\241dos: %d\n", liContadora
);
return 0;
}
Aunque también puedes inicializar liContadora a 0 e incrementar su valor únicamente si el usuario introduce un valor diferente a 0.
Código C++:
Ver originalint main()
{
//Declaración de variables
int liNumero, liContadora = 0;
//Entrada de datos
do
{
printf("Ingrese un n\243mero: "); } while (liNumero != 0 && ++liContadora);
//Procesamiento
//Salida de datos
printf("\nCantidad de valores le\241dos: %d\n", liContadora
);
return 0;
}
La comparación del while funciona así:
- Primero se ejecuta la comparación liNumero!=0. Si ésta no se cumple, al ser una operación AND, el programa dejará de comparar y saldrá del while. (FALSE && X ) == FALSE
- Si la condición se cumple, el programa necesita realizar la segunda comparación para saber si debe ejecutar el do-while de nuevo... en este caso hace un preincremento de liContadora. Como el valor inicial de liContadora es 0, el preincremento siempre valdrá 1 o más, que, al ser diferente de 0, hará que el compilador lo trate como si se tratase de un TRUE. Al final el contador se incrementa y el bucle se vuelve a ejecutar.
Un saludo