Home RecentChanges

Depositos

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