Sobreescribir una linea en C++

#1
espero me puedan ayudar con el siguiente problema:
estoy haciendo un programa en C++ para poder simular un sistema de llenado de botellas, el problema es que el programa debe indicar el porcentaje de llenado de las botellas.El llenado es una simulacion con una estructura repetitiva FOR, pero el problema que tengo es que no puedo sobreescribir en la linea donde veo el primer conteo!

espero me ayuden, gracias de antemano!

a continuación les agrego el codigo:

Código:
#include<stdio.h>
#include<conio.h>
#include<windows.h>

int main()
{
    //Programa automatizado de llenado de botellas
    
    int x,y,Num;   
    char a;
    printf("\n\t\t***LLENADO DE BOTELLAS AUTOMATIZADO***\n");
    
    printf("\nIngrese el Numero de botellas a llenar:");
    scanf("%d",&Num);

    for(y=1;y<=Num;y++)//FOR para llevar el conteo del total de 
    {                  //botellas a llenar      
     x=0;
     for(x=10;x<=100;x+=10)//Ciclo FOR para simular el estado de llenado
      {
       printf("%d",x); //mando a imprimir el valor de la variable x
       Sleep(500);
       }
    }

getche();
return 0;
}
 

Dr. Zoidberg

Well-known-Papá Pitufo
#3
Será que tenes que cambiar esto: printf("%d",x); //mando a imprimir el valor de la variable x
por esto: printf("%d\r",x); //mando a imprimir el valor de la variable x

 
#4
ya cambie esa parte del programa: printf("%d\r",x);.......
y funciona, o sea, vuelve a escribri en la misma linea, pero el problema es que no se borra lo que estaba anteriormente...

Voy a explicar en que consiste lo que quiero hacer: Estoy realizando un conteo hasta 100 con incrementos de 10 en 10(con un bucle FOR), ahora, este conteo se tiene que estar sobreescribiendo sobre una misma linea, es decir, no puedo utilizar un salto de linea para visualizar el conteo que sigue. Con el comando que me dijo el amigo "ezavalla" se puede hacer, pero aun queda en la linea el numero anterior....

Adjunto esta el codigo fuente del programa
 

Adjuntos

#5
Hola eduardo, lo unico que tenes que hacer es pensar bien como usar los espacios en el printf, no seria mas que agregar un espacio despues del %d (momento en que llamas a la variable x);


printf("%d \r",x);


Si luego del bucle de impresion (simulacion de llenado) le agregas un

printf("\n");

te van a quedar los porcentajes uno abajo del otro como una lista, si es que esta opcion te sirve tambien.

Saludos matias.
 

Dr. Zoidberg

Well-known-Papá Pitufo
#6
eduardo.eca dijo:
ya cambie esa parte del programa: printf("%d\r",x);.......
y funciona, o sea, vuelve a escribri en la misma linea, pero el problema es que no se borra lo que estaba anteriormente...
Por que no ponés un ejemplo de como queda o subís una captura de pantalla con la zona de impresión

Lo que dice yosoymatiass es viable, pero si el problema es ese, mejor hacé printf( "%06d\r", x) para cubrir todo el campo y te completa con ceros a la izquierda (y si no te gusta le sacás el cero antes del 6)...pero no entiendo si es eso o que...
 
#7
Intenta con la función gotoxy(int x, int y)[\b], donde x e y representan la posición en pantalla.
Intenta esto:

Código:
#include<stdio.h>
#include<conio.h>
#include<windows.h>

int main()
{
    //Programa automatizado de llenado de botellas
   
    int x,y,Num;   
    char a;
    clrscr();
    printf("\n\t\t***LLENADO DE BOTELLAS AUTOMATIZADO***\n");
   
    printf("\nIngrese el Numero de botellas a llenar:");
    scanf("%d",&Num);

    for(y=1;y<=Num;y++)//FOR para llevar el conteo del total de
    {                  //botellas a llenar     
     x=0;
     for(x=10;x<=100;x+=10)//Ciclo FOR para simular el estado de llenado
      {
       gotoxy (1,5);
       printf("%d",x); //mando a imprimir el valor de la variable x
       Sleep(500);
       }
    }

getche();
return 0;
}
 
#8
al usar el goto tambien hay que dejar el espacio luego del %d, porque el 100 tiene 3 cifras, el ultimo 0 no se sobreescribe con los de 2 cifras.

Por eso dejar el espacio despues del %d
 

Dr. Zoidberg

Well-known-Papá Pitufo
#9
Y por eso es mas simple definir el campo del tamaño correcto que andar poniendo espacios en blanco, por que como no sabés que font usan en consola, te puede hacer falta uno o mas espacios en blanco.
 

Temas similares

Arriba