Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá todos. Pelo que citei no comentário anterior, alguns pontos estão com os mesmo critérios... Baseado nesse código, sugeriria algo assim: Algoritmo "Dizer o maior número" //Função que retorna o maior número dentre os números do vetor funcao maiorNumero(): inteiro var vetorA :vetor[1..5] de inteiro i :inteiro maior :inteiro inicio para i de 1 ate 5 faca escreva("Digite o",i,"º número ") leia(vetorA[i]) fimpara repita se i = 1 ENTÃO //se primeira posição maior:=vetorA[i] //atualiza o maior (será o primeiro) senao se vetorA[i] > maior ENTÃO //se posição atual é maior que o maior maior:=vetorA[i] //atualiza o maior (será o atual) fimSe fimSe i:=i+1 ate i > 5 retorne maior fimfuncao inicio escreva("O Maior Número é --> ",maiorNumero()) fimAlgoritmo Como o laço é fixo, poderia substituir tb o repita por para... e outros detalhes, ex.: Algoritmo "Dizer o maior número" const MAX = 10 //máximo de números do vetor //Função que retorna o maior número dentre os números do vetor funcao maiorNumero(): inteiro var i :inteiro //obs.: esse "i" não é o mesmo lá do programa principal! maior :inteiro //maior númer do vetor inicio maior:=vetorA[1] //inicializa o maior com o primeiro para i de 2 ate MAX faca //do segundo em diante se vetorA[i] > maior ENTÃO //se posição atual é maior que o maior maior:=vetorA[i] //atualiza o maior (será o atual) fimSe fimPara retorne maior fimfuncao var vetorA :vetor[1..MAX] de inteiro //vetor que armazenará os números i :inteiro //variável auxiliar para percorrer o vetor inicio ALEATORIO ON //recurso utilizado para gerar número automaticamente ALEATORIO 1,99 //faixa de número que será sorteado //leitura dos dados (preencher o vetor) para i de 1 ate MAX faca escreva("Digite o ",i:2,"º número ") leia(vetorA[i]) //obs.: se tiver com o ALETORIO ON, será preenchido automaticamente! fimpara ALEATORIO OFF //desabilita o gerador do dados (caso não queeira, remova as linhas ALEATORIO) escreva("O Maior Número é --> ",maiorNumero()) fimAlgoritmo Caso queria também colocar a leitura num procedimento... sugeriria algo assim: Algoritmo "Dizer o maior número" const MAX = 5 //máximo de números do vetor var vetorA :vetor[1..MAX] de inteiro //vetor que armazenará os números //Procedimento para efetuar a leitura dos dados (preencher o vetor) procedimento lerDados() var i :inteiro //auxiliar para percorrer o vetor inicio para i de 1 ate MAX faca escreva("Digite o ",i:2,"º número ") leia(vetorA[i]) fimpara fimProcedimento //Função que retornar o maior número dentre os números do vetor funcao maiorNumero(): inteiro var i :inteiro //auxiliar para percorrer o vetor (osb.: não é o mesmo do procedimento acima) maior :inteiro //maior número do vetor inicio maior:=vetorA[1] //inicializa o maior com o primeiro para i de 2 ate MAX faca //do segundo em diante se vetorA[i] > maior ENTÃO //se posição atual é maior que o maior maior:=vetorA[i] //atualiza o maior (será o atual) fimSe fimPara retorne maior fimfuncao inicio lerDados() escreva("O Maior Número é --> ",maiorNumero()) fimAlgoritmo obs.: No Procedimento eu não consegui fazer funcionar o comando "ALEATORIO"... ai, para testar, tem que ser na mão dura... A ideia seria comparar os códigos e analisar as mudanças... o que acham? As minhas principais argumentações estão meio que lá no primeiro comentário... No aguardo.
  2. Desculpe... não foi a intenção...
  3. Olá. Tem vários pontos que precisam ser revistos... vamos lá: 1) Utilização de parâmetros sem necessidade ou justificativa. Você está passando os valores 1 e 1... logo, não faz sentido usar parâmetros... simplesmente use esses valores lá dentro da função. 2) "Cada um no seu quadrado" Você está lendo os dados do vetor dentro da função que verificará qual o maior... deveria separar uma coisa dá outra...ou seja, a função deveria servi apenas para "retornar o maior". Ou fazia um outro procedimento para ler os dados, ou leria na parte principal do programa... 3) Leitura dos dados Ao executar o programa, apenas fica uma tela piscando.. não tem iteração com o usuário... seria necessário escrever algo na tela solicitado os dados necessários. 4) Instrução desnecessária Dizer que algo é igual a si mesmo não tem alguma função... ou seja, esse se não está servindo para nada. ... Por enquanto é isso.. qualquer coisa tenta corrigir e posta o novo código aqui. No aguardo.
  4. Olá @Diego Matheus. Eu entendi, mas só complementando o texto, seria algo como "acrescido R$2,00 a cada km excedido", correto? Se estiver se referindo a velocidade, seria km/h. Só km se refere a distância. Em relação a conta, basta ver a diferença entre 60, multiplicar por 2 e adicionar a 100... ex.: 65. Logo excedido em 5. 5*2=10. Daí 100+10=110. Poste o seu código aqui, e caso tenha dúvidas, indicar em qual parte. No aguardo.
  5. Olá @vinifla81. No VisuAlg tem o procedimento Timer()... talvez seja útil, mas acho que não seja possível ir calculando o tempo e ao mesmo tempo deixar o código disponível para uso... ou seja, dá para calcular os X minutos, mas não deixaria quebrar essa contagem. Em quanto o tempo vai sendo calculado, o programa fica preso a isso... No Pascal sei que é possível, pois é possível deixar o programa "rodando" e ao mesmo tempo "escutando" o teclado, ou seja, ficaria calculando o tempo de alguma forma, mas ao pressionar uma tecla, responderia ao comando..
  6. Estranho... acho que é devido ao tamanho do programa... Estou fazendo alguns testes aqui.... adicionado 14 minutos depois Reindentei o seu código e achei o erro... algoritmo "Desafio-2" var Nduplica, assegurador, contador, valor, quantidade, nvezes : REAL najuda, nde01, nde05, nde010, nde025, nde050, nde1, nde2, nde5: REAL //procedimento para menor que 5 centavos procedimento menorq5cent() inicio se nvezes < 5 ENTÃO nde01 <- nvezes contageM() nvezes <- 0 assegurador <- 1 fimse fimprocedimento //GENERICO procedimento Gmenorq5cent() inicio se ((nvezes < 5) e (nvezes > 0)) ENTÃO nde01 <- nvezes fimse fimprocedimento //escrevendo a contagem procedimento contageM() inicio se Nduplica < 1 ENTÃO Nduplica <- nduplica + 1 escreval ("Moedas de 1 centavo: ",nde01:1) escreval ("Moedas de 5 centavos: ",nde05) escreval ("Moedas de 10 centavos: ",nde010) escreval ("Moedas de 25 centavos: ",nde025) escreval ("Moedas de 50 centavos: ",nde050) escreval ("Moedas de 1 real: ",nde1) escreval ("Notas de 2 reais: ",nde2) escreval ("Notas de 5 reais: ",nde5) fimse fimprocedimento //escrevendo procedimento entre 5 e 10 procedimento entre5e10() inicio se nvezes = 10 ENTÃO nde010 <- nde010 + 1 contageM() fimse se (((nvezes < 10) e (nvezes > 5)) ou (nvezes = 5)) ENTÃO nvezes <- nvezes - 5 nde05 <- nde05 + 1 fimse se ((nvezes < 5) e (assegurador = 0)) ENTÃO //o assegurador impede de outra função < 5 crie uma contagem nde01 <- nvezes contageM() nvezes <- 0 fimse fimprocedimento //GENERICO procedimento Gentre5e10() inicio se nvezes = 10 ENTÃO nde010 <- nde010 + 1 fimse se (((nvezes < 10) e (nvezes > 5)) ou (nvezes = 5)) ENTÃO nvezes <- nvezes - 5 nde05 <- nde05 + 1 fimse se (nvezes < 5) ENTÃO //o assegurador impede de outra função < 5 crie uma contagem Gmenorq5cent() fimse fimprocedimento // Maior que 10 procedimento maior010() inicio se ((nvezes > 10) e ( nvezes < 25)) ENTÃO // fui atento se nvezes >= 20 ENTÃO nvezes <- nvezes - 20 nde010 <- nde010 + 2 Gmenorq5cent() fimse se ((nvezes < 20) e (nvezes >= 10)) ENTÃO nvezes <- nvezes - 10 nde010 <- nde010 + 1 //escreva ("passei") se ((nvezes > 5) e (nvezes < 10)) ENTÃO Gentre5e10() fimse se nvezes = 5 ENTÃO nde05 <- nde05 + 1 fimse se nvezes < 5 ENTÃO Gmenorq5cent() fimse fimse contageM() //Sempre colocar a contagem no final do escopo fimse fimprocedimento //GENERICO procedimento Gmaior010() inicio se ((nvezes > 10) e ( nvezes < 25)) ENTÃO // fui atento se nvezes >= 20 ENTÃO nvezes <- nvezes - 20 nde010 <- nde010 + 2 Gmenorq5cent() fimse //se nvezes = 20 ENTÃO // nde010 <- nde010 + 2 //nvezes <- 0 // fimse se ((nvezes < 20) e (nvezes > 5)) ENTÃO nvezes <- nvezes -10 nde010 <- nde010 + 1 se nvezes = 5 ENTÃO nde05 <- nde05 + 1 fimse se ((nvezes > 5) e (nvezes < 10)) ENTÃO Gentre5e10() fimse // se ((nvezes > 0) e (nvezes < 5)) ENTÃO //Gmenorq5cent() // fimse fimse fimse fimprocedimento //maior que 25 e menor que 50 procedimento maior025() inicio se ((nvezes >= 25) e ( nvezes <= 50)) ENTÃO se nvezes = 50 ENTÃO nde050 <- nde050 + 1 nvezes <- nvezes - 50 fimse se (nvezes > 40) ENTÃO nde025 <- nde025 + 1 nvezes <- nvezes - 25 Gmaior010() Gentre5e10() Gmenorq5cent() fimse se (nvezes > 30 ) ENTÃO nvezes <- nvezes - 25 nde025 <- nde025 + 1 Gmaior010() Gentre5e10() Gmenorq5cent() fimse se((nvezes > 24) e (nvezes < 31)) ENTÃO nvezes <- nvezes - 25 nde025 <- nde025 + 1 Gentre5e10() Gmenorq5cent() fimse contageM() fimse fimprocedimento //GENERICO procedimento Gmaior025() inicio se ((nvezes >= 25) e ( nvezes <= 50)) ENTÃO se nvezes = 50 ENTÃO nde050 <- nde050 + 1 nvezes <- nvezes - 50 fimse se (nvezes > 40) ENTÃO nde025 <- nde025 + 1 nvezes <- nvezes - 25 Gmaior010() Gentre5e10() Gmenorq5cent() fimse se (nvezes > 30 ) ENTÃO nvezes <- nvezes - 25 nde025 <- nde025 + 1 Gmaior010() Gentre5e10() Gmenorq5cent() fimse se((nvezes > 24) e (nvezes < 31)) ENTÃO nvezes <- nvezes - 25 nde025 <- nde025 + 1 Gentre5e10() Gmenorq5cent() fimse fimse fimprocedimento //Começo do 50 até 1 real procedimento maior050() inicio se ((nvezes > 50) e (nvezes <= 100)) ENTÃO se nvezes = 100 ENTÃO nde1 <- nde1 + 1 nvezes <- 0 fimse se ((nvezes > 75) e (nvezes < 100)) ENTÃO nde025 <- nde025 + 1 nde050 <- nde050 + 1 nvezes <- nvezes - 75 Gmaior010() Gentre5e10() Gmenorq5cent() fimse se nvezes = 75 ENTÃO nde050 <- nde050 + 1 nde025 <- nde025 + 1 nvezes <- 0 fimse se ((nvezes > 50) e (nvezes < 75)) ENTÃO nvezes <- nvezes -50 nde050 <- nde050 + 1 Gmaior010() Gentre5e10() Gmenorq5cent() fimse contageM() fimse fimprocedimento //GENERICO procedimento Gmaior050() inicio se ((nvezes > 50) e (nvezes <= 100)) ENTÃO se nvezes = 100 ENTÃO nde1 <- nde1 + 1 nvezes <- 0 fimse se ((nvezes > 75) e (nvezes < 100)) ENTÃO nde025 <- nde025 + 1 nde050 <- nde050 + 1 nvezes <- nvezes - 75 Gmaior010() Gentre5e10() Gmenorq5cent() fimse se nvezes = 75 ENTÃO nde050 <- nde050 + 1 nde025 <- nde025 + 1 nvezes <- 0 fimse se ((nvezes > 50) e (nvezes < 75)) ENTÃO nvezes <- nvezes -50 nde050 <- nde050 + 1 Gmaior010() Gentre5e10() Gmenorq5cent() fimse fimse fimprocedimento procedimento maior1() inicio se ((nvezes > 100) e (nvezes <= 200)) ENTÃO se nvezes = 200 ENTÃO nde2 <- nde2 + 1 nvezes <- 0 fimse se ((nvezes <= 150) e (nvezes > 0)) ENTÃO nvezes <- nvezes - 100 nde1 <- nde1 + 1 Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes > 150) e (nvezes < 200)) ENTÃO nde1 <- nde1 + 1 nde050 <- nde050 + 1 nvezes <- nvezes - 150 Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes < 150) e (nvezes > 100)) ENTÃO nvezes <- nvezes - 100 nde1 <- nde1 + 1 Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse contageM() fimse fimprocedimento //GENERICO procedimento Gmaior1() inicio se ((nvezes > 100) e (nvezes <= 200)) ENTÃO se nvezes = 200 ENTÃO nde2 <- nde2 + 1 nvezes <- 0 fimse se ((nvezes <= 150) e (nvezes > 0)) ENTÃO nvezes <- nvezes - 100 nde1 <- nde1 + 1 Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes > 150) e (nvezes < 200)) ENTÃO nde1 <- nde1 + 1 nde050 <- nde050 + 1 nvezes <- nvezes - 150 Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes < 150) e (nvezes > 100)) ENTÃO nvezes <- nvezes - 100 nde1 <- nde1 + 1 Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse fimse fimprocedimento // Elaborando procedimento maior que 2 procedimento maior2() inicio se ((nvezes > 200) e (nvezes <=500)) ENTÃO se nvezes = 500 ENTÃO nde5 <- nde5 + 1 nvezes <- 0 fimse se ((nvezes >= 400) e (nvezes < 500))ENTÃO // TEM ALGO ERRADO nvezes <- nvezes -400 nde2 <- nde2 + 2 maior050() Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes > 300) e (nvezes <400)) ENTÃO nvezes <- nvezes -300 nde2 <- nde2 + 1 nde1 <- nde1 + 1 maior050() Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes > 200) e (nvezes <=300)) ENTÃO nvezes <- nvezes -200 nde2 <- nde2 + 1 maior050() Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse contageM() fimse fimprocedimento {fimprocedimento} //Comando sem correspondência ou fora do lugar [Simon.Viegas] // GENERICO procedimento Gmaior2() inicio se ((nvezes > 200) e (nvezes <=500)) ENTÃO se nvezes = 500 ENTÃO nde5 <- nde5 + 1 nvezes <- 0 fimse se ((nvezes >= 400) e (nvezes < 500))ENTÃO // TEM ALGO ERRADO nvezes <- nvezes -400 nde2 <- nde2 + 2 maior050() Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes > 300) e (nvezes <400)) ENTÃO nvezes <- nvezes -300 nde2 <- nde2 + 1 nde1 <- nde1 + 1 maior050() Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse se ((nvezes > 200) e (nvezes <=300)) ENTÃO nvezes <- nvezes -200 nde2 <- nde2 + 1 maior050() Gmaior025() Gmaior010() Gentre5e10() Gmenorq5cent() fimse contageM() fimse fimprocedimento //faltou fechar o procedimento (provavelmente aquele comando lá em cima) [Simon.Viegas] //percebendo valores maiores que 5 inicio contador <- 0 quantidade <- 0 escreva("valor: " ) leia(valor) nvezes <- valor/0.01 // número de vezes que o 0.01 será usado //Percebendo valores menores que 5 centavos menorq5cent() //Percebendo valores menores que 10 centavos entre5e10() maior010() maior025() maior050() maior1() maior2() fimalgoritmo No aguardo.
  7. Olá. Como o código já está "pronto", tentei dar uma reorganizada fazendo correções e ao mesmo tempo passando algumas sugestões: Alguns tópicos aplicados: 1) Você está utilizando algumas variáveis como real, mas sem necessidade. São inteiros!; 2) No lugar de mes2, sugiro usar mesExt, ou algo do tipo. 3) Creio que não ficou legal usar nascimento para o ano de nascimento. Já que o dia e o mês também fazem parte da data de nascimento. Sugiro usar dia, mes e ano para a data de nascimento, e anoAtul para o ano atual; 4) Como citado por @devair1010: 5) Evite começar as palavras com maiúscula no meio da frase, ou seja, seguindo a forma "natural" de escrever. 6) No VisuAlg, não precisa colocar espaços antes das variáveis numéricas, é inserido automaticamente. Se inserir, fica um espaçamento duplo (acho isso um defeito do programa, mas fazer o quê?); 7) Esse para não tem funcionalidade no seu código, ou seja, está repetindo a mesma verificação 12 vezes. Simplesmente remova-o. ... Ficaria algo assim: algoritmo "Nome do meu algoritmo" var nome, mesExt :caractere dia, mes, ano :inteiro anoAtual :inteiro idade :inteiro Inicio escreva("Nome: ") leia(nome) escreval("Dia do Nascimento: , ex:24") leia (dia) Escreval ("Mês de Nascimento: , ex:02") leia(mes) escreval ("Ano De Nascimento: , ex:1980") leia(ano) limpatela escreval ("Ano Atual: ") leia (anoAtual) idade <-(anoAtual-ano) se mes = 1 ENTÃO mesExt <- "Janeiro" senao se mes = 2 ENTÃO mesExt <- "fevereiro" senao se mes = 3 ENTÃO mesExt <- "março" senao se mes = 4 ENTÃO mesExt <- "abril" senao se mes = 5 ENTÃO mesExt <- "maio" senao se mes = 6 ENTÃO mesExt <- "junho" senao se mes = 7 ENTÃO mesExt <- "julho senao se mes = 8 ENTÃO mesExt <- "agosto" senao se mes = 9 ENTÃO mesExt <- "setembro" senao se mes = 10 ENTÃO mesExt <- "outubro" senao se mes = 11 ENTÃO mesExt <- "novembro" senao se mes = 12 ENTÃO mesExt <- "dezembro" fimse fimse fimse fimse fimse fimse fimse fimse fimse fimse fimse fimse escreval(nome," tem",idade," anos de idade") //fiz pequenos ajustes e deixei aqui em baixo [Simon.Viegas] escreval(nome," nasceu em",dia," de ",mesExt," de",ano) //fiz pequenos ajustes [Simon.Viegas] fimalgoritmo Como está utilizando uma mesma variáveis numa sequência de se/senão (e é uma variável do tipo inteiro), é possível utilizar o Escolha. Ex.: escolha mes caso 1 mesExt <- "janeiro" caso 2 mesExt <- "fevereiro" caso 3 mesExt <- "março" caso 4 mesExt <- "abril" caso 5 mesExt <- "maio" caso 6 mesExt <- "junho" caso 7 mesExt <- "julho caso 8 mesExt <- "agosto" caso 9 mesExt <- "setembro" caso 10 mesExt <- "outubro" caso 11 mesExt <- "novembro" caso 12 mesExt <- "dezembro" fimescolha Poderia também usar um vetor de 1 a 12, contendo respectivamente o mês... e usaria a variável mes como coordenada. Algo como: mesExt <- vetMes[mes]. Dessa forma não precisaria mais da estrutura de seleção, ou seja os se ou escolha. Por ai vai. No aguardo.
  8. Olá. Desculpe pela demora... Então, faltou o readln(pesq);... e mais alguns detalhes. Se o código está pronto, tente copiar com mais calma... Como a postagem já tem alguns dias, fiz alguns comentários e inserir alguns conceitos novos. Espero que ajude. {Programa para efetuar uma pesquisa binária de nomes em uma referida matriz} Program Pesquisa_binaria; const MAX=3; //número máximo de cadastros var NOMES :array[1..MAX] of string; //recomendo utilizar a nomenclatura de vetores no plural I,J :byte; comeco, final, meio :byte; pesq, resp, AUX :string; acha :boolean; BEGIN TextColor(LightGreen); //LightGreen = 10, que corresponde a cor Verde Claro (original do PascalZim) writeln('Pesquisa binária de nomes'); writeln; for I:=1 to MAX do begin write ('Digite o ',I:2,'o nome: '); // readln(NOMES[I]); end; //faltou esse end; [Simon.Viegas] {Ordenação} for I:=1 to MAX-1 do for J:=I+1 to MAX do if (NOMES[I]>NOMES[J]) then begin AUX :=NOMES[I]; NOMES[I]:=NOMES[J]; NOMES[J]:=aux; end; {Trecho de pesquisa} {resp:= 'SIM';} //O Pascal é "Sensitive Case". De acordo com o While, tem que ser "Sim" ou "Sim" ou usa o UpCase, como demonstrado abaixo [Simon.Viegas] resp:='Sim'; While (UpCase(resp)='SIM') do //inserir um UpCase(), que retorna os caracteres em maiúculo... (obs.: com ele tanto faz como escrever, ele vai comparar em maiúsculo) [Simon.Viegas] begin writeln; write('Entre com o NOME a ser pesquisado: '); //pequeno ajuste na formatação [Simon.Viegas] TextColor(White); //Yellow = 15, que corresponde a cor Branco readln(pesq); //faltou ler o pesq [Simon.Viegas] TextColor(LightGreen); //LightGreen = 10, que corresponde a cor Verde Claro (original do PascalZim) comeco:=1; final:=MAX; acha:=false; while (comeco<=final) and (acha=false) do begin meio:=(comeco+final) div 2; if (UpCase(pesq)=UpCase(NOMES[meio])) then acha:=true else if (pesq < UpCase(NOMES[meio])) then final:= meio-1 else comeco:=meio+1; end; writeln; writeln; TextColor(Yellow); //Yellow = 14, que corresponde a cor Amarelo if (acha=true) then //tinha um ; aqui indevidamente [Simon.Viegas] writeln(pesq,' foi localizado na posição',meio:2) //pequeno ajuste na formatação [Simon.Viegas] else writeln (pesq,' não foi localizado'); //pequeno ajuste na formatação [Simon.Viegas] writeln; writeln; TextColor(10); //LightGreen = 10, que corresponde a cor Verde Claro (original do PascalZim) write('Deseja continuar? Sim/Não:'); readln(resp); end; //faltou esse end; [Simon.Viegas] ReadKey; End. Teste: Qualquer coisa é só postar.
  9. Caro usuário, Seja bem-vindo ao Fórum do Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  10. Olá @Bruno Galote. Você precisa copiar o texto do código com mais atenção, rs... Vamos lá: Para corrigir faça o seguinte... compile o código e veja qual erro dado. Nem sempre o erro apresentado é exatamente o que precisa, mas vai acostumando.. as correções estão baixo: 1-Faltou o end; do primeiro for (como não fechou o for, ele acusou que está reutilizando o I) 2-Na linha 46, você colocou um ; depois do then 3-A depender do seu compilador, será necessário declarar a unit CRT (ou WinCRT) para reconhecer o ReadKey. ex.: {Programa para efetuar uma pesquisa binária de nomes em uma referida matriz} Program Pesquisa_binaria; uses CRT; No aguardo.
  11. Olá @iS2Hardware. Eu não entendi muito bem a sua explicação, ou tem algo faltando ai... veja: Em "A vale 1". A vale 1 o quê? Se A=1, logo A=1... não pode valer ou mesmo tempo R$ 0,77. O mesmo vale para B e C. Pois cai no conceito do "Princípio da não contradição", que é relacionado a "Lógica matemática". Ou seja, A não pode ser igual a 1, e ao mesmo tempo não ser igual a 1. Talvez deve existir outra informação... por exemplo, "A vale 1 dólar em 1994"... Por favor, tente explicar melhor do que se trata. No aguardo.
  12. Você só postou uma imagem... qual a sua dificuldade ou dúvida?
  13. Olá. Creio que deveria se atentar no uso das variáveis... a variável Emprestimo está sendo usada como "valor do empréstimo" e também usada como "valor da parcelas". Acho que não deveria reutilizar a mesma variável, já que são objetos distintos. Recomendaria usar outra separada, ex.: valorParcela:real. Outra coisa... O valor dessa parcela está com um pequeno erro, pois está dividindo sempre por 10, mas deveria dividir pelo número de parcelas!, ou seja, se o cara escolher dividir em menos de 10 vezes, você terá um belo de um prejuízo. (e se escolher mais, estará tendo ganhos indevidos também, rs) ADENDO: Recomendam-se tentar deixar a nomenclaturas das variáveis o mais sugestível possível. Ex.: var valorEmprestimo, valorParcela :real qtdParcelas :inteiro No aguardo.
  14. A ideia é que você desenvolva o algoritmo... e caso tenha dúvidas, posta elas aqui e ai tentarmos te ajudar. No aguardo.
  15. Ai vai depender de como seria no meio... mas vamos lá... O GotoXY() funciona assim: ela posiciona o "cursor onde vai sair os caracteres" de acordo com a "coluna" e "linha" informadas... estes correspondentes a matriz da tela, ou seja, com a "resolução da tela" do seu Pascal. GogoXY(coluna,linha); O tamanho pode variar de compilador para compilador, por exemplo sendo 80x25, ou seja, 80 colunas por 25 linhas. Já vi também de 80x40... É necessário verificar qual a sua resolução... Para centralizar precisa de 2 pontos: - Para linha: aqui é mais simples... basta usar a metade (ou aproximadamente) do máximo. - Para coluna: você precisa correlacionar o tamanho da frase (pode usar o Length()) com o tamanho máximo da coluna. Fazer que metade da frase fica do meio pra esquerda, e a outra metade na direita. Ex.: obs.1: a depender do compilador, o GotoXY() já estará incorporado, ou seja, não precisando usar a uses para carregar a CRT. obs.2: a depender do compilador, usam-se WinCRT, em vez de CRT. obs.3: a depender do compilador, pode ser que o GotoXY() esteja, sei lá, em outra biblioteca. Se você precisa só que fique no meio em relação a linha ou só em relação a coluna, basta usar só um dos princípios para centralizar o que deseja, ou seja, ou a coluna ou a linha. No aguardo.
  16. Olá. Qual a sua dúvida?
  17. Caro usuário, Seja bem-vindo ao Fórum do Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  18. Olá @ET Bilu. Testei seu código aqui no Portugol Studio, e meus testes aqui não deram certo... Ex.: 10 5 9 8 7 6 4 8 9 1 3 9.0 9.0 3.0 Programa finalizado. Tempo de execução: 6896 milissegundos Teria que dar 9, 9 e 8. Outro ponto é que você precisa interagir com o usuário, ou seja, ao executar o programa apenas fica um cursor piscando... tive que "adivinhar" o que era para fazer. Use "escreva()" para ir orientado o que o usuário deve fazer. No aguardo.
  19. Olá @ET Bilu. Qual programa ou site usa para compilar e executar esse código?
  20. Olá @mateus costa r. Minhas sugestões: 1) CÁLCULO DE RAÍZES Tomando como base seu código: Obs.: os itens 1.1 e 1.2 eu já deixarei exemplos de como podem ficar (meio que "já dando a resposta")... 1.1) Recálculos desnecessários Em vez de usar "B*B - 4*A*C" no enquanto, use uma variável para armazenar o resultado. Do jeito que está, a cada loop do enquanto a conta estará sendo refeita... ou seja, um trabalho extra pro processador. Ficaria algo assim: j <- 0 i <- 0 Delta<- b*b-4*a*c enquanto (j*i <= Delta) faca escreva (j, " ") j <- j+0.1 i <- i+0.1 1.2) Duplicação de variável Percebem-se que as variáveis j e i serão sempre idênticas, ou seja, basta usar apenas uma delas... ficando algo como: j <- 0 Delta <- b*b-4*a*c enquanto (j*j <= Delta) faca escreva (j," ") j <- j+0.1 Outra coisa... a própria definição sugere que deveria ser uma variável só: 1.3) Quanto a eficácia da operação Nesse seu código você está utilizando uma técnica com laço de repetição para calcular a raiz quadrada de um número... mas a conta não está batendo, veja: Ao usar a=1, b=12 e c=-13, Delta daria 196, correto? Quanto dá a raiz de Delta, ou seja, a raiz de 196? Pela calculadora deu 14, mas no seu código está dando 14.1. Precisa corrigir isso. 2) ARREDONDAMENTO DE RESULTADO Então, na verdade não necessariamente funcionou, apenas meio que fez dar uma reposta equivalente ao que você desejava. São coisas diferentes. Veja, o resultado do cálculo via Bhaskara inclui a parte fracionada também (quando ocorre)! O número teria que ser exato (ou com um arredondamento menor). O problema está lá no item 1.3), ou seja, está fazendo o cálculo da raiz de Delta errado, daí consequentemente as raízes da equação também vão dar erradas. Por sinal, em vez de ":1:0", sugeriria algo como "1:3" ou mais, ou simplesmente não arredondar. Não precisa. RESUMINDO: ao usar 1, 12 e -13, o programa deveria retornar x1=1 e x2=-13, sem precisar arredondar (o resultado já é redondo). 3) ETAPAS PARA CALCULAR VIA BHASKARA Pelo link que você postou, são 3 etapas: Etapa 1: Calcular discriminante Etapa 2: Substitua discriminante e coeficientes na fórmula de Bhaskara Etapa 3: Calcule as raízes da equação Está faltando a primeira! Ou seja, é necessário "discriminar" a categoria da equação do segundo grau de acordo com o valor de Delta: se é maior que 0, igual a 0 ou maior que 0. Cada categoria tem um tipo de resposta diferente. RESUMINDO: a modo de calcular muda de acordo com o valor de Delta. *** No aguardo.
  21. Olá @mateus costa r. 1) VARIÁVEIS J E I Eu já tinha entendido... veja: Eu fiz uma pergunta retórica! A resposta coloquei entre parênteses. E complemento: "-b" = -B "mais ou menos a raiz de Delta" = +j e -j respectivamente "tudo isso sobre 2a" = /(2*A) 2) DENOMINAÇÃO No código você fala em "resposta fatorial do delta", mas j não é o fatorial de Delta, mas sim a raiz de Delta. Fatorial é outra coisa, vide aqui. 3) OUTRAS VERIFICAÇÕES Em relação a outras verificações, eu precisaria do código para poder fazer alguns testes... mas por exemplo, lá na linha 43 o resultado está dando errado porque você está arrendando sem nenhuma casa decimal. "-B+J" dá 2,1, e não 2. *** Por ai vai... Por favor, poste o texto do código para que possamos analisar melhor. No aguardo.
  22. Já expliquei.. Quem é j nessa fórmula? (é a raiz de Delta) x'=(-B+j)/(2*A) x''=(-B-j)/(2*A) Ou seja, "-b, mais ou menos a raiz de Delta, tudo isso sobre 2a" No aguardo.
  23. @ET Bilu. Isso eu tinha certeza absoluta! só estava sendo retórico... Então, qual é o enunciado do problema?
  24. @ET Bilu, qual é exatamente o enunciado da questão? poste aqui, talvez facilite! Alguns adendos: Nesse caso de não usar vetor, acho que não seria uma boa ideia usar essas X variáveis, pois seria inviável verificar elas (apesar de possível)... já que teria que ter uma infinidade de se para checá-las... Vejam, ao utilizar vetores, seria possível usar uma variável para acessar cada posição, o que possibilitaria usar laços de repetições, correto?; já com variáveis simples, cada variável deverá ser acessada especificamente, o que aumentaria exponencialmente a quantidade de se. Uma técnica mais simples seria usar apenas uma variável, e a medida que iria lendo, iria atualizando os 3 maiores. Ai, a questão seria imaginar, e implementar, algo que funcione sem usar vetores (que é a forma mais simples) Na verdade deveria ser decrescente, para os maiores ficarem no início. Na crescente, teria que pegar os 3 últimos. Como essa regra "somente utilizando a estrutura enquanto" está muito limitadora (já que não poderia usar se, não poderia usar leia(), não poderia usar escreva() etc), imagino que esteja apenas limitando os laços de repetições, se for isso adianto: qualquer estrutura de repetição (repita, enquanto e para) pode ser substituída por outra delas, por exemplo: um laço que está com repita, pode ser "transformado" para enquanto ou para sem muitas dificuldade. O mesmo para outras respectivamente. RESUMIDAMENTE: tecnicamente falando, só precisamos de um tipo laço, existem 3 (ou mais) apenas para facilitar e organizar o código.... cada uma é mais pratica do que a outra a depender do contexto ("só isso"). Logo, poderá escreve o Bubble Sort utilizando enquanto (geralmente utilizam-se para). O que satisfaria a "regra". Mas como adiantei lá em cima, é preciso ter o enunciado para entender suas limitações. Se for apenas "não poder usar para ou repita, simplesmente use um enquanto para preencher o vetor, e outros enquanto para ordenar OU se não puder usar vetor, analisar o que já foi dito sobre isso. 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!