Resolução dos Problemas da Apostila de Registros
Exercício 3
Em certo município vários proprietários de imóveis
estão em atraso com o pagamento do
imposto predial. Escreva um programa que calcule e escreva o valor da multa a
ser paga por estes proprietários considerando que:
·
os dados de cada imóvel: identificação
(literal), valor do imposto e número de meses em atraso;
·
as multas devem ser calculadas a partir do valor
do imposto e de acordo com a seguinte tabela:
Valor do imposto
|
% por mês em atraso
|
até R$ 500
|
1
|
de R$ 501 até R$ 1800
|
2
|
de R$ 1801 até R$ 5000
|
4
|
de R$ 5001 até R$ 12000
|
7
|
acima de R$ 12000
|
10
|
·
o último registro, que não deve ser considerado,
contém identificação do imóvel igual a vazio;
·
na saída deverão ser impressos: identificação do
imóvel, valor do imposto, meses em atraso e a multa a ser paga.
Algoritmo
Programa Imposto;
Tipo
registro
= REGISTRO {DEFINICAO DO TIPO REGISTRO}
limiteinf
: inteiro; {QUE REPRESENTA
A TABELA}
limitesup : inteiro; { DE MULTAS}
perc : inteiro;
FIM;
propriedade
= REGISTRO {DEFINICAO DO TIPO
PROPRIEDADE}
ident:
literal[8]; {QUE REPRESENTA OS DADOS DE CADA}
imposto : real; {IMOVEL}
mesesat
: inteiro;
FIM;
Var
tabela:
vetor [1..5] de registro;
imovel :
propriedade;
i,j :
inteiro;
multa :
real;
INICIO
escreva
('LEITURA DA TABELA
PARA A APLICACAO DE MULTAS');
Para iß1
até 5 faça
Inicio_para
escreva('Limite inferior :');
leia
(tabela[i].limiteinf);
escreva('Limite superior :');
leia
(tabela[i].limitesup);
escreva('Percentual :');
leia
(tabela[i].perc);
Fim_para;
escreva
('LEITURA DO IMOVEL');
escreva('Identificacao : ');
leia
(imovel.ident);
Se
imovel.ident <> ' ' então
Inicio_se
escreva('Imposto : ');
leia
(imovel.imposto);
escreva('Meses em Atraso : ');
leia
(imovel.mesesat);
Fim_se;
Enquanto
(imovel.ident <> ' ') faça
Inicio_enquanto
i ß5;
Enquanto
(imovel.imposto < tabela[i].limiteinf) AND (i>=0) faça
ißi-1;
multa<--tabela[i].perc/100 * (imovel.imposto) * (imovel.mesesat);
escreva ('Identificacao :
',imovel.ident);
escreva ('Imposto : ',imovel.imposto);
escreva ('Multa : ',multa);
escreva ('LEITURA DO IMOVEL');
escreva('Identificacao : ');
leia
(imovel.ident);
Se
imovel.ident <> ' ' entao
Inicio_se
escreva('Imposto : ');
leia (imovel.imposto);
escreva('Meses em Atraso : ');
leia
(imovel.mesesat);
Fim_se;
Fim_se;
FIM.
Código implementado no Dev-C++ 4.9.9.2
#include
<iostream>
#include
<stdio.h>
using namespace std;
struct multas //estrutura do
tipo registro que representa a tabela de multas
{
float
limiteinf, limitesup, perc;
};
struct propriedade //estrutura
do tipo propriedade que representa dados do imóvel
{
char ident[15];
float imposto;
int mesesat;
};
int main()
{
multas
tabela[5]; //declaração do vetor tabela do
tipo multas
propriedade imovel; //declaração
da variável imóvel do tipo propriedade
int i;
float
multa;
cout
<< "PROGRAMA CALCULO DE IMPOSTO PREDIAL DEVIDO" <<
"\n\n";
for (i =
0; i < 5; i++) //leitura da tabela de
multas
{
cout
<< i + 1 << "o. FAIXA DE TRIBUTACAO" <<
"\n\n";
cout
<< "Limite inferior em R$: ";
cin
>> tabela[i].limiteinf;
cout
<< "Limite superior em R$: ";
cin
>> tabela[i].limitesup;
cout
<< "Percentual por mes em atraso: ";
cin
>> tabela[i].perc;
cout
<< "\n";
}
system("cls");
cout
<< "\n" << "TABELA DE TRIBUTACAO" <<
"\n\n";
for (i =
0; i < 5; i++) //impressão da tabela de
multas para referência
{
cout
<< " De R$ " << tabela[i].limiteinf << " ate
R$ ";
cout
<< tabela[i].limitesup << " = ";
cout
<< tabela[i].perc << "% por mes." << endl;
}
cin.sync(); //sincronização
do buffer de entrada de dados
cout
<< "\n" << "LEITURA DO IMOVEL" <<
"\n\n";
cout
<< "Identificacao do imovel: ";
gets(imovel.ident);
while
(strcmp(imovel.ident,"\0")) //enquanto
(identidade do imóvel ≠ de vazio) faça
{
cout << "Valor do imposto em R$: ";
cin >> imovel.imposto;
for (i = 0; i < 5; i++) //comparação
dos valores do imóvel com valores da tabela
{
if ((imovel.imposto >= tabela[i].limiteinf) &&
(imovel.imposto <= tabela[i].limitesup))
{
cout << "Meses em atraso: ";
cin >> imovel.mesesat;
multa = (tabela[i].perc/100)*imovel.imposto*imovel.mesesat; //cálculo multa
cout << "\n\n" << "SITUACAO DO IMOVEL "
<< imovel.ident << "\n\n";
cout << "Imposto
devido: R$ " << imovel.imposto << endl;
cout << "Mese em atraso: " << imovel.mesesat
<< endl;
cout << "Multa pagar: R$ " << multa <<
"\n\n";
}
}
system("PAUSE");
cin.sync();
cout << "\n\n" << "LEITURA DO IMOVEL"
<< "\n\n";
cout << "Identificacao do imovel: ";
gets(imovel.ident);
}
cout
<< "\n\n";
system("PAUSE");
}
Tem como fazer esse codigo em C??
ResponderExcluirOiii
ResponderExcluirAlguem poderia mandar esse codigo em C normal?
Ajudaria muito, desde ja agradeço.