Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de la función Puttext

Código fuente de la función Puttext

/* *Debido a limitaciones de tiempo, la consulta difusa solo incluye la búsqueda de nombres* * */

/* * *La consulta difusa puede tener problemas al crear una lista vinculada y puede haber algunos problemas al completarla en la tabla de salarios * */

# include ltdos.h gt

# include ltbios.h gt

# include ltconio.h gt

# incluir ltstdio.h gt

# incluir ltstdlib.h gt

# incluir ltmath.h gt

#Definición R 8

# Hay un problema con define T 60 /****addlist* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

#define izquierda 0x4b00 /*izquierda*/

# define derecha 0x4d 00/* derecha */

#define 0x5000 / debajo */ *

#Definir 0x4800 en */ /*

#Definir espacio 0x3920 /* espacio */

#Definir ESC 0x011b/* Tecla ESC*/

#define ENTER 0x 1c0d/* ENTER */

#Definir retroceso 0xe08 /*Tecla de borrado*/

#Definir ALT_B 12288 /*Tecla de combinación ALT_B */

#Definir ALT_M 12800/*Clave combinada ALT_M */

#Definir ALT_H 8960/*Clave combinada ALT_H */

#Definición número 10

#Definición M 20

int clst, tvst/*tarifa de limpieza; amp tarifa de CCTV*/

int o = 1;/*-1 modificado, 1 sin cambios*/

char zhws[N][M], zhchs[N][M], salida[N][M] /* Trabajo de almacenamiento amp amp título técnico amp amp Nombre del departamento*/

char meses[][5]={"0","enero","febrero","marzo","abril","mayo"," junio", "julio", "Arg", "septiembre" , "Octubre", "Noviembre", "Diciembre" };/*Nombre del mes, 65438 Octubre corresponde a 1 */

char sexs[][7]={ "male", "female" } ;

int zhwsp[N], zh HSP[N]; /*Posición salario; amp título profesional (básico) Salario*/

ARCHIVO * fp

typedef struct _paylist

{

int cardnum/*número de tarjeta de salario*/

Nombre del personaje [M];

int mes ;/*mes, select*/

int jbsalario/*salario básico*/

int zhwsalario/*puesto salario*/

int adición /* subsidio*/

int ysalary/*salary payable*/

int like;/* Premio Especial*/

int impuesto/*impuesto*/

int agua; /*tarifa agua*/

int elec/*tarifa electricidad*/

int limpio/*tarifa limpieza*/

int tv/*tarifa de televisión*/

salario int /*salario real*/

struct _paylist *izquierda, *derecha

}nómina;

estructura typedef _worker thread

{

Nombre del personaje[ M];

int género /*0 masculino 1 femenino*/

char id num[M] /*número de tarjeta de identificación*/

int cardnum/*número de tarjeta de salario*/

int edad

int salario/*años de servicio*/

int departamento; /*seleccionar, departamento*/

int zhw/*Seleccionar, trabajo*/

int zhch/* Seleccionar, título */

龙zhchnum/*Título

No.*/

龙homeph/*Teléfono residencial*/

char mobile[M] /*Teléfono móvil*/

int paymons/*Recorded n Salario mensual total*/

struct _worker *front, * down

Nómina *right;

}worker;

typedef struct _ departamento

{

int nombre /*Seleccionar, nombre del departamento*/

Ruta del carácter [M] /*Nombre de la ruta de almacenamiento*/

p>

int wknum/*número de empleados en este departamento*/

estructura _ departamento * izquierda, * derecha

Trabajadores * bajan;

}Inicio;

typedef struct _tjw

{

trabajador * wp

struct _ tjw * siguiente

} TJW;

DEPART * headd, * dep

Trabajador *zhp, * wwp/* actúa como guía, no lo cambies casualmente * * *; * * * */

TJW * head 1; /* *Puntero de cabeza* */

Carga no válida (void); /*Importar información de departamento, empleado y salario del archivo */

void start (no válido); /*Leer datos básicos*/

void read dep(departamento * * PP, ARCHIVO * FP); file*/

