Ficheiro depositos.c:
#include <stdio.h>
#include <stdlib.h>
#define MAXND 100
#define IRS 0.21
typedef struct {
float valor, tanb;
} deposito;
deposito le_deposito();
void mostra_deposito(deposito d);
float juro_apos_1_ano(deposito d);
float tanb_media(deposito vd[], int n);
float saldo_apos_1_ano(deposito vd[], int n);
int
main()
{
int nd, i;
deposito vd[MAXND];
float juros;
scanf("%d", &nd);
if (nd > MAXND)
nd = MAXND;
for (i = 0; i < nd; i++)
vd[i] = le_deposito();
for (i = 0; i <nd; i++) {
printf("D: %d\t", i+1);
mostra_deposito(vd[i]);
juros = juro_apos_1_ano(vd[i]);
printf("\tJAB: %.2f\tJAL: %.2f\n", juros, juros * (1 - IRS));
}
printf("TANB média: %.2f%%\n", tanb_media(vd, nd)*100);
printf("Saldo após um ano: %.2f\n", saldo_apos_1_ano(vd, nd));
return EXIT_SUCCESS;
}
deposito
le_deposito()
{
deposito d;
scanf("%f %f%%", &d.valor, &d.tanb);
d.tanb /= 100;
return d;
}
void
mostra_deposito(deposito d)
{
printf("Saldo: %.2f\tTANB: %.2f%%", d.valor, d.tanb*100);
}
float
juro_apos_1_ano(deposito d)
{
return d.valor * d.tanb;
}
float
tanb_media(deposito vd[], int n)
{
int i = 0;
float media = 0;
for (i = 0; i < n; i++)
media += vd[i].tanb;
return media/n;
}
float
saldo_apos_1_ano(deposito vd[], int n)
{
int i = 0;
float saldo = 0;
for (i = 0; i < n; i++)
saldo += vd[i].valor + juro_apos_1_ano(vd[i]) * (1 - IRS);
return saldo;
}Exemplo de entrada (ficheiro input.txt):
3 15000 5% 25000 3.5% 10500 2%
Compilação e execução:
[aplf@darkstar ~]$ gcc -Wall -ansi -pedantic -o depositos depositos.c [aplf@darkstar ~]$ ./depositos < input.txt D: 1 Saldo: 15000.00 TANB: 5.00% JAB: 750.00 JAL: 592.50 D: 2 Saldo: 25000.00 TANB: 3.50% JAB: 875.00 JAL: 691.25 D: 3 Saldo: 10500.00 TANB: 2.00% JAB: 210.00 JAL: 165.90 TANB média: 3.50% Saldo após um ano: 51949.65 [aplf@darkstar ~]$