Fandom

Scratchpad

PLE:Unidad13Ejercicio04

219,207pages on
this wiki
Add New Page
Discuss this page0 Share
/*
programa:       ejercicio13
Descipcion:     Mini editor de textos.
*/

#include <iostream>
#include <fstream>
#include <stdlib>
using namespace std;

const char ABRIR = 'a';
const char GUARDAR = 'g';
const char SALIR = 's';
const char NUEVA = 'n';
const char INSERTAR = 'i';
const char MODIFICAR = 'm';
const char BORRAR = 'b';

char menu();
void mostrarTexto(char nom[], char t[][80], unsigned int n);
void abrir(ifstream &f,char n[],char t[][80], unsigned int &num);
void guardar(ofstream &f,char n[],char t[][80], unsigned int num);
void nueva(char t[][80], unsigned int &n);
void modificar(char t[][80], unsigned int &n);
void insertar(char t[][80], unsigned int &n);
void borrar(char t[][80], unsigned int &n);

void main() {
        char texto[255][80];
        unsigned int numLineas = 0;
        char opc = ' ';
        ifstream fe;
        ofstream fs;
        char nombreFichero[80] = "Nuevo.txt";

        while(opc != SALIR)
        {
                mostrarTexto(nombreFichero, texto, numLineas);
                opc = menu();
                switch(opc)
                {
                        case ABRIR:     abrir(fe,nombreFichero, texto, numLineas);
                                        break;
                        case GUARDAR:   guardar(fs,nombreFichero, texto, numLineas);
                                        break;
                        case INSERTAR:  insertar(texto, numLineas);
                                        break;
                        case MODIFICAR: modificar(texto, numLineas);
                                        break;
                        case BORRAR:    borrar(texto, numLineas);
                                        break;
                        case NUEVA:     nueva(texto, numLineas);
                                        break;
                }
        }
        cin.get();
}

void mostrarTexto(char nom[], char t[][80], unsigned int n)
{
        system("cls");
        cout << "****** " << nom << " ******" << endl;
        for(unsigned int i = 0; i < n; i++)
                cout << i << ": " << t[i] << endl;
        cout << endl;
}


char menu()
{
        char op;
        cout << "************************* MENU DE OPCIONES ************************" << endl;
        cout << "a- abrir g-guardar i- insert. b-borrar m-modif s-salir n-nueva lin.";
        cin.get(op);
        return op;
}


void abrir(ifstream &f,char n[],char t[][80], unsigned int &num)
{
        cout << "Nombre del fichero: ";
        cin >> n;
        f.open(n);
        if(f.good())
        {
                num = 0;
                f.getline(t[num],80);
                while(! f.eof())
                {
                        num++;
                        f.getline(t[num],80);
                }
        }
        f.close();
}

void guardar(ofstream &f,char n[],char t[][80], unsigned int num)
{
        cout << "Nombre del fichero: ";
        cin >> n;
        f.open(n);
        if(f.good())
        {
                for(unsigned int i = 0; i < num; i++)
                        f << t[i] << endl;
        }
        f.close();
}

void nueva(char t[][80], unsigned int &n)
{
        cout << "Introduzca linea nueva" << endl;
        cin.ignore();
        cin.getline(t[n++],80);
}

void insertar(char t[][80], unsigned int &n)
{
        unsigned int li;
        char linea[80];
        cout << "Introduzca nº de linea: ";
        cin >> li;
        if(li < n)
        {
                cout << "Introduzca linea nueva" << endl;
                cin.ignore();
                cin.getline(linea,80);
                n++;
                for(unsigned int i = n-1; i > li; i--)
                        strcpy(t[i], t[i-1]);
                strcpy(t[li],linea);
        }
        else
        {
                cout << "ERROR: El numero de linea no es valido";
                cin.get();
        }
}

void modificar(char t[][80], unsigned int &n)
{
        unsigned int i;
        cout << "Introduzca nº de linea: ";
        cin >> i;
        if(i < n)
        {
                cout << "Introduzca linea nueva" << endl;
                cin.ignore();
                cin.getline(t[i],80);
        }
        else
        {
                cout << "ERROR: El numero de linea no es valido";
                cin.get();
        }
}

void borrar(char t[][80], unsigned int &n)
{
        unsigned int li;
        char linea[80];
        cout << "Introduzca nº de linea: ";
        cin >> li;
        if(li < n)
        {
                n--;
                for(unsigned int i = li; i < n; i++)
                        strcpy(t[i], t[i+1]);
        }
        else
        {
                cout << "ERROR: El numero de linea no es valido";
                cin.get();
        }
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random wikia