Evento Docente Universida del Mar

Clase Nodo

/**
ESTE PROGRAMA ANALIZA UN ATRCHIVO DE TEXTO Y VERIFICA CUANTAS VECES SE REPITEN LAS PALABRAS ALMACENANDOLAS EN UNA LISTA SIMPLE, SE ALMACENA EL NUMERO DE VECES QUE SE REPITE LA PALABRA Y ENSEGUIDA LA PALABRA.

* Universidad del MAR, campus Puerto Esdondido

*Autor: Darwin Sosa Gómez.

* * */


public class Nodo {
Nodo siguiente;
int VecesRepetidas;
Object Datos;
String WORD;

Nodo (Object o,Nodo n,String pal,int i){
Datos =o;
siguiente = n;
WORD=pal;
VecesRepetidas= i;
}

Nodo (String pal,int i){
VecesRepetidas= i;
WORD =pal;
}

public int getCuantas() {return VecesRepetidas;}

public void setCuantas(int cuantas) {this.VecesRepetidas= cuantas;}

public void setDatos(Object datos) {Datos = datos;}

public void setPalabra(String palabra) {this.WORD = palabra;}

Object getDatos(){return Datos;}

public String getPalabra() {return WORD;}

Object getSiguiente(){return siguiente;}
}

Tags:

Clase Lista

/**
ESTE PROGRAMA ANALIZA UN ATRCHIVO DE TEXTO Y VERIFICA CUANTAS VECES SE REPITEN LAS PALABRAS ALMACENANDOLAS EN UNA LISTA SIMPLE, SE ALMACENA EL NUMERO DE VECES QUE SE REPITE LA PALABRA Y ENSEGUIDA LA PALABRA.

* Universidad del MAR, campus Puerto Esdondido

*Autor: Darwin Sosa Gómez.

* * */

public class Lista {
Nodo Inicio;
Nodo Final;

Lista(){
Inicio = Final=null;
}

boolean Vacio(){
return (Inicio==null);
}

void InsertarPrincipal(Object o,String palabra,int i){
if(Vacio()){
Inicio = new Nodo(palabra,i);
Final = Inicio;
}
else
Inicio = new Nodo(o,Inicio,palabra,i);
}

void imprimir(){

if(!Vacio()){
Nodo ElementosDeLista = Inicio;
System.out.println("REPETICIONES "+"\t"+" PALABRAS");
while(ElementosDeLista!=null){
System.out.println(" "+ElementosDeLista.VecesRepetidas+"\t\t\t"+ElementosDeLista.WORD);
ElementosDeLista=ElementosDeLista.siguiente;
}
System.out.print("Fin de Diccionario");
}
}

Object NumeroDePalabrasRepetidas(String PalabrasRepetidas){
Object X = null;
boolean Encontrado = false;
Nodo Siguiente = Inicio;

if(!Vacio()){
while(Siguiente!=null&&(!Encontrado)){
if(Siguiente.WORD.compareTo(PalabrasRepetidas)==0){
Siguiente.VecesRepetidas++;
Encontrado=true;
}
else
if(!Encontrado)
Siguiente = Siguiente.siguiente;
}
}
return (X);
}

boolean EsPalabraRepetida(String PalabrasRepetidas){
Nodo Siguiente = Inicio;
boolean Encontrado = false;
if(!Vacio()){
while(Siguiente!=null&&(!Encontrado)){
if(Siguiente.WORD.compareTo(PalabrasRepetidas)==0)
Encontrado=true;
else
if(!Encontrado)
Siguiente = Siguiente.siguiente;
}
}
return Encontrado;
}
}

Tags:

Clase DiccionarioDePalabras

/**
ESTE PROGRAMA ANALIZA UN ATRCHIVO DE TEXTO Y VERIFICA CUANTAS VECES SE REPITEN LAS PALABRAS ALMACENANDOLAS EN UNA LISTA SIMPLE, SE ALMACENA EL NUMERO DE VECES QUE SE REPITE LA PALABRA Y ENSEGUIDA LA PALABRA.

* Universidad del MAR, campus Puerto Esdondido

*Autor: Darwin Sosa Gómez.

* * */

import java.io.*;

public class DiccionarioDePalabras {
public static void main(String[] args) {
Lista Diccionario = new Lista();
String s1 = "", s, Auxiliar = "", palabras = "";
char Checar[] = { '.', ';', ',', ':', '(', ')', '[', ']', '{', '}',
'*', '"', '=', '!', '+', '-', '/', '\n', '\t', '\r', '\f', '¿',
'?', ' ' };
int contador = 0, i;
boolean bandera = true;

try {
BufferedReader entrada = new BufferedReader(new FileReader("cuenta.txt"));
while ((s = entrada.readLine()) != null) {
s = s + "\n";
while (s.charAt(contador) != '\n') {
bandera = false;
for (i = 0; i < Checar.length; i++) {
if (s.toString().charAt(contador) == Checar[i]) {
Auxiliar += " ";
bandera = true;
}
}
if (!bandera)
Auxiliar += s.toString().charAt(contador);
contador++;
}
if (s.charAt(contador) == '\n')
Auxiliar += ' ';
s1 += s;
contador = 0;
}/** CERRANDO WHILE*/

entrada.close();
contador = i = 0;
Auxiliar += "\n";
while (Auxiliar.charAt(i) != '\n') {
if (Auxiliar.toString().charAt(i) != ' ') {
palabras += Auxiliar.toString().charAt(i++);
}
else{
if (Auxiliar.toString().charAt(i) == ' ') {
while (Auxiliar.toString().charAt(i) == ' ')i++;
contador++;
if (!Diccionario.EsPalabraRepetida(palabras))
Diccionario.InsertarPrincipal(null, palabras, 1);
else
Diccionario.NumeroDePalabrasRepetidas(palabras);
palabras = "";
}
}/** CERRANDO ELSE*/
}/** CERRANDO WHILE*/

Diccionario.imprimir();/** Imprimiendo la Lista o el Diccionario de palabras encontradas*/
}
catch (IOException e) {System.out.print("Error al leer el archivo");}
}
}

