Evento Docente Universida del Mar
Mostrando entradas con la etiqueta Lenguaje C. Mostrar todas las entradas
Mostrando entradas con la etiqueta Lenguaje C. Mostrar todas las entradas

Editor de Texto

/*
-----------------------------------------------------------------------------
-------------------- --------------------
-------------------- E D I T O R D E T E X T O --------------------
-------------------- --------------------
-----------------------------------------------------------------------------

UNIVERSIDAD DEL MAR. CAMPUS PUERTO ESCONDIDO..

MATERIA : Estructura de Datos.

CARRERA : Lic. Inform tica.

PROFESOR : Freddy Juarez P‚rez.


EQUIPO: # 2
Alma Alheli Pedro P‚rez.
Zulima Silva Santos.
Jasiel Hassan Toscano Mart¡nez.
Emilio Nicolas Lavariega.
Darwin Sosa G¢mez.

*/

#include
#include
#include
#include

#define constcodeAscii 1
#define constcodeExtended 0

/* DECLARANDO LA LISTA */
typedef struct Lista{
char *linea;
struct Lista *Siguiente;
struct Lista *Anterior;
}LISTA;

LISTA *BUSCAR;
LISTA *ROOT=NULL;

/* Funciones Usadas */
int editar(LISTA *R,int ncol, int nlin);
void Cre_archivo_NVO();
void Abre_archivo_NVO();
void fondo();
void crea_recuadr_();
void nombres();
void error();
void encabezado();
void analizar();
void limpiar(char);
void meterlista(char);
void imprimelista(void);
void fondo_blanco();
void fondo_Nombres();
void main1();

/* Vectores auxiliares */
char todo_el_archivo[3000];
char auxiliar[80];
char Archivo_name[10];
char unidad[1];
char nombre1[10];
char opcion;

/* Banderas auxiliar en los textos de las pantallas */
int c=0,m=0,a=0,An=0,contador=0;
int bandera=0;
void fondo_blanco(int color)
{
textmode(C4350);
window(1,1,80,50);
textbackground(color);
clrscr();
textcolor(BLACK);
}

/*--------------------------------------------------------------------------------
------------ ---------------------------------
------------ LLENANDO LA LISTA CON EL ARCHIVO ---------------------------------
------------ --------------------------------
--------------------------------------------------------------------------------*/
void meterlista()
{
int len=80;
LISTA *NUEVO=new(LISTA);

if(ROOT==NULL)
{
ROOT=NUEVO;
NUEVO->Siguiente=NULL;
NUEVO->Anterior=NULL;
NUEVO->linea=(char*)malloc(sizeof(char)*len);
strcpy(NUEVO->linea,auxiliar);
}
else
{
LISTA *R=ROOT;
while(R->Siguiente!=NULL)R=R->Siguiente;
R->Siguiente=NUEVO;
NUEVO->Siguiente=NULL;
NUEVO->Anterior=R;
NUEVO->linea=(char*)malloc(sizeof(char)*len);
strcpy(NUEVO->linea,auxiliar);
}
}

/*----------------------------------------------------------------------------------
------------ ---------------
------------ LIMPIANDO EL VECTOR AUXILIAR QUE GUARDA EN LA LISTA ---------------
------------ ---------------
----------------------------------------------------------------------------------*/
void limpiar()
{
for(int g=0;g<=79;g++)
{
auxiliar[g]=NULL;
}
}

/*----------------------------------------------------------------------------------
------------ ------------------------------
------------ IMPRIMIENDO LA LISTA Y GUARDANDO ------------------------------
------------ ------------------------------
----------------------------------------------------------------------------------*/
void imprimelista(void)
{
fondo_blanco(1);
_setcursortype(_NORMALCURSOR);
int ncontrol=80;
int naccion=0;
int x=3,y=6;

LISTA *R=ROOT;
clrscr();
fondo();


/* ENCABEZADO Y PIE DE LA PANTALLA ACTUAL */
textcolor(10);gotoxy(5,1);cprintf(" EDITANDO ARCHIVO ");textcolor(15);
for(int i=46;i<79;i++){gotoxy(i,4);cprintf("-");}
textcolor(12);gotoxy(50,3);cprintf("%s",unidad);textcolor(15);
for(i=2;i<80;i++){gotoxy(i,46);cprintf("_");}
textcolor(12);gotoxy(20,48);cprintf(" Para Guardar y Volver Presione 'ESC'");textcolor(15);

/* Imprimiendo en pantalla la lista (esta contiene el archivo) */


do{
if(bandera==1)
return;//main1();
else
{
textcolor(YELLOW);
gotoxy(3,y++);
cprintf("%s", R->linea);
}
R=R->Siguiente;
}while(R!=NULL);

R=ROOT;
x=3;y=6;

/* Segun la tecla presionada, se llama a la funcion que edita archivo */
while(naccion!=27)
{
switch(ncontrol)
{
case 80:
R=R->Siguiente;
if(y<=43)y++;
naccion=editar(R,x,y);
break;
case 72:
R=R->Anterior;
if(y>=8)y--;
naccion=editar(R,x,y);
break;
}
switch(naccion)
{
case 80:ncontrol=80;break;
case 72:ncontrol=72;break;
}
}

}

