Ir ao conteúdo
  • Cadastre-se
tff

Ajuda com funções - urgente

Recommended Posts

Desenvolvi um programa em C++ e preciso "transformá-lo" em Pascal, porém não sei como utilizar funções e ponteiros em pascal.

Segue abaixo o codigo em C++

#include<iostream.h>

void faltas (float *sal_hora, float *desc_faltas);
void horas_extras (float *sal_hora, float *extras, float *dsr_total);
void INSS (float *salario, float *desc_inss);
void vale (float *salario, float *desc_vale);
void DSR (float *extras_cinq, float *extras_cem, float *dsr_total, float *sal_hora);

main()
{
float salario, desc_vale, sal_hora, desc_faltas, extras, desc_inss, sal_liq, dsr_total, sal_inss;

cout<<"\nDigite o salario do funcionario: ";
cin>>salario;

sal_hora = salario / 220;

vale (&salario, &desc_vale);

faltas (&sal_hora,&desc_faltas);

horas_extras (&sal_hora, &extras, &dsr_total);

sal_inss = salario + extras + dsr_total - desc_faltas;

INSS (&sal_inss, &desc_inss);

sal_liq = sal_inss - desc_vale - desc_inss;

cout<<"\nSalario base: "<<salario<<"\nVale: "<<desc_vale<<"\nHoras extras: "<<extras<<"\nDSR: "<<dsr_total<<"\nFaltas: "<<desc_faltas<<"\nINSS: "<<desc_inss;
cout<<"\n\nSalario liquido: "<<sal_liq;


system("pause>null");
}

void vale (float *salario, float *desc_vale)
{
*desc_vale = *salario * 0.4;
}

void INSS (float *sal_inss, float *desc_inss)
{
if (*sal_inss <= 911.70)
*desc_inss = *sal_inss * 0.08;
else if (*sal_inss > 911.71 && *sal_inss <=1519.50)
*desc_inss = *sal_inss * 0.09;
else
*desc_inss = *sal_inss * 0.11;
}


void faltas (float *sal_hora, float *desc_faltas)
{
float total_faltas;
cout<<"\nDigite o total de faltas do funcionario: ";
cin>>total_faltas;
*desc_faltas = *sal_hora * total_faltas;
}

void horas_extras (float *sal_hora, float *extras, float *dsr_total)
{

float extras_cem, extras_cinq, total_cem, total_cinq;
cout<<"\nDigite o total de horas extras 50 % do funcionario: ";
cin>>extras_cinq;
cout<<"\nDigite o total de horas extras 100 % do funcionario: ";
cin>>extras_cem;
total_cinq = (*sal_hora * 1.5 )* extras_cinq;
total_cem = (*sal_hora * 2) * extras_cem;
*extras = total_cinq + total_cem;

DSR (&extras_cinq, &extras_cem, dsr_total, sal_hora);
}

void DSR (float *extras_cinq, float *extras_cem, float *dsr_total, float *sal_hora)
{
float dsr_cinq, dsr_cem, total;
int uteis, dom_fer;

cout<<"\nDigite o total de dias uteis do mes (incluindo sabados): ";
cin>>uteis;
cout<<"\nDigite o total de domingos e feriados do mes: ";
cin>>dom_fer;

dsr_cinq = ((*extras_cinq / uteis) * dom_fer) * (*sal_hora * 1.5);
dsr_cem = ((*extras_cem / uteis) * dom_fer) * (*sal_hora * 2);
*dsr_total= dsr_cinq + dsr_cem;
}

E o que eu consegui fazer em Pascal até agora:

program salario_func;

var salario, desc_vale, sal_hora, desc_faltas, extras,dsr_total, sal_inss, desc_inss, sal_liq : real;
(*variaveis que deveriam existir apenas nas funções*)
total_faltas, extras_cem, extras_cinq, total_cem, total_cinq, dsr_cinq, dsr_cem :real;
uteis, dom_fer : integer;

begin
writeln ('Digite o salario do funcionario: ');
readln (salario);

sal_hora := salario / 220;

(*utilizar função vale*)
desc_vale := salario * 0.4;

(*utilizar função faltas*)
writeln ('Digite o total de faltas do funcionario: ');
readln (total_faltas);
desc_faltas := sal_hora * total_faltas;

(*utilizar função horas extras*)
writeln ('Digite o total de horas extras 50 % do funcionário: ');
readln (extras_cinq);
writeln ('Digite o total de horas extras 100 % do funcionário: ');
readln (extras_cem);
total_cinq := (sal_hora * 1.5) * extras_cinq;
total_cem := (sal_hora * 2) * extras_cem;
extras := total_cinq + total_cem;

(*utilizar a função DSR*)
writeln ('Digite o total de dias uteis do mês (incluindo sábado)');
readln(uteis);
writeln ('Digite o total de domingos e feriados do mês');
readln(dom_fer);

dsr_cinq := ((extras_cinq / uteis) * dom_fer) * (sal_hora * 1.5);
dsr_cem := ((extras_cem / uteis) * dom_fer) * (sal_hora * 2);

dsr_total := dsr_cinq + dsr_cem;

sal_inss := salario + extras + dsr_total - desc_faltas;

(*utilizar função inss*)

if (sal_inss <= 911.70) then
desc_inss := sal_inss * 0.08
else if (sal_inss > 911.71) and (sal_inss<=1519.50) then
desc_inss := sal_inss * 0.09
else
desc_inss := sal_inss * 0.11;

sal_liq := sal_inss - desc_vale - desc_inss;

writeln ('Salario base: ', salario);
writeln ('Vale: ', desc_vale);
writeln ('Horas extras: ', extras);
writeln ('DSR: ', dsr_total);
writeln ('Faltas: ', desc_faltas);
writeln ('INSS: ', desc_inss);
writeln ('Salario liquido: ', sal_liq);
readln;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, não entendi, como assim as condições?

O programa tem que utilizar as funções que foram declaradas antes da main, e para facilitar utilizei ponteiros para passar os valores.

Não sei como fazer isso em pascal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele deve solicitar que o usuário digite o salario de um funcionário, o total de faltas que esse funcionário teve e o total de horas extras 50% e 100%.

Então ele deve calcular o vale desse funcionário atraves de uma função especifica, o valor a ser descontado em faltas, o valor a ser pago em horas extras e dentro da função de horas extras deve clacular o DSR (que é um beneficio), depois disso ele clacula qual será o slario para o calculo do inss, e chama a função INSS para ver quanto será o desconto. Por fim faz o calculo do salario que o funcionário tem a receber, e apresenta todos os valores...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui concluir o código, usei procedimentos...

Obrigado mesmo assim :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×