sábado, 15 de diciembre de 2012

Tarea 5 unidad 3



  Cuestionario del capitulo 5 del libro "c++ para ingenieria y ciencias"

1. ¿Que cosas se necesitan para almacenar y recuperar datos fuera de un programa en C++?
 Un archivo y un objeto de flujo de archivos
2-¿Que es un archivo?
 Es una coleccion de datos almacenados juntos bajo un nombre comun, por lo general en un disco, cinta magnetica o CD-ROM.

3-¿De que forma se almacena un archivo en un medio externo como un disco?
De forma fisica.

4-¿Cada archivo tiene un nombre de archivo unico conocido como...?
Nombre externo del archivo
5-¿Que es el nombre externo de archivo?
Es la manera en que es conocido el archivo por el sistema operativo.

6.¿Qué es un archivo de flujo?
 Es una ruta de transmisión unidireccional utilizada para conectar un archivo almacenado en un dispositivo físico,como un disco o un CD-ROM.

7.¿Cómo se le conoce al flujo de archivo que envía o escribe datos?
Se conoce como flujo de archivo de salida.

8.¿Cuál es la descripción del método dail?
Devuelve un valor booleano verdadero  o el archivo no se ha abierto con éxito?

9.¿Cuál es la descripción de método  wif()?
Devuelve un valor booleano verdadero o se ha invertido leer más allá de final de archivo.

10. ¿Con que método se cierra un archivo?
Un archivo se cierra usando el método close ()

11. ¿Qué función tiene el método close ()?
Este método rompe la conexión entre el nombre entero del archivo y el objeto de flujo de archivo, le cual puede ser usado por otro archivo.

12. ¿De que depende el almacenamiento real de caracteres en el archivo?
Depende de los códigos de caracteres usados por la computadora

 13. Que permite el uso de un codigo de caracteres? A un procesador de palabras o a un editor de texto desplegar los archivos de modo que puedan ser leidos
14-¿Cual es la ventaja de los archivos binarios? El que son mas compactos y usan menos espacio al almacenarlos

15.¿Como se le conoce al flujo de archivos que recibe o lee datos de un archivo a un programa? Flujo de archivos de entrada

16. ¿Con que metodo se cierra un archivo?
Con el metodo close()


17. ¿Como se declaran los objetos de flujo de archivo de entrada y salida?
Archivo de Entrada (ifstream)
Archivo de Salida (ofstream)

18.¿Qué indica cuando el método fail() devuelve un valor booleano?
Indica que la apertura fallo

19. ¿Qué un objeto de archivo físico?
Es un flujo que conecta a un dispositivo de hardware como teclado, pantalla o impresora.

20. ¿A que se le llama archivo estándar de entrada?
El dispositivo físico asignado a su programa para la instrucción de datos

Problema 10 
a).
Pseudocodigo: 
Inicio
int main()
{
string nombre_archivo="datos.dat" 
ofstream archivo_sal 
archivo_sal.open(nombre_archivo.c_str()) 
if (archivo_sal.fail())
{
print "el archivo no  habrio con exito"
exit(1) 
}
archivo_sal , setiosflags(ios::fixed) , setiosflags(ios::showpoint) , setprecision(3) 
print "Nombre" , "      " , "   Tarifa" , "  " , "Horas"
print "-----------------------------"
print "Callaway,G." , "  " , "6.00" , "  " , "40" , "    "
print "Hanson,P." , "  " , "5.00" , "  " , "48"
print "Lasard,D." , "  " , "6.50" , "  " , "35"
print "Stillman,W." , "  " , "8.00" , "  " , "50"
archivo_sal , "Nombre" , "      " , "   Tarifa" , "  " , "Horas"
archivo_sal , "-----------------------------"
archivo_sal , "Callaway,G." , "  " , "6.00" , "  " , "40" , "    "
archivo_sal , "Hanson,P." , "  " , "5.00" , "  " , "48"
archivo_sal , "Lasard,D." , "  " , "6.50" , "  " , "35"
archivo_sal , "Stillman,W." , "  " , "8.00" , "  " , "50"
archivo_sal.close() 
getch() 
return 0 
}
 Fin
