Respuesta: Problema con Ciclo Infinito y Condicionales en C juas ahora tengo errores con case 2, 5,6 nada mas y faltaria hacer el 8 q ese ya bueno jeje =) disculpa tanta molestia si puedes ayudarme con esto
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 int Numb_Serv[1]; 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; Fecha Reporte; Fecha ReporteF; int Hora; int Hora2; cadena t_hab; int A; int N; int Cama_Ad; int CantP; int CantC; int CantS; Numb_Serv Num; cadena Comida; cadena Serv; int CantR; cadena TR; }Usuario; typedef struct { long int CB; cadena NombreB; cadena ApellidoB; char puntos; }Basura; void Operacion(Usuario us) { Basura bs; int F,i; long int Cdd; char P; char A = 'A'; char N = 'N'; us.A = us.N = 0; FILE *operacion; operacion = fopen("Operaciones.in","r"); if (operacion == NULL ) printf("No abrio el Archivo\n"); else { while (!feof(operacion )) { if (fscanf(operacion ,"%d",&F ) < 1 ) break; //printf("%d\n",F); //scanf("%d",&i); switch (F) { case 0: ContF[1]++; break; case 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); for (i = 0; i < us.CantP; i++) { while ((P = fgetc(operacion ) ) != 'N' && P != 'A' ); if (P == A) //Comparacion de Caracteres { us.A++; fscanf(operacion ,"%ld", &bs. CB); fscanf(operacion ,"%s",bs. NombreB); fscanf(operacion ,"%s",bs. ApellidoB); printf(" %s %s \n", bs. NombreB, bs. ApellidoB); //scanf("%d",&F); } else { us.N++; fscanf(operacion ,"%s",bs. NombreB); fscanf(operacion ,"%s",bs. ApellidoB); printf("%s %s \n", bs. NombreB, bs. ApellidoB); } } break; case 2: fscanf(operacion ,"%ld",&bs. CB); fscanf(operacion ,"%d%c%d",&us. Hora,&bs. puntos,&us. Hora2); printf("%d%c%d",us. Hora,bs. puntos,us. Hora2); break; case 3: fscanf(operacion ,"%ld", &bs. CB); fscanf(operacion ,"%d%c%d",&us. Hora,&bs. puntos,&us. Hora2); printf("%d%c%d\n",us. Hora,bs. puntos,us. Hora2); break; case 4: fscanf(operacion ,"%ld",&bs. CB); fscanf(operacion ,"%d%c%d",&us. Hora,&bs. puntos,&us. Hora2); printf("%d%c%d",us. Hora,bs. puntos,us. Hora2); break; case 5: fscanf(operacion ,"%d",&us. CantC); for (i = 0; i < us.CantC; i++) { fscanf(operacion ,"%s",us. Comida); } break; case 6: fscanf(operacion ,"%ld", &bs. CB); fscanf(operacion ,"%d\n",&us. CantS); for (i = 0; i < us.CantS; i++) { fscanf(operacion ,"%[^0-9]s",us. Serv); } break; case 7: fscanf(operacion ,"%d",&us. CantR); for (i = 0; i < us.CantR ; i++) { fscanf(operacion ,"%d",&us. Reporte[1]); fscanf(operacion ,"%d",&us. Reporte[2]); fscanf(operacion ,"%d",&us. Reporte[3]); fscanf(operacion ,"%d",&us. ReporteF[1]); fscanf(operacion ,"%d",&us. ReporteF[2]); fscanf(operacion ,"%d",&us. ReporteF[3]); printf("%d\n",us. ReporteF[3]); } break; } //while ((P = fgetc(operacion) ) != '\n'); } } } 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); }
y ak te dejo el archivo de entrada de operaciones.in completo Cita: 0-----> Operacion 0
0-----> Operacion 0
1
18 04 2011 24 04 2011
DOBLE
3
A 12345678 Alberto Martinez
A 13456789 Margarita Hernandez
N Andreina Martine
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-----> Operacion 0
0-----> Operacion 0
0-----> Operacion 0
0-----> Operacion 0
7 ---> Operacion 7
1
b 18 04 2011 22 04 2011
0-----> Operacion 0
0-----> Operacion 0
4 -----> Operacion 4
12345678 10:50
8-----> Operacion 8
8-----> Operacion 8 |