Suelen Passos Posted August 18, 2013 at 04:48 PM Report #522014 Posted August 18, 2013 at 04:48 PM (edited) Olá! Sou estudante e estou começando a estudar Pascal, e preciso de ajuda com meu código. Preciso de duas coisas, deve ser simples pra quem já tem uma certa prática. Ao digitar um número negativo meu código finaliza e me traz um resumo, preciso que ele finalize caso eu digite um número negativo e zero. E preciso que no final me diga quantos numeros primos foram digitados. Desde já agradeço. Segue o esboço. program NumPrimos(input{teclado}, output{video}); function primo(x{e}: integer): boolean; var i: integer; begin i:= 2; while (i<x) and ((x mod i)<>0) do i:= i+1; primo:= (i=x); end; var num, qtd, soma, maior, menor, maiorPrimo, menorPrimo: integer; begin write(output, 'Digite um n£mero: '); readln(input, num); if num<0 then writeln('Nenhum numero lido foi maior que zero') else begin qtd:= 0; maior:= num; menor:= num; maiorPrimo:= -1; soma:= 0; while num>=0 do begin inc(qtd); soma:= soma + num; if num>maior then maior:= num else if num<menor then menor:= num; if primo(num) then if maiorPrimo = -1 then begin maiorPrimo:= num; menorPrimo:= num; end else if num<menorPrimo then menorPrimo:= num else if num>maiorPrimo then maiorPrimo:= num; write(output, 'Digite um numero: '); readln(input, num); end; writeln(output, 'O maior numero = ', maior, ' e o menor numero = ', menor); writeln(output, 'A media de todos os numeros lidos = ', soma/qtd:5:2); if maiorPrimo=-1 then writeln(output, 'Nenhum numero primo foi lido') else writeln(output, 'Maior primo = ', maiorPrimo, ' e o menor primo = ', menorPrimo); end; readln(input); end. Retificando: Preciso que ele finalize caso seja digitado um numero negativo ou* zero. Edited August 18, 2013 at 05:44 PM by nunopicado
nunopicado Posted August 18, 2013 at 05:51 PM Report #522020 Posted August 18, 2013 at 05:51 PM Não deu para analisar convenientemente o teu código por estar a ler no telemóvel, mas talvez queiras experimentar mudando a condição do teu while. Em vez de num>=0, experimenta num>0... "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
thoga31 Posted August 18, 2013 at 10:00 PM Report #522042 Posted August 18, 2013 at 10:00 PM Para além de mudar a condição do ciclo (eu teria usado um repeat-until para evitar repetir o código do input), hoje em dia é totalmente arcaico usar as directivas (input, output). Declara o programa sem isso, e tira-os do readln e do writeln. Isso é do Pascal de 1971, não de 2013. De resto pareceu-me estar tudo bem. Knowledge is free!
nunopicado Posted August 19, 2013 at 08:14 AM Report #522053 Posted August 19, 2013 at 08:14 AM Isso é do Pascal de 1971, não de 2013. Diz que agora há professores que querem aquela coisa... Devem ser os mesmos que dizem que pascal é fraco! Vai na volta, ainda acham que o programa não funciona sem aquilo! "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
pwseo Posted August 24, 2013 at 02:10 PM Report #522565 Posted August 24, 2013 at 02:10 PM Suelen Passos, De facto podias simplificar um pouco o teu ciclo principal. Se escolheres bem as variáveis a utilizar e respectivos valores iniciais, podes ter algo deste género: repeat write('Número? '); readln(n); if n < 0 then break; if n > max then max := n; if (n < min) or (count = 0) then min := n; if isprime(n) then begin if n > maxp then maxp := n; if n < minp then minp := n; inc(pcount); end; inc(sum, n); inc(count); until false; Desta forma, toda a lógica fica contida num ciclo pequeno e de fácil leitura. Antes deste código terias a inicialização de variáveis, e após o código terias a impressão de resultados.
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