b).

Pseudocodigo:

inicio
int main()
{
string nombre_archivo="datos.dat" 
ofstream archivo_sal 
archivo_sal.open(nombre_archivo.c_str()) 
if (archivo_sal.fail())
{
print "el archivo no  habrio con exito"
exit(1) 
}
archivo_sal , setiosflags(ios::fixed) , setiosflags(ios::showpoint) , setprecision(3) 


print "Nombre" , "      " , "   Tarifa" , "  " , "Horas" , "  " , "Pago bruto" , "  " , "Pago de tiempo extra" , "  " , "Pago regular"
print "-----------------------------------------------------------------------------"
print "Callaway,G." , "  " , "6.00" , "  " , "40" , "    " , (40*6) , "                        " , (0) , "               " , (40*6)
print "Hanson,P." , "  " , "5.00" , "  " , "48" , "       " , (48*1.5 + 48*5) , "                     " , 48*1.5 , "      " , 48*5
print "Lasard,D." , "  " , "6.50" , "  " , "35" , "         " , (35*6.50) , "                  " , 0 , "                  " , 35*6.50
print "Stillman,W." , "  " , "8.00" , "  " , "50" , "     " , (50*1.5 + 50*8.0) , "                  " , 50*1.5 , "      " , 50*8.0

archivo_sal , "Nombre" , "      " , "   Tarifa" , "  " , "Horas"
archivo_sal , "-----------------------------"
archivo_sal , "Callaway,G." , "  " , "6.00" , "  " , "40" , "    "
archivo_sal , "Hanson,P." , "  " , "5.00" , "  " , "48"
archivo_sal , "Lasard,D." , "  " , "6.50" , "  " , "35"
archivo_sal , "Stillman,W." , "  " , "8.00" , "  " , "50"


archivo_sal.close() 
}
Fin


viernes, 14 de diciembre de 2012

Practica 13

Problema 1

Pseudocodigo:




Inicio.

registro producto

 {

 noProd int

 descrip[30] char

 precio real

 cantidad int

 }

 producto Registro

 FILE*alias



funcion  void ALTA_SECUENCIAL()

 {

 no_prod int

 clrscr()

 Print "\n\rALTAS DE REGISTROS DE PRODUCTOS"

 alias=fopen("c:\\Datos\\PRODUCTO.SEC","rb+")

 if(alias==NULL)

 alias=fopen("c:\\Datos\\PRODCTO.SEC","wb")

 Print "\n\n\n\rNumero de producto:"  Read no_prod;

 fread(&Registro,sizeof(Registro),1,alias)

 while(!feof(alias))

 {

 if(Registro.noProd==no_prod)

 {

 Print "\n\n\n\rRegistro duplicado!!!"

 fclose(alias)



 }

 fread(&Registro,sizeof(Registro),1,alias)

 }

 Print "\n\rDescripcion:"  gets(Registro.descrip)

 Print "\n\rCantidad:"  Read  Registro.cantidad

 Print "\n\rPrecio:" Read  Registro.precio

 Registro.noProd=no_prod

 fwrite(&Registro,sizeof(Registro),1,alias)

 fclose(alias)

 Print "\n\n\n\rProducto registrado!!!"

 Print "\n\r<<<Oprima cualquier tecla para continuar >>>   "



 }

Funcion  void CONSULTA_SECUENCIAL(void)

 {

  no_prod int 

 clrscr()

 Print "\n\rCONSULTA DE REGISTROS DE PRODUCTOS"

 alias=fopen("c:\\Datos\\PRODUCTOS.SEC","rb")

 if(alias==NULL)

 {

 Print "\n\n\n\rNo existe el archivo!!!"

 Print "\n\r<<<Oprima cualquier tecla para continuar>>>"



 }

 Print "\n\n\n\rNumero de producto:" Read  no_prod;

 while(!feof(alias))

 {

 if(Registro.noProd==no_prod)

 {

 Print "\n\rNo Prod Descripcion Cantidad precio"

Print "\n\r------------------------------------------------------------\n\n"

Print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio

fclose(alias)

Print "\n\r<<< Oprima cualquier tecla para continuar>>>"



}

fread(&Registro,sizeof(Registro),1,alias)

}

Print "\n\rNo se encuentra ese registro !!!"

fclose(alias)

Print "\n\r<<<Oprima cualquier tecla para continuar>>>"



}