void write dep(departamento * p, ARCHIVO * FP /*Escribe la información del departamento en los archivos uno por uno*/

void shchx(WORKER * WP); /*Salida detallada */

void readw(WORKER **wp, FILE * FP); /*Leer información del empleado del archivo*/

PAYLIST * whtailp(WORKER * WP); );/ *Encontrar el empleado - el final de la cadena, devolver el final de la cadena*/

void xianshw(void); /* * * * * * * * * * Mostrar la información del empleado del enésimo departamento* * * * * * * *

PAYLIST * insertp(WORKER *wp,PAYLIST *p,PAYLIST *tail);/*Insertar nuevo empleado y regresar al final de la cadena* /

void add new(department * dep);/*Agregar nuevo empleado*/

PAYLIST * whtailp(WORKER * WP);/*Buscar empleado - el final de la cadena , devuelve el final de la cadena*/

void changeshuju(invalid);/*Cambiar información fija como el salario básico*/

Nómina* rulup(worker*WP);/ *Ingrese información salarial*/

void addlist(WORKER * zhp);/*Agregar nuevo empleado*/

void Dzhg(void);/* * * *Determinar el empleado específico * * */

void xiansh 2 (departamento * dep);

void insert dep(void);/* * * *Agregar nuevo departamento* * *

void agregar zh(

void); /* * *Agregar trabajos y puestos* */

void save dep(void); *Guardar información del departamento*/

void savew(void); Guardar información del empleado e información salarial* * */

void day 1 (void);* * *Imprimir información del empleado directamente* */

void day2 (void); * * *Imprimir los resultados estadísticos* */

void dell(departamento * dep); /* *Eliminar todo el departamento* */

void delone(departamento * dep, WORKER * p);/*Eliminar empleados y su información salarial*/

void changew(WORKER * p);/*Modificar información básica de los empleados*/

WORKER * search 1( ; /*Buscar por número de ID*/

void search 3(void); /*Por nombre*/

void mhsearch(); p >

TRABAJADOR * buscar 0();/*Buscar por número de puesto de trabajo*/

void jq search(void);/*Consulta exacta*/

void A Shuijin (); /*Pago total de impuestos y diez estadísticas principales* */

void changep(WORKER * p);/*Modificar información salarial*/

WORKER * search 2( ) ;/*Buscar por número de tarjeta de salario*/

int key; /*Variable clave*/

int textx, texty/*Coordenadas del cursor, fila X, columna Y*/

Estructura del menú/*Estructura del menú*/

{

Nombre del personaje [10] /*Nombre del menú principal*/

char str[10][20];/*Opciones*/

int n;/*Número de opciones*/

} ml[R];/* r archivo, yes Agregar o eliminar según sea necesario*/

char save[4096], savee[4096] /*Guardar espacio en el área de texto*/

/* char sav 1[4096]; * /

char c[4096] /*Espacio especial para limpieza de pantalla*/

int i, j /*Variables públicas*/

void Menu (); /*Interfaz de inicialización*/

void Selectitem() /*Definir menú*/

void DrawSelectitem() /*Mostrar menú principal*/

void BlackText(int x, int y, char * z); /*Seleccionar menú*/

void RedText(int x, int y, char * z); */

Ejecución en seco(); /*Proceso de operación detallado*/

void DrawMl(int n); >void MoveMl( int n, int x); /*Control de opciones del menú*/

void Enter(int m, int n /*Funciones específicas de las opciones del menú*/

<); p>void clr SCR();/*Función de limpieza de pantalla personalizada*/

Void Ding Wei(void);

void DrawFrame(int left, int up, i

nt right, int down, int textcolor, int background color); /*Dibujar borde*/

/* * *Funciones principales* * */

menú de carga nulo (void)

{

menu(); /*Interfaz de inicialización*/

ejecutar() /*Proceso de operación específico*/

}

/*Inicializar interfaz*/

Menú no válido()

{ int a;

System("cls"); /*Llamar al comando de pantalla clara del sistema*/

textbackground (verde); /*Establecer el fondo en azul*/

Ventana (1, 1, 25, 80); /p>

clr SCR();

textx = 3; /*posición de inicialización del cursor*/

texty = 2;

gotoxy( 1 , 2);

printf("c ", 218);/*Dibuja la esquina superior izquierda*/

for(I = 0;ilt78;i)

printf("c ",196);/*Dibuja una línea recta horizontal*/

printf("c",191);/*Dibuja la esquina superior derecha*/

for(I = 3; i lt=23; i)

{

gotoxy(1, I);

printf("c " , 179) ;/*Dibuja una línea vertical*/

gotoxy(80, I);

printf("c ", 179);

}

printf("c ",192);/*Dibuja la esquina inferior izquierda*/

for(I = 0;ilt78;i)

printf ("c ", 196);

printf("c ", 217 /*Dibujar la esquina inferior derecha*/

gotoxy(1, 1); >

color del texto (7);/*Establecer gris*/

for(I = 0;ilt80;i)

cprintf("c", 219);/ *Usa símbolos para dibujar el área principal de fondo gris del menú*/

for(a = 3; a lt=23; a )

{gotoxy(T, a); cprintf("c ", 179);} /************************************ *********** **********************/

Ding Wei();

selectitem();/*Opción de compra Función */

DrawSelectitem(); /*Opciones de dibujo*/

gettext(2, 3, 78, 23, c); /*Guardar el área de texto actual*/

}

/*Menú de definición*/

void Selectitem()

{

strcpy(ml[0 ]). Nombre, "Archivo"); /*Las siguientes opciones específicas llenan los espacios en blanco con el mismo fondo negro para cada menú*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

strcpy(ml[0]). str[0], " Load "); /*Importar información de empleados de un determinado departamento*/

strcpy(ml[0]). str[1], "Shemi"); /*Establecer contraseña*/

strcpy(ml[0]). str[2], "Gaimi"); /*Cambiar contraseña*/

