Jump to content

Usando função em C


matheus

Recommended Posts

Boa noite a todos.

Fiz a resolução da questão porém não consigo fazer com que os segundos e minutos sejam incrementados em um único print, ao inves, fica dando print a cada segundo que passa. Se puderem me ajudar será de enorme ajuda. Desde já, grato.

 

/*14) Faça um programa em C que simule um cronômetro com horas, minutos e segundos. A simulação

deverá mostrar no vídeo o cronômetro no seguinte formato HH: MM: SS. Inicialmente o cronômetro será

zerado ( 00: 00: 00 ), sendo que os segundos começarão a ser incrementados, depois os minutos e

depois as horas. Lembre-se que a cada 60 segundos os minutos deverão ser incrementados, depois os

minutos voltarão a zero. Quando as horas estiverem prestes a chegar em 25, o cronômetro deverá

voltar a zero ( 00: 00: 00 ). */

 

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>//para usar o Sleep()

int main(void){

int sec=0;//segundos

int min=0;//minutos

int hr=0;//horas

int i=0;

do {

printf("Cronômetro\n\n");

printf("\n\t\t\t\t%dh:%dm:%ds\n\n", hr,min,sec);

if(sec==60){

sec=0;

min++;

}

if(min==60){

min=0;

hr++;

}

if(hr==24){

hr=0;

}

sleep(1);//tem a função de pausar a execução por um determinado tempo        //coloquei 1 pois com 1000 não estava passando em 1segundo por alguma razão.

sec++;

}while (i==0);//condição para o loop infinito

return 0;

}
Link to comment
Share on other sites

Boa noite, é o seguinte eu vou novato na questão da linguagem C, embora já tenha mexido com outras linguagens e creio que consegui chegar ao resultado que tu querias, não organizei muito o código porque foi feito um pouco à pressa xD.
Espero que te tenha ajudado 🙂

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void){

    int secD = 0;
    int secE = 0;
    int minD = 0;
    int minE = 0;
    int hrD = 0;
    int hrE = 0;
    int condicao = 0;

    do {

        printf("\n\t\t\t\t%d%dh:%d%dm:%d%ds\n\n", hrE, hrD, minE, minD, secE, secD);

        if(secD == 9){// 9

            if(secE == 5){ // 5

                secE = 0;
                minD++;

            }else{

                secE++;

            }

            secD = -1;

        }

        if(minD == 10){ // 10

            
            if(minE == 5){ // 5

                minE = 0;
                hrD++;

            }else{

                minE++;

            }

            minD = 0;

        }

        if(hrD == 4){ // 4

            if(hrE == 2){

                hrD = 0;
                hrE = 0;

            }

        }else if(hrD == 10){ // 10

            hrD = 0;
            hrE++;

        }
        sleep(1);
        system("clear");
        
        secD++;

    }while (condicao == 0);

    return 0;

}
Link to comment
Share on other sites

  • 1 month later...

Se o código dele funciona, a única coisa que lhe está a faltar é limpar o ecrã para que os printfs dêem a sensação de estarem a acontecer todos no "mesmo sítio" em vez de estarem a aparecer novos printfs por cada segundo ou minuto que passa!

Edited by PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Link to comment
Share on other sites

  • 3 months later...

para fazer o que pretendes, depende da consola que estás a usar.

sabendo isso, pesquisa na net por "escape characters" relevantes à consola que estás usando, porque nessa lista de escape characters deverás ter alguns para posicionamento do cursor que irás usar para escrever por cima do que lá está

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.