Wednesday, December 5, 2012

Practica 13



Problema 1
Inicio plantilla de la funcion void lecturaDatos(T a[10])
i int
for (i=0  to  10  step  i=i+1)
{
Print "numeros[",I,"]="
Read a[i]
}
Fin
Inicio plantilla de la funcion void desplegarDatos (T a[10])
i int
for (i=0  to  10  step  i=i+1)
{
Print "a[",(i+1),"] = ",a[i]
}
Fin
Inicio plantilla de la funcion T sumaValores (T a[10])
{
i int
T suma=0
for (i=0  to  10  step  i=i+1)
{
suma=suma+a[i]
}
return suma
Fin
Inicio plantilla de la funcion void mayorValores (T a [10], T &mayor, int &pos)
mayor=a[0]
pos=0
for (int i=1  to  10  step  i=i+1)
{
if (a[i]>mayor)
{
mayor=a[i]
pos=i+1
}
}
Fin
Inicio
arreglo [10]={8,9,2,3,1,10,5,7,4,6} int
pos1,pos2,may2 int
numeros[10], may1 Real
lecturaDatos(numeros)
Print "Lista de valores flotantes\n"
desplegarDatos (numeros)
Print "\nLa suma total es ",sumaValores(numeros)
mayorValores(numeros,may1,pos1)
Print "El dato mayor es ",may1," en la posicion ",pos1
Print "\nListado de valores enteros \n"
desplegarDatos(arreglo)
Print "\nLa suma total es ",sumaValores(arreglo)
mayorValores(arreglo,may2,pos2)
Print "El dato mayor es ",may2," en la posicion ",pos2
Fin



Problema 2
 Inicio plantilla de la funcion void lecturaDatos(T a[10])
i int
for (i=0  to  10  step  i=i+1)
{
Print "numeros[",I,"]="
Read a[i]
}
Fin
Inicio plantilla de la funcion void desplegarDatos (T a[10])
i int
for (i=0  to  10  step  i=i+1)
{
Print "a[",(i+1),"] = ",a[i]
}
Fin
Inicio plantilla de la funcion T sumaValores (T a[10])
{
i int
T suma=0
for (i=0  to  10  step  i=i+1)
{
suma=suma+a[i]
}
return suma
Fin
Inicio plantilla de la funcion void mayorValores (T a [10], T &mayor, int &pos)
mayor=a[0]
pos=0
for (int i=1  to  10  step  i=i+1)
{
if (a[i]>mayor)
{
mayor=a[i]
pos=i+1
}
}
Fin
Inicio Plantilla de la funcion void menorValores(T a[10],T &menor, int &pos)
 menor=a[0]
 pos=0
 for(int i=1  to  10  step  i=i+1)
 {
 if(a[i]<menor)
{
 menor=a[i]
 pos=i
}
}
Fin
Inicio
enteros[10]={2,6,7,9,1,3,4,5,8,10} int
pos1=0, pos2=0 int
numeros[10],menor=0,may=0 Real
mayor=0,men=0,pmay=0,pmen=0 int
lecturaDatos(numeros)
desplegarDatos(numeros)
Print "La suma total es ",sumaValores(numeros)
Print “\n\n”
mayorValores(numeros,may,pos1)
Print "El dato mayor es ",may," en la posicion ",pos1
menorValores(numeros,menor,pos2)
Print "El dato menor es ",menor," en la posicion ",pos2
Print "\n\nListado de valores enteros \n\n"
desplegarDatos(enteros)
Print "La suma total es ",sumaValores(enteros)
Print  “\n\n”
mayorValores(enteros,mayor,pmay)
Print "El dato mayor es ",mayor," en la posicion ",pmay
menorValores(enteros,men,pmen)
Print "El dato menor es ",men," en la posicion ",pmen
Fin



 Problema 3
 Inicio plantilla de la funcion void leerDatosmatriz(T  m[6][6])
r,c int
for(r=0  to  5  step  r=r+1)
{
for(c=0  to  5  step  c=c+1)
{
Print "m[",r,",",c,"]:"
Read m[r][c]
}
}
m[5][5]=0
Fin
Inicio plantilla de la funcion void desplegarDatosmatriz(T m[6][6])
R,c int
for(R=0  to  5  step  R=R+1)
{
for(c=0  to  5  step  c=c+1)
{
Print  m[R][c],"\t"
}
Print “\n”
}
Fin
Inicio plantilla de la funcion void sumarenglones (T m[6][6])
r,c int
T suma=0
for(r=0  to  5  step  r=r+1)
{
suma=0
for(c=0  to  5  step  c=c+1)
{
suma=suma+m[r][c]
}
m[r][5]=suma
}
Fin
Inicio plantilla de la funcion void sumacolumnas( T m[6][6])
R,c int
T suma=0
for(c=0  to  5  step  c=c+1)
{
suma=0
for(R=0  to  5  step  R=R+1)
{
suma=suma+m[R][c]
m[5][c]=suma
}
}
Fin
Inicio plantilla de la funcion void desplegarMatrizconsumas( T m[6][6])
R,c int
Print "\nDatos y sumas de la matriz \n\n"
for(R=0  to  6  step  R=R+1)
{
for(c=0  to  6  step  c=c+1)
{
Print m[R][c],"\t"
}
Print “\n”
}
}
Fin
Inicio plantilla de la funcion void mayorvalores(T m[6][6],T &mayor,T &pos1,T &pos2)
mayor=m[0][0]
pos1=0
pos2=0
for(int r=0  to  5  step  r=r+1)
{
for(int c=0  to  5  step  c=c+1)
if(m[r][c]>mayor)
{
mayor=m[r][c]
pos1=r
pos2=c
}
}
Print "\nEl mayor es ",mayor," en la posicion [",pos1,",",pos2,"]\n"
Fin
Inicio plantilla de la funcion void menorvalores(T m[6][6],T &menor,T &pos1,T &pos2)
menor=m[0][0]
pos1=0
pos2=0
for(int r=0  to  5  step  r=r+1)
{
for(int c=0  to  5  step  c=c+1)
if(m[r][c]<menor)
{
menor=m[r][c]
pos1=r
pos2=c
}
}
Print "\nEl menor es ",menor," en la posicion [",pos1,",",pos2,"]\n"
Fin
Inicio
matriz[6][6],mayor,menor,pos1,pos2 int
leerDatosmatriz(matriz)
desplegarDatosmatriz(matriz)
sumarenglones(matriz)
sumacolumnas(matriz)
desplegarMatrizconsumas(matriz)
mayorvalores(matriz,mayor,pos1,pos2)
menorvalores(matriz,menor,pos1,pos2)
Fin



 Problema 4
 struct alumno
{
 char noControl[8]
 char nombre[30]
 int calf[4]
};
alumno a[10]
Inicio plantilla de la funcion  void leerDatosAlumno(int n)
 i,j int
 for(i=0  to  n  step  i=i+1)
{
 Read.ignore()
 Print "\nNumero de control: "
 Read.getline(a[i].noControl,8,'\n')
 Read.ignore()
 Print "Nombre Alumno: "
 gets(a[i].nombre)
 for(j=0  to  4  step  j=j+1)
{
 Print "Calificacion ",(j+1),": "
 Read a[i].calf[j]
}
}
Final
Inicio plantilla de la funcion void desplegarDatosAlumno(int n)
 i,j int
 Print "No Control     Nombre            C1 C2 C3 C4         Promedio "
 for(i=0  to  n  step  i=i+1)
{
 float suma=0.0
 Print a[i].noControl,setw(20),a[i].nombre,"\t"
 for(j=0  to  4  step  j=j+1)
{
 Print setw(3),a[i].calf[j]
 suma=suma+a[i].calf[j]
}
 Print "\t",(suma/4.0)
}
Fin
Inicio
 x int
 Print "Numeros de alumnos a registrar: "
 Read x
 leerDatosAlumno(x)
 desplegarDatosAlumno(x)
 Fin



Problema 5
 struct empleado
{
 Id int
 nombre[30] char
 horas int
 tarifaPago real
};
empleado emp[10]

 iniciar plantilla  void  leerDatosEmpleado(int n)
iniciar plantilla  void desplegarDatosEmpleado ( int n)

inicio
x int
Print "Cuantos empleados= "
Read x
leerDatosEmpleado(x)
desplegarDatosEmpleado(x)
fin
inicio
}
Iniciar la plantilla void leerDatosEmpleado( int n)
{
 I int
for(i=0 to n step i++)
{
Print "\nNumero de empleado= "
Read emp[i].id
Read.ignore()
Print "Nombre Empleado= "
read.getline(emp[i].nombre,30,'\n')
Print"Horas trabajadas= "
Read emp[i].horas
Print "Pago por hora= "
Read emp[i].tarifaPago
}
}
Iniciar la plantilla  void desplegarDatosEmpleado( int n)
{
i int
Print "No empleado Nombre             Horas Trabajadas     Pago por hora \n"
for(i=0 to n step i++)
{
Printemp[i].id,setw(30),emp[i].nombre,setw(10),emp[i].horas,setw(20),emp[i].tarifaPago
}

}
Fin