Tags:

Clase DiccionarioElementos

/**
ESTE PROGRAMA CUENTA EL NUMERO DE PALABRAS QUE TIENE UN ARCHIVO DE TEXTO

Universidad del MAR, Campus Puerto Escondido.

Autor: Darwin Sosa Gómez
*/


public class DiccionarioElementos {
String token="";
int id=0;
public DiccionarioElementos(String token,int id) {
super();
this.token=token;
this.id=id;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getToken() {
return token;
}

public void setToken(String token) {
this.token = token;
}

}

Tags:

Clase Diccionario

/**
ESTE PROGRAMA CUENTA EL NUMERO DE PALABRAS QUE TIENE UN ARCHIVO DE TEXTO

Universidad del MAR, Campus Puerto Escondido.

Autor: Darwin Sosa Gómez
*/


import java.io.*;
import java.util.*;

public class Diccionario {
public static void main(String[] args) {
String s="",s1="";
char checar[]={'.','!',';',':','(',')','[',']','#','$','<','>','%','&','*','+','-','/','{','}','\n','=',',','\t','"'};
String checar2="";
int NUMERO_PALABRAS=0;
Vector diccionario=new Vector();
Vector diccionario1=new Vector();

try{
for(int x=0;x
BufferedReader entrada1=new BufferedReader(new FileReader("cuenta.txt"));
while((s=entrada1.readLine())!=null)
s1+=s;
entrada1.close();
System.out.println(s1);

StringTokenizer tokens=new StringTokenizer(s1);

//Separando por tokens

tokens=new StringTokenizer(s1);
while(tokens.hasMoreTokens()){
diccionario.addElement(tokens.nextToken(checar2));
NUMERO_PALABRAS++;
}

int repeticiones=1;
DiccionarioElementos d;

for(int i=0;i for(int j=0;j
if(diccionario.elementAt(i)==diccionario.elementAt(j)){
repeticiones++;
d =new DiccionarioElementos((String)(diccionario.elementAt(i)),repeticiones);
diccionario1.add(i,d);
}
else{
d =new DiccionarioElementos((String)(diccionario.elementAt(i)),repeticiones);
diccionario1.addElement(d);
}
}
}
System.out.println();

System.out.println("El archivo tiene: "+NUMERO_PALABRAS+" Palabras");
}
catch (IOException e)
{System.out.println("Fin del arreglo de Bytes");}
}

}

Tags:

Clase ContarPalabras

/**
ESTE PROGRAMA CUENTA EL NUMERO DE PALABRAS QUE TIENE UN ARCHIVO DE TEXTO

Universidad del MAR, Campus Puerto Escondido.

Autor: Darwin Sosa Gómez
*/


import java.io.*;
import java.util.*;

public class ContarPalabras {
public static void main(String[] args) {
String s = "", s1 = "",checar2 = "";;
char checar[] = { '.', ';', ',', ':', '(', ')', '[', ']', '{', '}',
'*', '"', '=', '!', '+', '-', '/', '\n', '\t', '\r', '\f', '¿',
'?', ' ' };

int NUMERO_PALABRAS = 0;
try {
for (int x = 0; x < checar.length; x++)
checar2 += checar[x];

BufferedReader entrada1 = new BufferedReader(new FileReader(
"cuenta.txt"));//Nombre del archivo a analizar.
while ((s = entrada1.readLine()) != null)
s1 += s;
entrada1.close();
System.out.println(s1);

StringTokenizer tokens = new StringTokenizer(s1);

tokens = new StringTokenizer(s1);
while (tokens.hasMoreTokens()) {
tokens.nextToken(checar2);
NUMERO_PALABRAS++;
}
System.out.println("El archivo tiene: " + NUMERO_PALABRAS
+ " Palabras");
} catch (IOException e) {
System.out.println("Fin del arreglo de Bytes");
}
}
}

Tags:

Compresor De Archivos

/*
ESTE PROGRAMA COMPRIME SOLO LOS ARCHIVOS QUE SE ENCUENTRAN EN UN DIRECTORIO DADO

Universidad del MAR, campus Puerto Escondido

Autor: Darwin Sosa Gómez
*/


import java.io.*;
import java.util.zip.*;
import javax.swing.JOptionPane;

public class CompresorDeArchivos {
public static boolean ChecaArchivos(String Archivo)
{
if(!Archivo.matches("[a-z]([0-9][a-z]_.)*"))
return(false);
else
return(true);
}

public static void main(String[] args) {
//Ingresando la ruta del archivo
File ruta = new File ("E:\\POO\\POO II\\Proyectos\\TareaCompresor\\");

String lista[]=ruta.list();

try{
FileOutputStream f = new FileOutputStream ("Carpeta Comprimida.zip");
ZipOutputStream salida = new ZipOutputStream (new BufferedOutputStream(f));

int c;
for(int i=0;i if(!ChecaArchivos(lista[i])){
BufferedReader entrada = new BufferedReader( new FileReader(lista[i]));
salida.putNextEntry(new ZipEntry (lista[i]));

while ((c=entrada.read())!= -1) {
salida.write(c);
entrada.close();
}
}
salida.close();
JOptionPane.showMessageDialog(null, "Los Archivos han sido comprimidos satisfactoriamente", "Exito en Operacion",JOptionPane.INFORMATION_MESSAGE);
}
catch(IOException e)
{
JOptionPane.showMessageDialog(null, "Error al Comprimir los Archivos", "Error en la Compresion",JOptionPane.ERROR_MESSAGE);
}
}
}

Tags:

Clase Ventana

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
import java.awt.*;
import javax.swing.*;

public class Ventana extends JPanel {
Cuadros tienda;

Ventana() {
setSize(Configuracion.COLUMNAS * Configuracion.ANCHO_BTN,
Configuracion.FILAS * (Configuracion.ALTO_BTN + 8));
setVisible(true);
//setLayout(null);
agregarBotones();
}

private void agregarBotones() {
int numCuadros = Configuracion.FILAS * Configuracion.COLUMNAS;
tienda = new Cuadros(numCuadros);
for (int i = 0; i < numCuadros; i++) {
add(tienda.obtenerBoton(i));
}
}
}

Tags:

Clase SuperMarket

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
import javax.swing.*;
import javax.swing.JButton;

import java.awt.event.*;
import java.awt.*;

public class SuperMarket extends JFrame implements ActionListener {
private JButton formarClientes, nuevoCliente, liberarTienda, cliente1,
cliente2, cliente3, cliente4, cliente5, cliente6, cliente7,
cliente8, cliente9, cliente10;

private JLabel etiqueta, caja;

private JPanel panel1, panel2;

private JPanel panel3;

private JTextField txtClientesTotales;

private int cliente = 0, j = 0, k = 0, l = 0, contador = 0;

private int arregloClientes[] = new int[Configuracion.HORA_DE_SALIDA + 1];

boolean salir = false;

Cuadros tienda;

Cola temp = new Cola();

private void agregarBotones() {
tienda = new Cuadros(Configuracion.MAX_CLIENTES);
for (int i = 0; i < Configuracion.MAX_CLIENTES; i++) {
panel3.add(tienda.obtenerBoton(i));
}
tienda.ocultarTodos();
}

public SuperMarket() {
super("Darel SuperMercado");
arregloClientes[0] = 0;
setSize(710, 600);
setResizable(false);
setLocationRelativeTo(null);
Container contenedor = getContentPane();
contenedor.setLayout(null);

panel2 = new JPanel();
panel2.setBounds(5, 450, 750, 120);
panel2.setLayout(null);
contenedor.add(panel2);

panel3 = new JPanel();
panel3.setBounds(20, 200, Configuracion.COLUMNAS
* Configuracion.ANCHO_BTN, Configuracion.FILAS
* (Configuracion.ALTO_BTN + 8));
panel3.setLayout(null);
agregarBotones();
contenedor.add(panel3);

panel1 = new JPanel();
panel1.setBounds(5, 50, 750, 100);
panel1.setLayout(null);
contenedor.add(panel1);

caja = new JLabel("CAJA");
caja.setIcon(new ImageIcon("caja.png"));
caja.setBounds(10, 5, 190, 50);
panel1.add(caja);

cliente1 = new JButton();
cliente1.setBounds(10, 50, 50, Configuracion.ALTO_BTN);
cliente1.setEnabled(false);
cliente1.setVisible(false);
panel1.add(cliente1);

cliente2 = new JButton();
cliente2.setBounds(70, 50, 50, Configuracion.ALTO_BTN);
cliente2.setEnabled(false);
cliente2.setVisible(false);
panel1.add(cliente2);

cliente3 = new JButton();
cliente3.setBounds(130, 50, 50, Configuracion.ALTO_BTN);
cliente3.setEnabled(false);
cliente3.setVisible(false);
panel1.add(cliente3);

cliente4 = new JButton();
cliente4.setBounds(190, 50, 50, Configuracion.ALTO_BTN);
cliente4.setEnabled(false);
cliente4.setVisible(false);
panel1.add(cliente4);

cliente5 = new JButton();
cliente5.setBounds(250, 50, 50, Configuracion.ALTO_BTN);
cliente5.setEnabled(false);
cliente5.setVisible(false);
panel1.add(cliente5);

cliente6 = new JButton();
cliente6.setBounds(310, 50, 50, Configuracion.ALTO_BTN);
cliente6.setEnabled(false);
cliente6.setVisible(false);
panel1.add(cliente6);

cliente7 = new JButton();
cliente7.setBounds(370, 50, 50, Configuracion.ALTO_BTN);
cliente7.setEnabled(false);
cliente7.setVisible(false);
panel1.add(cliente7);

cliente8 = new JButton();
cliente8.setBounds(430, 50, 50, Configuracion.ALTO_BTN);
cliente8.setEnabled(false);
cliente8.setVisible(false);
panel1.add(cliente8);

cliente9 = new JButton();
cliente9.setBounds(490, 50, 50, Configuracion.ALTO_BTN);
cliente9.setEnabled(false);
cliente9.setVisible(false);
panel1.add(cliente9);

cliente10 = new JButton();
cliente10.setBounds(550, 50, 50, Configuracion.ALTO_BTN);
cliente10.setEnabled(false);
cliente10.setVisible(false);
panel1.add(cliente10);

etiqueta = new JLabel("Total de Clientes");
etiqueta.setBounds(50, 10, 150, 25);
panel2.add(etiqueta);

txtClientesTotales = new JTextField(10);
txtClientesTotales.setBounds(150, 10, 50, 25);
txtClientesTotales.setEnabled(false);
panel2.add(txtClientesTotales);

nuevoCliente = new JButton("Agregar Cliente",
new ImageIcon("nuevo.png"));
nuevoCliente.setToolTipText("Agrega un Nuevo Cliente al SuperMercado");
nuevoCliente.setBounds(10, 40, 190, 50);
nuevoCliente.addActionListener(this);
panel2.add(nuevoCliente);

formarClientes = new JButton("Formar Clientes", new ImageIcon(
"formar.png"));
formarClientes
.setToolTipText("Forma los Clientes que estan en el SuperMercado");
formarClientes.setBounds(255, 40, 190, 50);
formarClientes.setEnabled(false);
formarClientes.addActionListener(this);
panel2.add(formarClientes);

liberarTienda = new JButton("Liberar Clientes", new ImageIcon(
"liberar.png"));
liberarTienda.setToolTipText("Saca los clientes de la caja");
liberarTienda.setBounds(480, 40, 190, 50);
liberarTienda.setEnabled(false);
liberarTienda.addActionListener(this);
panel2.add(liberarTienda);

setVisible(true);
}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(nuevoCliente)) {
int num = 1;
if (temp.buscar(num)) {
num = temp.autogenerar();
}
temp.Insertar(new Integer(num), tienda.meterCliente(num));
cliente++;

txtClientesTotales.setText(String.valueOf(cliente));

arregloClientes[j++] = num;
formarClientes.setEnabled(true);
liberarTienda.setEnabled(false);
if (cliente == Configuracion.MAX_CLIENTES) {
JOptionPane.showMessageDialog(null,
"El SuperMercado ha llegado a su limite de Clientes",
"Super Mercado Lleno", JOptionPane.WARNING_MESSAGE);
nuevoCliente.setEnabled(false);
}
if (j > Configuracion.HORA_DE_SALIDA) {
JOptionPane
.showMessageDialog(
null,
"Es hora de Cerrar la Tienda, Libere todos los clientes",
"Fin de Operaciones", JOptionPane.ERROR_MESSAGE);
nuevoCliente.setEnabled(false);
salir = true;
}
}
if (e.getSource().equals(formarClientes)) {
for (int i = 0; i < Integer.parseInt(txtClientesTotales.getText()); i++) {
if (k == 0) {
cliente1.setVisible(true);
cliente1.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 1) {
cliente2.setVisible(true);
cliente2.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 2) {
cliente3.setVisible(true);
cliente3.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 3) {
cliente4.setVisible(true);
cliente4.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 4) {
cliente5.setVisible(true);
cliente5.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 5) {
cliente6.setVisible(true);
cliente6.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 6) {
cliente7.setVisible(true);
cliente7.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 7) {
cliente8.setVisible(true);
cliente8.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 8) {
cliente9.setVisible(true);
cliente9.setText(String.valueOf(arregloClientes[l++]));
contador++;
}
if (k == 9) {
cliente10.setVisible(true);
cliente10.setText(String.valueOf(arregloClientes[l++]));
contador++;
}

formarClientes.setEnabled(false);
if (!salir)
nuevoCliente.setEnabled(false);
liberarTienda.setEnabled(true);

if (k == Configuracion.MAX_COLA) {
k = 0;
break;
} else
k++;
}

Nodo nodoTemp = temp.Inicio;
for (int i = 0; i < contador; i++) {
tienda.ocultar(nodoTemp.indice);
nodoTemp = nodoTemp.siguiente;
}

}
if (e.getSource().equals(liberarTienda)) {
cliente = Integer.parseInt(txtClientesTotales.getText()) - contador;
txtClientesTotales.setText(String.valueOf(Integer
.parseInt(txtClientesTotales.getText())
- contador));
k = 0;
if (!temp.Vacio()) {
for (int i = 0; i < contador; i++) {
temp.EliminarPrincipio();
}
cliente1.setVisible(false);
cliente2.setVisible(false);
cliente3.setVisible(false);
cliente4.setVisible(false);
cliente5.setVisible(false);
cliente6.setVisible(false);
cliente7.setVisible(false);
cliente8.setVisible(false);
cliente9.setVisible(false);
cliente10.setVisible(false);
}
liberarTienda.setEnabled(false);
if (!salir)
nuevoCliente.setEnabled(true);
if (Integer.parseInt(txtClientesTotales.getText()) == 0)
formarClientes.setEnabled(false);
else
formarClientes.setEnabled(true);
contador = 0;
}
}
}

Tags:

Clase Nodo

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
public class Nodo {
Object Datos;
int indice;
Nodo siguiente;

Nodo(Object o, int index) {
Datos = o;
indice = index;
siguiente = null;
}

Object getDatos() {
return Datos;
}

Object getSiguiente() {
return siguiente;
}
}

Tags:

Clase Lista

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
public class Lista {
Nodo Inicio;

Nodo Final;

Lista() {
Inicio = Final = null;
}

boolean Vacio() {
return (Inicio == null);
}

void InsertarFinal(Object o, int indice) {
if (Vacio()) {
Inicio = new Nodo(o, indice);
Final = Inicio;
} else {
Nodo T = Final;
Final = new Nodo(o, indice);
T.siguiente = Final;
}
}

void ImprimirPila() {
if (Vacio())
System.out.print("La Pila está vacia...");
else {
Nodo ElementoLista = Inicio;
while (ElementoLista != null) {
System.out.println(ElementoLista.Datos.toString());
ElementoLista = ElementoLista.siguiente;
}
}
}

Object EliminarPrincipio() {
Object T = null;
if (Vacio())
System.out.print("La Pila esta vacia, no se puede eliminar");
else {
T = Inicio.Datos;
if (Inicio == Final)
Inicio = Final = null;
else
Inicio = Inicio.siguiente;
}
return T;
}

public boolean busqueda(int numero) {
Nodo R = Inicio;
boolean bEncontrado = false;
if (R == null) {
return bEncontrado;
}
do {
if (Integer.parseInt(R.Datos.toString()) == numero)
bEncontrado = true;
else
R = R.siguiente;
} while (R != null && !bEncontrado);
return bEncontrado;
}
}

Tags:

Clase Cuadros

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
import java.util.*;
import javax.swing.*;

public class Cuadros {
private Vector botones;

Cuadros(int num) {
botones = new Vector();
int contColumna, contFila;
contColumna = contFila = 0;
for (int i = 0; i < num; i++) {
botones.add(new JButton(String
.valueOf(Configuracion.MAX_CLIENTES + 1)));
obtenerBoton(i).setSize(Configuracion.ANCHO_BTN,
Configuracion.ALTO_BTN);
obtenerBoton(i).setLocation(Configuracion.ANCHO_BTN * contColumna,
Configuracion.ALTO_BTN * contFila);
obtenerBoton(i).setEnabled(false);
if (contColumna + 1 == Configuracion.COLUMNAS) {
contColumna = 0;
contFila++;
} else
contColumna++;
}
}

public void ocultar(int indice) {
obtenerBoton(indice).setVisible(false);
obtenerBoton(indice).setText(null);
}

private void mostrar(int indice, int numCliente) {
obtenerBoton(indice).setVisible(true);
obtenerBoton(indice).setText(String.valueOf(numCliente));
}

public void ocultarTodos() {
for (int i = 0; i < getSize(); i++) {
obtenerBoton(i).setVisible(false);
obtenerBoton(i).setText(null);
}

}

public boolean vacio(int indice) {
if (obtenerBoton(indice).isVisible())
return false;
else
return true;
}

public int getSize() {
return botones.size();
}

public JButton obtenerBoton(int indice) {
return (JButton) botones.elementAt(indice);
}

public int meterCliente(int numCliente) {
int n;
boolean salir = false;
do {
n = (int) (Math.random() * Configuracion.MAX_CLIENTES);
if (vacio(n))
salir = true;
} while (!salir);
mostrar(n, numCliente);
return n;
}
}

Tags:

Claso Configuracion

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
public class Configuracion {
static final int ANCHO_BTN = 65;
static final int ALTO_BTN = 50;
static final int COLUMNAS = 10;
static final int FILAS = 4;
static final int MAX_CLIENTES = COLUMNAS * FILAS;
static final int MAX_COLA = MAX_CLIENTES;
static final int HORA_DE_SALIDA = 10000;
}

Tags:

Clase Cola

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
public class Cola extends Lista {
Cola() {
super();
}

void Insertar(Object o, int indice) {
InsertarFinal(o, indice);
}

boolean buscar(int n) {
return busqueda(n);
}

public int autogenerar() {
int n = 2;
boolean salir = false;
do {
if (buscar(n)) {
n++;
if (n == Configuracion.MAX_CLIENTES + 1)
n = 1;
} else {
salir = true;
}
} while (!salir);
return n;
}

Object Eliminar(Object o) {
return EliminarPrincipio();
}

void imprimir() {
super.ImprimirPila();
}

boolean Vacio() {
return (super.Vacio());
}
}

Tags:

Clase Aplicacion

/*

Universidad del MAR, campus Puerto Escondido

Autores:

*Eli Rafael Galguera Bautista.

*Darwin Sosa Gómez.

Proyecto: Simulador de supermercado.

*/
import javax.swing.JFrame;
import javax.swing.*;

public class Aplicacion {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
SuperMarket superMercado = new SuperMarket();
superMercado.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Tags:

Clase Ventana

/*
UNIVERSIDAD DEL MAR

PROYECTO: CREAR UN SISTEMA QUE REPRODUZCA UNA MELODIA (USANDO LAS NOTAS BASICAS)
CREADA POR EL USUARIO.
AUTORES:

* Eli rafael Galguera Bautista
* Darwin Sosa Gómez
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import javax.swing.event.*;
import javax.sound.midi.*;
import java.util.Vector;
import java.io.File;
import java.io.IOException;

public class VentanaSonido extends JFrame implements ActionListener{
final int PROGRAM = 192;
final int NOTEON = 144;
final int NOTEOFF = 128;
final int SUSTAIN = 64;
final int REVERB = 91;
final int numNotas = 7;
final int numPosiciones = 20;
final int ON = 0, OFF = 1;
final Color jfcBlue = new Color(204, 204, 255);
final Color pink = new Color(255, 175, 175);
Sequencer sequencer;
Sequence sequence;
Synthesizer synthesizer;
Instrument instruments[];
ChannelData channels[];
ChannelData channelData;
Vector keys = new Vector();
Vector whiteKeys = new Vector();
JTable table;
boolean record;
int xPos;
Track track;
long startTime;
RecordFrame recordFrame;
JButton btnDo, btnRe, btnMi, btnFa, btnSol, btnLa, btnSi, recordB ;

JButton btnAnt, btnSig,btnFin, btnInicio, btnBorrar, btnStop, btnPlay, btnRec;
JButton btnPointer;
JPanel panelNotas;
Cuadros cuadros;
Container contenedor;
public VentanaSonido() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
super.setTitle("Sistema de archivos Midi");
pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int w = 530;
int h = 270;
setLocation(screenSize.width/2 - w/2, screenSize.height/2 - h/2);
setSize(w, h);
setResizable(false);

contenedor = getContentPane();
contenedor.setLayout(new BorderLayout());

xPos = 0;

recordB = createButton("Record...");
btnRec = createButton("Grabar");
btnDo = createButton("Do");
btnRe = createButton("Re");
btnMi = createButton("Mi");
btnFa = createButton("Fa");
btnSol = createButton("Sol");
btnLa = createButton("La");
btnSi = createButton("Si");
btnAnt=createButton("<<");
btnSig=createButton(">>");
btnFin=createButton(">|");
btnInicio=createButton("|<");
btnBorrar=createButton("X");
btnStop=createButton("O");
btnPlay=createButton(">");
btnPointer = new JButton();
btnPointer.setIcon(new ImageIcon("icono.png"));
btnPointer.setSize(20,20);
btnPointer.setLocation(0,145);


JPanel p1 = new JPanel(new GridLayout(2,8));
p1.add(btnInicio);
p1.add(btnAnt);
p1.add(btnStop);
p1.add(btnBorrar);
p1.add(btnPlay);
p1.add(btnSig);
p1.add(btnFin);
p1.add(recordB);
p1.add(btnSi);
p1.add(btnLa);
p1.add(btnSol);
p1.add(btnFa);
p1.add(btnMi);
p1.add(btnRe);
p1.add(btnDo);

cuadros = new Cuadros(182);
panelNotas=new JPanel(null);
for (int i=0; i<182; i++)
panelNotas.add(cuadros.obtenerBoton(i));
panelNotas.add(btnPointer);
contenedor.add(panelNotas,BorderLayout.CENTER);
contenedor.add(p1,BorderLayout.SOUTH);
setVisible(true);

btnSig.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
btnPointer.setLocation(xPos*20,145);
xPos++;
if(xPos==Configuracion.COLUMNAS){
btnSig.setEnabled(false);
habilitarNotas(false);
}
}
});

}

public void habilitarNotas(boolean habilitar){
btnDo.setEnabled(habilitar);
btnRe.setEnabled(habilitar);
btnMi.setEnabled(habilitar);
btnFa.setEnabled(habilitar);
btnSol.setEnabled(habilitar);
btnLa.setEnabled(habilitar);
btnSi.setEnabled(habilitar);
}

public void actionPerformed(ActionEvent e) {

if(e.getSource().equals(btnDo)){
channelData.channel.noteOn(Notas.DO, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.DO);
}
cuadros.mostrar(xPos,Notas._do);
btnSig.doClick();

} else if (e.getSource().equals(btnRe)){
channelData.channel.noteOn(Notas.RE, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.RE);
}
cuadros.mostrar(xPos,Notas._re);
btnSig.doClick();
}else if (e.getSource().equals(btnMi)){
channelData.channel.noteOn(Notas.MI, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.MI);
}
cuadros.mostrar(xPos,Notas._mi);
btnSig.doClick();
}else if (e.getSource().equals(btnFa)){
channelData.channel.noteOn(Notas.FA, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.FA);
}
cuadros.mostrar(xPos,Notas._fa);
btnSig.doClick();
}else if (e.getSource().equals(btnSol)){
channelData.channel.noteOn(Notas.SOL, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.SOL);
}
cuadros.mostrar(xPos,Notas._sol);
btnSig.doClick();
}else if (e.getSource().equals(btnLa)){
channelData.channel.noteOn(Notas.LA, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.LA);
}
cuadros.mostrar(xPos,Notas._la);
btnSig.doClick();
}else if (e.getSource().equals(btnSi)){
channelData.channel.noteOn(Notas.SI, channelData.velocity);
if (record) {
creaEventoCorto(NOTEON, Notas.SI);
}
cuadros.mostrar(xPos,Notas._si);
btnSig.doClick();
}

JButton button = (JButton) e.getSource();
if (button.getText().startsWith("Record")) {
if (recordFrame != null) {
recordFrame.toFront();
} else {
recordFrame = new RecordFrame();
}
}
}
public JButton createButton(String name) {
JButton b = new JButton(name);
b.addActionListener(this);
contenedor.add(b);
return b;
}
public void open() {
try {
if (synthesizer == null) {
if ((synthesizer = MidiSystem.getSynthesizer()) == null) {
System.out.println("getSynthesizer() failed!");
return;
}
}
synthesizer.open();
sequencer = MidiSystem.getSequencer();
sequence = new Sequence(Sequence.PPQ, 10);
} catch (Exception ex) { ex.printStackTrace(); return; }

Soundbank sb = synthesizer.getDefaultSoundbank();
if (sb != null) {
instruments = synthesizer.getDefaultSoundbank().getInstruments();
synthesizer.loadInstrument(instruments[0]);
}
MidiChannel midiChannels[] = synthesizer.getChannels();
channels = new ChannelData[midiChannels.length];
for (int i = 0; i < channels.length; i++) {
channels[i] = new ChannelData(midiChannels[i], i);
}
channelData = channels[0];
}

public void close() {
if (synthesizer != null) {
synthesizer.close();
}
if (sequencer != null) {
sequencer.close();
}
sequencer = null;
synthesizer = null;
instruments = null;
channels = null;
if (recordFrame != null) {
recordFrame.dispose();
recordFrame = null;
}
}

public void creaEventoCorto(int type, int num) {
ShortMessage mensajeCorto = new ShortMessage();
try {
long millis = System.currentTimeMillis() - startTime;
long tick = millis * sequence.getResolution() / 500;
mensajeCorto.setMessage(type+channelData.num, num, channelData.velocity);
MidiEvent event = new MidiEvent(mensajeCorto, tick);
track.add(event);
} catch (Exception ex) { ex.printStackTrace(); }
}

/*************************************************************************************************/
class ChannelData {

MidiChannel channel;
boolean solo, mono, mute, sustain;
int velocity = 127;
int pressure = 127;
int bend = 16383;
int reverb = 127;
int row, col, num;

public ChannelData(MidiChannel channel, int num) {
this.channel = channel;
this.num = num;
}

public void setComponentStates() {
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(col, col);
}
}

class RecordFrame extends JFrame implements ActionListener, MetaEventListener {
public JButton recB, playB, saveB;
Vector tracks = new Vector();
DefaultListModel listModel = new DefaultListModel();
TableModel dataModel;

public RecordFrame() {
super("Grabando Archivo Midi");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {recordFrame = null;}
});

sequencer.addMetaEventListener(this);
try {
sequence = new Sequence(Sequence.PPQ, 10);
} catch (Exception ex) { ex.printStackTrace(); }

JPanel p1 = new JPanel(new BorderLayout());

JPanel p2 = new JPanel();
p2.setBorder(new EmptyBorder(5,5,5,5));
p2.setLayout(new BoxLayout(p2, BoxLayout.X_AXIS));

recB = createButton("Record", p2, true);
playB = createButton("Play", p2, false);
saveB = createButton("Save...", p2, false);
getContentPane().add("North", p2);

pack();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int w = 220;
int h = 80;
setLocation(d.width/2 - w/2, d.height/2 - h/2);
setSize(w, h);
setResizable(false);
setVisible(true);
}

public JButton createButton(String name, JPanel p, boolean state) {
JButton b = new JButton(name);
b.setFont(new Font("serif", Font.PLAIN, 10));
b.setEnabled(state);
b.addActionListener(this);
p.add(b);
return b;
}

public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
if (button.equals(recB)) {
record = recB.getText().startsWith("Record");
if (record) {
track = sequence.createTrack();
startTime = System.currentTimeMillis();
creaEventoCorto(PROGRAM,channelData.col*8+channelData.row);

recB.setText("Stop");
playB.setEnabled(false);
saveB.setEnabled(false);
} else {
String name = null;
if (instruments != null) {
name = instruments[channelData.col*8+channelData.row].getName();
} else {
name = Integer.toString(channelData.col*8+channelData.row);
}
tracks.add(new TrackData(channelData.num+1, name, track));
recB.setText("Record");
playB.setEnabled(true);
saveB.setEnabled(true);
}
} else if (button.equals(playB)) {
if (playB.getText().startsWith("Play")) {
try {
sequencer.open();
sequencer.setSequence(sequence);
} catch (Exception ex) { ex.printStackTrace(); }
sequencer.start();
playB.setText("Stop");
recB.setEnabled(false);
} else {
sequencer.stop();
playB.setText("Play");
recB.setEnabled(true);
}
} else if (button.equals(saveB)) {
try {
File file = new File(System.getProperty("user.dir"));
JFileChooser fc = new JFileChooser(file);
fc.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
return false;
}
public String getDescription() {
return "Guardar como archivo .mid";
}
});
if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
saveMidiFile(fc.getSelectedFile());
}
} catch (SecurityException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public void meta(MetaMessage message) {
if (message.getType() == 47) {
playB.setText("Play");
recB.setEnabled(true);
}
}

public void saveMidiFile(File file) {
try {
int[] fileTypes = MidiSystem.getMidiFileTypes(sequence);
if (fileTypes.length == 0) {
System.out.println("No se puede guardar la secuencia");
} else {
if (MidiSystem.write(sequence, fileTypes[0], file) == -1) {
throw new IOException("Error: No se puede guardar el archivo");
}
}
} catch (SecurityException ex) {
} catch (Exception ex) {
ex.printStackTrace();
}
}

class TrackData extends Object {
Integer chanNum; String name; Track track;
public TrackData(int chanNum, String name, Track track) {
this.chanNum = new Integer(chanNum);
this.name = name;
this.track = track;
}
}
}
/***********************************************************************************/

