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.
0 calificaciones0% encontró este documento útil (0 votos)
373 vistas18 páginas
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.
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.
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.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
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.
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
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.
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;
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
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.
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.
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;
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);