Problema 6
Inicio
Iniciar la plantilla  void LecturaDatos(T m[5][5])
Iniciar la plantilla  void desplegarDatos(T m[5][5])
Iniciar la plantilla  void sumaRenglones(T m[5][5],T sr[5])
Iniciar la plantilla  void sumaColumnas(T m[5][5],T sc[5])
Iniciar la plantilla  void desplegarSumaMayorRenglones(T sr[5])
 Iniciar la plantilla  void desplegarSumaMayorColumnas(T sc[5])
inicio
a[5][5],renglones [5],columnas[5] int
LecturaDatos(a)
desplegarDatos(a)
sumaRenglones(a,renglones)
sumaColumnas(a,columnas)
desplegarSumaMayorRenglones(renglones)
desplegarSumaMayorColumnas(columnas)
Fin
Inicio
 Iniciar la plantilla  void LecturaDatos(T m[5][5])
{
 r,c int
for(r=0 to 5 step r+1)
{
for(c=0to 5 step c+1)
{
Print "Matriz[",r,",",c,"]= "
Read m[r][c]
}
}
}
Iniciar la plantilla  void desplegarDatos(T m[5][5])
{
 r,c int
Print "Listado de la matriz\n\n"
for(r=0 to 5 step r+1)
{
for(c=0 to 5 step c+1)
{
Print m[r][c],"\t"
}
Print endl
}
}
 Iniciar la plantilla  void sumaRenglones(T m[5][5],T sr[5])
{
T suma
 r,c int
for(r=0 to 5 step r+1)
{
suma=0
for(c=0 to 5 step c+1)
{
suma=suma+m[r][c]
}
sr[r]=suma
}
}
Iniciar la plantilla  void sumaColumnas(T m[5][5], T sc[5])
{
T suma
 r,c int
for(c=0 to 5 step c+1)
{
suma=0
for(r=0 to  5 step r+1)
{
suma=suma+m[r][c]
}
sc[c]=suma
}
}
 Iniciar la plantilla  void desplegarSumaMayorRenglones(T sr[5])
{
 I int
T mayor=sr[0]
 pos=0 int
Print "Listado de suma de renglones \n\n"
for(i=0 to 5 step i+1)
{
Print "Renglon ",I," = ",sr[i]
if(sr[i]>mayor)
{
mayor=sr[i]
pos=i
}
}
Print "El renglon ",pos," Tiene el suma mayor ",mayor
}
 Iniciar la plantilla  void desplegarSumaMayorColumnas(T sc[5])
{
 I int
T mayor=sc[0]
 pos=0 int
Print "Listado de suma de columnas\n\n"
for(i=0 to 5 step i+1)
{
Print"Columna ",I," = ",sc[i]
if(sc[i]>mayor)
{
mayor=sc[i]
pos=i
}
}
Print "La columna ",pos," Tiene la suma mayor ",mayor
}