strcpy(ml[0]). str[3], "Imprimir"); /*Imprimir*/

strcpy(ml[0]). str[4], "guardar"); /*guardar*/

strcpy(ml[0]). str[5], "Salir"); /*Salir del sistema*/

ml[0]. n = 6; /*El número de elementos en el menú guardado*/

strcpy(ml[1]. name, "insert");

strcpy(ml[1] . str[0], "Newers"); /*Insertar nuevos empleados*/

strcpy(ml[1]. str[1], "Paylist"); /

strcpy(ml[1]. str[2], "inicio"); /*Nuevo departamento*/

strcpy(ml[1]. str[3], "Zhchs" ); /*Nuevo título*/

strcpy(ml[1]. str[4], "Zhws"); 1]. n = 5;

strcpy(ml[2]). nombre, "editar"); /*Editar y modificar*/

strcpy(ml[2]). str[0], "Imfor"); /*Información del empleado*/

strcpy(ml[2]). str[1], "Lista de pago"); /*nómina*/

strcpy(ml[2]). str[2], "Shu Tong"); /*Modificar datos fijos como el salario básico*/

ml[2]. n = 3;

strcpy(ml[3]). nombre, "buscar"); /*consulta*/

strcpy(ml[3]). str[0],"京鸟");/*Consulta exacta*/

strcpy(ml[3]). str[1], "Mohu"); /*consulta difusa*/

ml[3]. n = 2;

strcpy(ml[4].nombre, "Tongji"); /*estadísticas*/

strcpy(ml[4].str[0]," pai Xu ");/*Sort*/

strcpy(ml[4].str[1], "Abuelo"); /*Salarios totales de varios tipos*/

strcpy(ml[4].str[2], "Ashuijin"); /*Monto total del impuesto (mes/año)*/

strcpy(ml[4].str[3]," Gzhjigz ");/*Número total de puestos de trabajo y salario medio*/

ml[4]. n = 4;

strcpy(ml[5]). nombre, "DEL");

strcpy(ml[5]). str[0], "一");

strcpy(ml[5]). str[1], " Todos ");

ml[5]. n = 2;

strcpy(ml[6].name, "Ayuda");

strcpy(ml[6].str[0], "Acerca de");

