0% encontró este documento útil (0 votos)
543 vistas18 páginas

Ejercicios de Manejo de Archivos C++

El documento contiene 15 ejercicios sobre el uso de archivos en C++. Los ejercicios cubren temas como crear, abrir y escribir en archivos de texto, leer el contenido de archivos, convertir números entre bases numéricas y almacenar registros en archivos binarios.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
543 vistas18 páginas

Ejercicios de Manejo de Archivos C++

El documento contiene 15 ejercicios sobre el uso de archivos en C++. Los ejercicios cubren temas como crear, abrir y escribir en archivos de texto, leer el contenido de archivos, convertir números entre bases numéricas y almacenar registros en archivos binarios.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

TEMA: FICHEROS

1. Escribir un programa que escriba hola mundo dentro de un archivo llamado


[Link].

#include<iostream.h>
#include<fstream.h>
#include<conio.h>
int main()
{

fstream archivo("[Link]", ios::out);
if(!archivo)
{
cout<<"No se puede crear el archivo [Link]"<<endl;
}
else
{
archivo<<"Hola mundo"<<endl;
[Link]();
}

getch();
}

2. Escribir un programa que lea el archivo creado en el ejercicio anterior y muestre por
pantalla su contenido.

#include<iostream.h>
#include<fstream.h>

int main()
{
char c;
fstream archivo("[Link]", ios::in);
if(!archivo)
{
cout<<"No se puede abrir el archivo [Link]"<<endl;
}
else
{
[Link](c);
while(![Link]())
{
cout<<c;
[Link](c);
}
[Link]();
}

system("Pause");
return 0;
}

3. Escribir un programa que escriba la lista de caracteres ASCII dentro de un archivo de
texto.

#include<iostream.h>
#include<fstream.h>

int main()
{
system("cls");
int i=32;
fstream archivo("[Link]",ios::out);

if(!archivo)
{
cout<<"No se puede crear el archivo [Link]"<<endl;
}
else
{
while(i<128)
{
archivo<<i<<"="<<char(i);
i++;

if(i%8==0)archivo<<endl;
}
[Link]();
}

system("Pause");
return 0;
}

4. Escribir un programa que lea y muestre en pantalla el archive generado en el
ejercicio anterior.

#include<iostream.h>
#include<fstream.h>

int main()
{
system("cls");
int i=32;
fstream archivo("[Link]",ios::out);

if(!archivo)
{
cout<<"No se puede crear el archivo [Link]"<<endl;
}
else
{
while(![Link]())
{
cout<<c;
archivo>>c;
}
[Link]();
}

system("Pause");
return 0;
}

5. Hacer un programa para generar el alfabeto.

#include <fstream.h>

int main()
{
ofstream archivo("[Link]");

for(char letra='A'; letra <='Z'; letra++)
archivo << letra;
[Link]();

return 0;
}

6. Copiar un fichero de texto en otro.

#include <iostream>
#include <fstream>
#include <iomanip>
main ( )
{ FILE *fin *fout;
char c, x;
if (((fin = fopen([Link]", rt")) == NULL) ||
((fout = fopen([Link]" , wt")) == NULL))
{ if (fout ! = NULL) fclose (fout) ;
if (fin ! = NULL) fclose (fin) ;
cout<<Error en la apertura de ficheros de salida \n ;
return 1;
}
c = fgetc(fin);
while (c != EOF)
{ x = fputc (c, fout);
if (x! = c)
cout<<"Error de escritura";
c = fgetc(fin);
}
fclose (fin);
fclose (fout);
return 0;
}

7. Escribir cinco registros en un fichero y leerlo posteriormente.

