# Sobreescribir una linea en C++



## eduardo.eca (Ago 17, 2009)

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:


```
#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;
}
```


----------



## Chico3001 (Ago 18, 2009)

No entendi cual es el problema.... lo puedes explicar un poco mas claramente?


----------



## Dr. Zoidberg (Ago 18, 2009)

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


----------



## eduardo.eca (Ago 18, 2009)

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


----------



## yosoymatiass (Ago 18, 2009)

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 (Ago 18, 2009)

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...


----------



## agustinzzz (Ago 18, 2009)

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;
}

*


----------



## yosoymatiass (Ago 18, 2009)

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 (Ago 18, 2009)

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.


----------