public static void main(String args[]) {
VentanaSonido ventana = new VentanaSonido();
ventana.open();
ventana.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {

System.exit(0);}
});
}
}

Tags:

Clase Notas

/*
UNIVERSIDAD DEL MAR

PROYECTO: CREAR UN SISTEMA QUE REPRODUZCA UNA MELODIA (USANDO LAS NOTAS BASICAS)
CREADA POR EL USUARIO.
AUTORES:

* Eli rafael Galguera Bautista
* Darwin Sosa Gómez
*/

import java.util.*;
import javax.swing.*;
public class Notas {
public static final int DO = 50;
public static final int RE = 60;
public static final int MI = 70;
public static final int FA = 80;
public static final int SOL =90;
public static final int LA =100;
public static final int SI =110;

public static final int _do = 6;
public static final int _re = 5;
public static final int _mi = 4;
public static final int _fa = 3;
public static final int _sol =2;
public static final int _la = 1;
public static final int _si = 0;

}

/*Vector vNotas;
Notas(int elements){
vNotas = new Vector();
for(int i=0;i vNotas.add(new Punto(new JButton(),i));
}
public void agregarNota(int pos, int nota){
getPunto(pos).setPosNota(nota);
getPunto(pos).boton.setVisible(true);
}
private Punto getPunto(int pos){
return (Punto)(vNotas.elementAt(pos));
}
public void limpiarNota(int pos){
getPunto(pos).boton.setVisible(false);
}
}
class Punto{
JButton boton;
int posicion;
int posX;
Punto(JButton btn, int pos){
boton = btn;
boton.setSize(10,10);
boton.setEnabled(false);
boton.setVisible(false);
posX = pos*10;
}
public void setPosNota(int nota){
posicion = nota;
switch(nota){
case Notas._do:
boton.setLocation(posX,Notas.DO);
break;
case Notas._re:
boton.setLocation(posX,Notas.RE);
break;
case Notas._mi:
boton.setLocation(posX,Notas.MI);
break;
case Notas._fa:
boton.setLocation(posX,Notas.FA);
break;
case Notas._sol:
boton.setLocation(posX,Notas.SOL);
break;
case Notas._la:
boton.setLocation(posX,Notas.LA);
break;
case Notas._si:
boton.setLocation(posX,Notas.SI);
break;
}
}*/