#include <stdio.h>
struct t_reg {
int num;
char cad[10];
char car;
}
int crear_fichero ()
{ FILE *fich;
int i, er_dev = 0;
struct t_reg r;
if ((fich = fopen([Link]", wb")) == NULL)
{
Cout<<"Error en apertura del fichero para escritura\n";
er_dev = 1;
}
else {
for (i = 0; i < 5; i + + )
{ [Link] = i;
[Link]=a+1;
cout<<"D un nombre: ";
gets([Link]);
fwrite(&r, sizeof(r), 1, fich);
}
fclose (fich);
}
return er_dev;
}
int Ieer_fichero ()
{ FILE *fich;
struct t-reg r;
int er_dev = 0;
if ((fich = fopen([Link]", rb")) == NULL)
{
cout<<Error en apertura del fichero para lectura \n ;
er_ dev = 1.
}
else
{ fread (&r, sizeof(r), 1, fich);
while (! feof(fich))
{
Cout<<("%d: %s: %c\n" , [Link], [Link], [Link]<<;
fread (&r, sizeof(r), 1, fich);
}
fclose (fich);
}
return er_dev;
}
int main(void)
{ int error;
error = crear_fichero();
if (!error) Ieer_fichero();
}
8. Hacer un programa para poder leer un fichero de byte en byte hasta el final, lo mejor
es utilizar lectura en modo binario.

#include <iostream>
#include <fstream>
#include <iomanip>
void main()
{
char a;
FILE*porigen;

porigen=fopen("fichero.*","rb");

fread(&a,sizeof(a),1,porigen);
do
{
fread(&a,sizeof(a),1,porigen);
}while(!feof(porigen));
}
9. Crear un algoritmo donde se pueda representar los palos de una baraja francesa en
C++.

#include <iostream>
#include <iomanip>AyEDI 2
do
cuatrimestre de 2002 6

enum Palo {Corazones = C, Treboles = T,
Diamantes = D, Piques = P};
void main()
{
Palo p;
p = Corazones;
cout << p << endl;
cout << char(p);
}

10. Dar el nombre del archivo al declarar la variable o utilizar el mtodo open.

#include <iostream>
#include <fstream>
#include <iomanip>
void main()
{
ifstream entrada("[Link]");
ifstream input;
char c;
[Link]("[Link]");
if ([Link]())
cout << "El archivo [Link] fue abierto correctamente";
else
cout << "El archivo [Link] no pudo ser abierto correctamente";
cout << endl;
entrada >> c;
[Link]();
[Link]()
cout << c << endl;
}

11. Realizar un programa donde escriba tres lneas en un fichero llamado
[Link] que se crea en el programa (si ya existe borramos su contenido).
Cada lnea consta de un entero, un real y una cadena de caracteres. Los datos en
cada lnea estn separados por espacios en blanco.

#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
ofstream fichout;

[Link]("[Link]");
if ([Link]()t)
{
cout << "\n Incapaz de crear este o abrir el fichero \n";
}
else
{ // Escritura en el fichero
fichout << "Alumno 1" << " " << 5.0 << " APROBADO" << endl;
fichout << "Alumno 2" << " " << 1.1 << " SUSPENSO" << endl;
fichout << "Alumno 3" << " " << 8.0 << " NOTABLE " << endl;
[Link]();
}
}



12. El siguiente programa lee el fichero de texto llamado [Link] y visualiza
su contenido en el monitor.

