Ir ao conteúdo
  • Cadastre-se
felipeS2

Barra de Progresso?

Recommended Posts

Não estou conseguindo fazer essa barra de progresso, alguem consegue?

 
Faça uma barra de progresso com caracteres ASC. Use a função Sleep() do 
windows.h para fazer o delay do tempo. A barra deve ser preenchida durante 1 minuto, mais 
ou menos. Permita que o usuário escolha seu tamanho, entre ¼ e ¾ de uma linha. Imprima o 
valor correspondente em % do progresso atual. Estipule seu tamanho máximo para que não 
ultrapasse o fim de uma linha. 
Exemplo de barra: ▓▓▓▓ 20% 
Vai aumentando com o tempo ▓▓▓▓▓▓▓▓▓▓▓▓ 60% 
Dica: veja se é possível alterar os dados da barra sobrescrevendo a mesma linha. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - A barra deve ser preenchida durante 1 minuto, mais  ou menos

Isso quer dizer que o tempo que voce vai passar para Sleep tem que ser relativo ao tamanho da linha

 

2 - Permita que o usuário escolha seu tamanho, entre ¼ e ¾ de uma linha

Uma linha tem 80 colunas(80 células),sendo assim o valor passado  para o tamanho da linha vai poder ser no maximo 100(pois 3/4 de 100 é 75 ainda)

 

3 - Estipule seu tamanho máximo para que não  ultrapasse o fim de uma linha.

voce pode testar se a linha for maior que 100 então voce termina o programa ou poe o valor da linha para 80

 

voce vai precisar usar floats nesse caso porque os calculos feitos pra descobrir os chunks de tempo que voce deve passar pra Sleep,podem nao ser numeros exatos

 

ai no programa tu pode fazer alguma coisa do tipo :

float n = 0;std::cout<<"Digite o tamanho da linha,maximo 100 "<<std::endl;std::cin>>n;//Se for maior que 100 retornaif(n >100) return -1;int n2 = 0;std::cout<<"Digite 1 ou 3 para o 4º do tamanho"<<std::endl;std::cin>>n2;//Tenho que saber qual seria o tempo baseado em 1 minuto //que eu tenho  que esperar relativo ao tamanho da linha//PS:Multiplico por 1000 pois Sleep pega o valor em milisegundosfloat quant = (60/n)*1000 ;int temp = 0;//Vou incrementando pelo valor do chunk de tempo que eu passo// para Sleep,até ser maior que 60000(60 segundos)while((temp = temp + quant) < 60000){       //imprime um caractere da sua barra sem usar quebra de linha         Sleep(quant);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então esse código que você passou não está imprimindo nada, então coloquei o printf depois do sleep() ali em baixo para ver o que imprimia, agora ele está imprimindo varias "barras" mas não está aparecendo a porcentagem no final e está quebrando linhas:

 

 

{

  float n = 0;
 
printf("Digite o tamanho da linha,maximo 100: ");
scanf("%f",&n);
 
int n2 = 0;
printf("Digite 1 ou 3 para o 4o do tamanho: ");
scanf("%f",&n2);
float quant = (60/n)*1000 ;
int temp = 0;
while((temp = temp + quant) < 60000)
{
Sleep(quant);
printf("\xB2");
}
}

 

O que devo fazer?

(Eu uso o DEV C++ para compilar, por isso substitui os cout,etc para umas "variáveis" mais simples, já que ele não compila com esses)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok!

Eu acho que é isso que você Procura:

Programa_C_Barra.png

/*------------------------Keep it simple--------------------------* | eMail:     britivaldo@gmail.com                                | | Linguagem: C ANSI                                             | | Plataforma:Windows 32-bit                                      | | Editor:    Code::Blocks v13.12                                 | | SOFTWARE:                                                      | *----------------------------------------------------------------*/#include  <stdio.h> /* entrada e saída de dados */int main( void ){    unsigned short ntSleepTmp;    unsigned short shPercent = 0;    unsigned short i = 0;    while( shPercent < 100)    {        while(ntSleepTmp += 8)            printf("\r%6d", ntSleepTmp);        shPercent += 10;        for(i = 0; i < shPercent/2;i++ )            printf("%c", 178);        printf("%d%%", shPercent);    }    return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paciência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×