Tags:

Clase Cuadros

/*
UNIVERSIDAD DEL MAR

PROYECTO: CREAR UN SISTEMA QUE REPRODUZCA UNA MELODIA (USANDO LAS NOTAS BASICAS)
CREADA POR EL USUARIO.
AUTORES:

* Eli rafael Galguera Bautista
* Darwin Sosa Gómez
*/

import java.util.*;
import javax.swing.*;

public class Cuadros {
private Vector botones;

Cuadros(int num) {
botones = new Vector();
int contColumna, contFila;
contColumna = contFila = 0;
for (int i = 0; i < num; i++) {
botones.add(new JButton(/*String.valueOf(Configuracion.MAX_CLIENTES + 1)*/));
obtenerBoton(i).setSize(Configuracion.ANCHO_BTN,
Configuracion.ALTO_BTN);
obtenerBoton(i).setLocation(Configuracion.ANCHO_BTN * contColumna,
Configuracion.ALTO_BTN * contFila);
obtenerBoton(i).setEnabled(false);
if (contColumna + 1 == Configuracion.COLUMNAS) {
contColumna = 0;
contFila++;
} else
contColumna++;
}
}

public void ocultar(int indice) {
obtenerBoton(indice).setVisible(false);
obtenerBoton(indice).setText(null);
}

public void mostrar (int x, int y){
int indice = y*Configuracion.COLUMNAS+x;
obtenerBoton(indice).setEnabled(true);
}
public void ocultarTodos() {
for (int i = 0; i < getSize(); i++) {
obtenerBoton(i).setVisible(false);
obtenerBoton(i).setText(null);
}

}

public boolean vacio(int indice) {
if (obtenerBoton(indice).isVisible())
return false;
else
return true;
}

public int getSize() {
return botones.size();
}

public JButton obtenerBoton(int indice) {
return (JButton) botones.elementAt(indice);
}

public int meterCliente(int numCliente) {
int n;
boolean salir = false;
do {
n = (int) (Math.random() * Configuracion.MAX_CLIENTES);
if (vacio(n))
salir = true;
} while (!salir);
mostrar(n, numCliente);
return n;
}
public int getNota(int x){
int y;
for(y=0;y int indice = y*Configuracion.COLUMNAS+x;
if(obtenerBoton(indice).isEnabled())
break;
}
return getFrecuencia(y);
}
private int getFrecuencia(int posNota){
switch(posNota){
case Notas._do:
return Notas.DO;
case Notas._re:
return Notas.RE;
case Notas._mi:
return Notas.MI;
case Notas._fa:
return Notas.FA;
case Notas._sol:
return Notas.SOL;
case Notas._la:
return Notas.LA;
case Notas._si:
return Notas.SI;
}
return 0;
}
}

Tags:

Clase de configuracion

/*
UNIVERSIDAD DEL MAR

PROYECTO: CREAR UN SISTEMA QUE REPRODUZCA UNA MELODIA (USANDO LAS NOTAS BASICAS)
CREADA POR EL USUARIO.
AUTORES:

* Eli rafael Galguera Bautista
* Darwin Sosa Gómez
*/
public class Configuracion {
static final int ANCHO_BTN = 20;
static final int ALTO_BTN = 20;
static final int COLUMNAS = 26;
static final int FILAS = 7;
static final int MAX_CLIENTES = COLUMNAS * FILAS;
static final int MAX_COLA = MAX_CLIENTES;
static final int HORA_DE_SALIDA = 10000;
}

Tags:

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: