[Pascal] Algoritmo soma de ímpares e pares - Pascal/Delphi - Clube do Hardware
Algoritmo soma de ímpares e pares
Por Charles Diogo123, 18 de setembro em Pascal/Delphi
Charles Diogo123 7
1. Faça um algoritmo que receba as idades de 10 pessoas e some as idades pares. Use o comando REPEAT
2. Faça o mesmo algoritmo só que somando também as idades ímpares e somando todas as idades ímpares + pares juntas.
O Algoritmo é esse:
lista:array[1..10]of integer;
pessoas, par:integer;
pessoas :=0;
writeln(' digite idade ');
pessoas:=pessoas + 1;
readln(lista[pessoas]);
until (pessoas =10);
pessoas:=0;
par:=0;
if((lista[pessoas] mod 2)=0) then par:=par+lista[pessoas] ;
writeln('soma das idades pares é ',par);
Por exemplo: para calcular somente as idades ímpares era só mudar mod 2 = 0 para mod 2 = 1
então como eu faria para colocar a soma dos idades ímpares no algoritmo acima e como faria para somar as idades ímpares e pares?
devair1010 1.368
@Charles Diogo123 para somar as idades pares e as idades impares voce pode pegar cada idade digitada pelo usuario e somar uma com a outra pois as idades só podem ser par ou impar . e para somar as idades impares no primeiro , voce pode colocar um else e dentro dele faria a soma dos impares. .
Simon Viegas 1.693
@Charles Diogo123, por favor, ao postar um código, favor utilizar a tag CODE. Basta, antes de colar o código, clicar no botão <>.
obs.: para o código anterior, já editei e inseri.
1 hora atrás, Charles Diogo123 disse:
Seria basicamente isso mesmo. Então presumimos que já sabe verificar se um número é ímpar também... correto?
Basicamente só fazer as duas verificações na mesma estrutura... algo como:
if ((lista[pessoas] mod 2)=0) then //verifica se é par
par:=par+lista[pessoas];
if ((lista[pessoas] mod 2)=1) then //verifica se é ímpar
impar:=impar+lista[pessoas];
until (pessoas = 10);
writeln('soma das idades pares é   : ',par);
writeln('soma das idades impares é : ',impar);
A soma de um com o outro será a soma das variáveis... (que na prática será a soma de todas as idades)
Aí entra outras questões. Por exemplo:
1) um número não pode ser par e ímpar ao mesmo tempo.
Ou seja, a intercessão do conjunto dos pares com o conjunto dos ímpares, resulta em conjunto vazio, ou seja, não existe elemento em comum. Logo, se um número for par, jamais poderá ser ímpar também... nesse caso, usam-se o else do if.
par:=par+lista[pessoas]
if ((lista[pessoas] mod 2)=1) then //verifica se é ímpares
2) se um número (lembrando que estamos tratando só de inteiros) não é par, necessariamente ele será ímpar. E vice-versa.
Ou seja, a união do conjunto dos números pares com o conjunto dos números ímpares resulta no conjunto dos números naturais. Como já sabemos que um número não pode ser par e ímpar ao mesmo tempo, concluímos que se um número não é par, necessariamente ele será ímpar. E vice-versa, é claro.
Resumindo: basta verificar se é um deles. Se não for, é o outro. (todo número inteiro ou é par ou é ímpar)
else //senão é ímpar
Em vez de repeat, seria mais interessante utilizar for. Combinaria mais. Sugeriria mudá-los.
Só um detalhe besta sobre o padrão de nomenclatura das variáveis... (que talvez não seja importante, mas que particularmente acho relevante).
- em vez de pessoas, usar pessoa. Pois essa variável tende a ser mais relacionada ao "número da pessoa". Ou seja, a pessoa 1, a pessoa 2, a pessoa 3... etc. Lá na
- já par e impar poderiam ser pares e impares, ou seja, sendo mais relacionada "a soma dos pares e a soma dos ímpares". Ou mesmo somaPares e somaImpares... por ai vai.
- já o lista creio que ficou bom. Pois vetores tendem a representar um conjunto... logo, lista cai bem. Outro bom exemplo seria usar idades. Veja que está no plural... sugerindo que são mais de uma... obs.: lista não precisa ficar no plural pois já remete a um conjunto.
Em fim... esse ponto não é tão importante... inclusive nem eu mesmo tenho uma sensação se é coerente ou não... rs.