Ir ao conteúdo
  • Cadastre-se

David Emanoell

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá @Simon Viegas, fiz as correções propostas. program mostraTempo; uses crt; const MB_KB= 1024; Hora_seg= 3600; Limite_min= 60; Limite_seg= 60; var MB, KBps, KB, seg_arquivo, horas, minutos, segundos: integer; begin clrscr; write('Digite o tamanho do arquivo em Megabytes: '); readln(MB); write('Digite o velocidade da taxa de transmissão em KB/s: '); readln(KBps); KB:= MB*MB_KB; seg_arquivo:= KB div KBps; horas:= seg_arquivo div Hora_seg; minutos:= seg_arquivo mod Hora_seg div Limite_min; segundos:= seg_arquivo mod Limite_seg; write('O arquivo de ',MB,'MB transmitido a ',KBps); write('KBps será transferido em ',horas,' horas '); writeln(minutos,' minutos e ',segundos,' segundos.'); readln; end. Como dito anteriormente, não posso usar a função Round, além disso andei analisando o código-fonte daquele site da calculadora de tempo de download que você me forneceu posts atrás e vi que lá também é usado o Round. Creio que vai ficar tudo bem com essa versão final.
  2. Olá @Simon Viegas, perdão pela demora, estava viajando e não tive como responder. Enfim, no meio tempo recebi uma mensagem do professor para considerar os valores de entrada como integer e não posso usar comandos que ele não passou em sala de aula (como o round por exemplo). Logo ao invés da divisão real, usei o div mesmo para obter os segundos que o arquivo levaria para ser transferido. Contudo em alguns exemplos, tenho discrepâncias de 1 segundo, segue abaixo o código: program tempoTransmissao; uses crt; const MB_KB= 1024; Hora_seg= 3600; Min_seg= 60; var MB, KBps, KB, seg_arquivo, horas, minutos, segundos: integer; begin clrscr; write('Digite o tamanho do arquivo em Megabytes: '); readln(MB); write('Digite o valor da taxa de transmissão em KB/s: '); readln(KBps); KB:= MB*MB_KB; seg_arquivo:= KB div KBps; horas:= seg_arquivo div Hora_seg; minutos:= seg_arquivo mod Hora_seg div Min_seg; segundos:= seg_arquivo mod Min_seg; write('O arquivo de ',MB,'MB transmitido a ',KBps); write('KBps será transferido em ',horas,' hora(s), '); writeln(minutos,' minuto(s) e ',segundos,' segundo(s).'); readln; end. Gostaria de saber se você tem alguma sugestão. Obrigado mais uma vez!
  3. Tranquilo, baseado no que o professor nos ensinou ate agora, nao esta sendo cobrado mais do que ja esta ai. Se houver mais algum ajuste que eu possa fazer dentro do que ele nos passou, tranquilo. Infelizmente tem muito repetente e ta atrasando a cadeira pra burro hahah. program mostraTempo; uses crt; const MB_KB= 1024; Hora_seg= 3600; Min_seg= 60; var segundos, horas, minutos: word; MB, KBps, seg_arquivo: real; begin clrscr; write('Digite o tamanho do arquivo em Megabytes: '); readln(MB); write('Digite o valor da taxa de transmissao em KB/s: '); readln(KBps); seg_arquivo:= (MB*MB_KB)/KBps; horas:= round(seg_arquivo) div Hora_seg; minutos:= round(seg_arquivo) mod Hora_seg div Min_seg; segundos:= round(seg_arquivo) mod Min_seg; write('O arquivo de ',MB:0:2,'mb transmitido a ',KBps:0:2); write('kbps sera transferido em ',horas,' horas '); writeln(minutos,' minutos e ',segundos,' segundos.'); readln; end.
  4. Mais um vez obrigado @Simon Viegas, refiz os calculos do tempo e algora estão mais entendiveis e fiz as outras alteracoes sugeridas. Fiz varios exemplos e todos foram bem precisos comparando com o link que voce mandou, exceto os exemplos onde davam mais de um mes, ja que o site nao mostra precisamente, mas fiz os calculos manuais e tambem batiam.
  5. Ficou muito bom Simon! Como ainda sou iniciante e totalmente inexperiente, desconhecia o Round. A discrepancia usando 2 casas apos a virgula é praticamente irrisoria. Em breve, quando for mais experiente espero poder ajudar outros por aqui assim como você. Obrigado por tudo e até a próxima.
  6. Obrigado pela atenção Simon, eu ''contornei" o problema usando outro Div no lugar da divisao real e declarando tudo como integer, só que eu gostaria de trabalhar com uma situação onde o usuário possa digitar no mínimo a taxa de transmissao em real. program mostraTempo; uses crt; const mb_kb= 1024; seg_hora= 3600; seg_min= 60; var mb, kbps, segundos, horas, minutos: longint; seg_arquivo: real; begin clrscr; write('Digite o tamanho do arquivo em Megabytes: '); readln(mb); write('Digite o valor da taxa de transmissao em kb/s: '); readln(kbps); seg_arquivo:= (mb*mb_kb)/kbps; segundos:= seg_arquivo mod seg_min; minutos:= seg_arquivo div seg_min mod seg_min; horas:= seg_arquivo div seg_hora mod seg_min; write('O arquivo de ',mb,'mb transmitido a ',kbps); write('kbps sera transferido em ',horas,' horas '); writeln(minutos,' minutos e ',segundos,' segundos.'); readln; end.
  7. Olá pessoal, estou encucado com uma questao para obter o tamanho de um arquivo em MB e obter a taxa de transmissao kb/s, e informar ao usuário o tempo que levará para que o arquivo seja transferido no formato de X horas, Y minutos e Z segundos. Para obter o tempo que preciso mostrar, tenho que fazer a divisao comum entre o tamanho em KB e a taxa kb/s, e logo em seguida usar div e mod para fazer a amostragem Hora, Minuto, Segundo. Contudo o resultado da divisao normal só pode ser real, e os comandos div e mod só podem ser realizados com operandos inteiros, o que gera erro de incompatibilidade entre os operandos no div e mod, gostaria de saber se há alguma maneira de contornar isso. Obrigado! (Obs: estou usando o Turbo Pascal)

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!