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 ~]$