Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Hugo1337

Carência de técnica

Mensagens Recomendadas

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

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.