Código C:
Ver original#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#define MAX 100
#define True 1
#define False 0
typedef float vec_precios[MAX];
typedef int Cant_HabP[MAX];
typedef char cadena[MAX];
typedef int Fecha[3];
typedef struct
{
float Presupuesto_I;
Fecha FechaIni;
int Hab;
int Pisos;
cadena Mat_Hab[MAX][MAX];
}DatosH;
Fecha ContF;
typedef struct
{
int N_Hab;
int N_Serv;
int N_Menu;
cadena vec_Hab;
cadena vec_Serv;
cadena vec_Menu;
vec_precios P_Hab;
vec_precios P_Serv;
vec_precios P_Menu;
cadena D_Menu;
cadena D_Serv;
}Precios;
typedef struct
{
cadena Nom;
cadena Apellido;
long int Ced;
Fecha CheckIn;
Fecha CheckOut;
int Hora;
cadena t_hab;
int A;
int N;
int Cama_Ad;
int CantP;
}Usuario;
typedef struct
{
long int CB;
cadena NombreB;
cadena ApellidoB;
}Basura;
void Llenar_RegH(DatosH dh, FILE *finicializar)
{
Cant_HabP CHP;
int i,j;
//char pausa;
finicializar
= fopen("inicializar.in","r"); if (finicializar == NULL){
printf("No abrio el Archivo\n"); }else{
fscanf(finicializar
,"%f",&dh.
Presupuesto_I); printf("%f\n",dh.
Presupuesto_I); for (i = 0; i < 3; i++)
{
fscanf(finicializar
,"%d",&dh.
FechaIni[i
]); }
fscanf(finicializar
,"%d",&dh.
Hab); fscanf(finicializar
,"%d",&dh.
Pisos); for(i = 0; i < dh.Pisos; i++){
fscanf(finicializar
,"%d",&CHP
[i
]); for(j = 0; j < CHP[i] ; j++)
{
fscanf(finicializar
,"%[^0-9]s",dh.
Mat_Hab[i
][j
]); printf("%s",dh.
Mat_Hab[i
][j
]); }
}
}
}
void precios(Precios ph, FILE *Preciosk)
{
int i;
//char pausa;
Preciosk
= fopen("precios.in","r"); if (Preciosk == NULL){
printf("No abrio el Archivo\n"); }else{
fscanf(Preciosk
,"%d",&ph.
N_Hab); fscanf(Preciosk
,"%d",&ph.
N_Serv); fscanf(Preciosk
,"%d",&ph.
N_Menu); for(i = 0; i < ph.N_Hab; i++)
{
fscanf(Preciosk
,"%[^0-9]s",&ph.
vec_Hab[i
]); fscanf(Preciosk
,"%f",&ph.
P_Hab[i
]); }
for (i = 0; i < ph.N_Serv; i++)
{
fscanf(Preciosk
,"%[^0-9]s",&ph.
vec_Serv[i
]); fscanf(Preciosk
,"%f",&ph.
P_Serv[i
]); fscanf(Preciosk
,"%[^0-9]s",&ph.
D_Serv[i
]); }
for (i = 0; i < ph.N_Menu; i++)
{
fscanf(Preciosk
,"%[^0-9]s",&ph.
vec_Menu[i
]); fscanf(Preciosk
,"%f",&ph.
P_Menu[i
]); fscanf(Preciosk
,"%[^0-9]s",&ph.
D_Menu[i
]); }
}
}
void Operacion(Usuario us, FILE *operacion)
{
Basura bs;
int F,i;
long int Cdd;
char P;
char A = "A";
char N = "N";
operacion
= fopen("Operaciones.in","r"); if (operacion == NULL){
printf("No abrio el Archivo\n"); }else
{
{
if (F==0)
{
ContF[1]++;
}
else
{
if (F==1)
{
fscanf(operacion
,"%d",&us.
CheckIn[1]); fscanf(operacion
,"%d",&us.
CheckIn[2]); fscanf(operacion
,"%d",&us.
CheckIn[3]); fscanf(operacion
,"%d",&us.
CheckOut[1]); fscanf(operacion
,"%d",&us.
CheckOut[2]); fscanf(operacion
,"%d",&us.
CheckOut[3]); fscanf(operacion
,"%[^0-9]s",us.
t_hab); fscanf(operacion
,"%d",&us.
CantP); us.A++;
fscanf(operacion
,"%d",&us.
Ced); fscanf(operacion
,"%[^0-9]s",us.
Nom); fscanf(operacion
,"%[^0-9]s",us.
Apellido);
for (i = 0; i < (us.CantP-1); i++)
{
if (P == A) //COmparacion de Caracteres
{
us.A++;
fscanf(operacion
,"%d",&bs.
CB); fscanf(operacion
,"%[^0-9]s",bs.
NombreB); fscanf(operacion
,"%[^0-9]s",bs.
ApellidoB); }
else
{
us.N++;
fscanf(operacion
,"%[^0-9]s",bs.
NombreB); fscanf(operacion
,"%[^0-9]s",bs.
ApellidoB); }
}
}
/*if(F==2)
{
fscanf(operacion,"%d",&Cdd);
fscanf(operacion,"%d",&us.Hora);
}*/
if(F==3)
{
}
}
}
}
main()
{
Precios ph;
Usuario us;
DatosH dh;
//Declaracion de Archivos
FILE *Preciosk, *operaciones, *sobrecarga, *inicializar;
FILE *reservaciones, *contabilidad, *reportes, *sobrecarg;
//Archivos de Entrada
inicializar
=fopen("inicializar.in","r"); Preciosk
=fopen("precios.in","r"); operaciones
=fopen("operaciones.in","r"); sobrecarga
=fopen("sobrecarga.in","r"); //Archivos de Salida
reservaciones
=fopen("reservaciones.out","r"); contabilidad
=fopen("contabilidad.out","r"); reportes
=fopen("reportes.out","r"); sobrecarg
=fopen("sobrecarga.out","r");
//Llenar_RegH(dh,inicializar);
//precios(ph,Preciosk);
Operacion(us,operaciones);
}
lo que quiero hacer es que
en la variable F valla cargando cada linea y vea si es 0,1,2,3,4,etc dependiendo de la cantidad de operaciones justo como en este formato de abajo
justo agarra 2 operacion 0
entra en condicional if(F==0) suma1 a contf y despues verifica de nuevo hasta
que consigue operacion 1
hay que agarre los datos que vendrian siendo la parte desde donde estan las 2 fechas 18 04 2011 y 24 04 2011
hasta la linea del nombre N Andreina Martinez sale del if(F==1) y vuelve a verificar si F==0 etc
en si hay mas operaciones pero apenas estoy con la primera que no logro hacer que funcione
0 ----------------------------------------------------------->Operacion 0
0 ----------------------------------------------------------->Operacion 0
1 ----------------------------------------------------------->Operacion 1
18 04 2011 24 04 2011
DOBLE
3
A 12345678 Alberto Martinez
A 13456789 Margarita Hernandez
N Andreina Martinez
0 ----------------------------------------------------------->Operacion 0
0 ----------------------------------------------------------->Operacion 0
3 -----------------------------------------------------------> Operacion 3
12345678 14:05
6 --------------------------------------------------------> operacion 6
12345678
2
CAM_A 6
CAJ_F 4
5 ------------------------------------------------__> operacion 5
4
ESP_C
LOM_M
JUG_L
MALTA
0
0
0
0
7 ----------------------------------------------------> operacion 7
1
b 18 04 2011 22 04 2011
0
0
4 --------------------------------------------------> operacion 4
12345678 10:50
8
8