ml[6].

n = 1;

}

/*Mostrar nombre único principal*/

void DrawSelectitem()

{

for(I = 0; iltr; i)

RedText(i, 1, ml[i].name); /*Muestra el nombre del menú principal, la primera letra es roja* /

}

/*Mostrar menú normalmente*/

void RedText(int x, int y, char *z)

{

text background(7);/*Establece el color de fondo en gris claro*/

gotoxy(3 x*10, y);

para ( j = 0; z[j]; j )

{

Si (j==0)

textcolor(rojo);/*primero El las letras son rojas*/

Otras

textcolor (negro /*Establecer en negro*/

cprintf("c ", z[j]) ;/*Nombre del menú de salida*/

}

}

/*Mostrar menú seleccionado*/

void BlackText( int x , int y, char *z)

{

fondo del texto(0 /*Establece el color de fondo en negro*/

color del texto (15); ); /*Establece el color del texto en blanco*/

gotoxy(3 10*x, y /*Coordenadas de posicionamiento*/

cputs(z);/ *Salida); cadena de nombre de menú*/

}

/*Proceso de operación clave*/

Ejecución no válida()

{ gettext (1, 1, 80, 25, savee);

mientras(1)

{

gotoxy(texty, textx);

clave = Tecla BIOS(0); /*Botón Recibir*/

Interruptor (tecla)

{

Caso ALT_B:

caso ESC: DrawMl(0); break; /*mostrar menú desplegable 1*/

case ALT _ M: DrawMl(1); p >

case ALT _ H: DrawMl(2); /*Mostrar menú desplegable 3*/

Control de operación de las teclas de cursor en el chasis: /* *

{

if(textx==3)

textx = 23

textx-;

gotoxy(texty, textx);

}Roto;

Control de operación de las teclas de cursor debajo del chasis: /* *

{

if(textx== 23)

textx = 3;

textx;

gotoxy(texty, textx);

}Roto;

Caso IZQUIERDA: /*Control de operación de la tecla del cursor izquierdo*/

{

if(texty==2)

texty = T-1 ;

texty-;

gotoxy(texty, textx);

}Roto;

Retroceso de mayúsculas y minúsculas: /*Borrar configuración de clave */

{

if(texto =

= 2 amp; amptextx==3)

Continuar;

Otro

{

if (texty!=2) p>

texty-; /* Borrar detalles clave.

Primero elimine el contenido, luego mueva el cursor hacia atrás un espacio*/

Otros

if(texty==2)

{

texty = 78

textx-;

}

gotoxy(texty, textx);

printf(" ");

gotoxy(texty, textx);

}

}Roto; /*Fin de caso 0xe08*/

Caso DERECHO: /* Control de operación de la tecla del cursor derecho*/

{

if(texty==T-1)

texty = 2;

texty ;

gotoxy(texty, textx);

} roto

Espacio entre mayúsculas y minúsculas: /*operación de barra espaciadora*/

{

if(texty==79)

Continuar;

Otros

{

gotoxy(texty , textx ); /*Operación detallada de espacios*/

printf(" ");

texty;

gotoxy(texty, textx);

printf(" ");

texty;

gotoxy(texty, textx);

p>

}

} Roto;

Entrada de caso: /*Ingrese la operación de control*/

{

if (textx==23)

Continuar;

textx;

texty = 2;

gotoxy(texty, textx);

}Roto;

Valor predeterminado: /*Resultado de clave sin control*/

{

if(texty = = 79 amp ; ampTextx==23)/*Sin salida al final* /

Continuar;

Otros

if(texty == 79 amp; amptextx!=23) /*Hasta el final de la línea*/

{

textx;

texty = 2;

}

gotoxy(texty, textx); resultado de salida*/

printf("c ", key);

If(texty==79) /*if texty==79, no se ejecutará*/

Continuar;

Else /*Si la línea no está al final, la ejecución continuará y el cursor avanzará una posición*/

texty ;

}

}

}/*Tirantes para bucles grandes*/

}

/* Función de dibujo de borde*/

void DrawFrame(int l, int u, int r, int d, int tcolor, int bcolor)

{

fondo del texto (bcolor);/*color de fondo*/

color de texto(bcolor);/*color de texto*/

for(I = l;i lt= r ; I ) / *Área de fondo de salida*/

{

for(j = u; j lt= d; j )

{

gotoxy (i, j);

printf("c ", 219 /*Salida de caracteres de fondo*/

}

}

color del texto(tco

lor);/*Color del borde*/

for(I = u 1;I ltd;I) /*Línea de borde de salida en el área de fondo*/

{

gotoxy(l,I);

cprintf("c",179);/*línea vertical*/

gotoxy(r,I);

cprintf("c ", 179);

}

for(I = l 1; i ltr; i )

{

gotoxy(i,u);

cprintf("c",196);/*línea horizontal*/

gotoxy(i,d);

cprintf("c ", 196);

}

gotoxy(l, u);

cprintf("c ", 218); ); /*Esquina superior izquierda*/

gotoxy(r, u);

cprintf("c", 191); /*Esquina superior derecha*/

gotoxy (l, d);

cprintf("c ", 192); /*esquina inferior izquierda*/

gotoxy(r, d);

cprintf ("c ", 217); /*Esquina inferior derecha*/

/* gettext(l 1, u 1, r-1, d-1, save 1); //*Guardar en el área del borde*/

}

/*Mostrar opciones desplegables específicas*/

void DrawMl(integer)

{

gettext(1, 1, 80, 25, guardar); /*Guardar posición oculta*/

BlackText(n, 1, ml[n]. Nombre); /*Cancelar selección Menú principal*/

Marco (3 10*n-1, 2, 3 10*n 9, 3 ml[n]. n, 0, 7); El borde del menú desplegable*/

for(I = 3;ilt3ml[n].n;I)/*Imprimir la opción de menú seleccionada*/

{

Si (i==3)

TextoNegro(n, I, ml[n]). str[I-3]);/*El primer elemento está seleccionado de forma predeterminada*/

Otro

RedText(n, I, ml[n].

str[I-3]);/*El primer carácter de otros elementos se muestra en rojo*/

}

gotoxy(791);

MoveMl (n, 3); /*Control de opciones del menú*/

}

/*Control de opciones del menú, donde n determina los elementos horizontales y x determina las opciones desplegables* /

void MoveMl(int n, int x)

{

int bandera = 1;

mientras(bandera)

{

gotoxy(791);

tecla = tecla BIOS(0); /*botón de recepción*/

gotoxy(791) ;

Interruptor (tecla)

{

Caso ESC: /*Salir del bucle*/

puttext(1, 1, 80, 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/

flag = 0;

Break;

Caso IZQUIERDO: /* Opción para moverse hacia la izquierda* /

puttext(1, 1, 80, 25, save /*Restaurar la apariencia antes de abrir el menú*/

If(n==0); )/*Si queda Mover y cruzar el borde, luego pasar a la última opción */* II * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

DrawMl(6);

Otros

DrawMl(n-1);

bandera = 0; p>Romper;

Caso DERECHA: /*Mover opción a la derecha*/

puttext(1, 1, 80, 25, guardar /*Restaurar la apariencia antes de abrir); el menú */

If(n==6)/*Si te mueves hacia la derecha y más allá del borde, muévete a la primera opción*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * *

DrawMl(0);

Otro

DrawMl(n 1);

flag = 0;

Romper;

Subir caso: /*Mover opciones específicas hacia arriba*/

RedText(n, x , ml[n ]). str[x-3]);/*Fuente de salida roja*/

Si(x==3)/*Mover hacia arriba, mover la tecla hacia abajo*/

x= 3ml[n]. n-1;

Otro

x-;/*Mover al nuevo contenido que se mostrará*/

BlackText(n, x, ml[n] ). str[x-3]);/*Fuente de salida negra*/

flag = 1;

Break;

Músculo de mayúsculas y minúsculas hacia abajo: /*Opciones específicas Mover hacia abajo*/

RedText(n, x, ml[n]). str[x-3]);

