Ir ao conteúdo
  • Cadastre-se

C Contagem regresiva em C


FBorges22

Posts recomendados

  • Membro VIP

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

  • Amei 1
Link para o comentário
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

  • Obrigado 1
Link para o comentário
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... ^^

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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

  • Obrigado 1
Link para o comentário
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

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 11 anos depois...
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");
}
 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

@czr.77 @czr.77     para imprimir o número no mesmo lugar você pode usar uma função criada pelo programador normalmente chamada gotoxy() ,  que permite posicionar o cursor na tela do console , na posição xy , coluna e linha , e para colorir as letras ou números ,  tem outra função chamada textcolor() ,   você pode ver alguma coisa sobre isso nesse tópico :

 

então para mudar a cor a cada número , coloque a função textcolor dentro do loop , e a cada ciclo incremente o valor da cor , ou se você quiser cores especificas , então coloque o número das cores que você quer dentro de um vetor , e lá dentro do loop coloque na função o valor que está no vetor  .   mas não podemos te dar um código pronto pois é contra as regras do fórum , então faça seu código e poste aqui para vermos como está e em que podemos ajudar   .

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...