Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
FBorges22

C Contagem regresiva em C

Recommended Posts

Saudações

Estou fazendo um programa que realiza contagem regresiva de 10 até 1, eu consegui fazer só que não era bem assim que eu queria, o código é:

 
/* clock example: countdown */
#include <stdio.h>
#include <time.h>

void wait ( int seconds )
{
  clock_t endwait;
  endwait = clock () + seconds * CLK_TCK;
  while (clock() < endwait) {}
}

int main ()
{
  int n;
  printf ("Starting countdown...\n");
  for (n=10; n>0; n--)
  {
    printf ("%d\n",n);
    wait (1);
  }
  printf ("FIRE!!!\n");
  return 0;
}

E quando eu compilo o programa sai assim:

Citação
Starting countdown...

10

9

8

7

6

5

4

3

2

1

FIRE!!!

Eu queria que ele não ficasse dando enter e sim que ele mudase o número 10 na tela para o número 9..8..7.. e assim por diante. Como fazer isso??? Porque esse programa ta ocupando muitas linhas na tela... Alguém pode me ajudar?

Abraços,

FBorges22

Editado por Simon Viegas

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdlib.h>

#include <time.h>

void wait ( int seconds )

{

clock_t endwait;

endwait = clock () + seconds * CLK_TCK;

while (clock() < endwait) {}

}

int main ()

{

int n;

printf ("Starting countdown...\n");

for (n=10; n>0; n--)

{

printf ("%d\n",n);

system ("cls"); // apos o numero limpar a tela a o tempo esta muito curto....

wait (1);

}

printf ("FIRE!!!\n");

//return 0;

system ("pause");

}

acho q assim fica bom...mas o tempo de execuçao de um numero para o outro esta muito rápido......

falou

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Ficou meio estranho dessa maneira.... será que tem como fazer daquele modo que eu falei?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    acho q esse código resolve o problema...

    #include<stdio.h>

    #include<time.h>

    #include<conio.h>

    void wait(int seconds){

    clock_t endwait;

    endwait = clock() + seconds * CLK_TCK;

    while (clock() < endwait);

    }

    int main(){

    int n;

    clrscr();

    printf("Starting countdown... ");

    for (n=10;n>0;n--){

      printf("%2d",n);

      wait(1);

      gotoxy(wherex()-2,wherey());

    }

    printf("FIRE!!!\n");

    getch();

    return 0;

    }

    espero ter ajudado... ^^

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Resolveu!!!

    Obrigado pela a ajuda!! Eu estava realmente precisando construir um programa que tivesse contagem regressiva.

    Só uma ultima dúvida:

    Como fazer para que os números menores que 10 fiquem encostados na tela?? Porque quando chega o 9 por exemplo ele deixa um espaço vazio na esquerda. Tipo teria como representar eles assim??

    11

    10

    09

    08

    07

    ....

    00

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Um código mais simples para resolver esse problema:



    #include "stdio.h"
    #include "conio.h"

    int main(int argc, char* argv[])
    {

    printf("Inicando a contagem regressiva: \n");

    for (int c=10; c>=0; c--){
          printf("%02d\n",c);
          Sleep(1000); //Valor em Milissegundos
    }

    printf("FIRE!!!\n");
    getch();
    return 0;
    }

    Resultado:

    Inicando a contagem regressiva:

    10

    09

    08

    07

    06

    05

    04

    03

    02

    01

    00

    FIRE!!!

    Para não ficar dando quebra de linha:



    #include "stdio.h"
    #include "conio.h"

    int main(int argc, char* argv[])
    {

    printf("Inicando a contagem regressiva: \n");
    Sleep(1000);

    for (int c=10; c>=0; c--){
    system("cls");
    printf("%02d\n",c);
    Sleep(1000);
    }
    system("cls");
    printf("FIRE!!!\n");
    getch();
    return 0;
    }

    :D

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Em 14/10/2005 às 01:42, ugboy disse:

    #include <stdlib.h>

    #include <time.h>

    void wait ( int seconds )

    {

    clock_t endwait;

    endwait = clock () + seconds * CLK_TCK;

    while (clock() < endwait) {}

    }

    int main ()

    {

    int n;

    printf ("Starting countdown...\n");

    for (n=10; n>0; n--)

    {

    printf ("%d\n",n);

    system ("cls"); // apos o numero limpar a tela a o tempo esta muito curto....

    wait (1);

    }

    printf ("FIRE!!!\n");

    //return 0;

    system ("pause");

    }

    acho q assim fica bom...mas o tempo de execuçao de um numero para o outro esta muito rápido......

    falou

    Cara, só lembrar de uma informação básica, o compilador irá ler linha por linha, então é bom mante-la organizada, pois a sua lógica está perfeitamente correta, Resumindo. Corrigi o seu problema (12 anos depois kkkkkkkkkkk) com uma indicação de comentário // . Abração

     

    #include <stdlib.h>
    #include <time.h>
    void wait ( int seconds )
    {
    clock_t endwait;
    endwait = clock () + seconds * CLK_TCK;
    while (clock() < endwait) {}
    }
    int main ()
    {
    int n;
    printf ("Starting countdown...\n");
    for (n=10; n>0; n--)
    {
    printf ("%d\n",n);

    wait (1);    // Inverti a posicao com "system("cls")
    system ("cls"); // apos o numero limpar a tela a o tempo esta muito curto.... 
    }
    printf ("FIRE!!!\n");
    //return 0;
    system ("pause");
    }
     

    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

    Entre para seguir isso  





    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

    ×