Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/08/2009 #1

Avatar de eduardo.eca

Sobreescribir una linea en C++
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;
}
18/08/2009 #2
Moderador

Avatar de Chico3001

No entendi cual es el problema.... lo puedes explicar un poco mas claramente?
18/08/2009 #3

Avatar de Dr. Zoidberg

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

18/08/2009 #4

Avatar de eduardo.eca

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
Archivos Adjuntos
Tipo de Archivo: cpp sistema_llenado_de_botellas_203.cpp (665 Bytes, 5 visitas)
18/08/2009 #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.
18/08/2009 #6

Avatar de Dr. Zoidberg

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...
18/08/2009 #7

Avatar de agustinzzz

Intenta con la función [b]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;
}
18/08/2009 #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
18/08/2009 #9

Avatar de Dr. Zoidberg

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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.