Ir ao conteúdo
  • Cadastre-se

problema com algoritmo-pascal


Visitante: brunoprepara

Posts recomendados

Visitante: brunoprepara
 

gente, to tentando fazer um algoritmo que tenho que colocar o valor de dois salarios e soma-los e: se o valor for maior que 1000 ira retornar uma mensagem se for menor vai retornar outra mensagem!

to usando o comando case e não to conseguindo achar a solução para o funcionamento do algoritmo!

poderiam me ajudar?

Link para o comentário
Compartilhar em outros sites

Já respondi pra você em outro fórum, mas vou colocar aqui também:


program salario_maior_menor;

uses
CRT;

var soma, salario1, salario2: integer;

begin

writeln('vamos ver a soma destes 2 salatios');
writeln('digite o primeiro salario');
read(salario1);
writeln('digite o segundo salario');
readln(salario2);
soma:= salario1+salario2;

case soma of
0..1000: writeln('os salarios sao menores que R$ 1000,00');

1000..5000: writeln('os salarios sao maiores que R$1000,00');
end;

writeln('a soma dos dois salarios deu: ', soma);
readkey;

end.

se restou alguma dúvida ou se não compilou poste o erro ou dúvida novamente que tentaremos ajudar.

Lembrando que testei o código acima e funcionou perfeitamente.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Já respondi pra você em outro fórum, mas vou colocar aqui também:


program salario_maior_menor;

uses
CRT;

var soma, salario1, salario2: integer;

begin

writeln('vamos ver a soma destes 2 salatios');
writeln('digite o primeiro salario');
read(salario1);
writeln('digite o segundo salario');
readln(salario2);
soma:= salario1+salario2;

case soma of
0..1000: writeln('os salarios sao menores que R$ 1000,00');

1000..5000: writeln('os salarios sao maiores que R$1000,00');
end;

writeln('a soma dos dois salarios deu: ', soma);
readkey;

end.

se restou alguma dúvida ou se não compilou poste o erro ou dúvida novamente que tentaremos ajudar.

Lembrando que testei o código acima e funcionou perfeitamente.

Olá,

Só uns comentários sobre esse código:

1) O case está usando uma faixa repetida

    0..[B]1000[/B]: writeln('os salarios são menores que R$ 1000,00');

[B]1000[/B]..5000: writeln('os salarios são maiores que R$1000,00');

o mais correto seria

    0..1000: writeln('os salarios são menores que R$ 1000,00');

[B]1001[/B]..5000: writeln('os salarios são maiores que R$1000,00');

2) Salário é um número Real

O salário é baseado em uma moeda (R$ / Real), que tem casas decimais (centavos), logo a variável deve ser real (real) e não integer (inteira).

var
salario1,
salario2,
soma :real;

3) Case não aceita números do tipo Real

Neste caso deve ser usar a forma mais primitiva, o IF ou IF/ELSE.

Ex.:

Versão ao pé da letra



uses
CRT;

var
soma,
salario1,
salario2 :real;

begin
writeln('vamos ver a soma destes 2 salatios');
writeln('digite o primeiro salario');
readln(salario1);
writeln('digite o segundo salario');
readln(salario2);
soma:= salario1+salario2;
(*
case soma of
0..1000 :writeln('os salarios são menores que R$ 1000,00');
1001..5000 :writeln('os salarios são maiores que R$1000,00');
end; {case}
*)
if soma>1000 then
writeln('a soma do salario é maior que R$ 1000,00')
else
if soma<1000 then
writeln('a soma do salario é menor que R$ 1000,00')
[COLOR="Red"]{se for igual a 1000 não vai aparecer nada!!!} [/COLOR]
writeln('a soma dos dois salarios deu: ', soma:0:2);
readkey;
end.
program salario_maior_menor;

Versão supostamente correta



uses
CRT;

var
soma,
salario1,
salario2 :real;

begin
writeln('vamos ver a soma destes 2 salatios');
writeln('digite o primeiro salario');
readln(salario1);
writeln('digite o segundo salario');
readln(salario2);
soma:= salario1+salario2;
(*
case soma of
0..1000 :writeln('os salarios são menores que R$ 1000,00');
1001..5000 :writeln('os salarios são maiores que R$1000,00');
end; {case}
*)
if soma>1000 then
writeln('a soma do salario é maior que R$ 1000,00')
else
writeln('a soma do salario é menor ou igual que R$ 1000,00');

writeln('a soma dos dois salarios deu: ', soma:0:2);
readkey;
end.
program salario_maior_menor;

Qualquer coisa é só postarem.

Abraços

Link para o comentário
Compartilhar em outros sites

Visitante: brunoprepara
 

ok, sem duvida o if then daria mais certo, sem problemas, mas a questão é:

tenho que desenvolver esse algoritmo com a função 'case', entende?

mas de qualquer forma valeu.

consegui resolver este pequeno problema em casa!

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!