Problema 7
Iniciar la plantilla  void salida_datos_file(int n)
{
ofstream salida
salida.open("nombres.txt")
 I int
 name[30] char
for(i=1 to n step i+1)
{
Print "Nombre ",I," =? "
gets(name)
salida,name
}
salida.close()
}
Fin
Iniciar la plantilla void agregar_datos_file()
{
ofstream salida
salida.open("C://Datos//nombres.txt",ios::app)
 I int
 name[30],sigue char
do
{
fin
Iniciar la plantilla  void entrada_datos_file()
 {
 ifstream entrada
 entrada.open("nombres.txt")
  name[30] char
 Print "\nListado de nombre\n"
 entrada.getline(name,30)
 cout,name
 while(!entrada.eof())
 {
 entrada.getline(name,30)
 cout,name
 }
 entrada.close()
 }
Fin
 Iniciar la plantilla  void almacena_calif(int n)
 {
 ofstream salida
 salida.open("calificaciones.txt")
  r,c,calf int
 for(r=0 to n step r+1)
 {
 Print "Introduce calificaciones del estudiante ",(r+1)
 for(c=0 to 6 step c+1)
 {
 Print "Calificacion ",(c+1),"=?"
 Read calf
 Salida calf," "
 }
 Salida “\n”
 }
 salida.close()
 }
Fin
 Iniciar la plantilla  void leer_archivo_calif(int a[20][6],int promedio[20],int n)
 {
 ifstream entrada
 entrada.open("calificaciones.txt")
  r,c,suma int
 for(r=0 to n step r+1)
 {
 suma=0
 for(c=0 to 6 step c+1)
 {
 Entrada,a[r][c]
 Print a[r][c],"\t"
 suma=suma+ a[r][c]
 }
 promedio[r]=suma/6
 Print promedio[r]
 }
 entrada.close()
 }
Fin
Inicio void menú()
Print "\nMenu de opciones\n "
 Print"\n1)Agregar Nombres Alumnos\n "
 Print "\n2)Listado Nombres Alumnos\n "
 Print "\n3)Agregar Calificaciones Alumnos\n "
 Print "\n4)Listado de Calificaciones Alumno\n "
 Print "\n5)Fin de programa\n "
 Print "\nElige Opcion ==> "
 }
Fin
inicio
 n,opcion=0 int
  c[20][6],p[20] int
 Print "Cantidad de alumnos: "
 Read n
 do
 {
 clrscr()
 menu()
 read opcion
 switch(opcion)
 {
 case 1: salida_datos_file(n)
                                                fin
                                                break
 case 2: entrada_datos_file()
                                                fin
                                                break
 case 3: almacena_calif(n)
                                                break
 case 4: Print "Listado de calificaciones Alumnos\n\n"
                                                leer_archivo_calif(c,p,n)
                                                Fin
                                                break
 case 5: Print"\n\n FIN PROGRAMA\n"
                                                break
 default: Print "error en opcion\n"
 }
 }
 while(opcion!=5)
 Fin
 }



 Problema 8
 Iniciar la plantilla  void agregar_datos_file()
{
ofstream salida
salida.open("C://Datos//grupo.txt",ios::app)
 j,calf int
 name[30],sigue char
 calif int
do
{
 Print " Nombre  = ? "
 gets(name)
 salida,name
 for(j=1 to 4 step j++)
 {
 Print "Calificacion ",j," : "
 Read calf
 Salida,calf
 }
 Print "\n\nDeseas Registrar otro alumno s/n ? "
 Read sigue
  }
  while(sigue=='s'  && sigue=='S')
 salida.close()
 }