funcion  void LISTADO_SECUENCIAL(void)

{

clrscr()

Print "\n\rLISTADO DE REGISTRO DE PRODUCTOS"

alias=fopen("c:\\Datos\\PRODUCTO.SEC","rb")

if(alias==NULL)

{

Print "\n\n\n\rNo existe el archivo!!!"

Print "\n\r<<< Oprima cualquier tecla para continuar>>>"



}

Print "\n\rNo Prod Descripcion Cantidad Precio"

Print "\n\r------------------------------------------\n\n"

fread(&Registro,sizeof(Registro),1,alias);

while(!feof(alias))

{

Print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio

fread(&Registro,sizeof(Registro),1,alias)

}

fclose(alias)

Print "\n\r-----------------------------------------------------------------\n\n"

Print "\n\rFin del listado!!!"

Print "\n\r<<<Oprima cualquier tecla para continuar>>>"



}

menu() int 

{

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)Salida programa"

Print "\n\nSeleccioa opcion=?"

Read opcion

return opcion

}

funcion void MODIFICACION_SECUENCIAL(void)

 {

 no_prod int 

 clrscr()

 Print "\n\rMODIFICACION DE REGISTROS DE PRODUCTOS"

 alias=fopen("c:\\Datos\\PRODUCTO.SEC","rb+")

 if(alias==NULL)

 {

 Print "\n\n\n\r No existe el archivo!!!"

 Print "\n\r<<< Oprima cualquier tecla para continuar>>>"


 }

 Print "\n\n\n\rNumeros de producto:" Read no_prod

 fread(&Registro,sizeof(Registro),1,alias)

 while(!feof(alias))

 {

 if(Registro.noProd==no_prod)

 {

 Print "\n\rNo prod descripcion Cantidad precio\n\n"

 Print "\n\r--------------------------------------------\n\n"

 Print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio

 Print "\n\n\n\rAnote los nuevos datos..."

 Print "\n\rDescripcion:";gets(Registro.descrip)

 Print "\n\rCantidad:"; cin>>Registro.cantidad

 Print "\n\rprecio:"; cin>>Registro.precio

 fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)

 fwrite(&Registro,sizeof(Registro),1,alias)

 fclose(alias)

 Print "\n\n\n\rRegistro modificado!!!"

 Print "\n\r<<< Oprima cualquier tecla para continuar>>>"



 }

 fread(&Registro,sizeof(Registro),1,alias)

 }

 Print "\n\rNo se encuentra ese registro!!!"

 fclose(alias)

 Print "\n\r<<<Oprima cualquier tecla para continuar>>>"


 }

  main() int 



{

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: Print "\n\nFinal programa"

break;

default: Print "\nError en opcion"

 }

}



while(opc !=5)

Fin.



Problema 2.

Pseudocodigo:



Inicio.

registro producto

 {

 noProd int

 descrip[30] char

 precio real

 cantidad int

 }

 producto Registro

 FILE*alias



funcion  void ALTA_SECUENCIAL()

 {

 no_prod int

 clrscr()

 Print "\n\rALTAS DE REGISTROS DE PRODUCTOS"

 alias=fopen("c:\\Datos\\PRODUCTO.SEC","rb+")

 if(alias==NULL)

 alias=fopen("c:\\Datos\\PRODCTO.SEC","wb")

 Print "\n\n\n\rNumero de producto:"  Read no_prod;

 fread(&Registro,sizeof(Registro),1,alias)

 while(!feof(alias))

 {

 if(Registro.noProd==no_prod)

 {

 Print "\n\n\n\rRegistro duplicado!!!"

 fclose(alias)



 }

 fread(&Registro,sizeof(Registro),1,alias)

 }

 Print "\n\rDescripcion:"  gets(Registro.descrip)

 Print "\n\rCantidad:"  Read  Registro.cantidad

 Print "\n\rPrecio:" Read  Registro.precio

 Registro.noProd=no_prod

 fwrite(&Registro,sizeof(Registro),1,alias)

 fclose(alias)

 Print "\n\n\n\rProducto registrado!!!"

 Print "\n\r<<<Oprima cualquier tecla para continuar >>>   "



 }