/*----------------------------------------------------------------------------------
------------ ------------------------------
------------ EDITANDO LA LISTA CON EL ARCHIVO ------------------------------
------------ ------------------------------
----------------------------------------------------------------------------------*/
int editar( LISTA *R,int ncol, int nlin)
{
int ntypecode=0;
int x=ncol;
int y=nlin;
FILE *fp;

char *lineas;
lineas=R->linea;/* Guardando toda la linea en un vector */

int nmaxcol=79;/* Ancho de la pantalla */
int w=strlen(lineas)+1;/* Calculando el tama¤o de la linea */

/* Limpiando los espacion no usados del vector linea (Evita imprimir basura)*/
for(int w1=w+1;w1<=nmaxcol;w1++)
lineas[w1]='\x0';

int acharacter=0;
int bexit=0;

gotoxy(ncol,nlin);
while(acharacter!=27 && !bexit)
{
acharacter=getch();
ntypecode=constcodeAscii;

if(acharacter==0)
{
acharacter=getch();
ntypecode=constcodeExtended;
}
if(ntypecode==constcodeAscii && acharacter!=27)
{
cprintf("%c",acharacter);
*(lineas+(x-ncol))=acharacter;
acharacter=77;
}

switch(acharacter)
{
case 80:bexit=1;break;
case 72:bexit=1;break;
case 75:if(x>ncol)x--;break;
case 77:if(x }
gotoxy(x,y);
}/* Cerrando While */
if (acharacter==27)
{
R=ROOT;
fp=fopen(unidad,"w");
if(fp==NULL)/*En caso que no se pueda crear el archivo*/
{
error();
getch();
}
_setcursortype(_NORMALCURSOR);/*Cursor Nomral*/
while(R!=NULL)/*Insertando Datos en el archivo*/
{
for(int b=0;b<=strlen(R->linea);b++)
{
fputc(R->linea[b],fp);
}
R=R->Siguiente;
}
fclose(fp);
} /* Cerrando IF */
return(acharacter);/*Rotornando el Caracter que se oprimi¢*/
}
/*------------------------------------------------------------------------------------
------------- --------------
------------- IMPRIMIENDO ENCABEZADO DE PORTADA (pantalla inicial) --------------
------------- --------------
-------------------------------------------------------------------------------------*/
void encabezado()
{
textcolor(10);
gotoxy(28,9);cprintf(" EDITOR DE TEXTO ");
gotoxy(22,11);cprintf(" SISTEMA MANEJADOR DE ARCHIVOS ");
for(int i=18;i<59;i++){textcolor(14);gotoxy(i,13);cprintf("Ü");}
textcolor(15);
}
/*------------------------------------------------------------------------------------
------------- --------------
------------- CAPTURANDO NOMBRE DEL ARCHIVO, crear, apertura o analisis --------------
------------- --------------
-------------------------------------------------------------------------------------*/
void nombres()
{
int i;
textcolor(14);
_setcursortype(_NOCURSOR);/*Imprimir sin ver el Cursor*/
for(i=21;i<35;i++)
{
gotoxy(15,i);cprintf("º");
gotoxy(55,i);cprintf("º");
}
for(i=16;i<55;i++)
{
gotoxy(i,20);cprintf("Í");
gotoxy(i,35);cprintf("Í");
}

gotoxy(15,20);cprintf("É");gotoxy(55,20);cprintf("»");
gotoxy(15,35);cprintf("È");gotoxy(55,35);cprintf("¼");

/* ENCABEZADO DE LAS VENTANAS QUE CAPTURAN NOMBRE Y UNIDAD DEL ARCHIVO */
do
{
textcolor(10);
if(c==1&&m==0&&a==0&&An==0){gotoxy(18,20);cprintf(" NOMBRAR ARCHIVO ");}
if(c==0&&m==0&&a==1&&An==0){gotoxy(18,20);cprintf(" EDITAR ARCHIVO ");}
if(c==0&&m==0&&a==0&&An==1){gotoxy(18,20);cprintf(" EDITAR ARCHIVO ");}
textcolor(15);

textcolor(12);gotoxy(17,24);cprintf("Maximo 10 caracteres");textcolor(15);
gotoxy(17,29);cprintf("Nombre del Archivo: ");gets(Archivo_name);
gotoxy(17,33);cprintf("Unidad De DISCO: ");gets(unidad);
clrscr();fondo();
if(strlen(Archivo_name)>10){clrscr();fondo();nombres();}

}while(strlen(Archivo_name)>10);
}
/*------------------------------------------------------------------------------------
------------------- ---------------------------------------
------------------- ENVIANDO MENSAJES DE ERROR ---------------------------------------
------------------- ---------------------------------------
------------------------------------------------------------------------------------*/
void error()
{
int i;
textcolor(14);
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/
for(i=19;i<24;i++)
{
gotoxy(23,i);cprintf("º");
gotoxy(70,i);cprintf("º");
}
for(i=24;i<70;i++)
{
gotoxy(i,18);cprintf("Í");
gotoxy(i,24);cprintf("Í");
}
gotoxy(23,18);cprintf("É");gotoxy(70,18);cprintf("»");
gotoxy(23,24);cprintf("È");gotoxy(70,24);cprintf("¼");

/* MENSAJE DE ERROR, POR SI NO SE CREA O CARGA BIEN EL ARCHIVO */

textcolor(10);gotoxy(26,18);cprintf(" UPPSS..ERROR... ");textcolor(15);
textcolor(12);

if(c==1&&m==0&&a==0&&An==0){gotoxy(27,22);cprintf(" ERROR, NO SE CREO EL ARCHIVO");}
if(c==0&&m==1&&a==0&&An==0){gotoxy(27,22);cprintf(" ERROR, NO SE PUEDE CARGAR EL ARCHIVO");}
if(c==0&&m==0&&a==1&&An==0){gotoxy(27,22);cprintf(" ERROR, NO SE PUEDE CARGAR EL ARCHIVO");}
if(c==0&&m==0&&a==0&&An==1){gotoxy(27,22);cprintf(" ERROR, NO SE PUEDE EDITAR EL ARCHIVO ");}

textcolor(15);
}

/* CREANDO MARGEN DE CAPTURA DE OPCION EN PANTALLA INICIAL */
void crea_recuadro_()
{
textcolor(12);
gotoxy(37,35);cprintf("É");gotoxy(59,35);cprintf("»");
gotoxy(37,41);cprintf("È");gotoxy(59,41);cprintf("¼");

for(int i=38;i<59;i++)
{
gotoxy(i,35);cprintf("Í");
gotoxy(i,41);cprintf("Í");
}
textcolor(15);
}
/*----------------------------------------------------------------------------------
------------------- --------------------------------
------------------- FUNCION MAIN, menu de opciones --------------------------------
------------------- --------------------------------
----------------------------------------------------------------------------------*/
void main()
{
textmode(C4350);/* Definiendo tama¤o de ventana */

main1();
getch();
}

void main1()
{
do{
_setcursortype(_NORMALCURSOR);/*Cursor normal*/
clrscr();
fondo_blanco(0);
fondo();
encabezado();

/* MENU DE ACCIONES */
textcolor(11);
gotoxy(24,20);cprintf(" F9 ÍÍ%c Nombrar Archivo.",16);
gotoxy(24,24);cprintf(" F3 ÍÍ%c Editar Archivo.",16);
gotoxy(24,28);cprintf("Esc ÍÍ%c SALIR\n",16);

crea_recuadro_();

textcolor(10);
gotoxy(40,38);cprintf("ELIJA OPCION : ");opcion=getche();
textcolor(15);

switch(opcion)
{
case 67:Cre_archivo_NVO();break; /* F9 */
case 61:analizar();break; /* F3 */
case 27:exit(1);break; /* ESC */
}
}while(opcion!=27);
}

/*---------------------------------------------------------------------------------
------------- ----------------------------------
------------- CREANDO UN ARCHIVO NUEVO ----------------------------------
------------- ----------------------------------
---------------------------------------------------------------------------------*/
void Cre_archivo_NVO()
{
c=1;m=a=An=0;
int ren=5,col=5;

FILE *fp;/* Puntero para maniobrar Archivos */

char caracter;
char Extension_de_archivo[]=".txt";
char diagonal[]=":\\";
int columna;
int renglon;
clrscr();
fondo();
nombres();
clrscr();
fondo();

fflush(stdin);

/* CONCATENANDO RUTA PARA GUARDAR EL ARCHIVO */
strncat(unidad,diagonal,3);
strncat(unidad,Archivo_name,strlen(Archivo_name));
strncat(unidad,Extension_de_archivo,4);/*Concatenando Extension*/

/* Se esta creando el archivo */
fp=fopen(unidad,"w+t");

/*En caso que no se pueda crear el archivo*/
if(fp==NULL)
{
error();
getch();
return;
}

gotoxy(col,ren);
_setcursortype(_NORMALCURSOR);/*Cursor Nomral*/


columna=3;
renglon=9;
while(columna<79&&renglon<44)
{
caracter=32;
if(columna==78)
{
caracter='\x0';
columna=3;renglon++;
}
fputc(caracter,fp);
columna++;
}

fclose(fp);/*Cerrando Puntero del archivo*/
return;
}

/*------------------------------------------------------------------------------------------
-------------- -----------------------------------------------
-------------- ABRIENDO EL ARCHIVO YA CREADO -----------------------------------------------
-------------- -----------------------------------------------
------------------------------------------------------------------------------------------*/
void Abre_archivo_NVO()
{
ROOT=NULL;
a=1;c=m=An=0;
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/

limpiar();
int ren=5,col=5,i;

FILE *fp;/* Puntero para maniobrar Archivos */

char caracter;
char diagonal[]=":\\";
char *Extension_de_archivo=".txt";

clrscr();
fondo();
nombres();
clrscr();
fondo();

fflush(stdin);

/* CONCATENANDO RUTA PARA GUARDAR EL ARCHIVO */
strncat(unidad,diagonal,3);
strncat(unidad,Archivo_name,strlen(Archivo_name));
strncat(unidad,Extension_de_archivo,4);/*Concatenando Extension*/

/*Se esta abriendo el Archivo para editarlo */
fp=fopen(unidad,"r+t");

textcolor(11);gotoxy(5,1);cprintf(" EDITANDO ARCHIVO ");textcolor(15);
textcolor(12);gotoxy(50,3);cprintf("%s",unidad);textcolor(15);
for(i=46;i<79;i++){gotoxy(i,4);cprintf("-");}
for(i=2;i<80;i++){gotoxy(i,46);cprintf("_");}
textcolor(12);gotoxy(20,48);cprintf(" Para Salir del Editor Presione 'ESC'");textcolor(15);

/*En caso que no se pueda cargar el archivo*/
if(fp==NULL)
{
error();
getch();
bandera=1;
return;
}
gotoxy(col,ren);
contador=0;
bandera=0;
/* Leyendo Archivo caracter a caracter y mandando datos a la lista */
while((caracter=fgetc(fp))!=EOF)
{
auxiliar[contador++]=caracter;
if(caracter==NULL||caracter=='\x0'||caracter=='\n')
{
contador=0;meterlista();limpiar();
}
}
fclose(fp);/*Cerrando el puntero del archivo*/
meterlista();
clrscr();
}

/*-------------------------------------------------------------------------------------------
---------------- --------------------------------
---------------- ENLAZANDO PARA ABRIR Y EDITAR ARCHIVO --------------------------------
---------------- --------------------------------
-------------------------------------------------------------------------------------------*/
void analizar()
{
c=m=a=0; An=1;
clrscr();
fondo();
Abre_archivo_NVO();
_setcursortype(_NORMALCURSOR);
imprimelista();
}

/*------------------------------------------------------------------------------
-------------- --------------------------------
-------------- IMPRIMIENDO FONDO DE PANTALLA --------------------------------
-------------- --------------------------------
------------------------------------------------------------------------------*/
void fondo(void)
{
int l;
textcolor(15);
cprintf("É");

for(l=0;l<78;l++)cprintf("Í");gotoxy(78,0);cprintf("»");
for(l=2;l<49;l++){gotoxy(80,l);cprintf("º\n");}
for(l=2;l<49;l++){gotoxy(1,l);cprintf("º\n");}gotoxy(1,49);cprintf("È");
for(l=1;l<79;l++)cprintf("Í");gotoxy(80,49);cprintf("¼");
textcolor(15);
}

Tags:

Manejo de Archivos

/*
ESTE PROGRAMA CREA UN ARCHIVO, LO ABRE Y AGREGA INFOMACION AL FINAL DEL MISMO

MATERIA : PROGRAMACION DE SISTEMAS;

ALUMNO : DARWIN SOSA GOMEZ 312 A

PROFESOR : JORGE OCHOA SOMUANO

*/
#include
#include
#include
#include


void Cre_archivo_NVO();
void Abre_archivo_NVO();
void Agrega_informacion();
void fondo();
void crea_recuadr_();
void nombres();
void error();
void encabezado();
void analizar();
void tablas();

int c=0,m=0,a=0,An=0;
char Archivo_name[10];
char opcion;

void encabezado()/*Encabezado En Portada*/
{
int i;
gotoxy(22,9);cprintf(" ANALIZADOR LEXICO GRAFICO Y ");
gotoxy(22,11);cprintf(" SISTEMA MANEJADOR DE ARCHIVOS ");
for(i=18;i<59;i++){textcolor(11);gotoxy(i,12);cprintf("Ü");}
textcolor(15);
}

void nombres()/*Tecleando Nombre de Archivo*/
{
int i;
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/
for(i=21;i<35;i++)
{
gotoxy(15,i);cprintf("º");
gotoxy(55,i);cprintf("º");
}
for(i=16;i<55;i++)
{
gotoxy(i,20);cprintf("Í");
gotoxy(i,35);cprintf("Í");
}

gotoxy(15,20);cprintf("É");gotoxy(55,20);cprintf("»");
gotoxy(15,35);cprintf("È");gotoxy(55,35);cprintf("¼");


do
{
textcolor(10);
if(c==1&&m==0&&a==0&&An==0){gotoxy(18,20);cprintf(" CREAR ARCHIVO NUEVO ");}
if(c==0&&m==1&&a==0&&An==0){gotoxy(18,20);cprintf(" MODIFICAR ARCHIVO ");}
if(c==0&&m==0&&a==1&&An==0){gotoxy(18,20);cprintf(" ABRIR ARCHIVO ");}
if(c==0&&m==0&&a==0&&An==1){gotoxy(18,20);cprintf(" ANALIZAR ARCHIVO ");}
textcolor(15);

textcolor(12);gotoxy(17,26);cprintf("Maximo 10 caracteres");textcolor(15);
gotoxy(17,30);cprintf("Nombre del Archivo: ");gets(Archivo_name);
clrscr();fondo();
if(strlen(Archivo_name)>10){clrscr();fondo();nombres();}
}while(strlen(Archivo_name)>10);

}

void error()
{
int i;
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/
for(i=19;i<24;i++)
{
gotoxy(23,i);cprintf("º");
gotoxy(70,i);cprintf("º");
}
for(i=24;i<70;i++)
{
gotoxy(i,18);cprintf("Í");
gotoxy(i,24);cprintf("Í");
}

gotoxy(23,18);cprintf("É");gotoxy(70,18);cprintf("»");
gotoxy(23,24);cprintf("È");gotoxy(70,24);cprintf("¼");

textcolor(10);gotoxy(26,18);cprintf(" UPPSS..ERROR... ");textcolor(15);
textcolor(12);
if(c==1&&m==0&&a==0&&An==0){gotoxy(27,22);cprintf(" ERROR, NO SE CREO EL ARCHIVO");}
if(c==0&&m==1&&a==0&&An==0){gotoxy(27,22);cprintf(" ERROR, NO SE PUEDE CARGAR EL ARCHIVO");}
if(c==0&&m==0&&a==1&&An==0){gotoxy(27,22);cprintf(" ERROR, NO SE PUEDE CARGAR EL ARCHIVO");}
if(c==0&&m==0&&a==0&&An==1){gotoxy(27,22);cprintf(" ERROR, NO SE PUEDE ANALIZAR EL ARCHIVO ");}
textcolor(15);

}
void crea_recuadro_()
{
textcolor(12);
gotoxy(37,31);cprintf("É");gotoxy(59,31);cprintf("»");
gotoxy(37,35);cprintf("È");gotoxy(59,35);cprintf("¼");

for(int i=38;i<59;i++)
{
gotoxy(i,31);cprintf("Í");
gotoxy(i,35);cprintf("Í");
}
textcolor(15);
}

void main()
{
do{
_setcursortype(_NORMALCURSOR);/*Cursor normal*/
clrscr();
fondo();
encabezado();
gotoxy(24,18);cprintf("1. CREAR ARCHIVO NUEVO");
gotoxy(24,20);cprintf("2. VER ARCHIVO");
gotoxy(24,22);cprintf("3. AGREGAR DATOS AL ARCHIVO");
gotoxy(24,24);cprintf("4. ANALIZAR ARCHIVO");
gotoxy(24,26);cprintf("5. SALIR\n");

crea_recuadro_();
textcolor(10);
gotoxy(40,33);cprintf("ELIJA OPCION : ");opcion=getche();
textcolor(15);


switch(opcion)
{
case '1':Cre_archivo_NVO();break;
case '2':Abre_archivo_NVO();break;
case '3':Agrega_informacion();break;
case '4':analizar();break;
case '5':exit(1);break;
}
}while(opcion!='5');
getch();
}

void Agrega_informacion()
{
_setcursortype(_NORMALCURSOR);/*Cursor Nomral*/
int col=5;int ren=5;int i;
FILE *fp;
char caracter;
char *Extension_de_archivo=".txt";
m=1;a=An=c=0;
clrscr();fondo();
nombres();
clrscr();fondo();
fflush(stdin);

strncat(Archivo_name,Extension_de_archivo,4);

fp=fopen(Archivo_name,"a+t");

if(fp==NULL)
{
error();
getch();
return;
}
textcolor(11);gotoxy(5,1);cprintf(" AGREGANDO INFORMACION AL ARCHIVO ");textcolor(15);
for(i=46;i<79;i++){gotoxy(i,4);cprintf("-");}
textcolor(12);gotoxy(50,3);cprintf("C:\\BC\\BIN\\%s",Archivo_name);textcolor(15);
for(i=2;i<80;i++){gotoxy(i,46);cprintf("_");}
textcolor(12);gotoxy(20,48);cprintf(" Para Guardar y Salir Presione 'ESC'");textcolor(15);

_setcursortype(_NORMALCURSOR);/*Cursor Nomral*/
gotoxy(col,ren);
while((caracter=fgetc(fp))!=EOF)
{
if(caracter=='\n'){ren++;col=5;}
gotoxy(col++,ren);cprintf("%c",caracter);
}

gotoxy(col++,ren);
while((caracter=getche())!=27)
{
if(caracter==13)
{
caracter='\n';
ren++;col=5;
}
gotoxy(col++,ren);fputc(caracter,fp);
}
fclose(fp);

}

void Cre_archivo_NVO()
{
int ren=5; int col=5;int i;
FILE *fp;
char caracter;
char Extension_de_archivo[]=".txt";
c=1;m=a=An=0;
clrscr();fondo();
nombres();
clrscr();fondo();
fflush(stdin);

strncat(Archivo_name,Extension_de_archivo,4);

fp=fopen(Archivo_name,"w+t");

textcolor(11);gotoxy(5,1);cprintf(" CREANDO ARCHIVO NUEVO ");textcolor(15);
textcolor(12);gotoxy(50,3);cprintf("C:\\BC\\BIN\\%s",Archivo_name);textcolor(15);
for(i=46;i<79;i++){gotoxy(i,4);cprintf("-");}

for(i=2;i<80;i++){gotoxy(i,46);cprintf("_");}
textcolor(12);gotoxy(20,48);cprintf(" Para Guardar y Salir Presione 'ESC'");textcolor(15);

if(fp==NULL)
{
error();
getch();
return;
}
gotoxy(col,ren);
_setcursortype(_NORMALCURSOR);/*Cursor Nomral*/
while((caracter=getche())!=27)
{
if(caracter==13)
{
caracter='\n';
ren++;col=5;
}
gotoxy(++col,ren);fputc(caracter,fp);
}
fclose(fp);
}

void Abre_archivo_NVO()
{
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/
int ren=5; int col=5;int i;
FILE *fp;
char caracter;
char *Extension_de_archivo=".txt";
a=1;c=m=An=0;
clrscr();fondo();
nombres();
clrscr();fondo();

fflush(stdin);
strncat(Archivo_name,Extension_de_archivo,4);

fp=fopen(Archivo_name,"r+t");
textcolor(11);gotoxy(5,1);cprintf(" VISUALIZANDO ARCHIVO ");textcolor(15);
textcolor(12);gotoxy(50,3);cprintf("C:\\BC\\BIN\\%s",Archivo_name);textcolor(15);
for(i=46;i<79;i++){gotoxy(i,4);cprintf("-");}
for(i=2;i<80;i++){gotoxy(i,46);cprintf("_");}
textcolor(12);gotoxy(20,48);cprintf(" Para Salir Presione 'ESC'");textcolor(15);
if(fp==NULL)
{
error();
getch();
return;
}
gotoxy(col,ren);
while((caracter=fgetc(fp))!=EOF)
{
if(caracter=='\n'){ren++;col=5;}
gotoxy(col++,ren);cprintf("%c",caracter);
}
fclose(fp);

getch();
}

void analizar()/*Analizando Archivo.*/
{
int ren=5; int col=5;int i,j,k,l,m,n,o,cI,cO,cL,cP,cNP,cCLV,b1,b2,b3;
FILE *fp;
char caracter;
char *Extension_de_archivo=".txt";
An=1;a=c=m=0;
char todo_el_archivo[3000];
char identificadores[300];
char operadores[300];
char literales[300];
char puntuacion[300];
char no_permitidos[300];
char claves[300];

clrscr();fondo();
nombres();
clrscr();fondo();

fflush(stdin);
strncat(Archivo_name,Extension_de_archivo,4);

fp=fopen(Archivo_name,"r+t");

textcolor(11);gotoxy(5,1);cprintf(" ANALIZANDO ARCHIVO ");textcolor(15);
textcolor(12);gotoxy(50,3);cprintf("C:\\BC\\BIN\\%s",Archivo_name);textcolor(15);
for(i=46;i<79;i++){gotoxy(i,4);cprintf("-");}
for(i=2;i<80;i++){gotoxy(i,46);cprintf("_");}
textcolor(12);gotoxy(20,48);cprintf(" Para Salir Presione 'ESC'");textcolor(15);

if(fp==NULL)
{
error();
getch();
return;
}
for(i=0;i<300;i++)
{
identificadores[i]=NULL;
literales[i]=NULL;
operadores[i]=NULL;
puntuacion[i]=NULL;
no_permitidos[i]=NULL;
claves[i]=NULL;
}
for(i=0;i<3000;i++)todo_el_archivo[i]=NULL;
gotoxy(col,ren);
i=0;
while((caracter=fgetc(fp))!=EOF){todo_el_archivo[i++]=caracter;}

i=j=k=l=m=n=o=0;
/******************************************************************************
******************** **********************************
******************** CLASIFICANDO LOS TOKENS ***********************************
******************** **********************************
*******************************************************************************
*/
while(todo_el_archivo[i]!='\0')
{ b1=b2=b3=0;

/* CLASIFICANDO IDENTIFICADORES */
if((todo_el_archivo[i]>='A'&&todo_el_archivo[i]<='Z')||(todo_el_archivo[i]>='a'&&todo_el_archivo[i]<='z'))
{
/* CLASIFICANDO LA PALABRA RESERVADA 'Comienza' */
if((todo_el_archivo[i]=='C'||todo_el_archivo[i]=='c')&&(todo_el_archivo[i+1]=='O'||todo_el_archivo[i+1]=='o')&&(todo_el_archivo[i+2]=='M'||todo_el_archivo[i+2]=='m')&&(todo_el_archivo[i+3]=='I'||todo_el_archivo[i+3]=='i')&&(todo_el_archivo[i+4]=='E'||todo_el_archivo[i+4]=='e')&&(todo_el_archivo[i+5]=='N'||todo_el_archivo[i+5]=='n')&&(todo_el_archivo[i+6]=='Z'||todo_el_archivo[i+6]=='z')&&(todo_el_archivo[i+7]=='A'||todo_el_archivo[i+7]=='a'))
{
claves[o++]=todo_el_archivo[i]; /* C */
claves[o++]=todo_el_archivo[i+1];/* O */
claves[o++]=todo_el_archivo[i+2];/* M */
claves[o++]=todo_el_archivo[i+3];/* I */
claves[o++]=todo_el_archivo[i+4];/* E */
claves[o++]=todo_el_archivo[i+5];/* N */
claves[o++]=todo_el_archivo[i+6];/* Z */
claves[o++]=todo_el_archivo[i+7];/* A */
claves[o++]=32;
i+=8;
}
/* CLASIFICANDO LA PALABRA RESERVADA 'Termina' */
if((todo_el_archivo[i]=='T'||todo_el_archivo[i]=='t')&&(todo_el_archivo[i+1]=='E'||todo_el_archivo[i+1]=='e')&&(todo_el_archivo[i+2]=='R'||todo_el_archivo[i+2]=='r')&&(todo_el_archivo[i+3]=='M'||todo_el_archivo[i+3]=='m')&&(todo_el_archivo[i+4]=='I'||todo_el_archivo[i+4]=='i')&&(todo_el_archivo[i+5]=='N'||todo_el_archivo[i+5]=='n')&&(todo_el_archivo[i+6]=='A'||todo_el_archivo[i+6]=='a'))
{
claves[o++]=todo_el_archivo[i]; /* T */
claves[o++]=todo_el_archivo[i+1];/* E */
claves[o++]=todo_el_archivo[i+2];/* R */
claves[o++]=todo_el_archivo[i+3];/* M */
claves[o++]=todo_el_archivo[i+4];/* I */
claves[o++]=todo_el_archivo[i+5];/* N */
claves[o++]=todo_el_archivo[i+6];/* A */
claves[o++]=32;
i+=7;
}
/* CLASIFICANDO LA PALABRA RESERVADA 'SI' */
if((todo_el_archivo[i]=='S'||todo_el_archivo[i]=='s')&&(todo_el_archivo[i+1]=='I'||todo_el_archivo[i+1]=='i'))
{
claves[o++]=todo_el_archivo[i]; /* S */
claves[o++]=todo_el_archivo[i+1];/* I */
claves[o++]=32;
i+=2;
}
/* CLASIFICANDO LA PALABRA RESERVADA 'OTRO' */
if((todo_el_archivo[i]=='O'||todo_el_archivo[i]=='o')&&(todo_el_archivo[i+1]=='T'||todo_el_archivo[i+1]=='t')&&(todo_el_archivo[i+2]=='R'||todo_el_archivo[i+2]=='r')&&(todo_el_archivo[i+3]=='O'||todo_el_archivo[i+3]=='o'))
{
claves[o++]=todo_el_archivo[i]; /* O */
claves[o++]=todo_el_archivo[i+1];/* T */
claves[o++]=todo_el_archivo[i+2];/* R */
claves[o++]=todo_el_archivo[i+3];/* O */
claves[o++]=32;
i+=4;
}

identificadores[j++]=todo_el_archivo[i];
if(todo_el_archivo[i+1]>='0'&&todo_el_archivo[i+1]<='9')
{
identificadores[j++]=todo_el_archivo[i+1];
i+=2;
}
}
else
{
if((todo_el_archivo[i]=='+')||(todo_el_archivo[i]=='-')||(todo_el_archivo[i]=='*')||(todo_el_archivo[i]=='/')||(todo_el_archivo[i]=='!'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]==':'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='<'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='>'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='\n')||(todo_el_archivo[i]=='=')||(todo_el_archivo[i]=='>')||(todo_el_archivo[i]=='<'))b1=0;
else b1=1;
}
/* CLASIFICANDO LITERALES */
if(todo_el_archivo[i]>='0'&&todo_el_archivo[i]<='9')
{
if(todo_el_archivo[i+1]>='0'&&todo_el_archivo[i+1]<='9')
{literales[l++]=todo_el_archivo[i];}
else
{
literales[l++]=todo_el_archivo[i];
literales[l++]=32;
}
}
else
{
if((todo_el_archivo[i]=='+')||(todo_el_archivo[i]=='-')||(todo_el_archivo[i]=='*')||(todo_el_archivo[i]=='/')||(todo_el_archivo[i]=='!'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]==':'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='<'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='>'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='\n')||(todo_el_archivo[i]=='=')||(todo_el_archivo[i]=='>')||(todo_el_archivo[i]=='<'))b2=0;
else b2=1;
}
/* CLASIFICANDO SIGNOS DE PUNTUACION */
if((todo_el_archivo[i]=='{')||(todo_el_archivo[i]=='}')||(todo_el_archivo[i]=='[')||(todo_el_archivo[i]==']')||(todo_el_archivo[i]=='(')||(todo_el_archivo[i]==')')||(todo_el_archivo[i]==';'))
{
puntuacion[m++]=todo_el_archivo[i];
}
else
{
if((todo_el_archivo[i]=='+')||(todo_el_archivo[i]=='-')||(todo_el_archivo[i]=='*')||(todo_el_archivo[i]=='/')||(todo_el_archivo[i]=='!'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]==':'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='<'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='>'&&todo_el_archivo[i+1]=='=')||(todo_el_archivo[i]=='\n')||(todo_el_archivo[i]=='=')||(todo_el_archivo[i]=='>')||(todo_el_archivo[i]=='<'))b3=0;
else b3=1;
}
/* CLASIFICANDO CARACTERES NO PERMITIDOS */
if(b1==1&&b2==1&&b3==1){no_permitidos[n++]=todo_el_archivo[i];}

