marzo 01, 2013

EJMEPLO: EDITOR DE TEXTO CON ARREGLO CADENAS



Editor de textos con arreglo de cadenas.


#include string.h
#include stdio.h
#include ctype.h

void inserta(char t[][50],int *ll,int act,int max);
void modif_actual(int *act,int ll);
void reemplaza_linea(char t[][50],int ll,int *act);
void lista(char t[][50],int *ll);
void agrega_linea(char t[][50],int *ll,int max,int *act);

 void main(void){

   char txt[30][50],opcion;
    int llenas=0,max=30,actual;

     while(1){
      clrscr();
      printf("                             EDITOR DE TEXTO");
      printf("\n             SELECCIONA LA PRIMERA LETRA DE LA OPCION DESEADA");
      printf("\n\nAgregar  Salir  Lista   Reemplaza   Inserta   Opcion: ");

      opcion=toupper(getch());
       if(opcion=='S')
       break;
if(opcion=='A')
agrega_linea(txt,&llenas,max,&actual);
if(opcion=='L')
lista(txt,&llenas);
 if(opcion=='R')
 reemplaza_linea(txt,llenas,&actual);
 if(opcion=='I')
 inserta(txt,&llenas,actual,max);
    }
  }

/**************************************************************************/
  void agrega_linea(char t[][50],int *ll,int max,int *act){
      if(*ll==max){
      printf("\n\nMemoria insuficiente...");
       return;
     }
      printf("\n\n>");
      fflush(stdin);
      gets(t[*ll]);
      *ll=*ll+1;
      *act=*ll;
   }

/**************************************************************************/

  void lista(char t[][50],int *ll){

    int i=0;
     printf("\n\n");

     while(i<*ll){

      puts(t[i]);
      i++;
    }
      getch();
  }

/**************************************************************************/

     void modif_actual(int *act,int ll){
      int v;

       printf("\n\nIndica el numero de la linea a posicionar: ");
       scanf("%d",&v);

if(v<=ll && v!=0){
*act=v;
       }
else{
*act=-1;
}
   }

/**************************************************************************/

     void reemplaza_linea(char t[][50],int ll,int *act){

       if(ll==0){
       printf("\n\nNo existe informacion a reemplazar");
       getch();
       return;
      }
 modif_actual(act,ll);
   if(*act==-1){
    printf("\n\nLa linea seleccionada no existe...");
    getch();
  }

   else{

    printf("\n\nIntroduce la nueva linea: ");
    fflush(stdin);
     gets(t[*act-1]);
 }
      }

/*************************************************************************/

 void inserta(char t[][50],int *ll,int act,int max){
   int j;
     if(*ll==max){
      printf("\n\nMemoria insuficiente...");
      getch();
       return;
    }
      modif_actual(&act,*ll);

      if(act==-1){
       printf("\n\nLa linea seleccionada no existe...");
getch();
     }
      else{

j=*ll-1;

while(j>=act-1){
strcpy(t[j+1],t[j]);
j--;
       }
printf("\n\nInserta la nueva linea: ");
fflush(stdin);
gets(t[act-1]);
(*ll)++;
   }
}

No hay comentarios:

Publicar un comentario