Fin
 Iniciar la plantilla  void listado_datos_file()
 {
  i,suma=0,promedio int
 ifstream entrada
 entrada.open("C://Datos//grupo.txt")
  nombre[30] char
  c1 int
 clrscr()
 Print "nombre alumno        c1   c2  c3  c4  Promedio ",endl
 entrada.getline(nombre,30)
 while(entrada.good())
 {
 Print setw(20),nombre
 suma=0
 for(i=1 to 4 step i+1)
 {
  Entrada c1
  Print setw(4),c1
  suma=suma + c1
  }
  promedio=suma/4
  Print setw(5),promedio
  entrada.ignore()
  entrada.getline(nombre,30)
  }
  entrada.close()
   }
Fin
  Iniciar la plantilla  void menu()
  {
  Print "1)Agregar datos alumno\n"
  PRint "2)Listado de alumnos\n "
  Print "3)Fin de programa\n"
  Print "Elige opcion ==> "
  }
Fin
Inicio
 Opcion int
 do
 {
 clrscr()
 menu()
 Read opcion
 switch(opcion)
 {
 case 1: agregar_datos_file()
    break
 case 2: listado_datos_file()
    Fin
         break
case 3: Print "\n\nFin del programa \n\n"
   Fin
         break
default: Print "Error en opcion "
   break
}
}
while(opcion !=3)
Fin




 Problema 9
Inicio
struct producto
{
 noProd int
 descrip[30] char
 precio real
 cantidad int
};
producto Registro
FILE *alias
 Inicio de la pantilla void ALTA_SECUENCIAL()
Inicio de la pantilla void CONSULTA_SECUENCIAL(void)
Inicio de la pantilla void LISTADO_SECUENCIAL(void)
Inicio de la pantilla void MODIFICACION_SECUENCIAL(void)
Inicio de la pantilla void BAJA_LOGICA_SECUENCIAL(void)
Inicio de la pantilla void BAJA_FISICA_SECUENCIAL(void)
int menu()
fin
Inicio
 opc int
  do
  {
  clrscr()
  opc=menu()
  switch(opc)
  {
  case 1:
      ALTA_SECUENCIAL()
        break
  case 2:
      CONSULTA_SECUENCIAL()
         break
  case 3:
     LISTADO_SECUENCIAL()
         break
  case 4: MODIFICACION_SECUENCIAL();
     break;
  case 5 :  BAJA_LOGICA_SECUENCIAL()
      break
  case 6:    BAJA_FISICA_SECUENCIAL()
      break

  case 7: Print "\n\nFinal programa "
     break
  default: Print "\nError en opcion"
  }
  }
  while(opc !=7)
Fin
 Inicio de la pantilla void ALTA_SECUENCIAL()
{
 no_prod int  // Variable local para el numero de producto
clrscr()
Print "\n\rALTAS DE REGISTROS DE PRODUCTOS"
alias=fopen("C:\\datos\\PRODUCTO.SEC","rb+") // Intenta abrir el archivo
// en modo de lectura/escritura
if(alias==NULL)
alias=fopen("c:\\datos\\PRODUCTO.SEC","wb"); // Crea el archivo en caso de no
// existir
Print"\n\n\n\rNumero de producto: "
Read  no_prod
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
// archivo
{
if(Registro.noProd==no_prod)
{
cout << "\n\n\n\rRegistro duplicado !!!";
fclose(alias)
FIN
Inicio
fread(&Registro,sizeof(Registro),1,alias)
}
PRint "\n\rDescripcion: "
Read (Registro.descrip)
Print "\n\rCantidad : "
 read Registro.cantidad
Print  "\n\rPrecio : "
readRegistro.precio
Registro.noProd=no_prod
fwrite(&Registro,sizeof(Registro),1,alias) // Grabar el Registro
fclose(alias) // Cierra el archivo
Print "\n\n\n\rProducto registrado !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio de la pantilla  void CONSULTA_SECUENCIAL(void)
{
 no_prod int
clrscr()
Print "\n\rCONSULTA DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL)
{
Print"\n\n\n\rNo existe el archivo !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>;
Fin
I nicio
Print "\n\n\n\rNumero de producto: " read  no_prod
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias))
{
if(Registro.noProd==no_prod)
{
Print "\n\rNo Prod Descripcion Cantidad Precio "
Print "\n\r----------------------------------------------------\n\n"
PrintRegistro.noProd,setw(20),Registro.descrip,setw(10),Registro.cantidad,setw(10),Registro.precio
fclose(alias)
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
fread(&Registro,sizeof(Registro),1,alias)
}
Print  "\n\rNo se encuentra ese registro !!!"
fclose(alias) // Cierra el archivo
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
 Fin
Inicio de la pantilla void LISTADO_SECUENCIAL(void)
{
clrscr()
Print  "\n\rLISTADO DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL)
{
Print  "\n\n\n\rNo existe el archivo !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
Print  "\n\rNo Prod Descripcion Cantidad Precio "
Print "\n\r-------------------------------------------------------------------\n\n"
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
PrintRegistro.noProd,setw(20),Registro.descrip,setw(10),Registro.cantidad,setw(10),Registro.precio
fread(&Registro,sizeof(Registro),1,alias)
}
fclose(alias); // Cierra el archivo
PRint "\n\r------------------------------------------------------------------\n\n"
Print "\n\rFin del listado !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
int menu()
{
 opcion int
Print "\n\n1)alta de producto "
Print"\n2)Consulta de producto"
Print"\n3)Listado de productos"
Print"\n4)Modificar datos de productos"
PRint "\n5)Baja Logica de productos"
Print"\n6)Baja Fisica de productos”
Print"\n7)Salida Programa"
Print"\n\nSelecciona opcion = ?  "
Read opcion
return opción
 Fin
Inicio de la pantilla void MODIFICACION_SECUENCIAL(void)
{
 no_prod int // Variable local para el numero de producto que desea
//modificar
clrscr()
Pritn "\n\rMODIFICACION DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de lectura/escritura
if(alias==NULL) // Valida la existencia del archivo
{
Print "\n\n\n\rNo existe el archivo !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
Print  "\n\n\n\rNumero de producto: "   read  no_prod
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
if(Registro.noProd==no_prod)
{
Print  "\n\rNo Prod Descripcion Cantidad Precio \n\n"
Print  "\n\r--------------------------------------------------------------\n\n"
PrintRegistro.noProd,setw(20),Registro.descrip,setw(10),Registro.cantidad,setw(10),Registro.precio
Print "\n\n\n\rAnote los nuevos datos ..."
Print "\n\rDescripcion: "  reads(Registro.descrip)
Print "\n\rCantidad : “read Registro.cantidad
Print "\n\rPrecio : " read Registro.precio
// Es necesario reposicionar el apuntador del archivo al principio
//del
// registro que desea modificar, ya que al leer un registro, el
// apuntador se posiciona en el registro siguiente
// La funcion ftell(alias) devuelve la posicion donde se encuentra
// el apuntador
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)
fwrite(&Registro,sizeof(Registro),1,alias) // Graba el registro
// con los nuevos campos
fclose(alias) // Cierra el archivo
Print "\n\n\n\rRegistro modificado !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
fread(&Registro,sizeof(Registro),1,alias)
}
Print "\n\rNo se encuentra ese registro !!!"
fclose(alias)  // Cierra el archivo
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio de la pantilla void BAJA_LOGICA_SECUENCIAL(void)
{
 no_prod int // Variable local para el numero de producto que desea
//eliminar
 op char //Variable local
clrscr()
Print  "\n\rBAJAS LOGICAS DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de lectura/escritura
if(alias==NULL) // Valida la existencia del archivo
{
Print "\n\n\n\rNo existe el archivo !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
PRint "\n\n\n\rNumero de producto: " read  no_prod
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del
//archivo
{
if(Registro.noProd==no_prod)
{
PRint "\n\rNo Prod Descripcion Cantidad Precio "
Print "\n\r---------------------------------------------------------------\n\n"
PrintRegistro.noProd,setw(20),Registro.descrip,setw(10),Registro.cantidad,setw(10),Registro.precio
Registro.noProd=0
strcpy(Registro.descrip,"")
Registro.cantidad=0
Registro.precio=0.0
do {
Print"\n\n\rEsta seguro que desea borrarlo? [S/N] ---> "
op=toupper(getche())
}while(op!='S' && op!='N')
if(op=='S')
{
// Es necesario reposicionar el apuntador del archivo al principio del
// registro que desea modificar, ya que al leer un registro, el
// apuntador se posiciona en el registro siguiente
// La funcion ftell(alias) devuelve la posicion donde se encuentra
// el apuntador
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)
fwrite(&Registro,sizeof(Registro),1,alias) // Graba el registro
// con los nuevos campos
Print "\n\n\n\rRegistro eliminado !!!"
}
fclose(alias) // Cierra el archivo
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
fread(&Registro,sizeof(Registro),1,alias)
}
Print "\n\rNo se encuentra ese registro !!!"
fclose(alias) // Cierra el archivo
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio de la pantilla void BAJA_FISICA_SECUENCIAL(void)
{
FILE *temporal //Declaracion local de una variable para controlar el
// archivo temporal
clrscr()
Print "\n\rBAJAS FISICAS DE REGISTROS DE PRODUCTOS"
alias=fopen("C:\\datos\\PRODUCTO.SEC","rb") // Intenta abrir el archivo
//PRODUCTO.SEC
// en modo de solo lectura
if(alias==NULL) // Valida la existencia del archivo
{
Print "\n\n\n\rNo existe el archivo !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin
Inicio
temporal=fopen("C:\\datos\\TEMPORAL.TMP","wb") // Crea el archivo TEMPORAL.TMP
fread(&Registro,sizeof(Registro),1,alias)
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias)) // Ciclo mientras no se encuentre el final del archivo
{
if(Registro.noProd!=0)
fwrite(&Registro,sizeof(Registro),1,temporal)
// Graba el registro valido en el archivo temporal
fread(&Registro,sizeof(Registro),1,alias)
}
fcloseall() // Cierra todos los archivos abiertos
remove("C:\\datos\\PRODUCTO.SEC") //Elimina el archivo original
rename("C:\\datos\\TEMPORAL.TMP","C:\\datos\\PRODUCTO.SEC")
//Renombra el archivo temporal con el nombre del archivo original
Print "\n\n\n\rArchivo compactado !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"
Fin