i++;
}

/* CLASIFICANDO OPERADORES */
i=0;
while(todo_el_archivo[i]!='\0')
{
if((todo_el_archivo[i]=='+')||(todo_el_archivo[i]=='-')||(todo_el_archivo[i]=='*')||(todo_el_archivo[i]=='/')||(todo_el_archivo[i]=='!')||(todo_el_archivo[i]==':')||(todo_el_archivo[i]=='<')||(todo_el_archivo[i]=='>')||(todo_el_archivo[i]=='='))
{
if((todo_el_archivo[i]=='!'&&todo_el_archivo[i+1]!='=')||(todo_el_archivo[i]=='=' && todo_el_archivo[i+1]!='='))
{
no_permitidos[n++]=todo_el_archivo[i];
}
else
{
operadores[k++]=todo_el_archivo[i];
if(todo_el_archivo[i+1]=='=')
{
operadores[k++]=todo_el_archivo[i+1];
i+=2;
}
else i++;
}
}
if(todo_el_archivo[i]=='='&& todo_el_archivo[i+1]=='=')
{
operadores[k++]=todo_el_archivo[i];
if(todo_el_archivo[i+1]=='=')
{
operadores[k++]=todo_el_archivo[i+1];
i+=2;
}
else i++;
}
i++;
}

