Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Hugo1337

Carência de técnica

Recommended Posts

Hugo1337

Olá a todos, recentemente venho enfrentando problemas com contadores e acumuladores, eu começo a entender o conceito usando como base exercícios anteriores, mas de tempo para cá não tem dado certo, venho expôr dois exercícios feitos por mim:

1) Receba K números quaisquer, K representa a quantidade de termos solicitada pelo usuário e cada termo pode ser representado pela variável N. Exiba a quantidade dos números divisíveis por 11 e a média apenas dos números ímpares negativos e múltiplos de 13. Exiba o maior número encontrado divisível por 11.

Como eu fiz {Esse exercício está correto}

Program ex19 ;
var k,n,mult11,mult13,soma13,maior11,cont:integer;
Begin
Repeat
Writeln('Digite a qt de termos');
readln(k);
If k<=0 then
Writeln('Num invalido');
Until k>0;
For cont:=1 to k do
Begin
Writeln('Digite o ',cont,'o número');
readln(n);
If ((N)MOD(11)=0) then
Begin
    mult11:=mult11+1;
    If mult11=1 then
    maior11:=n
else
If(n>maior11) then
maior11:=n;
end;
If ((N)MOD(13)=0) and (n<0) and (((N)MOD(2)<>0)) then
Begin
soma13:=soma13+n;
mult13:=mult13+1;
end;
end;
If (mult13=0) then
Writeln('Não há número ímpar negativo divisível por 13')
else
Writeln('Média dos numeros impares e negativos e multiplos de 13: ' , soma13/mult13);
Writeln('Quantidade de números divisíveis por 11: ' , mult11);
Writeln('Maior número divisível por 11: ' , maior11);
End.

Agora estou me deparando com esse exercício: {Este está errado}

Receba K números inteiros quaisquer. K representa a quantidade de termos solicitada pelo usuário e cada número pode ser representado pela variável N. Exiba a somatória dos números divisíveis por 5 e a média dos números múltiplos de 7.Mostre também o maior número digitado divisível por 5 e a quantidade de vezes que ele NÃO apareceu.

Como fiz:

Program ex24 ;
var k,n,div5,mult7,maiordiv5,contn,cont,soma7,somat:integer;
Begin
Repeat
Writeln('Digite a qt de termos');
readln(k);
If k<=0 then
Writeln('Num invalido');
Until k>0;
For cont:=1 to k do
Begin
Writeln('Digite o ',cont,'o número');
readln(n);
If ((n)mod(5)=0) then
Begin
    div5:=div5+1;
    somat:=somat+n;
end;
If div5=1 then
    maiordiv5:=n
else
if n>maiordiv5 then
maiordiv5:=n;
end;
If n<>maiordiv5 then
contn:=contn+1;
If (n)mod(7)=0 then
Begin
soma7:=soma7+n;
mult7:=mult7+1;
end;
If (mult7=0) then
Writeln('Não há multiplos de 7')
else
Writeln('Média dos números multiplos de 7: ',soma7/mult7);
Writeln('Somatória dos números divisíveis por 5: ',somat);
Writeln('Maior número divisível por 5: ',maiordiv5);
Writeln('Quantidade de vezes que o maior número divisível por 5 NÃO apareceu: ', contn);
End.

Utilizando a mesma linha de raciocínio do exercício anterior eu obtive erro(Valores incorretos) em quase todas os acumuladores/contadores, então eu desejo saber porque eu errei e onde estou errando e se existe alguma técnica para não haver erros desse tipo novamente.

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.