Ir ao conteúdo
  • Cadastre-se

Duvida em algoritmo - Pascal


eduardokazuo

Posts recomendados

Bom, eu estou fazendo logica de programação usando a linguagem pascal.

Então... Eu me deparei com um exercicio na apostila que diz:

"Faça um algoritmo que receba a idade, o salario e o nome de um determinado numero de funcionarios e mostre qual funcionario tem a maior idade e qual funcionario tem o maior salario. Não mostre o salario e a idade das pessoas nos resultados, pois lembre-se: o resultado pode apontar duas pessoas diferentes, pois um pode ter a maior idade e o outro o maior salario. O numero de funcionarios a digitar sera especificado pelo usuario. Se o salario digitado ou a idade digitada for igual ao do salario e idade digitados anteriormente, mantem-se a idade e salarios digitados primeiramente."

Bom, eu fiz o seguinte:

program salario_idade;

uses crt;

var idade: array[1..3] of integer;
res, i, num: integer;
nome: array[1..3] of string;

begin

Write('Digite o numero de funcionarios: ');
readln(num);

For i:= 1 to num do
begin
Write('Digite o nome ',i,': ');
Readln(nome[i]);
write('Digite a idade ',i,': ');
Readln(idade[i]);
write('Digite o salario ',i,': ');
Readln(salario[i]);
end;

If...??

Agora teria que fazer o teste para ver qual o maior salario e qual a maior idade, porém eu n sei o numero de pessoas que ira testar, logo nao sei o numero de variaveis para testar.

Caso puderem me ajudar eu fico muito grato! '-'

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Bom, eu estou fazendo logica de programação usando a linguagem pascal.

Então... Eu me deparei com um exercicio na apostila que diz:

"Faça um algoritmo que receba a idade, o salario e o nome de um determinado numero de funcionarios e mostre qual funcionario tem a maior idade e qual funcionario tem o maior salario. Não mostre o salario e a idade das pessoas nos resultados, pois lembre-se: o resultado pode apontar duas pessoas diferentes, pois um pode ter a maior idade e o outro o maior salario. O numero de funcionarios a digitar sera especificado pelo usuario. Se o salario digitado ou a idade digitada for igual ao do salario e idade digitados anteriormente, mantem-se a idade e salarios digitados primeiramente."

Bom, eu fiz o seguinte:



uses crt;

var idade: array[1..3] of integer;
res, i, num: integer;
nome: array[1..3] of string;

begin

Write('Digite o numero de funcionarios: ');
readln(num);

For i:= 1 to num do
begin
Write('Digite o nome ',i,': ');
Readln(nome[i]);
write('Digite a idade ',i,': ');
Readln(idade[i]);
write('Digite o salario ',i,': ');
Readln(salario[i]);
end;

If...??
program salario_idade;

Agora teria que fazer o teste para ver qual o maior salario e qual a maior idade, porém eu n sei o numero de pessoas que ira testar, logo nao sei o numero de variaveis para testar.

Caso puderem me ajudar eu fico muito grato! '-'

Olá,

Antes de tudo...

Não mostre o salario e a idade das pessoas nos resultados, pois lembre-se: o resultado pode apontar duas pessoas diferentes, pois um pode ter a maior idade e o outro o maior salario.

A justificativa não tem muito sentido: primeiro porque podem-se exibir todos os dados para cada caso (nomes com seus respectivos valores relacionados) e segundo porque mostrar os outros dados dos funcionários requer, inclusive, uma lógica relativamente mais sofisticada que só mostrar o nome.

Uma justificativa mais coerente seria dizer que "podem haver mais de um funcionário com a mesma idade e/ou com o mesmo salário, ou seja, daí você teria que exibir os dados de cada um desses que são iguais..."

1) Descobrir o maior

Para comparar, você fará da mesma forma que fez para ler.. ou seja, serão comparados baseados em "num" funcionários!!! ou, também a verificação pode ser feita imediatamente após a leitura do valor, assim ao obter o dado, você já verifica se é maior que o atual ou não.

A lógica para descobrir o "maior" é simples. A base é "se valor atual maior que valor antigo, valor atual passa ser o maior"...

Dica: Se você quiser exibir todos os dados do funcionário, você pode comparar o valores e no caso armazenar a posição do funcionário no array, ex. em: posMaiorIdade e posMaiorSalario, daí basta exibe os dados do array nestas posições.

Se quiser só o nome, basta armazenar o nome mesmo, tipo: nomeMaiorIdade, nomeMaiorSalario...

2) Repetição de valores

Se o salario digitado ou a idade digitada for igual ao do salario e idade digitados anteriormente, mantem-se a idade e salarios digitados primeiramente."

Essa parte é simples, basta você somente comparar os valores "maiores", em vez de "maiores ou iguais". Assim, se tiver mais de uma valor (maior) igual, o programa irá registrar o primeiro nome que aparecer e ignorar o outro.

OBS.: Veja que essa característica de ignorar valores iguais para os maiores, facilita (e muuuuito) o problema. Já que sempre terá 1 e somente 1 valor maior para os dois casos. Se fosse permitido valores iguais, você teria que criar uma lógica para armazenar os valores repetidos!! A trabalheira seria maior!!! ^_^

Veja ai

No aguardo.

Abraços

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!