Practica 13
Problema 1
Pseudocodigo:
struct producto
{
noProd int
descrip[30] char
precio real
cantidad int
}
producto Registro
FILE *alias
int main()
{
int opc;
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: cout<<"\n\nFinal programa ";
break;
default: cout<<"\nError en opcion"<<endl;
}
}
while(opc !=7);
getch();
return 0;
}
void ALTA_SECUENCIAL()
{
int no_prod; // Variable local para el numero de producto
clrscr();
cout << "\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
cout << "\n\n\n\rNumero de producto: "; cin >> 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);
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rDescripcion: "; gets(Registro.descrip);
cout << "\n\rCantidad : "; cin >> Registro.cantidad;
cout << "\n\rPrecio : "; cin >> Registro.precio;
Registro.noProd=no_prod;
fwrite(&Registro,sizeof(Registro),1,alias); // Grabar el Registro
fclose(alias); // Cierra el archivo
cout << "\n\n\n\rProducto registrado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void CONSULTA_SECUENCIAL(void)
{
int no_prod;
clrscr();
cout << "\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)
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> no_prod;
// Lee el "Registro", de tamano=sizeof(Registro) del archivo "alias"
while(!feof(alias))
{
if(Registro.noProd==no_prod)
{
cout << "\n\rNo Prod Descripcion Cantidad Precio ";
cout << "\n\r----------------------------------------------------\n\n";
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
fclose(alias);
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void LISTADO_SECUENCIAL(void)
{
clrscr();
cout << "\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)
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\rNo Prod Descripcion Cantidad Precio ";
cout << "\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
{
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
fread(&Registro,sizeof(Registro),1,alias);
}
fclose(alias); // Cierra el archivo
cout << "\n\r------------------------------------------------------------------\n\n";
cout << "\n\rFin del listado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
int menu()
{
int opcion;
cout<<"\n\n1)alta de producto "<<endl;
cout<<"\n2)Consulta de producto"<<endl;
cout<<"\n3)Listado de productos"<<endl;
cout<<"\n4)Modificar datos de productos"<<endl;
cout<<"\n5)Baja Logica de productos"<<endl;
cout<<"\n6)Baja Fisica de productos"<<endl;
cout<<"\n7)Salida Programa"<<endl;
cout<<"\n\nSelecciona opcion = ? ";
cin>>opcion;
return opcion;
}
void MODIFICACION_SECUENCIAL(void)
{
int no_prod; // Variable local para el numero de producto que desea
//modificar
clrscr();
cout << "\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
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> 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\rNo Prod Descripcion Cantidad Precio \n\n";
cout << "\n\r--------------------------------------------------------------\n\n";
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
cout << "\n\n\n\rAnote los nuevos datos ...";
cout << "\n\rDescripcion: "; gets(Registro.descrip);
cout << "\n\rCantidad : "; cin >> Registro.cantidad;
cout << "\n\rPrecio : "; cin >> 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
cout << "\n\n\n\rRegistro modificado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void BAJA_LOGICA_SECUENCIAL(void)
{
int no_prod; // Variable local para el numero de producto que desea
//eliminar
char op; //Variable local
clrscr();
cout << "\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
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
cout << "\n\n\n\rNumero de producto: "; cin >> 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\rNo Prod Descripcion Cantidad Precio "<<endl;
cout<< "\n\r---------------------------------------------------------------\n\n";
cout<<Registro.noProd<<setw(20)<<Registro.descrip<<setw(10)<<Registro.cantidad<<setw(10)<<Registro.precio<<endl;
Registro.noProd=0;
strcpy(Registro.descrip,"");
Registro.cantidad=0;
Registro.precio=0.0;
do {
cout <<"\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
cout << "\n\n\n\rRegistro eliminado !!!";
}
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
fread(&Registro,sizeof(Registro),1,alias);
}
cout << "\n\rNo se encuentra ese registro !!!";
fclose(alias); // Cierra el archivo
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
void BAJA_FISICA_SECUENCIAL(void)
{
FILE *temporal; //Declaracion local de una variable para controlar el
// archivo temporal
clrscr();
cout << "\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
{
cout << "\n\n\n\rNo existe el archivo !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
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
cout << "\n\n\n\rArchivo compactado !!!";
cout << "\n\r<<< Oprima cualquier tecla para continuar >>>";
getch();
return;
}
lunes, 17 de diciembre de 2012
Practica 13
Problema 1
Pseudocodigo:
struct producto
{
noProd int
descrip[30] char
precio real
cantidad int
}
producto Registro
FILE *alias
inicio 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\\PRODUCTO.SEC","wb")
print "\n\n\n\rNumero de producto: "; cin >> 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: "
read 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 >>>"
}
fin funcion void ALTA_SECUENCIAL
inicio funcion void CONSULTA_SECUENCIAL(void)
{
no_prod int
clrscr()
print "\n\rCONSULTA 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: "
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 CONSULTA_SECUENCIAL
inicio funcion void LISTADO_SECUENCIAL(void)
{
clrscr()
print "\n\rLISTADO DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb"); // Intenta abrir el archivo
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 >>>"
}
fin funcion void LISTADO_SECUENCIAL
inicio funcion 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 opcion
}
fin funcion int menu
inicio 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\rNo existe el archivo !!!"
print "\n\r<<< Oprima cualquier tecla para continuar >>>"
}
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\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 : "
read Registro.cantidad
print "\n\rPrecio : "
read 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 >>>"
}
fin funcion void MODIFICACION_SECUENCIAL
inicio 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: "
read no_prod
fread(&Registro,sizeof(Registro),1,alias)
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
Registro.noProd=0
strcpy(Registro.descrip,"")
Registro.cantidad=0
Registro.precio=0.0
do {
cout <<"\n\n\rEsta seguro que desea borrarlo? [S/N] ---> "
op=toupper(getche())
}while(op!='S' and 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 >>>"
}
fin funcion void BAJA_LOGICA_SECUENCIAL
inicio 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 funcion void BAJA_FISICA_SECUENCIAL
inicio funcion principal
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
Lenguaje C++
Problema 2
Pseudocodigo:
inicio funcion void salida_datos_file(int n)
{
ofstream salida
salida.open("C:\\Datos\\calificaciones.txt")
i int
name[30] char
for(i=1 to n step i=i+1)
{
print "nombre ",i,"= "
gets(name)
salida,name
}
salida.close()
}
fin funcion void salida_datos_file
inicio funcion void agregar_datos_file()
{
ofstream salida
salida.open("C:\\Datos\\calificaciones.txt",ios::app)
i=1 int
name[30],sigue char
do
{
print "nombre ",i,"= "
gets(name)
salida,name
print "\nDeseas continuar s/n "
read sigue
}
while(sigue=='s' or sigue=='S')
salida.close()
}
fin funcion void agregar_datos_file
inicio funcion void entrada_datos_file()
{
ifstream entrada
entrada.open("C:\\Datos\\calificaciones.txt")
name[30] char
print "\nListado de nombre \n"
entrada.getline(name,30)
print name
while(!entrada.eof())
{
entrada.getline(name,30)
print ,name
}
entrada.close()
}
fin funcion void entrada_datos_file
inicio funcion void almacena_calif(int n)
{
ofstream salida
salida.open("C:\\Datos\\calificaciones.txt")
r,c,calif int
for(r=0 to <n r=r+1)
{
print "introduce calificaciones del estudiante ",(r+1)
for(c=0 to <6 step c=c+1)
{
print "calificacion ",(c+1),"= "
read calif
salida calif," "
}
salida, "\n"
}
salida.close()
}
fin funcion void entrada_datos_file
inicio funcion void leer_archivo_calif(int a[20][6],int promedio[20],int n)
{
ifstream entrada
entrada.open("C:\\Datos\\calificaciones.txt")
int r,c,suma
for(r=0 to <n step r=r+1)
{
suma=0
for(c=0 to <6 step c=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 funcion void entrada_datos_file
inicio funcion void menu()
{
print " Menu de opciones \n"
print "\n1)agregar nombre de alumnos "
print "\n2)Listado de nombre de alumnos "
print "\n3)agregar calificaciones de alumnos "
print "\n4)Listado de calificaciones"
print "\n5)Fin de programa\n"
print "Seleccione opcion --->"
}
fin funcion void menu
inicio programa
n,opcion 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)
break
case 2:entrada_datos_file()
break
case 3:almacena_calif(n)
break
case 4:
print "listado de calificaciones alumnos\n\n"
leer_archivo_calif(c, p, n)
break
case 5: print "\n\n FIN PROGRAMA\n "
break
default: print "error en opcion "
}
}
while(opcion!=5)
fin
Lenguaje C++
Problema 3
Pseudocodigo:
inicio funcion void almacena_datos_archivo()
{
ofstream salida
salida.open("C:\\datos\\numeros.txt")
i,j,n,dato int
for(i=1 to 3 step i=i+1)
{
print "cantidad de datos del grupo: ",i
read n
salida,n
for(j=1 to n step j=j+1)
{
print "dato ",j," grupo ",i,": "
read dato
salida,dato
}
}
salida.close()
}
fin funcion void almacena_datos_archivo
inicio funcion void leer_datos_archivo()
{
ifstream entrada
entrada.open("C:\\datos\\numeros.txt")
dato,n,suma,i,j int
for(i=1 to 3;step i=i+1)
{
entrada,n
suma=0
for(j=1 to n;step j=j+1)
{
entrada,dato
suma=suma+dato
}
print "el promedio del grupo ",i," es: ",(suma/n)
}
entrada.close()
}
fin funcion void leer_datos_archivo
inicio funcion void listado_datos_archivo()
{
dato int
ifstream entrada
entrada.open("C:\\datos\\numeros.txt")
if(entrada.fail())
{
print "\nEl archivo no se abrio con exito\n por favor comprueve que el archivo existe\n"
exit(1)
}
print "listado datos archivo \n\n"
entrada,dato
while(!entrada.eof())
{
print dato," "
entrada>>dato
}
entrada.close()
}
funcion void listado_datos_archivo
inicio funcion void menu()
{
print "1)Crear el archivo de grupo de numeros \n\n"
print "2)Leer datos archivo para calcular el promedio sde cada grupo \n\n"
print "3)Listado de datos \n\n"
print "4)salida del programa \n\n"
print "seleccione opcion==> "
}
fin funcion void menu
inicio programa
opcion int
do
{
clrscr()
menu()
read opcion
switch(opcion)
{
case 1:almacena_datos_archivo()
break
case 2:leer_datos_archivo()
break
case 3:listado_datos_archivo()
break
case 4:print "\n\nsalida del programa "
break
default:print "error en opcion \n\n"
}
}
while(opcion !=4)
fin
Lenguaje C++
Problema 4
Pseudocodigo:
inicio funcion 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=j+1)
{
print "Calificacion ",j," : "
read calf
salida,calf
}
print "\n\nDeseas Registrar otro alumno s/n ? "
read sigue
}
while(sigue=='s' or sigue=='S')
salida.close()
}
fin funcion void agregar_datos_file
inicio funcion 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 "
entrada.getline(nombre,30)
while(entrada.good())
{
print ,setw(20),nombre
suma=0
for(i=1 to 4 step i=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 funcion void listado_datos_file
inicio funcion void menu()
{
print "1)Agregar datos alumno\n"
print "2)Listado de alumnos\n "
print "3)Fin de programa\n"
print "Elige opcion ==> "
}
fin funcion void menu
inicio programa
opcion int
do
{
clrscr()
menu()
read opcion
switch(opcion)
{
case 1: agregar_datos_file()
break
case 2: listado_datos_file()
break
case 3: cout<<"\n\nFin del programa \n\n"
break
default: print "Error en opcion "
break
}
}
while(opcion !=3)
fin
Lenguaje C++
Problema 1
Pseudocodigo:
struct producto
{
noProd int
descrip[30] char
precio real
cantidad int
}
producto Registro
FILE *alias
inicio 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\\PRODUCTO.SEC","wb")
print "\n\n\n\rNumero de producto: "; cin >> 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: "
read 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 >>>"
}
fin funcion void ALTA_SECUENCIAL
inicio funcion void CONSULTA_SECUENCIAL(void)
{
no_prod int
clrscr()
print "\n\rCONSULTA 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: "
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 CONSULTA_SECUENCIAL
inicio funcion void LISTADO_SECUENCIAL(void)
{
clrscr()
print "\n\rLISTADO DE REGISTROS DE PRODUCTOS"
alias=fopen("c:\\datos\\PRODUCTO.SEC","rb"); // Intenta abrir el archivo
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 >>>"
}
fin funcion void LISTADO_SECUENCIAL
inicio funcion 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 opcion
}
fin funcion int menu
inicio 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\rNo existe el archivo !!!"
print "\n\r<<< Oprima cualquier tecla para continuar >>>"
}
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\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 : "
read Registro.cantidad
print "\n\rPrecio : "
read 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 >>>"
}
fin funcion void MODIFICACION_SECUENCIAL
inicio 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: "
read no_prod
fread(&Registro,sizeof(Registro),1,alias)
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
Registro.noProd=0
strcpy(Registro.descrip,"")
Registro.cantidad=0
Registro.precio=0.0
do {
cout <<"\n\n\rEsta seguro que desea borrarlo? [S/N] ---> "
op=toupper(getche())
}while(op!='S' and 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 >>>"
}
fin funcion void BAJA_LOGICA_SECUENCIAL
inicio 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 funcion void BAJA_FISICA_SECUENCIAL
inicio funcion principal
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
Lenguaje C++
Problema 2
Pseudocodigo:
inicio funcion void salida_datos_file(int n)
{
ofstream salida
salida.open("C:\\Datos\\calificaciones.txt")
i int
name[30] char
for(i=1 to n step i=i+1)
{
print "nombre ",i,"= "
gets(name)
salida,name
}
salida.close()
}
fin funcion void salida_datos_file
inicio funcion void agregar_datos_file()
{
ofstream salida
salida.open("C:\\Datos\\calificaciones.txt",ios::app)
i=1 int
name[30],sigue char
do
{
print "nombre ",i,"= "
gets(name)
salida,name
print "\nDeseas continuar s/n "
read sigue
}
while(sigue=='s' or sigue=='S')
salida.close()
}
fin funcion void agregar_datos_file
inicio funcion void entrada_datos_file()
{
ifstream entrada
entrada.open("C:\\Datos\\calificaciones.txt")
name[30] char
print "\nListado de nombre \n"
entrada.getline(name,30)
print name
while(!entrada.eof())
{
entrada.getline(name,30)
print ,name
}
entrada.close()
}
fin funcion void entrada_datos_file
inicio funcion void almacena_calif(int n)
{
ofstream salida
salida.open("C:\\Datos\\calificaciones.txt")
r,c,calif int
for(r=0 to <n r=r+1)
{
print "introduce calificaciones del estudiante ",(r+1)
for(c=0 to <6 step c=c+1)
{
print "calificacion ",(c+1),"= "
read calif
salida calif," "
}
salida, "\n"
}
salida.close()
}
fin funcion void entrada_datos_file
inicio funcion void leer_archivo_calif(int a[20][6],int promedio[20],int n)
{
ifstream entrada
entrada.open("C:\\Datos\\calificaciones.txt")
int r,c,suma
for(r=0 to <n step r=r+1)
{
suma=0
for(c=0 to <6 step c=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 funcion void entrada_datos_file
inicio funcion void menu()
{
print " Menu de opciones \n"
print "\n1)agregar nombre de alumnos "
print "\n2)Listado de nombre de alumnos "
print "\n3)agregar calificaciones de alumnos "
print "\n4)Listado de calificaciones"
print "\n5)Fin de programa\n"
print "Seleccione opcion --->"
}
fin funcion void menu
inicio programa
n,opcion 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)
break
case 2:entrada_datos_file()
break
case 3:almacena_calif(n)
break
case 4:
print "listado de calificaciones alumnos\n\n"
leer_archivo_calif(c, p, n)
break
case 5: print "\n\n FIN PROGRAMA\n "
break
default: print "error en opcion "
}
}
while(opcion!=5)
fin
Lenguaje C++
Problema 3
Pseudocodigo:
inicio funcion void almacena_datos_archivo()
{
ofstream salida
salida.open("C:\\datos\\numeros.txt")
i,j,n,dato int
for(i=1 to 3 step i=i+1)
{
print "cantidad de datos del grupo: ",i
read n
salida,n
for(j=1 to n step j=j+1)
{
print "dato ",j," grupo ",i,": "
read dato
salida,dato
}
}
salida.close()
}
fin funcion void almacena_datos_archivo
inicio funcion void leer_datos_archivo()
{
ifstream entrada
entrada.open("C:\\datos\\numeros.txt")
dato,n,suma,i,j int
for(i=1 to 3;step i=i+1)
{
entrada,n
suma=0
for(j=1 to n;step j=j+1)
{
entrada,dato
suma=suma+dato
}
print "el promedio del grupo ",i," es: ",(suma/n)
}
entrada.close()
}
fin funcion void leer_datos_archivo
inicio funcion void listado_datos_archivo()
{
dato int
ifstream entrada
entrada.open("C:\\datos\\numeros.txt")
if(entrada.fail())
{
print "\nEl archivo no se abrio con exito\n por favor comprueve que el archivo existe\n"
exit(1)
}
print "listado datos archivo \n\n"
entrada,dato
while(!entrada.eof())
{
print dato," "
entrada>>dato
}
entrada.close()
}
funcion void listado_datos_archivo
inicio funcion void menu()
{
print "1)Crear el archivo de grupo de numeros \n\n"
print "2)Leer datos archivo para calcular el promedio sde cada grupo \n\n"
print "3)Listado de datos \n\n"
print "4)salida del programa \n\n"
print "seleccione opcion==> "
}
fin funcion void menu
inicio programa
opcion int
do
{
clrscr()
menu()
read opcion
switch(opcion)
{
case 1:almacena_datos_archivo()
break
case 2:leer_datos_archivo()
break
case 3:listado_datos_archivo()
break
case 4:print "\n\nsalida del programa "
break
default:print "error en opcion \n\n"
}
}
while(opcion !=4)
fin
Lenguaje C++
Problema 4
Pseudocodigo:
inicio funcion 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=j+1)
{
print "Calificacion ",j," : "
read calf
salida,calf
}
print "\n\nDeseas Registrar otro alumno s/n ? "
read sigue
}
while(sigue=='s' or sigue=='S')
salida.close()
}
fin funcion void agregar_datos_file
inicio funcion 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 "
entrada.getline(nombre,30)
while(entrada.good())
{
print ,setw(20),nombre
suma=0
for(i=1 to 4 step i=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 funcion void listado_datos_file
inicio funcion void menu()
{
print "1)Agregar datos alumno\n"
print "2)Listado de alumnos\n "
print "3)Fin de programa\n"
print "Elige opcion ==> "
}
fin funcion void menu
inicio programa
opcion int
do
{
clrscr()
menu()
read opcion
switch(opcion)
{
case 1: agregar_datos_file()
break
case 2: listado_datos_file()
break
case 3: cout<<"\n\nFin del programa \n\n"
break
default: print "Error en opcion "
break
}
}
while(opcion !=3)
fin
Lenguaje C++
lunes, 3 de diciembre de 2012
Unidad 3
1-¿Cuales son los tres elementos que se requieren para almacenar y recuperar datos de un archivo creado en C++?
Un archivo
Un objeto en la corriente de archivos
un modo
2-Explique en que consiste los archivos:
Un archivo es un conjunto de datos que juntos se guardan bajo un nombre comun, por lo general en un disco, cinta magnetica o CD-ROM.
3-¿Cuales son los datos almacenados en un rachivo de programa?
Son el codigo del programa que se convierte en los datos de insumo al compilador de C++
4-En que consiste el nombre externo del archivo:
Es el nombre que reconoce el sistema operativo. Es el nombre externo que se despliega cuando se utiliza un comando operativo como dir o ls, que sepliega el contenido de un directorio.
5-En que consiste la corriente de archivos:
Es una ruta en un sentido para transmicion utilizada para conectar un archivo almacenado en un dispocitivo fisico, tal como un disco o CD-ROM, a un programa.
6-¿Que determina un "modo"?
Determina la direccion de los datos sobre la ruta de transmicion; esto es, si la ruta se utiliza para mover datos de un archivo a un programa o si se utiliza para mover datos de un programa a un archivo.
7-¿Para que se utiliza la corriente de archivos de insumo de datos?
Se utiliza para recibir o leer datos de un archivo.
8-¿Para que se utiliza la corriente de archivos de salida de datos?
Se utiliza para enviar o escribir datos a un archivo.
9-¿Que incluyen las funciones prescritas y definidas por sus respectivas clases ifstream u ofstream?
Tales funciones incluyen conectar una corriente a un nombre esterno de archivo (llamado cerrar un archivo); determinar si se logro una conexion exitosa, cerrar una conexion (llamada cerrr un archivo); obtener el siguiente elemento de datos al programa desde una corriente de insuno de datos; colocar un elemento nuevo de datos del programa en la corriente de salida de datos y detectar cuando se llega al final de un archivo.
10-¿Por quien es proporcionada la funcion open( )?
Por las clases ifstream u ofstream.
11-¿Que se logra mediante una funcion open( )?
Que al abrir un archivo se conecte cada objeto corriente de archivo a un nombre especifico de archivo externo.
12-Explique en que consisten las funciones de miembros y metodos:
Son las funciones tales como open( ), asociadas con objetos. Los terminos se usan de forma intercambiable, y utilizar dichas funciones requiere que el nombre de la funcion sea antecedido por un punto y un nombre de objeto.
13-¿En que consiste una variable de cadena?
Es una variable que puede contener un valor en cadenade caracteres , la cual es cualquier secuencia de cero o mas caracteres encerrados entre comillas dobles.
14-¿Cual es la diferencia entre las variables de carater y de cadena?
Es que una variable de caracter puede almacenar el valor de un solo caracter mientras que una variable de cadena puede almacenar un valor con cero o mas caracteres.
15-Explique en que consiste "NULL":
Es una constante simbolica adicional, de fin de cadena.
16-¿En que consiste el metodo close( )?
Este metodo rompe la conexion entre el nombre externo del archivo y el objeto corriente de archivo, el cual se puede utilizar entonces para otro archivo.
17-¿Cuales son las operaciones para la lectura y escritura de un archivo?
Para escribir sobre un archivo, el objeto cout se reemplaza por el objeto ofstream, declarado en el programa. Para la lectura de datos de un archivo, el objeto cin es remplazado por el fstream declarado en el programa.
18-Explique en que consiste el metodo de get( ):
Permite la instruccion de caracteres, uno a la vez, desde la corriente. Este metodo funciona de manera similar a la axtraccion de caracteres utilizando el operador >> con dos diferencias importantes: si se encuntra un caracter de linea nueva '\n', o de espacio en blanco, " ,esto se lee del mismo modo que cualquier otro caracter alfanumerico.
19-¿Que es un objeto logico de archivo?
Es una corriente que conecta un archivo de datos logicamente relacionados como archivo de datos que llega a un programa.
20-¿Que es un objeto fisico de archivo?
Es una corriente que se conecta a un dispositivo de hardware, tal como un teclado, la pantalla o la impresora.
Problema 10 pag. 470
Problema 10 a.
Problema 10 b.
Tarea 5
1-¿Cuales son los tres elementos que se requieren para almacenar y recuperar datos de un archivo creado en C++?
Un archivo
Un objeto en la corriente de archivos
un modo
2-Explique en que consiste los archivos:
Un archivo es un conjunto de datos que juntos se guardan bajo un nombre comun, por lo general en un disco, cinta magnetica o CD-ROM.
3-¿Cuales son los datos almacenados en un rachivo de programa?
Son el codigo del programa que se convierte en los datos de insumo al compilador de C++
4-En que consiste el nombre externo del archivo:
Es el nombre que reconoce el sistema operativo. Es el nombre externo que se despliega cuando se utiliza un comando operativo como dir o ls, que sepliega el contenido de un directorio.
5-En que consiste la corriente de archivos:
Es una ruta en un sentido para transmicion utilizada para conectar un archivo almacenado en un dispocitivo fisico, tal como un disco o CD-ROM, a un programa.
6-¿Que determina un "modo"?
Determina la direccion de los datos sobre la ruta de transmicion; esto es, si la ruta se utiliza para mover datos de un archivo a un programa o si se utiliza para mover datos de un programa a un archivo.
7-¿Para que se utiliza la corriente de archivos de insumo de datos?
Se utiliza para recibir o leer datos de un archivo.
8-¿Para que se utiliza la corriente de archivos de salida de datos?
Se utiliza para enviar o escribir datos a un archivo.
9-¿Que incluyen las funciones prescritas y definidas por sus respectivas clases ifstream u ofstream?
Tales funciones incluyen conectar una corriente a un nombre esterno de archivo (llamado cerrar un archivo); determinar si se logro una conexion exitosa, cerrar una conexion (llamada cerrr un archivo); obtener el siguiente elemento de datos al programa desde una corriente de insuno de datos; colocar un elemento nuevo de datos del programa en la corriente de salida de datos y detectar cuando se llega al final de un archivo.
10-¿Por quien es proporcionada la funcion open( )?
Por las clases ifstream u ofstream.
11-¿Que se logra mediante una funcion open( )?
Que al abrir un archivo se conecte cada objeto corriente de archivo a un nombre especifico de archivo externo.
12-Explique en que consisten las funciones de miembros y metodos:
Son las funciones tales como open( ), asociadas con objetos. Los terminos se usan de forma intercambiable, y utilizar dichas funciones requiere que el nombre de la funcion sea antecedido por un punto y un nombre de objeto.
13-¿En que consiste una variable de cadena?
Es una variable que puede contener un valor en cadenade caracteres , la cual es cualquier secuencia de cero o mas caracteres encerrados entre comillas dobles.
14-¿Cual es la diferencia entre las variables de carater y de cadena?
Es que una variable de caracter puede almacenar el valor de un solo caracter mientras que una variable de cadena puede almacenar un valor con cero o mas caracteres.
15-Explique en que consiste "NULL":
Es una constante simbolica adicional, de fin de cadena.
16-¿En que consiste el metodo close( )?
Este metodo rompe la conexion entre el nombre externo del archivo y el objeto corriente de archivo, el cual se puede utilizar entonces para otro archivo.
17-¿Cuales son las operaciones para la lectura y escritura de un archivo?
Para escribir sobre un archivo, el objeto cout se reemplaza por el objeto ofstream, declarado en el programa. Para la lectura de datos de un archivo, el objeto cin es remplazado por el fstream declarado en el programa.
18-Explique en que consiste el metodo de get( ):
Permite la instruccion de caracteres, uno a la vez, desde la corriente. Este metodo funciona de manera similar a la axtraccion de caracteres utilizando el operador >> con dos diferencias importantes: si se encuntra un caracter de linea nueva '\n', o de espacio en blanco, " ,esto se lee del mismo modo que cualquier otro caracter alfanumerico.
19-¿Que es un objeto logico de archivo?
Es una corriente que conecta un archivo de datos logicamente relacionados como archivo de datos que llega a un programa.
20-¿Que es un objeto fisico de archivo?
Es una corriente que se conecta a un dispositivo de hardware, tal como un teclado, la pantalla o la impresora.
Problema 10 pag. 470
Problema 10 a.
Problema 10 b.
Unidad 3
1-¿Cómo surge la necesidad de utilizar archivos?
18-¿En que consiste el programa fuente?
Tipo de earchivo de texto que almacena las instrucciones al escribir un programa en un lenguaje particular como C++, pascal, fortran, etc.
19-¿En que consiste la clasificacion de archivos por tipo de acceso?
Es la clasificacion de los tipos de archivo de acuerdo a la forma de acceder a los datos que contienen se clasifican en secuenciales o directos.
20-En que consisten los archivos secuenciales:
Como su nombre lo indica, en este tipo de archivos los registros se graban en secuencia o consecutivamente y deben accesarse de ese mismo modo, es decir, conforme se van insertando nuevos registros, éstos se almacenan al final del último registro almacenado; por lo tanto, cuando se desea consultar un registro almacenado es necesario recorrer completamente el archivo leyendo cada registro y comparándolo con el que se busca.
21-Explique en que consiste EOF (End of File):
Tipo de marca invisible que se utiliza en los archivos secuenciales, se coloca al final del los archivos y sirve para identificar donde termina el archivo.
22-En que consisten los archivos directos:
A diferencia de los archivos secuenciales, en los archivos directos no es necesario recorrerlo completamente para acceder un registro en particular, sino se puede colocar el apuntador interno del archivo directamente en el registro deseado, permitiendo con esto mayor rapidez de acceso.
23-¿Para que es utilizado el comando seek ?
Comando utilizado en los archivos direcos para reposisionar el apuntador, indicandole la direccion del registro que se desea.
Tarea 4
1-¿Cómo surge la necesidad de utilizar archivos?
por el inconveniente que representa que la memoria principal o memoria RAM sea el único medio de almacenamiento (usando variables, arreglos o estructuras de datos mas complejas), pues si se apaga la computadora se pierden los datos. Además, algunas aplicaciones exigen transportar los datos de una computadora a otra.
2-Explique en que consisten los dispositivos de almacenamiento secundario:
Dispocitivos que no procesan datos, solo los almacenan. En estos dispositivos sólo se reflejan los datos previamente procesados y funcionan exclusivamente como una bodega.
3-¿Cuales son los pasos nesesarios para hacerle modificaciones a los datos de un registro previamente almacenado?
Primero cargarlo en la memoria principal, es decir, localizar el registro en el
archivo y leerlo para colocar sus datos en la memoria RAM, ahí modificarlo y posteriormente grabarlo en la misma posicion en la que se encontrava.
4-¿En donde se realizan las operaciones para realizar las modificaciones a los datos de un registro previamente almacenado?
Las operaciones no se realizan directamente, sino a través de la unidad aritmética-lógica, la unidad de control y los registros del microprocesador.
5-Explique en que consisten los datos o campos:
Son los elementos individuales de los archivos.
Por ejemplo un cheque de un banco tiene los siguientes campos: Cuenta habiente, Número de cheque, Fecha, Persona a la que se le paga, Monto numérico, Monto con letra, Nota, Identificación del banco, Número de cuenta y Firma.
6-Explique en que consiste el registro:
Es el conjunto completo de datos relacionados pertenecientes a una entrada.
7-Explique en que consisten los archivos:
Es una colección de datos que tiene un nombre y se guardan en dispositivos de almacenamiento secundario, los cuales pueden ser magnéticos, ópticos, electrónicos, etc.
8-¿Que es una base de dados?
Es una coleccion de archivos relacionados, por ejemplo profesores, alumnos y materias estan correlacionados.
9-¿Cuales son los dos tipos de operaciones que tiene un archivo?
Lectura
Escritura
10-¿Por que es nesesario cerrar los archivos al terminar de utilizarlos?
Por que de esta forma se vacia la memoria cache y se aseguran, almacenan y protegen los datos.
11-¿Por que es nesesario abrir el archivo antes escribir o leer datos?
Al abrir el archivo se establece comunicación entre el programa y el sistema operativo a cerca de cómo accesarlo.
12-Explique en que consiste el "alias del archivo":
Es una estructura que controla el archivo, de esta forma cuando se solicita una operacion, del archivo, se recibe una respuesta que informa el resultado mediante un apuntador.
13-¿Que contiene la estructura del archivo?
contiene información del archivo que se está usando, así como el tamaño actual y la localización de los buffers de datos.
14-Explique en que consisten los archivos de texto:
Son aquellos que pueden contener cualquier clase de datos y de tal manera
que son “entendibles” por la gente.
15-¿Como son almacenados los datos de un archivo de texto?
Se almacenan usando el código ASCII, en el cual cada carácter es representado por un simple byte.
16-¿Por que no se pueden realizar operaciones matematicas directamente en los archivos de texto?
En este tipo de archivos, todos sus datos se almacenan como cadenas de caracteres, es decir, los números se almacenan con su representación ASCII y no su representación numérica.
17-Explique en que consisten los archivos binarios:
Tipo de archivos que almacenan los datos numéricos con su representación binaria.
18-¿En que consiste el programa fuente?
Tipo de earchivo de texto que almacena las instrucciones al escribir un programa en un lenguaje particular como C++, pascal, fortran, etc.
19-¿En que consiste la clasificacion de archivos por tipo de acceso?
Es la clasificacion de los tipos de archivo de acuerdo a la forma de acceder a los datos que contienen se clasifican en secuenciales o directos.
20-En que consisten los archivos secuenciales:
Como su nombre lo indica, en este tipo de archivos los registros se graban en secuencia o consecutivamente y deben accesarse de ese mismo modo, es decir, conforme se van insertando nuevos registros, éstos se almacenan al final del último registro almacenado; por lo tanto, cuando se desea consultar un registro almacenado es necesario recorrer completamente el archivo leyendo cada registro y comparándolo con el que se busca.
21-Explique en que consiste EOF (End of File):
Tipo de marca invisible que se utiliza en los archivos secuenciales, se coloca al final del los archivos y sirve para identificar donde termina el archivo.
22-En que consisten los archivos directos:
A diferencia de los archivos secuenciales, en los archivos directos no es necesario recorrerlo completamente para acceder un registro en particular, sino se puede colocar el apuntador interno del archivo directamente en el registro deseado, permitiendo con esto mayor rapidez de acceso.
23-¿Para que es utilizado el comando seek ?
Comando utilizado en los archivos direcos para reposisionar el apuntador, indicandole la direccion del registro que se desea.
24-Explique en que consisten las direcciones fisicas:
Tipo de direcciones para los archivos, utilizada en el lenguaje C++. El direccionamiento consiste en el espacio ocupado por los datos en el archivo (calculado en bytes) no en el renglón al que se asignó dicho registro.
25-¿Cual es el encabezado que se requiere para realizar programas de manejo de archivos en lenguaje C++?
"Standard I/O” y se necesita incluirlo de la sig. forma:
#include <stdio.h>
#include <stdio.h>
miércoles, 28 de noviembre de 2012
Unidad 3
Tarea 3
1-¿A que se le conose como transmicion por valor?
La funcion llamada asigna valores a la funcion que llama, almacene y manipula los valores transmitidos, y devuelve directamente a un valor, como maximo.
2-¿En que consiste el proceso conosido como transmicion por referencia?
Proceso en el que la funcion llamada puede hacer referencia , o tener acceso, a la variable cuya direccion se le transmitio.
3-¿Cuál es la primera preocupación al usar argumentos de referencia?
Que los argumentos de referencia deben ser variables.
4-¿Cuál es la segunda precaución al usar argumentos de referencia?
Es que una llamada de función en si no da indicio de que la función llamada usara parámetros de referencia.
5-Explique la sintaxis para declarar un parametro de referencia en C++:
tipo-de-dato& nombre-de-referencia.
6-¿Cual es el significado de utilizar el simbolo & dentro de una declaracion ?
Se refiere a "la direccion del" tipo precedente de dato.
7-¿En que consiste el algoritmo conosido como algoritmo para resolver problemas?
Algoritmo que define las tres tares de principal responsabilidad de todo programa:
Obtener los datos aportados al problema.
Calcular los reultados deseados.
Reportar los resultados de los calculos.
8-¿Para que se requiere la generacion de numeros aleatorios?
Para crear un conjunto de numeros cuyo orden sea imprecindible.
9-¿Que son los numeros seudoaleatorios?
Ya que las computadoras solo pueden manejar numeros dentro de un rango finito y con precision limitada los numeros seudoaleatorios son numeros lo suficientemente aleatorios para las tareas que vamos a realizar.
10-Defina los tipos de funciones que producen numero aleatorios en C++:
Son rad( ), que genera nunmeros aleatorios, y srand( ), que siembra valores aleatorios iniciales.
11-Explique en que consiste el escalamiento:
Es el metodo empleado para ajustar los numeros aleatorios producidos por un generador de tal manera que se ubiquen dentro de tales rangos.
12-¿Cuales son las variables locales?
Son las variables creadas dentro de una funcion que solo estan disponibles en forma convencional solo para la misma funcion.
13-¿Que es el alcanse de un identificador?
Se define como la seccion del programa donde el identificador, tal como una variable, es valido o "conosido". Esata seccion del programa tambie se conoce como la ubicacion donde la variable es visible.
14-Explique en que consiste una variable con alcance local:
Variable que solo tiene ubicacion de almacenaje reservada por una instruccion de declaracion hecha dentro del contenido de la funcion. Las variables locales solo tienen significado cuando se utilizan en expreciones o instrucciones dentro de de la funcion que las declara.
15-Explique en que consiste una variable de alcance global:
En estas variables el espacio de almacenaje se crea mediante una instruccion declaratoria ubicada fuera de cualquier funcion. Estas variables pueden ser utilizadas por todas las funciones que esten colocadas fisicamente despues de la declaracion de la variable global.
16-Explique cual seria un mal uso de las variables globales:
Utilizar todas las variables globales de manera indiscriminada destruiria las defensas que C++ proporciona para hacer que las funciones sean independientes y esten aisladas entre si, incluyendo la nesesidad de seleccionar cuidadosamente el tipo de argumentos que requiere una funcion, las variables que esta utilizada y el valor que devuelve.
17-¿Que ocurre cuando una variable local tiene el mismo nombre que una variable global?
Todas las referencias al nombre de la variable hecha dentro del alcance de la variable local se refieren a ella.
18-¿Cuál es la característica fundamental de los parámetros de referencia?
Tan solo proporciona la capacidad para que una función llamada y una que llama tenga acceso a la misma área de almacenamiento usando nombres diferentes.
19-¿A que es igual el llamar a una función y transmitir una dirección como argumento que aceptar como parámetro de referencia?
Es igual que llamar a una función y transmitir un valor.
20-¿Cual es una opción por omisión en c++?
Hacer transmisión por valor en lugar de por referencia.
Ejecicio 6.3
Problema 3
Ejercicio 6.4
Problema 2
Problema 5
martes, 20 de noviembre de 2012
Unidad 3
Tarea 2
1-Explique en que conciste el argumento conosido como "transmitido por valor":
La funcion llamada solo recibe copias de los valores contenidos en los argumentos al momento de la llamada. Cuando se transmite un valor a una funcion llamada con este metodo.
2-¿Cuantos valores puede devolver la funcion que recibe los argumentos transmitidos?
Procesa los valores enviados a ella de la manera que se desee y devolver directamente cuando mucho un valor "legitimo" a la funcion que llama.
3-¿Que debe especificar una funcion que devuelve un valor?
Debe especificar, en la line de encabezado, el tipo de datos del valor que devuelve.
4-¿Que ocurre cuando se encuentra la instruccion return?
La exprecion se evalua primero y su valor se convierte automaticamente al tipo de dato declarado en el encabezado de la funcion, antes de devolverlo a la funcion que hizo la llamada.
5-Explique la forma de preparar a la funcion que llama para recibir el valor que envia la funcion llamada:
Esta prevenida sobre el tipo de valor a esperar
Utilizar correctamente el valor devuelto.
6-Mencione uno de los propositos de las declaraciones:
Avisar a la computadora del espacio de almacenaje interno a reservar para los datos.
7-Explique la enque consiste la region de la memoria conocida como pila:
Esto consiste en colocar valores de argumentos en una region reservada de la memoria a la cual la funcion tiene acceso, y transmite control a la funcion, con lo cual proporciona una ubicacion reservada de memoria para cualquier valor devuelto (una vez mas , la region de la pila en la memoria se utiliza con este proposito, y finalmente regresa al punto apropiado en el programa que hizo la llamada.
8-¿Que resulta mas conveniente para funciones pequeñas que no son llamadas muchas veces y no se justifica la carga adicional para transmitir y devolver valores?
Puede resultar conveniente agrupar lineas respectivas de codigon en un nombre comun de funcion y hacer que el compilador coloque este codigo directamente en el programa siempre que se llame a la funcion.
9-¿Que ocurre cuando se indica a la compilador que una funcion esta en-linea?
Hace que una copia del codigo de la funcion se coloque en el programa en el lugar donde la funcion es llamada.
10-En que consiste una transmicion por valor:
En una invocacion tipica, la funcion llamada asigna valores a la funcion que llama, almacena y manipula los valores transmitidos, y devuelve directamente un solo valor, como maximo. A la transmicion de datos de esta manera se le conoce como transmicion por valor.
11-Explique las ventajas de llamar a una funcion y transmitirle argumentos por valor:
Esto permita escribir las funciones como entidades independientes que pueden utilizar cualquier nombre de variable o parametro sin preocuparse por que otras funciones puedan utilizar el mismo nombre.
12-De la definicion de parametros:
Se pueden considerar como variables inizializadas o variables a las cuales se asignaran valores cuando se ejecute la funcion.
13-Explique en que consiste el proseso conosido como transmision por referencia:
La funcion llamada puede utilizar y modificar el valor de las variables definidas en la funcion que llama. Para hacer esto se requiere transmitir la direccion de la variable a la funcion llamada. En cuanto la funcion llamada tiene la direccion de la variable, sabe donde "reside" la variable, y puede tener acceso al valor almacenado ahi y cambiarlo directamente.
14-¿Cuales son los dos tipos de parametros de direccion que se permite en C++?
Referencias y apuntadores.
15-¿Cuando entra en accion la funcion llamada?
Cuando se dan su nombre y una lista de argumentos.
16-Defina el significado de "&", en C++:
Significa "la direccion del" tipo precedente de dato.
17-¿La transmisión de dirección se conoce como función de?
Transmisión por referencia.
18-¿Que permite llamar a una función y transmitir argumentos por valor?
Que se escriban como entidades independientes que puedan usar cualquier nombre de variable sin preocuparse que otras funciones usen el mismo nombre.
19-¿Que ejecuta el prototipo convertir_temp()?
Alerta al compilador del tipo de almacenamiento necesario para el valor devuelto.
20-¿Que es lo que hay que proporcionar para usar un valor devuelto?
Una variable para almacenar el valor o usar el valor en forma directa en una expresión.
Ejercicio 6.2 pag. 331 problema10,12
Problema 10
Problema 12
Ejercicio 6.3 pag. 341 poblema 4,5
Problema 5
Suscribirse a:
Entradas (Atom)





























