All pastes #145574 Raw Edit

Miscellany

public text v1 · immutable
#145574 ·published 2006-08-23 02:16 UTC
rendered paste body


#include "lib1.h"

#include <iostream>



using namespace std;



void Guardar(string texto[],string nombre,int nlineas) //problema con el string texto y fstream fichero

{

	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;
	i=0;
	string basura;
	fsrream fic;
	fic.open(nombre, ios::in);
	if(!fic)
	{
		cout<<E2<<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<<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;  
     }    
}


void InsertarCaracter(string texto[], char caracter, int &linea, int &columna, int &nlineas)
{
	int i;
     if (linea==nlineas) 
		{
			if(nlineas<MAXLIN)
			{
     	        texto[nlineas]=texto[nlineas]+" ";
     	        texto[nlineas][0]=caracter;
     	        columna++;
				nlineas++;
     	   }
           else 
		   {
				cout << endl << E6 << 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--;            
         }    
     }  
}

int Buscar(string lineaActual, string palabra, int in)
{
	int tam1, tam2, i, k;
	bool enc;
	string aux;
	tam1=lineaActual.length();
	tam2=palabra.length();
	enc=false;
	i=ini;
	while(!enc && i<tam1-tam2)
	{
		aux=" ";
		for(k=i, k<=tam2+i, k++)
			aux+=lineaActual[k];
		if(aux==palabra)
			enc=true;
		else
			i++;
	}
	if(enc) return 1;
	else return -1;
}




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<MAXLIN)
		{
     	        	texto[nlineas]=aux1+cadena+aux2;
			nlineas++;
     		}
           	else 
		{
			cout << endl << E6 << endl;
     	   	}                    
     	}
	
	else 
	{
	texto[linea]=aux1+cadena+aux2;
	}
}