Funcion  void CONSULTA_SECUENCIAL(void)

 {

  no_prod int 

 clrscr()

 Print "\n\rCONSULTA DE REGISTROS DE PRODUCTOS"

 alias=fopen("c:\\Datos\\PRODUCTOS.SEC","rb")

 if(alias==NULL)

 {

 Print "\n\n\n\rNo existe el archivo!!!"

 Print "\n\r<<<Oprima cualquier tecla para continuar>>>"



 }

 Print "\n\n\n\rNumero de producto:" Read  no_prod;

 while(!feof(alias))

 {

 if(Registro.noProd==no_prod)

 {

 Print "\n\rNo Prod Descripcion Cantidad precio"

Print "\n\r------------------------------------------------------------\n\n"

Print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio

fclose(alias)

Print "\n\r<<< Oprima cualquier tecla para continuar>>>"



}

fread(&Registro,sizeof(Registro),1,alias)

}

Print "\n\rNo se encuentra ese registro !!!"

fclose(alias)

Print "\n\r<<<Oprima cualquier tecla para continuar>>>"



}

funcion  void LISTADO_SECUENCIAL(void)

{

clrscr()

Print "\n\rLISTADO DE REGISTRO DE PRODUCTOS"

alias=fopen("c:\\Datos\\PRODUCTO.SEC","rb")

if(alias==NULL)

{

Print "\n\n\n\rNo existe el archivo!!!"

Print "\n\r<<< Oprima cualquier tecla para continuar>>>"



}

Print "\n\rNo Prod Descripcion Cantidad Precio"

Print "\n\r------------------------------------------\n\n"

fread(&Registro,sizeof(Registro),1,alias);

while(!feof(alias))

{

Print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio

fread(&Registro,sizeof(Registro),1,alias)

}

fclose(alias)

Print "\n\r-----------------------------------------------------------------\n\n"

Print "\n\rFin del listado!!!"

Print "\n\r<<<Oprima cualquier tecla para continuar>>>"



}

menu() int 

{

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)Salida programa"

Print "\n\nSeleccioa opcion=?"

Read opcion

return opcion

}

funcion void MODIFICACION_SECUENCIAL(void)

 {

 no_prod int 

 clrscr()

 Print "\n\rMODIFICACION DE REGISTROS DE PRODUCTOS"

 alias=fopen("c:\\Datos\\PRODUCTO.SEC","rb+")

 if(alias==NULL)

 {

 Print "\n\n\n\r No existe el archivo!!!"

 Print "\n\r<<< Oprima cualquier tecla para continuar>>>"


 }

 Print "\n\n\n\rNumeros de producto:" Read no_prod

 fread(&Registro,sizeof(Registro),1,alias)

 while(!feof(alias))

 {

 if(Registro.noProd==no_prod)

 {

 Print "\n\rNo prod descripcion Cantidad precio\n\n"

 Print "\n\r--------------------------------------------\n\n"

 Print Registro.noProd , setw(20) , Registro.descrip , setw(10) , Registro.cantidad , setw(10) , Registro.precio

 Print "\n\n\n\rAnote los nuevos datos..."

 Print "\n\rDescripcion:";gets(Registro.descrip)

 Print "\n\rCantidad:"; cin>>Registro.cantidad

 Print "\n\rprecio:"; cin>>Registro.precio

 fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)

 fwrite(&Registro,sizeof(Registro),1,alias)

 fclose(alias)

 Print "\n\n\n\rRegistro modificado!!!"

 Print "\n\r<<< Oprima cualquier tecla para continuar>>>"



 }

 fread(&Registro,sizeof(Registro),1,alias)

 }

 Print "\n\rNo se encuentra ese registro!!!"

 fclose(alias)

 Print "\n\r<<<Oprima cualquier tecla para continuar>>>"


 }

  main() int 



{

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: Print "\n\nFinal programa"

break;

default: Print "\nError en opcion"

 }

}



while(opc !=5)



funcion void BAJA_LOGICA_SECUENCIAL(void)
{
no_prod int 
op char
clrscr()
Print  "\n\rBAJAS LOGICAS DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb+")
if(alias==NULL) 
{
Print  "\n\n\n\rNo existe el archivo !!!"
Print  "\n\r<<< Oprima cualquier tecla para continuar >>>"

}
Print  "\n\n\n\rNumero de producto: " Rad  no_prod
fread(&Registro,sizeof(Registro),1,alias)
{
if(Registro.noProd==no_prod)
{
Print  "\n\rNo Prod Descripcion Cantidad Precio "
Print  "\n\r---------------------------------------------------------------\n\n"
Print Registro.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')
{
fseek(alias,ftell(alias)-sizeof(Registro),SEEK_SET)
fwrite(&Registro,sizeof(Registro),1,alias); 
Print  "\n\n\n\rRegistro eliminado !!!"
}
fclose(alias)
Print  "\n\r<<< Oprima cualquier tecla para continuar >>>"

}
fread(&Registro,sizeof(Registro),1,alias)
}
Print  "\n\rNo se encuentra ese registro !!!"
fclose(alias)
Print  "\n\r<<< Oprima cualquier tecla para continuar >>>"
}

funcion  void BAJA_FISICA_SECUENCIAL(void)
{
FILE *temporal
clrscr()
Print  "\n\rBAJAS FISICAS DE REGISTROS DE PRODUCTOS" alias=fopen("C:\\datos\\PRODUCTO.SEC","rb"); 
if(alias==NULL) 
{
Print  "\n\n\n\rNo existe el archivo !!!"
Print "\n\r<<< Oprima cualquier tecla para continuar >>>"

}
temporal=fopen("C:\\datos\\TEMPORAL.TMP","wb"); 
fread(&Registro,sizeof(Registro),1,alias)

while(!feof(alias)) 
{
if(Registro.noProd!=0)
fwrite(&Registro,sizeof(Registro),1,temporal)

fread(&Registro,sizeof(Registro),1,alias)
}
fcloseall() 
remove("C:\\datos\\PRODUCTO.SEC")
rename("C:\\datos\\TEMPORAL.TMP","C:\\datos\\PRODUCTO.SEC")
Print  "\n\n\n\rArchivo compactado !!!"
Print  "\n\r<<< Oprima cualquier tecla para continuar >>>"
}

fin.

Problema 3.


Pseudocodigo:


Inicio
void agregar_datos_file()
{
ofstream salida
salida.open("C://Datos//grupo.txt",ios::app)
int j,calf
char name[30],sigue\
Int calif
do
{
print " Nombre = ? "
gets(name)
salida , name
for(j=1 j<=4 j++)
{
print "Calificacion " , j , " : "
read calf
salida , calf
}
print " Deseas Registrar otro alumno s/n ? "
read sigue
}
while(sigue=='s' || sigue=='S')
salida.close()
}
void listado_datos_file()
{
int i,suma=0,promedio
ifstream entrada
entrada.open("C://Datos//grupo.txt")
char nombre[30]
int c1
clrscr()
print "nombre alumno c1 c2 c3 c4 Promedio "
entrada.getline(nombre,30)
while(entrada.good())
{
print setw(20) , nombre
suma=0
for(i=1 i<=4 i++)
{
entrada>>c1
print setw(4) , c1
suma=suma + c1
}
promedio=suma/4
print setw(5) , promedio
entrada.ignore()
entrada.getline(nombre,30)
}
entrada.close()
}
void menu()
{
print "1)Agregar datos alumno "
print "2)Listado de alumnos "
print "3)Fin de programa "
print "Elige opcion ==> "
}
int main()
{
int opcion
do
{
clrscr()
menu()
read opcion
switch(opcion)
{
case 1: agregar_datos_file()break
case 2: listado_datos_file()
getch()
breaK
case 3: print " Fin del programa "
getch()
break
default: print "Error en opcion "
break
}
}
while(opcion !=3)
}
Fin.