j=k=l=m=13;cI=5;cL=34;cP=45;cO=22,cNP=57;n=15;cCLV=68;

i=0;
while(identificadores[i]!='\x0')
{
textcolor(11);
if(j<=42){gotoxy(cI,j++);cprintf("%c",identificadores[i]);}
else{cI+=2;j=13;}
i++;
}

i=0;
while(literales[i]!='\x0')
{
if(literales[i]==32){k++;cL=34;}
else{gotoxy(cL++,k);cprintf("%c",literales[i]);}
i++;
}

i=0;
while(puntuacion[i]!='\x0')
{
if(m==43){cP+=2;m=13;}
else{gotoxy(cP,m++);cprintf("%c",puntuacion[i]);}
i++;

}
i=0;
while(no_permitidos[i]!='\x0')
{
if(n==43){cNP+=2;n=15;}
else{gotoxy(cNP,n++);cprintf("%c",no_permitidos[i]);}
i++;
}

i=0;n=14;
while(claves[i]!='\x0')
{
if(claves[i]==32)
{
n++;
cCLV=68;
}
else
{
gotoxy(cCLV++,n);cprintf("%c",claves[i]);
}
i++;
}

i=0;
while(operadores[i]!='\x0')
{
if(l==43){cO+=3;l=13;}
if((operadores[i]==':'&&operadores[i+1]=='=')||(operadores[i]=='!'&&operadores[i+1]=='=')||(operadores[i]=='<'&&operadores[i+1]=='=')||(operadores[i]=='>'&&operadores[i+1]=='=')||(operadores[i]=='='&&operadores[i+1]=='='))
{
gotoxy(cO,l);cprintf("%c",operadores[i]);
gotoxy(cO+1,l++);cprintf("%c",operadores[++i]);
}
else{gotoxy(cO,l++);cprintf("%c",operadores[i]);}
i++;
}
textcolor(15);
fclose(fp);
tablas();
getch();
}
void tablas()
{
int i;
for(i=11;i<43;i++)
{
gotoxy(3,i);printf("³");/*Tabla de Identificadores*/
gotoxy(19,i);printf("³");

gotoxy(20,i);printf("³");/*Tabla de Operadores*/
gotoxy(31,i);printf("³");

gotoxy(32,i);printf("³");/*Tabla de Literales*/
gotoxy(42,i);printf("³");

gotoxy(43,i);printf("³");/*Tabla de Puntuacion*/
gotoxy(54,i);printf("³");

gotoxy(55,i);printf("³");/*Tabla de Caracteres no permitidos*/
gotoxy(66,i);printf("³");

gotoxy(67,i);printf("³");/*Tabla de Palabras Clave*/
gotoxy(78,i);printf("³");
}
/*Tabla de Identificadores*/
gotoxy(3,10);printf("Ú");gotoxy(19,10);printf("¿");
gotoxy(3,43);printf("À");gotoxy(19,43);printf("Ù");

textcolor(10);gotoxy(4,11);cprintf("Identificadores");textcolor(15);

for(i=4;i<19;i++)
{
gotoxy(i,12);printf("Ä");
gotoxy(i,43);printf("Ä");
}
/*Tabla de Operadores*/
gotoxy(20,10);printf("Ú");gotoxy(31,10);printf("¿");
gotoxy(20,43);printf("À");gotoxy(31,43);printf("Ù");

textcolor(10);gotoxy(21,11);cprintf("Operadores");textcolor(15);

for(i=21;i<31;i++)
{
gotoxy(i,12);printf("Ä");
gotoxy(i,43);printf("Ä");
}
/*Tabla de Literales*/
gotoxy(32,10);printf("Ú");gotoxy(42,10);printf("¿");
gotoxy(32,43);printf("À");gotoxy(42,43);printf("Ù");

textcolor(10);gotoxy(33,11);cprintf("Literales");textcolor(15);

for(i=33;i<42;i++)
{
gotoxy(i,12);printf("Ä");
gotoxy(i,43);printf("Ä");
}
/*Tabla de Puntuacion*/
gotoxy(43,10);printf("Ú");gotoxy(54,10);printf("¿");
gotoxy(43,43);printf("À");gotoxy(54,43);printf("Ù");

textcolor(10);gotoxy(44,11);cprintf("Puntuacion");textcolor(15);

for(i=44;i<54;i++)
{
gotoxy(i,12);printf("Ä");
gotoxy(i,43);printf("Ä");
}
/*Tabla de Caracteres no permitidos*/
gotoxy(55,10);printf("Ú");gotoxy(66,10);printf("¿");
gotoxy(55,43);printf("À");gotoxy(66,43);printf("Ù");
textcolor(10);gotoxy(56,11);cprintf("Caracteres");textcolor(15);
textcolor(10);gotoxy(58,12);cprintf(" NO");textcolor(15);
textcolor(10);gotoxy(56,13);cprintf("PERMITIDOS");textcolor(15);

for(i=56;i<66;i++)
{
gotoxy(i,14);printf("Ä");
gotoxy(i,43);printf("Ä");
}
/*Tabla de Palabras Clave*/
gotoxy(67,10);printf("Ú");gotoxy(78,10);printf("¿");
gotoxy(67,43);printf("À");gotoxy(78,43);printf("Ù");
textcolor(10);gotoxy(68,11);cprintf(" Palabras");textcolor(15);
textcolor(10);gotoxy(68,12);cprintf(" CLAVE");textcolor(15);

for(i=68;i<78;i++)
{
gotoxy(i,13);printf("Ä");
gotoxy(i,43);printf("Ä");
}
}

void fondo(void)
{ int l;
textcolor(14);
cprintf("É");
for(l=0;l<78;l++)cprintf("Í");gotoxy(78,0);cprintf("»");
for(l=2;l<49;l++){gotoxy(80,l);cprintf("º\n");}
for(l=2;l<49;l++){gotoxy(1,l);cprintf("º\n");}gotoxy(1,49);cprintf("È");
for(l=1;l<79;l++)cprintf("Í");gotoxy(80,49);cprintf("¼");
textcolor(15);

}

Tags:

Analizador y evaluador de expresiones aritmeticas

/* EXPRESS.C Analizador y evaluador de expresiones aritmeticas */

#include
#include
#include
#include
#include

#define DELIMITADOR 1
#define VARIABLE 2
#define NUMERO 3

char *prog;
char token[80];
char tipo_token;

void eval_expr( double *res );
void suma_resta( double *res );
void mult_div( double *res );
void exp( double *res );
void monario( double *res );
void parentesis( double *res );
void atomo( double *res );
void devuelve();
void serror( int error );
void obt_token( void );
int esdelim( char c );

main()
{
clrscr();
double res;
char *p;

/*clrscr();*/
p = ( char* ) malloc (100);
if(!p){
printf("\nFallo de asignacion de memoria\n");
exit(0);
}
do{
/*clrscr();*/
prog = p;
printf("\n\nIntroduzca EXPRESION");
printf("\n\n ==> ");
gets(prog);
if(!*prog) break;
eval_expr(&res);
printf("\nEl resultado es : \n\n %1.2f\n", res);
if(!getch()) getch();
} while(*p);

return 0;
}


void eval_expr( double *res )
{
obt_token();
if(!*token){
serror(2);
return;
}
suma_resta(res);
}

void suma_resta( double *res )
{
register char op;
double temp;

mult_div(res);
while((op = *token) == '+' || op == '-')
{
obt_token();
mult_div(&temp);
switch( op ){
case '-' : *res = *res - temp;
break;
case '+' : *res = *res + temp;
break;
}
}
}

void mult_div( double *res )
{
register char op;
double temp;

exp(res);
while((op = *token) == '*' || op == '/' || op == '%')
{
obt_token();
exp(&temp);
switch( op ){
case '*' : *res = *res * temp;
break;
case '/' : *res = *res / temp;
break;
case '%' : *res = (int) *res % (int) temp;
break;
}
}
}

