rendered paste body#include <iostream>#include <string>#include <fstream>#include "lib1.h"using namespace std;void Guardar(string texto[],string nombre,int nlineas) { if( (nombre.length()> 200) || (nombre.length()< 1) ) { return; } fstream fichero; fichero.open("nombre",ios::in); int i; for(i = 1;i<=nlineas;i++) { while(!fichero.eof()){ getline(fichero,texto[i]); } fichero.close(); }}int LeerFichero (string nombre, string texto[]){ int retorno; int i=0; string basura; fstream fic; fic.open("nombre", ios::in); if(!fic) { cout<<"E2: ERROR DE APERTURA DEL FICHERO.\n"<<endl; retorno=-1; } else { getline(fic, texto[i]); while(!fic.eof()); { i++; if(i<1000) { retorno=i; getline(fic,texto[i]); } else getline(fic,basura); } if(i>1000) { cout<<"E3: FICHERO DEMASIADO GRANDE, MAXIMO 1000 LINEAS.\n"<<endl; retorno=-1; } } fic.close(); return(retorno);}void Arriba(string texto[],int &linea, int &columna){ if(linea == 1) { return; } if(columna > texto[linea-1].length()) { columna = texto[linea-1].length(); } linea=linea-1;}void Abajo(string texto[],int &linea, int &columna,int nlineas){ if(linea == nlineas) //mirar el nlineas q seria el maximo valor d lineas d texto[] { return; } if(columna > texto[linea+1].length()) { columna = texto[linea+1].length(); if(columna == 0) { columna=1; //correjimos que si la linea es la linea virtual //la primera direccion no es 0, sino 1 } } linea=linea+1;}void Izquierda(string texto[],int &linea, int &columna){ if((linea == 1) && (columna == 1)) { return; } if(columna == 1) { linea=linea-1; columna=texto[linea].length(); } else { columna=columna-1; }}void Derecha(string texto[],int &linea, int &columna,int nlineas){ if( (linea > nlineas) && (columna = texto[linea].length()) ) { return; } if(columna == texto[linea].length()) { linea=linea+1; columna=1; } else { if(linea == nlineas) { return; } columna=columna+1; }}void PaginaArriba(string texto[],int &linea, int &columna){ //bien, primero comprobaremos si hemos de ir a 1 o a x -24 //moriremos si directamente estamos en 1, y regresaremos si fuese asi //finalmente, reajustaremos y si es necesario, pero solo 1 vez. if(linea == 1) { return; } int destino; if(((linea-24) == 1) || ((linea-24) < 1)) { destino = 1; } else { destino = linea - 24; } if(columna > texto[destino].length()) { columna = texto[destino].length(); } linea = destino;}void PaginaAbajo(string texto[],int &linea, int &columna,int nlineas){ int destino; if(linea == nlineas) { return; } if(((linea+24) == nlineas) || ((linea+24) > nlineas)) { destino = nlineas; //proxima parada: linea virtual; } else { destino = linea+24; } //corregimos y if(columna > texto[destino].length()) { columna = texto[destino].length(); if(columna == 0) { columna = 1; } } linea = destino;}void Posicion(string texto[],int &linea, int &columna,int nlineas, int lineapos){ if((lineapos < 1) || (lineapos > nlineas) || (lineapos == linea)) { return; } if(columna > texto[lineapos].length()) { columna = texto[lineapos].length(); if(columna == 0) { columna = 1; } } linea = lineapos;}void Mostrar(string texto[], int nlineas){ int cont; cout<<"---- PRINCIPIO ----"<<endl; for(cont=1;cont<nlineas+1;cont++) { cout<<texto[cont]<<endl; } cout<<"---- FINAL ----"<<endl;}void InsertarNuevaLinea(string texto[], int &linea, int &columna, int &nlineas){ string aux1, aux2; int i, KLINEAS=1000, k; if(nlineas!=KLINEAS) { for(i=nlineas; i>=linea+1; i--) texto[i]=texto[i-1]; aux1=""; aux2=""; for(k=0; k<=columna-2; k++) aux1+=texto[linea-1][k]; for(k=columna-1; k<=texto[linea-1].length(); k++) aux2+=texto[linea-1][k]; texto[linea-1]=aux1; texto[linea]=aux2; linea++; nlineas++; columna=1; } else cout<<"E6: TAMAÑO MAXIMO ALCANZADO (1000 LINEAS).\n"<<endl;}void InsertarCaracter(string texto[], char caracter, int &linea, int &columna, int &nlineas){ int i; if (linea==nlineas) { if(nlineas<MAX_LINES) { texto[nlineas]=texto[nlineas]+" "; texto[nlineas][0]=caracter; columna++; nlineas++; } else cout << endl << "E6 :TAMAÑO MAXIMO ALCANZADO (1000 LINEAS).\n" << endl; } else { texto[linea]=texto[linea]+" "; for (i=texto[linea].length();i>=columna;i--) texto[linea][i]=texto[linea][i-1]; texto[linea][columna]=caracter; columna++; }}void BorraAtras(string texto[], int &linea, int &columna, int &nlineas){ string aux=""; int i; if(columna>1) { for(i=0; i<texto[linea-1].length(); i++) if(i!=columna-2) aux+=texto[linea-1][i]; columna--; } else { if(linea>1) { columna=texto[linea-2].length(); texto[linea-2]=texto[linea-1]; for(i=linea-1; i<=nlineas-2; i++) texto[i]=texto[i+1]; nlineas--; columna--; } } }void BorrarPalabra(string texto[], int linea, int &columna, int nlineas){string aux1="";string aux2="";int i,k;k=columna; if(linea<nlineas && texto[linea]!="") { while (texto[linea][columna]!=' ') columna++; for (i=columna; i=texto[linea].length(); i++) aux2+=texto[linea][i]; while (texto[linea][k]!=' ') k--; for (i=0; i=k; i++) aux1+=texto[linea][i]; texto[linea]=aux1+aux2; }}void Borrar(string texto[], int &linea, int &columna, int &nlineas){ int i; char cad[texto[linea].length()]; for(i=0;i<texto[linea].length();i++) { cad[i]=texto[linea][i]; } if((linea==nlineas-1)&&(texto[linea].length()==0)) { nlineas--; } else { if(columna==texto[linea].length()&&linea<nlineas-1) { texto[linea]=texto[linea]+texto[linea+1]; for(i=linea+1;i<nlineas;i++) { texto[i]=texto[i+1]; } nlineas--; } else if(linea<nlineas&&columna!=texto[linea].length()) { for(i=columna;i<texto[linea].length();i++) { cad[i]=cad[i+1]; } cad[texto[linea].length()-1]='\0'; texto[linea]=cad; } }}void BorrarLinea(string texto[], int &linea, int &columna, int &nlineas){ int i,k; if(linea<nlineas) { if(columna> (texto[linea+1].length()) ) { for(k=0; k<=texto[linea+1].length(); k++) columna=texto[linea+1][k+1]; } for(i=linea-1; i<=nlineas-2; i++) texto[i]=texto[i+1]; nlineas--; } else { if(linea==nlineas) { linea+=1; columna=1; } }}void BorrarResto(string texto[], int linea, int &columna, int nlineas){ string aux=""; int i; if(linea<=nlineas) { if(columna>1 && columna<texto[linea].length()) { for(i=0; i<columna-1; i++) aux+=texto[linea][i]; texto[linea]=aux; } } }void InsertarCadena(string texto[], int linea, int &columna, int &nlineas, string cadena){ string aux1=""; string aux2=""; int i,k; for (k=0; k=columna ;k++) aux1+=texto[linea][k]; for (i=columna; i=texto[linea].length(); i++) aux2+=texto[linea][i]; if (linea==nlineas) { if(nlineas<MAX_LINES) { texto[nlineas]=aux1+cadena+aux2; nlineas++; } else { cout << endl << "E6 :TAMAÑO MAXIMO ALCANZADO (1000 LINEAS).\n" << endl; } } else { texto[linea]=aux1+cadena+aux2; }}void Buscar(string texto[], int &linea, int &columna, int nlineas, string palbuscar){ int tam, tamcad, i, k; string auxfrase=""; tam=texto[linea].length(); tamcad=palbuscar.length(); bool encontrado=false; while(encontrado!=true) { for(i=columna-1; i<=tam; i++) //recorre la linea del texto { for(k=0; k<=tamcad; k++) //recorre la cadena a buscar { if(texto[linea-1][i]=palbuscar[k]) //si el caracter del texto es igual al de la cadena auxfrase+=palbuscar[k]; } } if(auxfrase==palbuscar) { encontrado=true; columna=i-tamcad; } else { if(linea<=nlineas) { linea++; columna=1; } } }}void Reemplazar(string texto[], int &linea, int &columna, int nlineas, string palremplazar, string palremplazada){ int tam, tamcad, i, k, larg; string auxfrase=""; tam=texto[linea].length(); tamcad=palremplazar.length(); bool encontrado=false; string aux1=""; string aux2=""; while(encontrado!=true) { for(i=columna-1; i<=tam; i++) //recorre la linea del texto { for(k=0; k<=tamcad; k++) //recorre la cadena a buscar { if(texto[linea-1][i]=palremplazar[k]) //si el caracter del texto es //igual al de la cadena auxfrase+=palremplazar[k]; } } if(auxfrase==palremplazar) { encontrado=true; columna=i-tamcad; } else { if(linea<=nlineas) { linea++; columna=1; } } } larg=columna+tamcad; for (i=0; i=columna; i++) aux1+=texto[linea][i]; for (i=larg; i=texto[linea].length(); i++) aux2+=texto[linea][i]; texto[linea]=aux1+palremplazada+aux2;}