22-12-2007, 06:17 PM
Vê se isto te serve. Foi feito à pressa por isso é possível que tenha algun(s) bug(s)
[codebox]#include <stdio.h>
unsigned int anterior[10] = {10,3,2,1,5,7,8,1,1,5};
unsigned int actual[10] = {12,453,47,856,33,78,33,93,784,22};
unsigned int tipoCliente[10] = {1,2,3,1,2,3,1,2,3,1};
float residencial = 0.09;
float comercial = 0.13;
float rural = 0.04;
float residencialTotal = 0;
float comercialTotal = 0;
float ruralTotal = 0;
int i = 0;
int verificaClientes(int array[])
{
for(i = 0; i < 10; i++)
if(array[i] < 1 || array[i] > 3)
return -1;
return 0;
}
int verificaLeituras(int anterior[], int actual[])
{
for(i = 0; i < 10; i++)
if(anterior[i] == 0 || actual[i] == 0 || (anterior[i]>actual[i]) )
return -1;
return 0;
}
float calcValor(int indice)
{
int temp = actual[indice]-anterior[indice];
int tipo = tipoCliente[indice];
int valor = 0;
switch(tipo)
{ case 1:
valor=(temp*residencial);
if(valor<15) valor = 15;
residencialTotal=residencialTotal+valor;
break;
case 2:
valor=(temp*comercial);
if(valor<15) valor = 15;
comercialTotal=comercialTotal+valor;
break;
case 3:
valor=(temp*rural);
if(valor<15) valor = 15;
ruralTotal=ruralTotal+valor;
break;
}
return valor;
}
int main(void)
{
if(verificaClientes(tipoCliente) < 0)
printf("Erro em tipo de clientes\n");
if(verificaLeituras(anterior, actual) < 0)
printf("Erro nas leituras\n");
int j = 0;
printf("Medidor\t, Consumo\t,Valor da Conta\n");
for(j = 0; j < 10; j++)
printf("%d,\t %d,\t %6.2f\n",
actual[j],
actual[j]-anterior[j],
calcValor(j)
);
printf("Total Residencial: %.2f\nTotal Comercial: %.2f\nTotal Rural: %.2f\n", residencialTotal, comercialTotal, ruralTotal);
return 0;
}
[/codebox]
[codebox]#include <stdio.h>
unsigned int anterior[10] = {10,3,2,1,5,7,8,1,1,5};
unsigned int actual[10] = {12,453,47,856,33,78,33,93,784,22};
unsigned int tipoCliente[10] = {1,2,3,1,2,3,1,2,3,1};
float residencial = 0.09;
float comercial = 0.13;
float rural = 0.04;
float residencialTotal = 0;
float comercialTotal = 0;
float ruralTotal = 0;
int i = 0;
int verificaClientes(int array[])
{
for(i = 0; i < 10; i++)
if(array[i] < 1 || array[i] > 3)
return -1;
return 0;
}
int verificaLeituras(int anterior[], int actual[])
{
for(i = 0; i < 10; i++)
if(anterior[i] == 0 || actual[i] == 0 || (anterior[i]>actual[i]) )
return -1;
return 0;
}
float calcValor(int indice)
{
int temp = actual[indice]-anterior[indice];
int tipo = tipoCliente[indice];
int valor = 0;
switch(tipo)
{ case 1:
valor=(temp*residencial);
if(valor<15) valor = 15;
residencialTotal=residencialTotal+valor;
break;
case 2:
valor=(temp*comercial);
if(valor<15) valor = 15;
comercialTotal=comercialTotal+valor;
break;
case 3:
valor=(temp*rural);
if(valor<15) valor = 15;
ruralTotal=ruralTotal+valor;
break;
}
return valor;
}
int main(void)
{
if(verificaClientes(tipoCliente) < 0)
printf("Erro em tipo de clientes\n");
if(verificaLeituras(anterior, actual) < 0)
printf("Erro nas leituras\n");
int j = 0;
printf("Medidor\t, Consumo\t,Valor da Conta\n");
for(j = 0; j < 10; j++)
printf("%d,\t %d,\t %6.2f\n",
actual[j],
actual[j]-anterior[j],
calcValor(j)
);
printf("Total Residencial: %.2f\nTotal Comercial: %.2f\nTotal Rural: %.2f\n", residencialTotal, comercialTotal, ruralTotal);
return 0;
}
[/codebox]