If(x==(3 ml[n]).n-1))/*Mover hacia abajo, presione la tecla para ir hacia arriba*/

x = 3;

Otro

x; /*Mover al nuevo contenido para mostrar*/

BlackText(n, x, ml[n ]).

str[x-3]);

flag = 1;

Romper;

Entrada de caso:

puttext(1, 1). , 80, 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/

Introducir (n, x-3) /*Funciones específicas de las opciones del menú*/

bandera = 0;

Romper;

}

gotoxy(791);

}

}

/*Funciones específicas de las opciones del menú*/

Void Enter(int m, int n) /*m menú principal n submenu*/

{

Interruptor (m)

{

Caso 0: Interruptor (n)

{

Caso 0 : xianshw(); roto;

Caso 1: roto;

Caso 2: roto;

Caso 3: día 1(); p>

Caso 4: guardar dep(); savew(); printf("¡Guardar correctamente!");

puttext(1, 1, 80, 25, guardado); /p>

Caso 5: Salir (0); Break;

}Break; /*Salir del sistema*/

Caso 1: Cambiar (n)

{

Caso 0: agregar nuevo(dep); puttext(1, 1, 80, 25, guardar); * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Descanso;

Caso 1: agregar lista(zph); puttext(1, 1, 80, 25, save); /*completar tabla de salarios*/

Caso 2: insertar dep(); / * * * *Agregar nuevo departamento* */

Caso 3:

Caso 4: addzh(); puttext(1, 1, 80, 25, save /*); Agregar nuevas posiciones y títulos * * *

}Roto;

Caso 2: switch(n)

{

Caso 0: changew (zhp);

Caso 1: changep(zhp); puttext(1, 1, 80, 25, save);

Caso 2: clr SCR( ) ; cambioshuju(); puttext(1, 1, 80, 25, guardar roto); p >{

Caso 0: jq search();

Caso 1: mhsearch();

} roto;

Caso 4: Switch (n)

{

Caso 0:

Caso 1:

Caso 2:

Caso tres: ashuijin(); puttext(1, 1, 80, 25, guardar roto);

} roto; )

{

Caso 0: delone(dep, zhp);

Caso 1: delall(dep); p>}Roto;

Caso 6: Interruptor (n)

{

Caso 0: Roto;

}Roto; /p>

}/*Finalizar cambio externo*/

}

Ding Wei no válido (no válido)

p>

{ int a = 3;

gotoxy(T 1, a); cprintf(" nombre: "); cprintf("sexo:");

gotoxy(T 1, a 2); cprintf(" id: ");

gotoxy(T 1, a 3); " CD: ");

gotoxy(T 1, a 4); cprintf(" ag: ");

gotoxy(T 1, a 5); :");

gotoxy(T 1, a 6); cprintf(" DP: ");

gotoxy(T 1, a 7); cprintf(" zw:"

gotoxi(T 1, a 8); cprintf (" ZC: ");

gotoxi(T 1, a 9);

gotoxy(T 1,a 10);cprintf("HP:");

gotoxy(T 1,a 11);cprintf("MB:");

gotoxy(T 1,a 11);cprintf("MB:");

p>

gotoxy(T 1, a 13); cprintf(" lista de pago de: "

gotoxi(T 1, a 14); cprintf(" JB: "); gotoxi(T 10, a 14); cprintf (" pr: "); gotoxy (T 1, a 15); cprintf (" WP: "); gotoxy (T 10, a 15); cprintf(" anuncio: "); gotoxy(T 10, a 16); cprintf(" peso: ");

gotoxy(T 1,a 17);cprintf("ys:");gotoxy (T 10,a 17);cprintf("El:");

gotoxy(T 1,a 18);cprintf("cn:");gotoxy(T 10,a 18);cprintf ("TV:");

gotoxy(T 1,a 19);cprintf("sy:" );

}

Inicio vacío(void ) /*Leer datos básicos*/

{

ARCHIVO * fpint i, j;

Inicio *p, *tail;

if((FP = fopen(" d:\\sal\\zong. dat "," r ")== NULL )

{

printf("No se puede abrir el archivo d:\\sal\\zong.dat");

Salir (-1);

p>

}

fscanf(fp, "dd" , ampclst amp;tvst);

fscanf(fp, "d", ampj);

for(I = 0; iltN amp iltj;i)

fscanf(fp, "s", departamento[I]);

if (iltn) for(I = j;iltn;i) dejar[I][0]= '\0';

fsca

nf(fp, "d", ampj);

for(I = 0;iltN ampampiltj;i)

fscanf(fp, "s",zhchs[ I]);

if (iltn)for(I = j;iltn;i)zhchs[I][0]= ' \ 0 ';

fscanf(fp , " d ", ampj

for (I = 0; i ltN amp amp i ltj; i )

fscanf (fp, " s ", zhws[I]);

if (i ltn) para (I = j; i ltn; i )zhws[I][0]= ' \ 0 '

para (I = 0; iltn;i)

fscanf(fp, "d", ampzh HSP[I]);

for(I = 0;iltn;i)

fscanf(fp, " d ", ampzhwsp[I]);

if((p = malloc(sizeof(departy)))= = NULL)

{

printf(" ¡El pueblo interior no está alquilado!"); exit (-1);

}

read dep(amp; p, FP); /* from file Leer información del departamento*/

headd = p;

headd- gt; izquierda = NULL

headd- gt; derecha = vacío;

headd- gt ; down = NULL

if((p = malloc(sizeof(departy)))= = NULL)

{

printf("El pueblo interior es ¡no alquilado!"); salida (-1);

}

leer dep(amp; p, FP);

tail= p;

cola - gt; derecha = nulo

cola - gt; izquierda = cabeza

cola - gt = NULL

cabeza gt; derecha = cola;

Y (!feof(fp))

{

if((p = malloc(sizeof(departy )))= = NULL)

{

printf("¡No hay alquiler en el interior del pueblo!" salida (-1); p>read dep( amp; p, FP);

cola - gt; derecha = p

p->; izquierda = cola

= p;

cola - gt; derecha = nulo

cola - gt; abajo = NULL

}

fclose( FP );

Regresar;

}

Void saveep(void) /*Guardar información del departamento*/

{

ARCHIVO *fpint I;

Inicio *p;

if((FP = fopen("d:\\sal\\zong.dat","w" ) = = NULL)

{

printf("No se puede abrir el archivo d:\\sal\\zong.dat");

Salir (-1) ;

}

>

fprintf(fp, " 10d10d ", clst, tvst);

for(I = 0; iltN amp start[i][0]!= NULLi

fprintf(fp, "d",I);

for(I = 0;iltn;i)

fprintf(fp, "s", departamento[I ]); putchar(' \ n ');

for(I = 0; i ltN amp ampzhchs[i][0]!= NULLi

fprintf(fp, " d "); , I);

for(I = 0; iltn; i )

fprintf(fp, " s ", zhchs[I]);

for(I = 0; i ltN amp ampzhws[i][0]!= NULLi

fprintf(fp, " d ", I

);

for(I = 0; iltn;i)

fprintf(fp, "s", zhws[I]); putchar('\n');

for (I = 0;iltn;i)

fprintf(fp, "d",zh HSP[I]); putchar('\n');

for(I = 0; iltn; i)

fprintf(fp, "d", zhwsp[I]); putchar('\n');

for (p = headd; p- >derecha! = NULL p = p- gt; derecha)

{writedep(p, FP);}

fclose(FP);

Regresar;

}

Cambios nulosshuju(void) /*Cambiar información fija como el salario básico*/

{

int I;

char ch

textbackground(verde); color de texto(15); clr SCR();

printf("\ nclean cost: 7d", clst);

printf("\ntv cost: 7d", tvst);

printf("\nhas ¿Qué es necesario cambiar? (s/n):);

scanf("1s ", ampch);

if(ch=='y'||ch=='Y ')

p>

{

printf(" \nCosto neto: ");

scanf("d ", ampclst); >printf(" \nCoste de TV: ");

scanf("d", amptvst);

}

Prioridad (abreviatura de prioridad)