-
Notifications
You must be signed in to change notification settings - Fork 1
/
banco riomar.c
119 lines (119 loc) · 2.79 KB
/
banco riomar.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include<stdio.h>
#include<conio.h>
#include<locale.h>
#include<string.h>
#include<stdlib.h>
struct info
{
int nc;
char cl[26];
int cod;
float saldo;
};
struct fecha
{
int d;
int m;
int a;
};
int fcarga(struct info[]);
struct fecha fechaproceso(void);
int fechavalida(int,int,int);
int cantdiasmes(int,int);
int bisiesto(int);
void main()
{
setlocale(LC_CTYPE,"Spanish");
struct info vec[700];
struct fecha proceso;
int i,band,cant;
float may;
printf("\n\n\a\a ***** BANCO RIOMAR ****** \n");
cant=fcarga(vec);
printf("\n Control de transacciones bancarias de las cuentas corrientes\n\n");
printf("\n Ingrese la fecha del proceso: \n");
proceso=fechaproceso();
printf("\n LISTADO DE CLIENTES CON SALDO DEUDOR DEL %d/%d/%d\n\n",proceso.d,proceso.m,proceso.a);
printf("\n NÚMERO DE CUENTA \t NOMBRE DEL CLIENTE \n");
for(i=0;i<cant;i++)
if(vec[i].cod==1)
printf("\n %d \t\t\t %s",vec[i].nc,vec[i].cl);
band=0;
for(i=0;i<cant;i++)
if(vec[i].cod==2&&(band==0||vec[i].saldo>may))
{
band=1;
may=vec[i].saldo;
}
printf("\n\n\t MAYOR SALDO ACREEDOR: %.2f \n\n",may);
printf("\n LISTADO DE CLIENTES CON MAYOR SALDO ACREEDOR DEL %d/%d/%d\n\n",proceso.d,proceso.m,proceso.a);
printf("\n NÚMERO DE CUENTA \t NOMBRE DEL CLIENTE \n");
for(i=0;i<cant;i++)
if(vec[i].cod==2&&may==vec[i].saldo)
printf("\n %d \t\t\t %s",vec[i].nc,vec[i].cl);
printf("\n\n Fin del programa \n\n\a\a");
getch();
}
int fcarga(struct info v[])
{
int i;
FILE *pf;
i=0;
pf=fopen("saldos.dat","rb");
if(pf==NULL)
{
printf("\n Error al abrir el archivo \n\t\t El archivo está corrupto \n\n");
exit(0);
}
fread(&v[i],sizeof(struct info),1,pf);
while(!feof(pf))
{
i++;
fread(&v[i],sizeof(struct info),1,pf);
}
fclose(pf);
return i;
}
struct fecha fechaproceso(void)
{
struct fecha aux;
do
{
printf("\n\n Día: \t\t");
scanf("%d",&aux.d);
printf("\n\n Mes: \t\t");
scanf("%d",&aux.m);
printf("\n\n Año: \t\t");
scanf("%d",&aux.a);
}
while(!fechavalida(aux.d,aux.m,aux.a));
return aux;
}
int fechavalida(int d,int m,int a)
{
if(a>1600&&m>=1&&m<=12&&d>=1&&d<=cantdiasmes(m,a))
return 1;
else
return 0;
}
int cantdiasmes(int m,int a)
{
int cd;
if(m==4||m==6||m==9||m==11)
cd=30;
else
{
if(m==2)
cd=28+bisiesto(a);
else
cd=31;
}
return cd;
}
int bisiesto(int a)
{
if((a%4==0&&a%100!=0)||a%400==0)
return 1;
else
return 0;
}