#include <fstream.h>
#include <iostream.h>
typedef char TCadena[30];
int main(){
int i;
char c;
float r;
TCadena cad;
ifstream fichin("[Link]");
if (!fichin)
cout << "\n Incapaz de crear este o abrir el fichero ";
else{
fichin >> i;
while (![Link]())
{
cout << i << " ";
fichin >> r;
cout << r << " ";
fichin >> cad;
cout << cad << "\n";
fichin >> i;
}
[Link]();
}

13. Crar un programa donde se introduzca un nmero para luego convertirlo en base 6,
8, 10.

#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>

int main()
{
ofstream archivo("[Link]");
int numero;

cout << "Introduzca un numero:" << endl;
cin >> numero;
archivo << "El valor introducido en base 10 es: " << numero << endl;

archivo << resetiosflags(ios::dec);
archivo << setiosflags(ios::oct);
archivo << "en base octal es: " << numero << endl;

archivo << resetiosflags(ios::oct);
archivo << setiosflags(ios::hex);
archivo << "y en base hexadecimal es: " << numero << endl;
archivo << setiosflags(ios::uppercase|ios::showbase);
archivo << "utilizando los manipuladores uppercase y showbase"
<< " el valor es: " << numero << endl;

archivo << resetiosflags(ios::uppercase|ios::showbase);
archivo << resetiosflags(ios::hex);
archivo << setiosflags(ios::showpos|ios::showpoint|ios::fixed);
archivo << "Utilizando los manipuladores showpos," << " showpoint y fixed: " <<
(float)numero << endl;

archivo << resetiosflags(ios::showpos|ios::showpoint|ios::fixed);
archivo << "Finalmente el valor es " << numero << endl;

[Link]();

return 0;
}

14. Demuestre operaciones de lectura de archivos.

#include <fstream.h>

int main()
{
ifstream archivo("[Link]", ios::noreplace);
char linea[128];
long contador = 0L;

if([Link]())
cerr << "Error al abrir el archivo [Link]" << endl;
else
while(![Link]())
{
[Link](linea, sizeof(linea));
cout << linea << endl;
if((++contador % 24)==0)
{
cout << "CONTINUA...";
[Link]();
}
}
[Link]();
return 0;
}

15. Muestre el xito en operaciones de entrada y salida de archivos.

#include <fstream.h>
#include <stdlib.h>

int main()
{
ifstream origen("[Link]");
char linea[128];

if([Link]())
cerr << "Error al abrir el archivo [Link]" << endl;
else
{
ofstream destino("[Link]", ios::noreplace);
if([Link]())
cerr << "Error al crear el archivo: [Link]" << endl;
else
{
while(![Link]())
{
[Link](linea, sizeof(linea));
if([Link]())
if([Link]())
exit(1);
else
destino << linea << endl;
if([Link]())
{
cerr << "Fallo de escritura en archivo" << endl;
exit(1);
}
}
}
[Link]();
}
[Link]();

return 0;
}

16. Mostrar operaciones con archivos binarios.

#include <fstream.h>
#include <stdlib.h>

int main()
{
ifstream origen("[Link]", ios::binary);
char linea[1];

if([Link]())
cerr << "Error al abrir el archivo: [Link]" << endl;
else
{
ofstream destino("[Link]", ios::binary);
if([Link]())
cerr << "Error al crear el archivo: [Link]" << endl;
else
{
while(![Link]()&&![Link]())
{
[Link](linea, sizeof(linea));
if([Link]())
{
[Link](linea, sizeof(linea));
if([Link]())
{
cerr << "Error en el archivo: [Link]" << endl;
exit(1);
}
}
else if(![Link]())
{
cerr << "Error en el archivo: [Link]" << endl;
exit(1);
}
}
}
[Link]();
}
[Link]();

return 0;
}

17. Mostrar la salida a una impresora.

#include <fstream.h>
#include <stdlib.h>

int main()
{
char texto[256];
ofstream impresora("PRN");
ifstream archivo("[Link]");

if ([Link]())
cerr << "Error al abrir el archivo: [Link]" << endl;
else
{
while (![Link]())
{
[Link](texto, sizeof(texto));
if ([Link]())
{
impresora << texto << endl;
if ([Link]())
{
cerr << "Error de escritura en impresora" << endl;
exit(1);
}
}
else if (![Link]())
{
cerr << "Error al leer el archivo: [Link]" << endl;
exit(1);
}
}
[Link]();
[Link]();
}

return 0;
}

18. Crear una aplicacin que permita agregar datos al final del fichero, con el fin de no
perder los datos anteriores. El siguiente cdigo debe ser copiado en el fichero
[Link] del proyecto.

#include <fstream.h>
#include <string.h>
#include <iomanip.h>
void Leer(char*);
void Agregar(char*);
void main()
{
int opc;
char fname[40];
cout << "File:?"; cin >> fname; strcat(fname,".dat");
while(true){
cout << "** Menu **\n1. Agregar\n2. Leer\n3. Salir\n\tOpc:?";
cin >> opc;
switch(opc){
case 1: Agregar(fname); break;
case 2: Leer(fname); break;
case 3: return;
}
}
}
void Leer(char *fname)
{
char nombre[40];
int carnet,edad,curso;
fstream fin(fname,ios::in|ios::binary);
if (!fin) { cout << "Error.." << endl; return; }
[Link](ios::left);
while(1){
if(![Link]((char*)&carnet,sizeof(int))) break;
[Link]((char*)nombre,40);
. . .//leer la edad y el curso, en ese orden

cout<<setw(8)<<carnet<<setw(40)<<nombre<<setw(5)<<edad<<setw(5)<<curso<<endl
;
}
[Link]();
}
void Agregar(char *fname)
{
char nombre[40];
int carnet,edad,curso;
cout << "Carnet:?"; cin>>carnet;
[Link]();
cout << "Nombre:?"; [Link](nombre,40);
cout << "Edad:?"; cin>>edad;
cout << "Curso:?"; cin>>curso;
fstream fout(fname,ios::app|ios::binary);
if (!fout) { cout << "error..."<<endl; return;}
[Link]((char*)&carnet,sizeof(int));

[Link]();
}

19. Crear un fichero nuevo [Link] en el mismo proyecto y copiar el cdigo del fichero
[Link]. Una vez hecho esto, podis quitar el fichero [Link] del proyecto.
Los cambios a hacer son:
Agregar una opcin ms al men: Opcin 3, Buscar, la cual llamar a la funcin
Buscar()
que se encargar de abrir el fichero de forma aleatoria.
Agregar la funcin Buscar.

#include <fstream.h>
#include <string.h>
#include <iomanip.h>

int Buscar(char *fname)
{
int carnet, car;
char nombre[40];
cout << "Dar Carnet a buscar:?"; cin >> car;
fstream fin(fname,ios::in|ios::binary);

int cont=0;
int dr=3*4+40;
int num=0;
while(![Link]()){
[Link](cont,ios::beg);
[Link]((char*)&carnet,4);
if (car==carnet){
[Link](ios::left);
[Link](nombre,40);
cout << setw(8) << car <<setw(40)<<nombre<< endl;

[Link]();
return num;
}
cont+=dr;
num++;
}
cout << "No existe el carnet..."<<endl;
[Link]();
return -1;
}

20. Crear un fichero nuevo [Link] en el mismo proyecto y copiar el cdigo del fichero
[Link]. Una vez hecho esto, podis quitar el fichero [Link] del proyecto. Los
cambios a hacer son:
Agregar una opcin ms al men: Opcin 4, Cambiar, la cual llamar a la funcin
Cambiar() que se encargar de abrir el fichero de forma aleatoria para escritura.
Agregar la funcin Cambiar.

#include <fstream.h>
#include <string.h>
#include <iomanip.h>

void Cambiar(char *fname)
{
int carnet,edad,curso;
char nombre[40];
int dr=3*4+40;
int reg=Buscar(fname);
cout << "Reg:"<<reg<<endl;
if (reg>=0){
cout << "Carnet:?"; cin>>carnet;
[Link]();
cout << "Nombre:?"; [Link](nombre,40);
cout << "Edad:?"; cin>>edad;
cout << "Curso:?"; cin>>curso;
fstream fout(fname,ios::in|ios::out|ios::binary);
[Link](reg*dr,ios::beg);

[Link]((char*)&carnet,sizeof(int));

[Link]();
}
}

21. Hacer un programa que permita grabar los objetos tipo Fecha en formato binario.
Para ello vamos a utilizar un objeto esttico (tanto para lectura como para escritura),
con lo cual no es necesario crear los objetos con el operador new.

#include <fstream.h>
#include <iomanip.h>
void Leer(char *);
void Escribir(char *);
void main()
{
char name[80];
int opc;
while(1){
cout<<"\n** Objetos Fecha **\nLeer(1), Escribir(2), Salir(3):?";
cin>> opc;
if (opc==3) break;
else{

cout << "Nombre del Fichero:?"; cin >> name;
if (opc==1) Leer(name);
else if(opc==2) Escribir(name);
}
}
}
void Leer(char *fname)
{
fstream fin(fname,ios::in|ios::nocreate|ios::binary);
if (!fin) { cerr << "Error"; return;}
Fecha f;
cout << "Las fechas guardadas en " << fname << " son:"<<endl;
while(true){
fin >> f;
if ([Link]())break;
cout << f << endl;
}
}
void Escribir(char *fname)
{
int d,m,a;
cout << "Introd. Fecha (d m a):";
cin >> d >> m >> a;
Fecha f1(d,m,a);
cout << "Se va a guardar: " << f1 << endl;

fstream fout(fname , ios::app|ios::binary);
fout << f1;
[Link]();
}

22. Hacer un programa que consista en repetir el ejercicio 3 al 5 pero usando objetos.
Para ello se tiene que usar la clase Alumno, que se da a continuacin. El programa
debe permitir Leer, Escribir, Buscar o Cambiar datos de un fichero, usando objetos de
la clase Alumno, para lo cual debe sobrecargar los operadores >> y <<, tanto
para hacerlo desde los ficheros como para consola y teclado (puede verlos en la
definicin de la clase).

#include <fstream.h>
#include <string.h>
class Alumno
{
int carnet;
char nombre[40];
int edad;
int curso;
public:
Alumno(int car=0, char*name="", int ed=0, int cur=0);

friend istream& operator>>( istream& ci, Alumno &al){
cout << "Carnet:?"; cin>>[Link]; [Link]();
cout << "Nombre:?"; [Link]([Link],40);
cout << "Edad:?"; cin>>[Link];
cout << "Curso:?"; cin>>[Link];
return ci;
}
friend ostream& operator<<( ostream& co, Alumno &al);

friend fstream& operator<<( fstream& fo, Alumno &al){
[Link]((char*)&al, sizeof(Alumno));
return fo;
}
friend fstream& operator>>( fstream& fi, Alumno &al);
};
//Programa Principal
void main()
{
int opc;
char fname[40];
fstream file;
Alumno al;
cout << "File:?"; cin >> fname; strcat(fname,".dat");
while(true){
cout << "** Menu **\n1. Agregar\n2. Leer\n3. Buscar
\n4. Cambiar Registros\n5. Salir\n\tOpc:?";
cin >> opc;
switch(opc){
case 1:
cin >> al;
[Link](fname,ios::app|ios::binary);
file << al;
[Link]();
break;
case 2: /*agregar cdigo aqui*/ break;
case 3: /*agregar cdigo aqui*/ break;
case 4: /*agregar cdigo aqui*/ break;
case 5: return;
}
}
}

También podría gustarte