matheus Posted September 24, 2019 at 01:50 AM Report Share #616214 Posted September 24, 2019 at 01:50 AM 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 More sharing options...
Zamalor Posted September 24, 2019 at 10:42 PM Report Share #616226 Posted September 24, 2019 at 10:42 PM 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 More sharing options...
PsySc0rpi0n Posted November 12, 2019 at 11:11 PM Report Share #616591 Posted November 12, 2019 at 11:11 PM (edited) 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 November 13, 2019 at 12:09 AM by PsySc0rpi0n Kurt Cobain - Grunge misses you Nissan GT-R - beast killer Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 14, 2020 at 06:36 AM Report Share #617334 Posted February 14, 2020 at 06:36 AM 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 Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now