Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá @gabriellberaldi, Veja, não é igual ao feito na mão, você não iria exibir o resultado de um número mais de uma vez por exemplo . Pegue esse algoritmo e faça o passo a passo mentalmente ou no papel, verá que tem algo errado ou faltando. Esse processo de descoberta faz parte... com as experiências, você se adaptará mais fácil para desafios semelhantes e também melhor capacidade para as coisas novas! (que não necessariamente tem a ver com programar). Então, em relação a "não consigo pensa em mais nada", não se assuste, é normal pensar assim no início. Posso até garantir que você ter essa disciplina na grade curricular não deve ter sido à toa. Se esforce mais um pouco que as ideias vão surgindo... Se tive uma dificuldade maior sobre como transpor o código, ou sobre limitações da linguagem etc, é só avisar que damos um jeito. No aguardo
  2. Olá Creio que o raciocínio seria mais ou menos assim: 1- Divide pela quantidade de parcelas; 2- Arredonda para baixo em duas casas decimais (ou para cima e subtrai 1 centavo) 3- O valor da primeira parcela será igual ao "total-(valor da parcela x (número de parcelas-1)) Ex.: 1 R$ 1500 / 7x = 214,2857142857143 2 Valor da parcela (6 ultimas) = 214,28 3 Valor da primeira parcela = 1500 - (214,28 x 6) = 1500 - 1285,68 = 214,32 No aguardo
  3. Olá @gabriellberaldi, 1) AJUSTE DO CÓDIGO ORIGINAL Devido a provavelmente um pequeno erro na postagem, as coordenadas [ i ] sumiram! (a página entende como comando para itálico). Para evitar esse erro, apenas substitui o "i" por "ii": #FicaDica Program vet; var A :array [1..10] of integer; ii,j, qntd :integer; BEGIN for ii:=1 to 10 do begin writeln('Digite o valor da posição ',ii,' do vetor'); readln(A[ii]); end; for ii:=1 to 10 do begin qntd:=0; for j:=1 to 10 do begin if (A[ii]=A[j]) then qntd:=qntd+1; end; writeln('O número ', A[ii],' aparece ',qntd,' vezes.'); end; readln; END. Obs.: Ao postar um código, utilize a tag Code, é o botão <>. 2) LÓGICA A SER APLICADA Então, você precisa pensar outras formas para calcular... tente por exemplo idealizar uma forma de como efetuar essa verificação de quantidade repetidas no papel ou de cabeça. Como você faria essa verificação? *** No aguardo
  4. Olá. Lá no item 2 estava me referindo a ordem do DIV e MOD (você inverteu)... o round() na ocasião da citação original seria apenas como requisito do uso do real. Não tem a ver com esse contexto.... Resumidamente seria algo do tipo, 1 horas :=seg_arquivo div Hora_seg; //o div converte de segundos para horas 2 minutos :=seg_arquivo div Min_seg mod Limite_min; //o div converte de segundos para minutos e o mod pega o "que cabe" 3 segundos:=seg_arquivo mod Limite_seg; //seg_arquivo já está em segundos. O mod pega o "que cabe" Compare os códigos e depois analise linha a linha: 1 OK 2.1 você NÃO PODE usar um "parâmetro" da hora (Hora_seg) para minutos! (mesmo que seja mesmo valor) 2.2 a ordem do DIV e MOD está invertida (primeiro DIV, depois o MOD) (mesmo que apresentem mesmo resultado) 2.3 os parâmetros estão invertidos, veja, o MOD e DIV precisam de dois parâmetro cada, veja o exemplo: minutos :=(seg_arquivo div Min_seg) mod Limite_min; Perceba que fica algo como: a Mod b e c Div d Sendo que c=(a Mod b), entende? São duas contas! Só que escritas "juntas". se fosse inverter a ordem, ou seja, fazer o mod antes, depois o div, seria como: minutos :=(seg_arquivo div Limite_min) mod Min_seg; Veja que os parâmetros vem juntos.. No aguardo.
  5. Olá @David Emanoell, 1) SOBRE TIPOS DADOS Pela citação, o professora requer entrada em integer, mas nada impede de usar cálculos com resultados em real... entretanto, creio que da forma que está calculando as horas, minutos e segundos, de qualquer forma o resultado vai ser o mesmo (teria que analisar e fazer testes). Resumido: acho que usando só integer não terá problemas. 2) CALCULO DO VALORES O cálculo dos minutos está ligeiramente errado... pois você está invertendo a ordem das operações, ou seja, possivelmente está o mesmo resultado, mas seria por "sorte". Na minha postagem anterior em tentei detalhar mais ou menos o fluxo... (se tiver bagunçado, copia e cola em outro local para ver mais organizado e analisar melhor) Veja que existe um fluxo de "converter e depois pegar"... se ocorrem o mesmo tipo de operação, devemos seguir os mesmo passos, mesmo que "a ordem dos tratores não alterem o viaduto"... no mínimo é mais elegante, entende? (veja que deixei até um espaçamento horizontal para deixar alinhado as etapas) *** No aguardo.
  6. Olá @eduardo juniorG. Minhas observações/sugestões: 1) LEITURA DE DADOS VIA TECLADO Troque todos os read(); por readln();. Existem diferenças, mas resumidamente: Não use read (sem o ln). 2) USO DO "BLOCO" BEGIN/END Os comandos for, if, else (do if) só se "associam" a um ÚNICO comando, ou seja, caso seja necessário vincular mais de um comando, devem-se utilizar do begin/end. Ex.: for i:= 1 to 5 do writeln('Texto 1'); writeln('Texto 2'); Nesse caso, só o primeiro writeln vai ser "repetido 5 vezes", ao final sai do for e executa o segundo writeln. Caso queria/precise que duas ou mais linhas estejam "dentro" do for, usar-se-ria então um begin/end. for i:= 1 to 5 do begin writeln('Texto 1'); writeln('Texto 2'); end; Como o begin está vinculado ao for, tudo que está dentro dele vai se repetir 5 vezes... 3) FAÇA O PROGRAMA POR PARTES Você não precisa fazer tudo de uma vez. Sugiro que faça esse algoritmo por partes, exemplo: a- Faz apenas a "quantidade de mulheres e homens". Faz os testes e revisa; b- Inclui a média de mulheres. Faz os testes e revisa; c- Inclui a "menor e maior altura". Faz os testes e revisa; *** No aguardo.
  7. Olá. 1) FECHAMENTO DE INSTRUÇÃO No primeiro para de ordenação, você não fechou no lugar certo (só final), daí a segunda ordenação ficou dentro dele também... Cada ordenação deveria ser independente... na item 3 demonstro. 2) USO INVÁLIDO DE COORDENADA Depois do se, você está usando uma coordenada do vetor nome inválida... c é do tipo caractere! Creio que no lugar do c seja o a. 2) USO DE VARIÁVEL NÃO CORRELACIONADA No segundo para você está usando a+1, mas deveria ser d+1. 3) USO MAIS CORRETO DE VARIÁVEIS NOS PARA Você não precisa criar (e usar) uma variável para cada para. Essas variáveis podem ser ditas como auxiliares, servem justamente para controlar o para e depois não servem mais para nada... ou seja, os valores delas podem ser perdidos e daí não impede de poder reutilizá-las... Por convenção (não sei o motivo) o padrão é utilizar o i, se precisar de outras, vem o k, j, l etc. Ex.: para i de 1 ate 9 passo 1 faca para j de i+1 ate 10 passo 1 faca fimpara fimpara para i de 1 ate 9 passo 1 faca para j de i+1 ate 10 passo 1 faca fimpara fimpara 4) CORRELAÇÃO ENTRE VETORES Ao cadastrar os dados de uma "pessoa", teoricamente o nome e a idade estarão respectivamente na mesma posição... como citado por @Catí Kurumim 7 você deveria ordenar os dois de uma vez. Usar apenas um para de ordenação. Ou seja, "nome" ou "idade" é CRITÉRIO de ordenação, ou você ordena por nome ou ordena por idade. Como dito, os dados estão correlacionados, a idade do cadastro que está no nome 6, terá sua idade também na posição 6 do outro vetor, logo, para ordenar, usando um dos dois critérios, os dois vetores. PS: use variáveis mais sugestivas para auxiliar nas trocas de posições, ex.: Aux_I e Aux_C (de "auxiliar para inteiros" e "caractere"). *** No aguardo.
  8. Já experimentou atribuir uma letra para unidade no "gerenciador de discos"? Não uso Windows 10, mas deve ser semelhante ao 8.1. 1-Na tela do iniciar, vá em pesquisa e digite (ou cole) diskmgmt.msc 2-Clique com o botão direito e "Executar como administrador"; 3-Vá na unidade e atribua a letra ou algo do tipo... Tem a dica desse vídeo também: Qualquer coisa avisa...
  9. @Thiago Haw. Basta ler a posição que quer e exibir... A posição 15 está na 14º posição do seu array.. Fibo[posicao-1] PS: se você precisa de 40 posições, você deve usar de 0..39 ou de 1..40 e ajustar o código. Acho a segundo opção mais melhor. No aguardo.
  10. @SuperBond beleza! Se precisar ou quiser fazer em Pascal é só avisar! Abraços
  11. Resumidamente um vetor é uma estrutura de armazenamento (variáveis) e uma fila é uma forma de gerenciamento de armazenamento (comportar-se como uma fila)... Fila é um conceito! Assim como também temos a Pilhas e as Listas... Uma Fila seria um vetor com auto-gerenciamento, nesse sentido aplicando o já citado FIFO... (já a pilha usa o LIFO, por exemplo) Veja, se quero inserir um elemento no Fila, apenas chamo o comando correspondente e envio o que quero, daí a "fila" que vai gerenciar em que lugar vai ficar, ou se tem espaço ou não, etc. Dá mesma forma, se quero o primeiro da fila, apenas chamo o procedimento correspondente e ele me traz (se existir é claro) e automaticamente faz com que o "segundo" passe a ser o primeiro... ou seja, o gerenciamento da fila é feito por ela mesma... Então, seria possível ter um fila usando um vetor (simples), ou usando um vetor dinâmico... o primeiro teria uma quantidade fixada de posições disponível e o segundo seria alocado dinamicamente....
  12. Explica melhor como seria esse requisito.
  13. Olá No próprio cálculo você faz isso... um dígito está em d[3] e ou no d[4]. writeln(d[3],d[4]); obs.: As string se comportam mais ou menos como uma "array[1..255] of char". Cada caractere é como se fosse uma posição do vetor. *** Como funcionaria a comparação? qual diferença tem em ter o zero o não?
  14. Olá. Analisando superficialmente imagino duas formas: 1-Trata o número como string mesmo; 2-Criando uma "estrutura de seleção" (if). Algo como "se número menor que 10, imprimir um zero 0 antes" PS: Dá para explicar mais ou menos como funcionar essa estrutura? N2 := (ord(d[3])-Ord('0'))*10 + ord(d[4])-Ord('0'); Por quê tem que fazer esse -Ord('0') ? No aguardo.
  15. Tem a forma clássica: Para x^y: exp(ln(x)*y) ... Se preferir, cria um Function e utiliza essa fórmula... se precisar de ajuda avisa! SUGESTÃO Dê uma pesquisa no Fórum (parte de cima, lado direito), vale muito a pena, pois acaba vendo também outras coisas novas e interessantes... exemplo de pesquisa: potência. Lembrar de marcar "este fórum" (para pesquisar só em Pascal/Delphi)
  16. Olá. Creio que basicamente faltou ajustar pequenos detalhes.. abaixo fiz algumas sugestões de correção e coloquei alguns comentários para tentar explicar mais ou menos do que se trata. program mostraTempo; uses crt; const MB_KB = 1024; //quantidade de KB em um MB Hora_seg = 3600; //quantidade de segundos em uma hora Min_seg = 60; //quantidade de segundos em um minuto Limite_seg = 60; //o que cabe em segundos (um minuto) Limite_min = 60; //o que cabe em minutos (uma hora) //Limite_hora = 24; //o que cabe em horas (um dia) 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 mod Tama_hora; } //com limite de horas (se for usar dias por exemplo) horas :=round(seg_arquivo) div Hora_seg; //o div converte de segundos para horas minutos :=round(seg_arquivo) div Min_seg mod Limite_min; //o div converte de segundos para minutos e o mod pega o "que cabe" segundos:=round(seg_arquivo) mod Limite_seg; //seg_arquivo já está em segundos. o mod pega o "que cabe" writeln; write ('O arquivo de ',MB:0:2,'MB transmitido a ',KBps:0:2); write ('KBps sera transferido em ',horas,' hora(s) '); writeln(minutos,' minuto(s) e ',segundos,' segundo(s).'); writeln; writeln; //outro exemplo de formatação write ('O arquivo de ',MB:0:2,'MB transmitido a ',KBps:0:2); writeln('KBps sera transferido em: '); write (horas,'h:',minutos,'m',segundos,'s'); readln; end. No aguardo
  17. Se possível, posta o código para analisarmos.
  18. UPDATE Pelo visto, para ler valores em real, basta colocar as variáveis de entrada como real... (e usa round()) Obs.: O padrão é inglês, logo se separa por pontos. Ex.: 150.27 As variáveis ficam com algo do tipo: var MB, KBps :real; //MegaBytes e KiloBytes por segundos repectivamente informado pelo usuário seg_arquivo:real; //segundos para baixar o arquivo utilizando o KBps informado segundos, minutos, horas :word; //tempo para baixar o arquivo formatado por segundo, horas e minutos *** PS1: A conta está sendo feita errada. A variável utilizada no mod está sendo usada indevidamente. Teoricamente seg_mim = "quantidade de segundos em um minuto", e isso não tem correlação com o cálculo lá no mod. Muito menos ainda ser a mesma para as 3 contas... Obs.: mesmo que o valor necessário seja igual, você não pode usar uma variável de outro contexto. (não é porque eu preciso de um 60 em algum lugar, que vou utilizar um variável "qualquer" que tem um valor de 60). *** PS2: acho precisa corrigir corrigir a nomenclatura das taxas, ou seja, "taxa de transferência" é medida em KB/s (o B é maiúsculo, e no caso o K também) e não kb/s. b = bit B = Byte Kbps (ou kbps) é um coisa, KBps é outra. Obs.: Uma sugestão de como pode ficar as variáveis já postei acima. E no caso precisaria corrigir os restante do código. *** PS3: Seria bom ter um forma prática de comparar os resultados... por exemplo: https://www.projetoderedes.com.br/calculadora/calculadora.php Experimente alguns valores, especialmente com resultados com muitas horas... *** No aguardo
  19. Eu respondi utilizando arredondamentos... eu estava até editando a postagem, rs. Em fim, se fosse para valores aproximados, tinha imaginado arredondando os valores... daí ou onde tem seg_arquivo, coloca round(seg_arquivo) ou como você sugeriu utilizando um div e usa longint para seg_arquivo. Mas tem diferença entre eles, pois com o div ele sempre arredonda pra baixa, já com round depende do valor da casa decimal... ou é com 5 ou 6 ele aproxima pra cima.. ex.: 100,48 = 100, e 100,62 = 101. Depois que me atentei a sua "necessidade". Então, acho que é possível... mais tarde vou parar com calma para analisar direito e vê se acho alguma alternativa.. Até mais
  20. Tente arredondar o que tá em real... resumidamente: onde tem seg_arquivo, coloca round(seg_arquivo). Daí tem que vê se a conta bate e como fica essa "perda" nos cálculos... No aguardo.
  21. Olá @David Emanoell, por favor, poste o código em formato de texto. Utilize a TAG CODE (botão <>) para postar o código. No aguardo.
  22. Olá. Quais os valores que você está inserindo de entrada?
  23. Olá @ddp r, por favor, posta novamente o seu código, mas dentro da tag CODE (botão <>). Sem a tag, o site entende que o [ i ] é uma tag para itálico, ai fica bugado... entre outras coisas Ex.: Sem tag CODE: System.out.print(mr[j]," | "); Com tag CODE: System.out.print(mr[i][j]," | "); No aguardo.
  24. Olá @ddp r, qual a sua dúvida? Por favor, poste o código que já fez e onde está com dúvidas.
  25. Olá. Abaixo, "corrigir" algumas coisas e deixei comentários tentando explicar cada passo. algoritmo "contador em ordem decrescente" // Função : ler 10 numeros e apresenta-los em ordem decrescente. // Autor : // Edição/Correção: Simon Viegas [15/12/215] // Data : 14/12/2015 // Turma: LCC 2015.1 var A :vetor [1..10] de inteiro //vetor que armazena os números aux,i,j :inteiro //auxiliar para trocar de posição e variáveis auxiliares para o laço for inicio //ESTRUTURA PARA LER OS DADOS para i de 1 ate 10 faca leia(A[i]) fimpara //ESTRUTURA DE ORDENAÇÂO vide no Google "Métodos de Ordenação". Esse basicamente é o "Bubble Sort" para i de 1 ate 10-1 faca //do primeiro ao penúltimo (penúltimo pois o último não tem com quem comparar mais) para j de i+1 ate 10 faca //do posição atual+1 (posição i será comparado com pos. i+1 pra frente...) até o último se (A[i]>A[j]) entao //se poisção j (sendo comparado) for menor que posição i (posição sendo ordenda) aux<-A[j] //copia valor da posição j A[j]<-A[i] //joga valor da posição i na j A[i]<-aux //jogo valor axu (que contém o antigo j) na posição i fimse fimpara fimpara //ESTRUTURA PARA EXIBIR A MATRIZ para i de 1 ate 10 faca escreval(A[i]) fimpara fimalgoritmo No aguardo.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!