Ejercicios Ficheros

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

TEMA: FICHEROS

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


hola.txt.

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

fstream archivo("Hola.txt", ios::out);
if(!archivo)
{
cout<<"No se puede crear el archivo hola.txt"<<endl;
}
else
{
archivo<<"Hola mundo"<<endl;
archivo.close();
}

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("Hola.txt", ios::in);
if(!archivo)
{
cout<<"No se puede abrir el archivo hola.txt"<<endl;
}
else
{
archivo.get(c);
while(!archivo.eof())
{
cout<<c;
archivo.get(c);
}
archivo.close();
}

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("ascii.txt",ios::out);

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

if(i%8==0)archivo<<endl;
}
archivo.close();
}

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("ascii.txt",ios::out);

if(!archivo)
{
cout<<"No se puede crear el archivo ascii.txt"<<endl;
}
else
{
while(!archivo.eof())
{
cout<<c;
archivo>>c;
}
archivo.close();
}

system("Pause");
return 0;
}

5. Hacer un programa para generar el alfabeto.

#include <fstream.h>

int main()
{
ofstream archivo("Letras.txt");

for(char letra='A'; letra <='Z'; letra++)
archivo << letra;
archivo.close();

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(DATOSIN.DAT", rt")) == NULL) ||
((fout = fopen(DATOSOUT.DAT" , 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(fichreg.dat", wb")) == NULL)
{
Cout<<"Error en apertura del fichero para escritura\n";
er_dev = 1;
}
else {
for (i = 0; i < 5; i + + )
{ r.num = i;
r.car=a+1;
cout<<"D un nombre: ";
gets(r.cad);
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(fichreg.dat", 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" , r.num, r.cad, r.car<<;
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("Hola.txt");
ifstream input;
char c;
input.open("Hello.txt");
if (entrada.good())
cout << "El archivo Hola.txt fue abierto correctamente";
else
cout << "El archivo Hola.txt no pudo ser abierto correctamente";
cout << endl;
entrada >> c;
entrada.close();
input.close()
cout << c << endl;
}

11. Realizar un programa donde escriba tres lneas en un fichero llamado
EJEMPLO5.TXT 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;

fichout.open("EJEMPLO5.TXT");
if (fichou.bad()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;
fichout.close();
}
}



12. El siguiente programa lee el fichero de texto llamado EJEMPLO5.TXT 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("EJEMPLO5.TXT");
if (!fichin)
cout << "\n Incapaz de crear este o abrir el fichero ";
else{
fichin >> i;
while (!fichin.eof())
{
cout << i << " ";
fichin >> r;
cout << r << " ";
fichin >> cad;
cout << cad << "\n";
fichin >> i;
}
fichin.close();
}

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("Datos.txt");
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;

archivo.close();

return 0;
}

14. Demuestre operaciones de lectura de archivos.

#include <fstream.h>

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

if(archivo.fail())
cerr << "Error al abrir el archivo Pruebas.txt" << endl;
else
while(!archivo.eof())
{
archivo.getline(linea, sizeof(linea));
cout << linea << endl;
if((++contador % 24)==0)
{
cout << "CONTINUA...";
cin.get();
}
}
archivo.close();
return 0;
}

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

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

int main()
{
ifstream origen("Pruebas.txt");
char linea[128];

if(origen.fail())
cerr << "Error al abrir el archivo Pruebas.txt" << endl;
else
{
ofstream destino("Copia.txt", ios::noreplace);
if(destino.fail())
cerr << "Error al crear el archivo: Copia.txt" << endl;
else
{
while(!origen.eof())
{
origen.getline(linea, sizeof(linea));
if(origen.good())
if(origen.eof())
exit(1);
else
destino << linea << endl;
if(destino.fail())
{
cerr << "Fallo de escritura en archivo" << endl;
exit(1);
}
}
}
destino.close();
}
origen.close();

return 0;
}

16. Mostrar operaciones con archivos binarios.

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

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

if(origen.fail())
cerr << "Error al abrir el archivo: Archiv04.exe" << endl;
else
{
ofstream destino("Copia.exe", ios::binary);
if(destino.fail())
cerr << "Error al crear el archivo: Copia.exe" << endl;
else
{
while(!origen.eof()&&!origen.fail())
{
origen.read(linea, sizeof(linea));
if(origen.good())
{
destino.write(linea, sizeof(linea));
if(destino.fail())
{
cerr << "Error en el archivo: Copia.exe" << endl;
exit(1);
}
}
else if(!origen.eof())
{
cerr << "Error en el archivo: Archiv04.exe" << endl;
exit(1);
}
}
}
destino.close();
}
origen.close();

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("Pruebas.txt");

if (archivo.fail())
cerr << "Error al abrir el archivo: Pruebas.txt" << endl;
else
{
while (!archivo.eof())
{
archivo.getline(texto, sizeof(texto));
if (archivo.good())
{
impresora << texto << endl;
if (impresora.fail())
{
cerr << "Error de escritura en impresora" << endl;
exit(1);
}
}
else if (!impresora.eof())
{
cerr << "Error al leer el archivo: Pruebas.txt" << endl;
exit(1);
}
}
archivo.close();
impresora.close();
}

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
Ejer1.cpp 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; }
cout.setf(ios::left);
while(1){
if(!fin.read((char*)&carnet,sizeof(int))) break;
fin.read((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
;
}
fin.close();
}
void Agregar(char *fname)
{
char nombre[40];
int carnet,edad,curso;
cout << "Carnet:?"; cin>>carnet;
cin.ignore();
cout << "Nombre:?"; cin.getline(nombre,40);
cout << "Edad:?"; cin>>edad;
cout << "Curso:?"; cin>>curso;
fstream fout(fname,ios::app|ios::binary);
if (!fout) { cout << "error..."<<endl; return;}
fout.write((char*)&carnet,sizeof(int));

fout.close();
}

19. Crear un fichero nuevo Ejer2.cpp en el mismo proyecto y copiar el cdigo del fichero
Ejer1.cpp. Una vez hecho esto, podis quitar el fichero Ejer1.cpp 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(!fin.eof()){
fin.seekg(cont,ios::beg);
fin.read((char*)&carnet,4);
if (car==carnet){
cout.setf(ios::left);
fin.read(nombre,40);
cout << setw(8) << car <<setw(40)<<nombre<< endl;

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

20. Crear un fichero nuevo Ejer3.cpp en el mismo proyecto y copiar el cdigo del fichero
Ejer2.cpp. Una vez hecho esto, podis quitar el fichero Ejer2.cpp 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;
cin.ignore();
cout << "Nombre:?"; cin.getline(nombre,40);
cout << "Edad:?"; cin>>edad;
cout << "Curso:?"; cin>>curso;
fstream fout(fname,ios::in|ios::out|ios::binary);
fout.seekp(reg*dr,ios::beg);

fout.write((char*)&carnet,sizeof(int));

fout.close();
}
}

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 (fin.eof())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;
fout.close();
}

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>>al.carnet; cin.ignore();
cout << "Nombre:?"; cin.getline(al.nombre,40);
cout << "Edad:?"; cin>>al.edad;
cout << "Curso:?"; cin>>al.curso;
return ci;
}
friend ostream& operator<<( ostream& co, Alumno &al);

friend fstream& operator<<( fstream& fo, Alumno &al){
fo.write((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;
file.open(fname,ios::app|ios::binary);
file << al;
file.close();
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