Fandom

Scratchpad

PLE:Unidad13Ejercicio04

215,647pages on
this wiki
Add New Page
Discuss this page0 Share

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.

/*
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();
        }
}

Also on Fandom

Random wikia