void exp( double *res )
{
double temp, ex;
register int t;

monario(res);
if(*token == '^'){
obt_token();
exp(&temp);
ex = *res;
if(temp == 0.0){
*res = 1.0;
return;
}
for(t = temp-1; t > 0; --t)
*res = (*res) * (double) ex;
}
}

void monario( double *res )
{
register char op;

op = 0;
if((tipo_token == DELIMITADOR) && *token == '+' ||
*token == '-'){
op = *token;
obt_token();
}
parentesis(res);
if(op == '-') *res = -(*res);
}

void parentesis( double *res )
{
if((*token) == '('){
obt_token();
suma_resta(res);
if((*token) != ')')
serror(1);
obt_token();
}
else
atomo(res);
}

void atomo( double *res )
{
if(tipo_token == NUMERO){
*res = atof(token);
obt_token();
return;
}
serror(0);
}

void devuelve()
{
char *t;

t = token;
for(; *t; t++) prog--;
}

void serror( int error )
{
static char *e[] = {
"Error de sintaxis",
"Parentesis no emparejados",
"No hay expresion"
};
printf("\n%s\n", e[error]);
}

void obt_token( void )
{
register char *temp;

tipo_token = 0;
temp = token;
*temp = '\0';

if(!*prog) return;
while(isspace(*prog)) ++prog;

if(strchr("+-*/^%=()", *prog)){
tipo_token = DELIMITADOR;
*temp++ = *prog++;
}
else if(isalpha(*prog)){
while(!esdelim(*prog)) *temp++ = *prog++;
tipo_token = VARIABLE;
}
else if(isdigit(*prog)){
while(!esdelim(*prog)) *temp++ = *prog++;
tipo_token = NUMERO;
}
*temp = '\0';
}

int esdelim( char c )
{
if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)
return 1;
return 0;
}

Tags:

Metodos de solucion de sistemas de ecuaciones

/*
Descripcion : Multiplicacion dos Matrices, resolviendo sistemas de ecuaciones
Fecha : Martes 08 de Noviembre del 2005
Marteria : Algebra Lineal
Catedratico : Manuel Alejandro Valdez Marrero
*/

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define TamMatriz 10

int Row,Column;

void Menu_Principal(void){
gotoxy(10,5);printf("Menu");
gotoxy(5,6);printf("[1]--->Captura Sistema ");
gotoxy(5,7);printf("[2]--->Metodo de Solucion ");
gotoxy(5,8);printf("[3]--->Mostrar Sistema ");
gotoxy(5,9);printf("[4]--->Salir ");
gotoxy(5,610);printf("Elige una Opcion ");
}

void Menu_Operaciones_Sistemas(void){
gotoxy(5,11);printf("[1]--->Metodo de Gauss-Jordan ");
gotoxy(5,12);printf("[2]--->Regla de Cramer ");
gotoxy(5,13);printf("[3]--->Metodo de la Inversa ");
gotoxy(5,14);printf("[0]--->Salir ");
gotoxy(5,15);printf("Elige una Opcion ");
}



void Metodo_Gauss_Jordan(float Matriz1[TamMatriz][TamMatriz],int* Row1,int *Column1){
int i,ren=0,j,ban=0,aux,k;
for(i=0;i<(*Row1);i++)//es el pivote
{
ren=i+1;/*para k a la hora de comparar sea con el remgoln siguent*/
while(Matriz1[i][i]==0 )
{
if(ren<(*Row1))
{
if(Matriz1[ren][i]!=0) /*if(!(afMatrizTem1[ren][i]))*/
{/*INTERCAMBIO*/
for(j=0;j<(*Column1)+1;j++){
aux= Matriz1[i][j];
Matriz1[i][j] = Matriz1[ren][j];
Matriz1[ren][j]=aux;
}
}/*cirra el segundo if*/
ren++;
}/*cierra primer el if*/
else
break;

}/*ciere el while*/

aux = Matriz1[i][i];/*PARA HACER UNOS*/
for(j=0; j<(*Column1)+1&&aux!=0; j++)
Matriz1[i][j] = Matriz1[i][j] / aux;/*cierra for*/

for(j=0; j<(*Column1)+1; j++)/*PARA HACER CEROS*/
{
if(i != j)
{
aux=Matriz1[j][i] * (-1);
for(k=0; k<(*Column1)+1&&aux!=0; k++)
Matriz1[j][k] += Matriz1[i][k] * aux;/*cierra for*/
}/*cierra if*/
}/*cierra for*/

}//cierra el for

if(*Column1>*Row1){
printf("\nSistema con Multiples Soluciones");getch();ban=2;}

if(*Row1>*Column1){//Ecuaciones>Incognitas

if(Matriz1[(*Column1)-1][(*Column1)-1]==0 && Matriz1[(*Column1)-1][(*Column1)]!=0 ){
printf("\nSistema Sin Soluciones");getch();ban=1;}

if(!Matriz1[(*Column1)-1][(*Column1)-1]&&!Matriz1[(*Column1)-1][(*Column1)]){
printf("\nSistema con Multiples Soluciones");getch();ban=2;}

if(*Row1==*Column1&&ban==0)
for(i=0;i<(*Row1);i++)
for(j=0;j<(*Column1);j++)
if(i==j)
printf("\nX%d --> %.2f ",i+1,Matriz1[i][*Column1]);

}

if(*Column1==*Row1){
if(Matriz1[(*Row1)-1][(*Column1)-1]==0 && Matriz1[(*Row1)-1][(*Column1)]!=0 ){
printf("\nSistema Sin Soluciones");getch();ban=1;}

if(!Matriz1[(*Column1)-1][(*Row1)-1]&&!Matriz1[(*Column1)-1][(*Row1)]){
printf("\nSistema con Multiples Soluciones");getch();ban=2;}
if(*Row1==*Column1&&ban==0)
for(i=0;i<(*Row1);i++)
for(j=0;j<(*Column1);j++)
if(i==j)
printf("\nX%d --> %.2f ",i+1,Matriz1[i][*Column1]);
}

}


void main(void){
int Incognitas,Ecuaciones,i,j,con=0;
float MatrizS[TamMatriz][TamMatriz]={{0},{0}};
float VectorI[TamMatriz]={0};
char OpcionP,OpcionS;
do{
clrscr();
Menu_Principal();
OpcionP=getche();
switch(OpcionP){
case '1':clrscr();printf("\nDatos del Sistema de Ecuaciones ");
do{
printf("\n# Ecuaciones ");
scanf("%d",&Ecuaciones);
}while(Ecuaciones<1||Ecuaciones>10);
do{
printf("\n# Incognitas ");
scanf("%d",&Incognitas);
}while(Incognitas<1||Incognitas>10);
for(i=0;i for(j=0;j printf("Coeficiente X%d de la Ecuacion %d --> ",j+1,i+1);
scanf("%f",&MatrizS[i][j]);
}
printf("Termino Independiente de la Ecuacion %d --> ",i+1);
scanf("%f",&VectorI[i]);
}

break;
case '3':clrscr();
for(i=0;i for(j=0;j if(MatrizS[i][j]<0)
printf("%.2fX%d ",MatrizS[i][j],j+1);
else
if(MatrizS[i][j]>0&&j==0)
printf(" %.2fX%d ",MatrizS[i][j],j+1);
else
printf(" + %.2fX%d ",MatrizS[i][j],j+1);
}
printf(" = %f\n",VectorI[i]);
}
getch();
break;
case '2':do{
clrscr();Menu_Operaciones_Sistemas();getch();
OpcionS=getche();
switch(OpcionS){
case '1':for(i=0;i MatrizS[i][Incognitas]=VectorI[i];
if(!VectorI[i])
con++;//sistema Homog‚neo

}
Metodo_Gauss_Jordan(MatrizS,&Ecuaciones,&Incognitas);
getch();
break;
}
}while(OpcionS!='0');
break;

}

}while(OpcionP!='4');
getch();
}

Tags:

Snake

/*
PROGRAMA QUE SIMULA EL MOVIMIENTO DE LA CLASICA CULEBRA
DE LOS CELULARES...EL OBJETIVO, ES GUIAR LA CULEBRA, HACIA
LOS OBJETOS QUE APARECEN EN LA PANTALLA...Haciendola Crecer

UTILICE LAS TECLAS DE DIRECCION PARA CAMBIAR LA DIRECCION DE LA
CULEBRA...

MATERIA: ESTRUCTURA DE DATOS.

PROFESOR: FREDY JUAREZ.
ALUMNO: DARWIN SOSA GOMEZ.

INFORMATICA GRUPO: 312 A
*/

#include
#include
#include
#include
#define arriba 72
#define abajo 80
#define izquierda 75
#define derecha 77
#define instrucciones 59

/*Funciones Usadas*/
void finaliza();
void inicializa();
void culebra();
void objeto();
void pantalla();
void pantalla1();
void juego();
int sonido();

