All pastes #152611 Raw Edit

Untitled

public cpp v1 · immutable
#152611 ·published 2006-08-28 23:40 UTC
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(texto[i],fichero);        }	    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(char 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 && 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=columna; k=0;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;}