Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá furlantx500 tx. Alguns pontos que podem ser revisados: PROGRAMA medmulh;var nomedoaluno :string; sexo,continuar :char; idade,cont,soma:integer; media :real;BEGINcont:=0;soma:=0;repeat repeat writeln('Digite seu nome'); //O NOME DO ALUNO NÃO PRECISA SER RELIDO! APENAS A IDADE readln(nomedoaluno); writeln('Digite a idade. Apenas idade maior igual a 15'); readln(idade); until idade>=15; writeln('Digite seu sexo M ou F'); //O SEXO TAMBÉM DEVE SER VERIFICADO, ASSIM COMO A IDADE!!! readln(sexo); sexo:= upcase(sexo); if sexo='F' then begin cont:=cont+1; soma:=soma+idade; end else //NÃO PRECISA DESSE ELSE, SIMPLESMENTE APAGUE! begin cont:=cont+0; //0 é o elementro neutro da adição, logo, não tem nenhum efeito soma:=soma+0; end; writeln(nomedoaluno,' e do sexo ',sexo,' e tem ',idade,' anos'); //isso não é pedido* writeln('Deseja continuar? S ou N'); readln(continuar); continuar:= upcase(continuar);until continuar=('N');writeln('O numero de mulheres entrevistadas e ',cont); //isso não é pedido*writeln('A soma das idades e ',soma); //isso não é pedido*media:= soma/cont; //cuidado, se cont for igual a 0, vai da problema!Writeln('A media de idade das mulheres entrevistadas e ',media:10:2); //isso não é pedido*readln;END. A requisição do enunciado é: E isso não foi respondido... * talvez não tenha problema inserir detalhes a mais (que já estão no programa), mas devem-se no mínimo fazer o que se pediu, ou seja, o "foco" é fazer o que se pede, e a depender da proposta, poderá fazer algo a mais... (eu por exemplo quando estava na faculdade, quando não sabia exatamente o que poderia fazer a mais, eu entregada duas versões diferentes para não ter desculpa, rs) Por ai vai. No aguardo.
  2. Olá michael00110, favor descrever melhor a sua dúvida. No aguardo.
  3. Olá. Só complementando. Então, depende da proposta para o «Eu estava querendo fazer um programa simples para calcular a raiz quadrada de um número com precisão de duas casas decimais, procurando pela internet achei o seguinte programa:» Se for seguir o que está sendo pedido, o segundo código TALVEZ NÃO SEJA VÁLIDO, pois ele não está "calculando com precisão de duas casas decimais", mas sim "exibindo um resultado com precisão de duas casas decimais". Na minha opinião são duas coisas diferentes... um calcula dessa forma, o outro calcula um valor aproximado (se não for exato, SEMPRE será uma valor irracional, logo terá que ter aproximação), e após é feito um "arredondamento" pela formatação ":x:y" lá na hora de exibir... (a precisão do cálculo é muito maior, apenas é aproximado depois). Em fim, na minha opinião, a primeira forma é mais elegante e faz mais sentido, pois no segundo está basicamente "utilizando uma função pronta e pronto". Um é mais didático, outro mais simples. Obs.: Se for apenas para "saber a resposta", usa a calculado do Windows, por exemplo... *** Como citado New Nerd, dá para implementar outro detalhes interessantes para "verificação dos valores de entrada" como o "caracteres e valores inválidos". Você já implementou para os valores negativos, mas dá também para "letras" e outros caracteres (precisa de comando especiais... não tão conhecidos para iniciantes)... por ai vai. Para o primeiro código, é fácil verificar que o código não está muito otimizado, já que ele apenas está meio que comparando valores de "0.01" em "0.01"... e isso de forma crescente!!, ou seja, para calcular a raiz de 100.000, serão feitos mais de 300.000 cálculos... dá para reduzir e muito essa conta!!!! ou pensar ou "pegar" outra forma de cálculo e implementar. No aguardo. Abraços
  4. Olá. Não precisa, basta colocar um só antes do "END." (ou logo após a estrutura do último if). Haja vista que somente uma write deverá ser executado.. (e independente de qual for, precisará para uma vez). PS: De certo modo, todos os if poderiam ficar associados em uma estrutura só, já que são "respostas mutuamente exclusivas"¹. 1 se for uma resposta, não pode ser outra. (ex.: se é sexo masculino, não pode ser feminino. Se for par, não pode ser ímpar etc). if (n1>n2) and (n1>n3) then if (n2>n3) then write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3) else write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2)else if(n2>n1)and(n2>n3) then if(n1>n3) then write('Os numeros em ordem crescente são ', '',n2,'', n1,'', n3) else write('Os numeros em ordem crescente são ', '',n2,'', n3,'', n1) else if(n3>n1)and(n3>n2) then if(n1>n2) then write('Os numeros em ordem crescente são ', '',n3,'', n1,'', n2) else write('Os numeros em ordem crescente são ', '',n3,'', n2,'', n1); Obs.: Não necessariamente já é uma resposta final, por exemplo se tiverem 2 ou mais valores iguais, com certeza já não ia funcionar. Obs.2: Não estou com compilador, mas acredito que a estrutura esteja correta...
  5. Olá. Sudder Natsu (ou qualquer outro)... Quer tentar corrigir o programa e postar aqui para ir tentando corrigir/melhorando? Então, já aproveitando o que já foi postado... Vou tentar complementar a sua resposta. Pode ser que você já conheça ou não algumas coisas, mas de qualquer sorte alimenta a postagem Em: Existe uma outra boa solução para essa questão da "distinção entre maiúsculo e minúsculo"¹, que seria usar um "UpCase()"². Ex.: readln(RESP);RESP:=UpCase(RESP); Daí nos ifs da vida, bastaria testar apenas com o maiúsculo. if (RESP='S') then begin end; ou poderia também colocar no ifs diretamente, ex: if (UpCase(RESP)='S') then begin end; Para esse contexto eu prefiro colocar logo após a leitura, pois se a variável for utilizada em outro momento (sem ser alterada, é claro), não precisaria usar um UpCase() novamente onde for testar... 1 alguns chamam de "sensível ao caso", ou seja, que diferente um do outro. No Pascal, por exemplo as variáveis, NÃO SÃO sensíveis ao caso, daí tanto faz usar "RESP" como Resp ou "REsp" etc que o "programa" vai entender. Em outras linguagem como Java, isso não ocorre. 2 Function que pertence à unit CRT ou WinCRT (em alguns casos precisa carregar a biblioteca lá no início do programa). Tem a finalidade de retornar o valor correspondente em maiúsculo do caractere. *** Em: De um certo modo, ao "estipular uma formatação de dados" para serem exibidos, poderiam-se utilizar apenas um "0" na primeira parte, ex.: writeln('Sua conta final do orçamento é: ',TOTAL:0:2,' reais'); Ou seja, ao utilizar um "variavel_do_tipo_real:X:Y", esse X="casas reservadas a esquerda da vírgula (ou mais ou menos isso)" e Y="números de casas decimais". Ao utilizar um valor para o "X", o texto acabará sendo deslocado para direita, ficando um espaço entre o texto a esquerda e a variável.... uma boa utilização de um valor (relativamente alto) seria para "alinhar o texto a direita, ou seja, se vários valores forem impressos a partir da mesmo posição, a parte da direita (no caso a decimal) ficarão (tendem a ficar) alinhados... *** Por ai vai.... No aguardo.
  6. Ok. Obrigado pelo feedback. Qualquer coisa é só postar... Abraços
  7. Olá. Boa tarde. Vamos lá... primeiramente sobre o erro em si: Venha cá... o "com sucesso" foi em relação a "tentativa de escrita" ou "arquivo não aberto"??? para o primeiro caso, OK... parabéns, o computador tentou. Mas provavelmente deve ser o segundo, ou seja, o erro está em "tentar escrever em arquivo que não está aberto (para escrita)". Logo........ o problema deve estar na "abertura do arquivo para escrita". Provavelmente no "caminho completo" utilizado: 'C:\Users\Allan\Desktop\Programas\pascalzim\Meus\programa novounb\DADOS.TXT' O computador não tá achando o arquivo!! (o caminho é inválido ou algo do tipo) Sugiro que tente usar um "caminho relativo", ex;: Algo como: assign (TXT, 'DADOS.TXT'); Desta forma, a "assinalação" apontará para a pasta onde está o programa*, ou seja, o arquivo deverá estar (ou será criado) na mesma pasta onde está o ".exe" (geralmente onde está o .pas). PS: Pelo que o eu vi, o PascalZim, compilador que provavelmente você está utilizando, cria um arquivo automaticamente... a vantagem é que facilita, mas ao mesmo tempo é ruim, pois meio que deixa o programador sem o controle disso, já que teoricamente ele quem deveria verificar e criar um arquivo novo ou não... No aguardo.
  8. Olá. Ainda precisa de ajuda? Caso sim, poste onde está com dúvidas e o código para tentarmos ajudar... No aguardo.
  9. Olá @ricskyred. Depois do then não tem ";"... Esse código, abaixo: if (n1>n2) and (n1>n3) then; if (n2>n3) then write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3) else write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2); Seria equivalente a if (n1>n2) and (n1>n3) then begin end;if (n2>n3) then write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)else write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2); Ou seja, a verificação do primeiro if não vai resultar em nada. (se false, ele pula. Se true não executa nada).
  10. Olá. Ainda precisa de ajudar com referente a esta postagem? No aguardo.
  11. Olá. Comecei a responder ontem... mas durante a composição, o meu PC travou e não tá ligando mais... rs Vou tentar resumir: Creio que o código está certo, faço apenas alguns comentários: 1) Evite esses espaços entre as linhas, deixa o código muito "sujo"; 2) Por que usou while, em vez de for no fatorial? Não está errado, apenas sugiro uma reflexão (supondo que "deveria" ser for). Então, existem basicamente 3 estruturas de repetição: while, for e repeat. Tudo que dá para fazer em um, dá para fazer em outro (resumindo: só precisaria existir um, correto?). A questão é que um é mais adequado/prático para cada contexto... Daí, precisa analisar qual seria o mais propício e/ou qual justificativa para usar um outro. (cada um tem suas qualidades e limitações, e que é justamente o que estou colocando em discussão). Sugiro que também converse com seu orientador sobre isso... 3) Sobre o "sair", qual contexto se refere? uma desistência? Se for, poderia usar por exemplo o "0"... daí, se o valor informado for esse, não continua... para tratar, usa um if... O comando exit e halt também pode ser usados... mas tem que ver se não dá uma quebra na lógica, ou seja, talvez seja mais correto fazer o programa "pula o que não quer", e não simplesmente fechar... Qualquer coisa é só postar; No aguardo.
  12. Olá andreza.gomes, Seu mesmo código, só que endentado, para facilitar a leitura : PROGRAM A;uses CRT;var n,x,p:integer; s:real;function calculo (p:real):real; var f,u:integer; begin f:=1; for u:= 1 to x do begin f:=f*u end; p:=1+1/f; s:=p+s; end;BEGINwriteln('Informe o numero');readln(n);for x:= 1 to n do begin writeln('O Resultado sera',s); writeln('Precione qualquer tecla para finalizar'); readkey; end;END. Você criou a function e nenhum momento está utilizando ela. Deve funcionar assim: você chama o procedimento, passando o parâmetro que ele precisa, e utiliza o valor retornado por ela, ou seja, a function funciona como uma variável, que retorna um valor nela mesma. Outra coisa, você declarou que a function retorna um real, mas onde está retornando esse valor? Então, a conta é "S = 1 + 1/fatorial(1) + 1 /fatorial(2) + 1/fatorial(3) + ⋯ + 1 /fatorial(N)", correto? para organizar, cria uma function que calcula o fatorial... Cria outra function que faz essa conta, e que vai utilizar a function fatorial para calcular o fatorial... Fiz um exemplo de cálculo de fatorial e com um programa utilizando ela. Tentem entender como funciona uma function e criem um programa que faz o cálculo de S. PROGRAM exemplo;uses CRT;function fatorial(n:integer):integer; var i, //para controlar o for fat :integer; //usado no cálculo e resultado do fatorial begin fat:=N; //inicializa a variável (primeiro valor) for i:=N-1 downto 1 do // *1 fat:=fat*i; //ele mesmo vezes o próximo valor fatorial:=fat; //retorna o valor na function end;//*1 = vai de "próximo" até o "1" [ex.: N=4. N*(3*2*1)]//claro que não precisa multiplicar por 1, mas deixei apenas para ficar didático var num: integer; BEGINClrScr;writeln('Digite o valor de N');readln(num);writeln('Fatorial de ',num,'=',fatorial(num)); //*2ReadKey;//*2 veja, está chamado fatorial, passando o valor que ele precisa no num. A própria function retorna o valor, ou seja, fatorial funciona também como uma variável.END. ... O princípio da soma S é a mesma coisa... será um laço de repetição que vai somando cada pedaço da conta... No aguardo.
  13. Olá. 1) - Você precisa transformar a procedure em function; (a ÚNICA diferença é que a function retorna sempre um valor nela mesma, procedure não) - O valor utilizado pela função deve ser passado por parâmetro, e não usando variável global. - O trecho que calcula o fatorial pode ficar separado, ou seja, cria uma outra função para fazer esse cálculo. Daí, a function do cálculo, chama a function do fatorial. Obs.1: A função do fatorial tem que ser criada antes (acima) da função do calculo, pois o Pascal vai aprendendo de "de cima para baixo"; Obs.2: No Pascal é possível criar uma sub-rotina, da sub-rotina, a função do fatorial pode ficar dentro da função do calculo (é fácil entender, é da mesma forma que você usou um var dentro da função, você também pode criar um function também, ou seja, essa função seria enxergada apenas por essa função - da mesma forma que as variáveis são enxergadas apenas nela também...) 2) - acho que você deveria ler os 10 números de uma vez e depois efetuar as contas. Sugiro usar array. - creio que aqui você também deva passar o valor para cálculo pela procedure, e não usando variável global. (ao passar o valor do array, passe a posição, e não o array todo); - creio que ao ler um valor inválido (numero<0), você deve ler um novo número, e não apenas ignorá-lo. (você poderia usar um repeat, validando o valor) *** Por ai vai No aguardo.
  14. Olá renatocrb e renatocrb. Tentem fazer algo e postem aqui o que já conseguiram... Então, para o 1), creio que a primeira coisa seria cria uma Function que calcule e retorne o valor fatorial de um número inteiro. Essa seria a base do programa. Seria até interessante apenas fazer um programa que faça isso, depois inseriria a rotina principal que faz o cálculo. Para o 2), vocês poderiam criar uma Function que retorna os divisores do número e a partir dai efetuar os cálculos... etc No aguardo
  15. Em relação ao .bat, uma base poderia ser mais ou menos assim: echo offjava -jar nomedoarquivo.jarpause Obs.: O pause é facultativo, mas ele servirá para "aguardar" antes de fechar... vai servir para "ver as mensagens" que eventualmente possam aparecer... (se quiser, pode tirar) E basta deixar o arquivo .bat na mesma pasta onde está o .jar. Obs.2: Não precisa colocar um "cd c:\user\MAYCON\Desktp.........", pois como está na pasta, ele vai usar o "caminho relativo". Em relação a executar o .jar direto, eu não sei no momento... No aguardo.
  16. Creio que a configuração do Win8 seja igual do Win7... Testei aqui no Win7 o tutorial e funcionou.. Lembre-se que após configurar, tem que abrir um novo CMD... Para testar, simplesmente digite: javac e teste.
  17. Olá. Eng. Helder, acho que estou com problemas.. Pelo que vejo, a tinha preta do meu acabou! O nível de tinta está no mínimo e quando vai imprimir ele pede para apertar o botão "Continuar" e imprimir utilizando as coloridas. Então como devo proceder? RESUMO - A tinta preta acabou; - Tenho um bulk para usar nos cartuchos originais; QUESTÕES - Se eu comprar um bulk com os cartucho preciso comprar mesmo assim um preto original novo? - Temo como corrigir a questão de não imprimir mais em preto? - Quais são as minhas opções? Att
  18. Olá. Pelo que o vi total de coloridos está bem maior... daí, além dos gastos da coloridas em si, pode ter ocorrido a mistura mesmo como Eng. Helder comentou: Eu tenho uma 8100 (é a mesma série, só que "mais simples", rs) e creio que estou com o mesmo problema... Por sinal, ontem eu fiz uma impressão de relatório, e pelo que eu lembro de fato quase não tem impressão colorida... (vou olhar de novo em casa). Pelo que observei, boa parte parece que está sendo "usurpada" ao ligar e desligar mesmo... . Não tem condições um 'negoço' deste... apesar da tinta preta ser maior, a colorida desceu muito rápido e sem ter usado... Por sinal, a própria preta desceu também nesse processo. Em fim, comprei um bulk ontem... Só estava esperando a tinta descer, pois vou utilizar o cartucho original nele. Aproveitando: - Tem alguma forma de deixar só o cartucho preto? (para que deixar o colorido lá? rs) - Funciona se deixar um cartucho vazio no lugar do colorido? (sai mais barato comprar um vazio e colocaria um cheio só quando precisar por exemplo). - Utilizando bulk, eu posso deixar o colorido vazio e usar só o preto? (apesar de ser bem mais econômico, não deixa de ser desperdício). Abraços Comigo o problema é o mesmo...
  19. 1) Sobre o erro no segundo código O símbolo para divisão é "/", mas você usou "\" . (poderia ter dito logo isso né? rs) 2) Sobre a "Dica" Está aplicando ela como? O problema do primeiro código é que os comandos não aceitam números reais. Ai entra a questão... o que que o DIV e o MOD fazem? Como faz para ter o mesmo resultado que eles promovem? *** No aguardo
  20. Olá... Nem Div e nem Mod aceitam números reais, somente inteiros. E no segundo código, você inverteu o lado da "barra" da divisão. DICA: Mas no VisuAlg existe um comando que "pega a parte inteira" de uma fração. No aguardo.
  21. Realmente muito bom e útil!!! Parabéns!
  22. Essa adaptador geralmente vem junto com a placa de vídeo... é capaz de você mesmo ter um... qualquer coisa pede a um amigo!!! (sempre fica sobrando, tenho uns 3 )
  23. Olá... Edite sua postagem acima, poste o seu código novo e onde acha que está o problema. No aguardo. Abraços.
  24. Então... compile, traduza as mensagens de erros, analise se são coerentes ao caso (nem sempre são, mas geralmente bate com o erro real) e corrija o código. Vá repetindo o processo até que esteja tudo certo. Ex.: Ao compilar, deu os seguintes erros: Nesse caso o meu compilador está acusando que existe uma "duplicidade de identificação" com o termo bissexto" na linha 5, coluna 4, ou seja, tem duas "coisas" diferentes que estão com o mesmo nome para um mesmo escopo. (no caso, tem uma variável "bissexto" na passagem do parâmetro da procedure e tem outra variável declarada dentro da procedure com o mesmo nome.) Obs.: Erro de compilação se refere a sintaxe, ou seja, não necessariamente a lógica referente ao seu problema vai está certa. No aguardo. Abraços.
  25. Eu me confundi... postei como se fosse especificadamente para Pascal/Delphi... Pela sintaxe, já vi que não tenho muito conhecimento.. Qual a linguagem de programação está se referindo? Abraços

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!