/*Variabes Usadas*/
int col;
int v=60;
int s=440;
int color1,puntos,nivel,cn;
int FinVxy=-1;/*Tope de los vectores de Direcciones*/
int vectorx[10000];
int vectory[10000];
int i,j;
int x=10;
int y=15;
int color=1;
int objetoX=1;
int objetoY=1;
char direccion1=0;
char direccion=0;
char Jnuevo=0;

void objeto()/*Funcion que genera posicion para el objeto*/
{
objetoX=(rand()%38)+1;
objetoY=(rand()%48)+1;

if(objetoX==1 || objetoY==1){objetoY+=1;objetoX+=1;}

textcolor(10);gotoxy(objetoX,objetoY);cprintf("%c",1);
}
void finaliza()
{
int fcol=0;Jnuevo=0;direccion=0;
puntos=0;nivel=0;cn=0;v=60;x=10;y=15;
clrscr();
while(Jnuevo!=60 && Jnuevo!=27)
{
while(!kbhit())
{
fcol=(rand()%15)+1;
textcolor(fcol);delay(200);
gotoxy(20,9);cprintf("²²²²²²²²²²²²²²²");
gotoxy(20,10);cprintf("²²²²²²²²²²²²²²²");
gotoxy(21,15);cprintf("²²²²²²²²²²");
gotoxy(21,16);cprintf("²²²²²²²²²²");
for(i=11;i<=25;i++){gotoxy(20,i);cprintf("²²");}
for(i=9;i<=25;i++){gotoxy(36,i);cprintf("°°");}
for(i=9;i<=25;i++){gotoxy(40,i);cprintf("±±");}
for(j=40,i=9;i<=25;i++,j++){gotoxy(j,i);cprintf("±±");}
for(i=9;i<=25;i++){gotoxy(56,i);cprintf("±±");}

for(i=3;i<=34;i++){gotoxy(i,35);cprintf("Í");}
for(i=3;i<=34;i++){gotoxy(i,43);cprintf("Í");}
gotoxy(2,35);cprintf("É");
gotoxy(43,35);cprintf("É");
gotoxy(76,35);cprintf("»");
gotoxy(35,35);cprintf("»");

gotoxy(76,43);cprintf("¼");
gotoxy(35,43);cprintf("¼");

gotoxy(2,43);cprintf("È");
gotoxy(43,43);cprintf("È");
for(i=44;i<=75;i++){gotoxy(i,35);cprintf("Í");}
for(i=44;i<=75;i++){gotoxy(i,43);cprintf("Í");}

gotoxy(7,39);cprintf("JUEGO NUEVO..Presione 'F2'");
gotoxy(50,39);cprintf("SALIR..Presione 'ESC'");
}
Jnuevo=getch();
if(Jnuevo==27)abort();
if(Jnuevo==60)
{
textcolor(10);
for(i=0;i<10000;i++)
{
vectorx[i]=0;
vectory[i]=0;
}
FinVxy=-1;
juego();
}
}
clrscr();
}

void inicializa()
{
int fcol=0;Jnuevo=0;direccion=0;
puntos=0;nivel=0;cn=0;v=60;x=10;y=15;
clrscr();
while(Jnuevo!=60 && Jnuevo!=27)
{
while(!kbhit())
{
fcol=(rand()%15)+1;
textcolor(fcol);delay(200);
gotoxy(4,2);cprintf("ÉÉ");
gotoxy(17,2);cprintf("»");
gotoxy(17,3);cprintf("¼");
gotoxy(5,11);cprintf("È");
gotoxy(4,11);cprintf("Ç");
gotoxy(4,12);cprintf("È");

for(i=6;i<=16;i++){gotoxy(i,11);cprintf("Í");}
for(i=5;i<=15;i++){gotoxy(i,12);cprintf("Í");}
gotoxy(17,11);cprintf("»");
gotoxy(16,12);cprintf("»");gotoxy(17,12);cprintf("×");
for(i=13;i<=20;i++){gotoxy(16,i);cprintf("××");}
gotoxy(17,21);cprintf("×");gotoxy(17,22);cprintf("¼");
gotoxy(16,21);cprintf("¼");

for(i=5;i<=16;i++){gotoxy(i,2);cprintf("Í");}
for(i=6;i<=16;i++){gotoxy(i,3);cprintf("Í");}
gotoxy(4,21);cprintf("É");gotoxy(4,22);cprintf("È");
for(i=5;i<=15;i++){gotoxy(i,21);cprintf("Í");}
for(i=5;i<=16;i++){gotoxy(i,22);cprintf("Í");}

for(i=3;i<=10;i++){gotoxy(4,i);cprintf("××");}
for(i=5;i<=15;i++){gotoxy(i,2);cprintf("Í");}
for(i=6;i<=15;i++){gotoxy(i,3);cprintf("Í");}

for(i=3;i<=34;i++){gotoxy(i,35);cprintf("Í");}
for(i=3;i<=34;i++){gotoxy(i,43);cprintf("Í");}

/*Dibujando la letra N*/
gotoxy(21,2);cprintf("ɻ");gotoxy(21,22);cprintf("ȼ");
for(i=3;i<=21;i++){gotoxy(21,i);cprintf("××");}
gotoxy(37,2);cprintf("ɻ");gotoxy(37,22);cprintf("ȼ");
for(i=3;i<=21;i++){gotoxy(37,i);cprintf("××");}
for(j=22,i=5;i<=19;i++,j++){gotoxy(j,i);cprintf("È»");}

/*Dibujando la letra A*/
gotoxy(41,2);cprintf("É");gotoxy(42,3);cprintf("É");
gotoxy(41,22);cprintf("ȼ");gotoxy(41,3);cprintf("×");
for(i=4;i<=21;i++){gotoxy(41,i);cprintf("××");}
gotoxy(52,2);cprintf("»");gotoxy(51,3);cprintf("»");
for(i=42;i<=51;i++){gotoxy(i,2);cprintf("Í");}
for(i=43;i<=50;i++){gotoxy(i,3);cprintf("Í");}
gotoxy(52,3);cprintf("×");
for(i=4;i<=21;i++){gotoxy(51,i);cprintf("××");}
gotoxy(51,22);cprintf("ȼ");
for(i=42;i<=51;i++){gotoxy(i,11);cprintf("Í");}
for(i=42;i<=51;i++){gotoxy(i,12);cprintf("Í");}

/*Dibujando la Letra K*/
gotoxy(55,2);cprintf("É");gotoxy(56,2);cprintf("»");
gotoxy(55,22);cprintf("ȼ");
for(i=3;i<=21;i++){gotoxy(55,i);cprintf("××");}
for(i=56;i<=64;i++){gotoxy(i,12);cprintf("Í");}
for(i=56;i<=63;i++){gotoxy(i,13);cprintf("Í");}
gotoxy(65,12);cprintf("»");
gotoxy(64,13);cprintf("»");
for(i=13;i<=21;i++){gotoxy(64,i);cprintf("××");}
gotoxy(64,22);cprintf("ȼ");
for(j=65,i=3;i<=12;i++,j--){gotoxy(j,i);cprintf("ɼ");}

/*Dibujando la letra E*/
gotoxy(68,2);cprintf("É");gotoxy(69,3);cprintf("É");
gotoxy(68,3);cprintf("×");gotoxy(68,21);cprintf("×");
gotoxy(68,22);cprintf("È");gotoxy(69,21);cprintf("È");
for(i=4;i<=20;i++){gotoxy(68,i);cprintf("××");}

for(i=69;i<=79;i++){gotoxy(i,2);cprintf("Í");}
for(i=70;i<=79;i++){gotoxy(i,3);cprintf("Í");}
gotoxy(80,2);cprintf("»");gotoxy(80,3);cprintf("¼");

for(i=70;i<=79;i++){gotoxy(i,21);cprintf("Í");}
for(i=69;i<=79;i++){gotoxy(i,22);cprintf("Í");}
gotoxy(80,21);cprintf("»");gotoxy(80,22);cprintf("¼");

for(i=69;i<=79;i++){gotoxy(i,12);cprintf("Í");}
for(i=69;i<=79;i++){gotoxy(i,13);cprintf("Í");}
gotoxy(80,12);cprintf("»");gotoxy(80,13);cprintf("¼");

/*Margenes de Pantalla*/
gotoxy(2,35);cprintf("É");
gotoxy(43,35);cprintf("É");
gotoxy(76,35);cprintf("»");
gotoxy(35,35);cprintf("»");

gotoxy(76,43);cprintf("¼");
gotoxy(35,43);cprintf("¼");

gotoxy(2,43);cprintf("È");
gotoxy(43,43);cprintf("È");
for(i=44;i<=75;i++){gotoxy(i,35);cprintf("Í");}
for(i=44;i<=75;i++){gotoxy(i,43);cprintf("Í");}
gotoxy(7,39);cprintf("JUEGO NUEVO..Presione 'F2'");
gotoxy(50,39);cprintf("SALIR..Presione 'ESC'");
}
Jnuevo=getch();
if(Jnuevo==27)abort();
if(Jnuevo==60)
{
textcolor(10);
for(i=0;i<10000;i++)
{
vectorx[i]=0;
vectory[i]=0;
}
FinVxy=-1;
juego();
}
}
clrscr();
}
void culebra()
{
int color;
textcolor(14);gotoxy(48,12);cprintf("%d",puntos);gotoxy(66,12);cprintf("%d",nivel);
color=(rand()%15)+1;
textcolor(color);
/*Dibujando LOGO (Culebra)*/
gotoxy(46,34);cprintf(" ");
gotoxy(47,34);cprintf("%c%c%c%c%c%c",4,4,4,4,4,4);
gotoxy(53,35);cprintf("%c",4);
gotoxy(53,36);cprintf("%c",4);

gotoxy(49,37);cprintf("%c%c%c%c",4,4,4,4);
gotoxy(48,36);cprintf("%c",4);
gotoxy(44,36);cprintf("%c%c%c%c",4,4,4,4);
gotoxy(43,37);cprintf("%c",4);
gotoxy(43,38);cprintf("%c",4);
gotoxy(44,39);cprintf("%c%c%c%c%c%c%c%c%c%c",4,4,4,4,4,4,4,4,4,4);
gotoxy(54,40);cprintf("%c",4);
gotoxy(54,41);cprintf("%c",4);
gotoxy(49,42);cprintf("%c%c%c%c%c",4,4,4,4,4);
gotoxy(48,41);cprintf("%c",4);
gotoxy(43,41);cprintf("%c%c%c%c%c",4,4,4,4,4);
gotoxy(42,42);cprintf("%c",4);
gotoxy(42,43);cprintf("%c",4);
gotoxy(43,44);cprintf("%c%c%c%c%c%c%c%c%c%c%c%c",4,4,4,4,4,4,4,4,4,4,4,4,4);

gotoxy(58,32);cprintf("O B J E T I V O");
textcolor(11);
gotoxy(56,34);cprintf("Hacer que la Culebra");
gotoxy(57,35);cprintf("coma los Objetos. ");
gotoxy(56,37);cprintf("Evitar que la Culebra");
gotoxy(57,38);cprintf("choque con su Cuerpo.");
textcolor(color);
gotoxy(61,41);cprintf("N O T A");
textcolor(11);
gotoxy(56,43);cprintf("Si la Culebra Choca con");
gotoxy(56,45);cprintf("cualquier parte de su");
gotoxy(56,47);cprintf("cuerpo. El juego Termina");
textcolor(10);
}

void pantalla1()
{
col=(rand()%14)+1;if(col==0)col=14;
gotoxy(41,1);textcolor(col);cprintf("É");gotoxy(80,1);cprintf("»");
gotoxy(49,3);textcolor(color1);cprintf("C U L E B R A....U M A R");
textcolor(14);
gotoxy(43,7);cprintf(" P U N T O S ");
gotoxy(59,7);cprintf("N I V E L ");
gotoxy(46,17);cprintf(" I N S T R U C C I O N E S ");

/*Instrucciones de USO*/
gotoxy(46,20);cprintf("Flecha - Girar a la Derecha");
gotoxy(46,22);cprintf("Flecha %c Girar a la Izquierda",27);
gotoxy(46,24);cprintf("Flecha %c Girar hacia arriba",24);
gotoxy(46,26);cprintf("Flecha %c Girar hacia Abajo",25);
gotoxy(46,28);cprintf("ESC Terminar Juego");
textcolor(color1);

/*Imprimiendo Margenes de Pantalla*/
for(i=42;i<80;i++)
{
gotoxy(i,1);textcolor(col);cprintf("Í");
}
gotoxy(41,5);textcolor(col);cprintf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
for (i=6;i<15;i++){textcolor(col);gotoxy(56,i);cprintf("º");}

gotoxy(41,15);textcolor(col);cprintf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
gotoxy(41,30);textcolor(col);cprintf("ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
for(i=2;i<5;i++){textcolor(col);gotoxy(41,i);cprintf("º");}

for(i=6;i<15;i++){textcolor(col);gotoxy(41,i);cprintf("º");}

for(i=16;i<30;i++){textcolor(col);gotoxy(41,i);cprintf("º");}
for(i=31;i<50;i++){textcolor(col);gotoxy(41,i);cprintf("º");}
for(i=6;i<15;i++){textcolor(col);gotoxy(80,i);cprintf("º");}

for(i=16;i<30;i++){textcolor(col);gotoxy(80,i);cprintf("º");}
for(i=31;i<50;i++){textcolor(col);gotoxy(80,i);cprintf("º");}
for(i=2;i<5;i++){textcolor(col);gotoxy(80,i);cprintf("º");}gotoxy(41,49);cprintf("È");

for(i=42;i<80;i++){textcolor(col);gotoxy(i,49);cprintf("Í");}gotoxy(80,49);cprintf("¼");

textcolor(10);
}
void pantalla()/*Escribe la pantalla donde juega la Culebra*/
{
color1=(rand()%15)+1;
textcolor(color1);
gotoxy(1,1);cprintf("É");
for(i=1;i<40;i++)cprintf("Í");gotoxy(40,1);cprintf("»");
for(i=2;i<50;i++){gotoxy(40,i);cprintf("º\n");}
for(i=2;i<50;i++){gotoxy(1,i);cprintf("º\n");}gotoxy(1,49);cprintf("È");
for(i=1;i<40;i++)cprintf("Í");gotoxy(40,49);cprintf("¼");
textcolor(10);
}

int sonido()/*Genera el sonido*/
{
sound(s);
delay(100);
nosound();
return 0;
}

/*FUNCION PRINCIPAL*/
void main(void)
{
clrscr();
_setcursortype(_NOCURSOR);/*Desaparece Cursor*/
inicializa();
if(Jnuevo==60){textcolor(10);juego();}

}/*Cerrando el Main*/

void juego(void)
{

clrscr();
objeto();
/*While de direcciones*/
while(direccion!=27)
{
pantalla();pantalla1();textcolor(10);

direccion=getch();/*Capturando Direccion*/

if(direccion==27)finaliza();
/*Validando Direcciones*/
if(direccion1==derecha && direccion==izquierda)direccion=derecha;
if(direccion1==izquierda && direccion==derecha)direccion=izquierda;
if(direccion1==arriba && direccion==abajo)direccion=arriba;
if(direccion1==abajo && direccion==arriba)direccion=abajo;

/*While de Movimientos*/
while(!kbhit())
{
culebra();
color1=(rand()%14)+1;if(color1==0)col=14;

/*DIRECCIONES*/
if(direccion==derecha){x=(x==39?2:x+1);direccion1=direccion;}

if(direccion==izquierda){x=(x==2?39:x-1);direccion1=direccion;}

if(direccion==abajo){y=(y==48?2:y+1);direccion1=direccion;}

if(direccion==arriba){y=(y==2?48:y-1);direccion1=direccion;}


if(FinVxy==0)FinVxy=-1; /*Comprobando si existen elementos en los vectores*/
else if(FinVxy>0) /*Si existe mas de 1 elemento en los vectores*/
{
for(i=0;i<10000;i++) /*Moviendo elementos*/
{
vectorx[i]=vectorx[i+1];
vectory[i]=vectory[i+1];
}
FinVxy--;

/*Imprimiendo cuerpo de la culebra*/
for(i=0;i<=FinVxy;i++)
{
textcolor(RED);
/*Comprobando si ha chocado con su cuerpo*/
if(vectorx[i]==x && vectory[i]==y)
{
gotoxy(15,15);cprintf(" JUEGO TERMINADO ");
gotoxy(13,17);cprintf(" Puntos Alcanzados = %d ",puntos);
gotoxy(13,19);cprintf(" Nivel Logrado = %d ",nivel);
delay(6000);finaliza();
}
gotoxy(vectorx[i],vectory[i]);
cprintf("%c",233);
}
}

/*Imprimiendo y borrando cabeza*/
textcolor(14);gotoxy(x,y);cprintf(" ");
delay(v);gotoxy(x,y);printf("%c",32);

if(FinVxy>=0)/*Existe 1 o mas elementos, borrando cola*/
{
for(i=0;i<=FinVxy;i++)
{
gotoxy(vectorx[i],vectory[i]);cprintf("%c",32);
}
}

if(x==objetoX && y==objetoY)/*Comiendo objeto*/
{
FinVxy++;sonido();
puntos+=3;
cn++;/*Incrementando nivel*/
if(cn==4){nivel++;v-=5;cn=0;}

vectorx[FinVxy]=objetoX;
vectory[FinVxy]=objetoY;
objeto();
}

FinVxy++;
vectorx[FinVxy]=x;
vectory[FinVxy]=y;

}/*Cerrando While DE MOVIMIENTOS */
}/*Cierre del While DE DIRECCIONES*/

}/*Cerrando JUEGO*/

Tags: