Ir ao conteúdo

Posts recomendados

  • Membro VIP
Postado

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
Postado

#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
Postado

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
  • Membro VIP
Postado

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
Postado

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
  • 11 anos depois...
Postado
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
  • 2 anos depois...
Postado

Olá! Suave? Eu estou tentanto fazer um programa em c++ que faça essa contagem só que eu quero que ele mude de cor toda a vez que mudar de número! Podem me ajudar? valeu 

  • Amei 1
Postado

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

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