PracticaC2HTML.zip
¡Saludos!
@fferegrino :)


Pues así es como he decidido nombrar (para mi y mis conocidos, sin permiso del resto de mi equipo) a la aplicación en la que estaré trabajando durante lo que resta del semestre.
Resulta que para la clase de Tecnologías para la Web, se nos dió a elegir entre diversos proyectos a implementar para obtener calificación del semestre. Entre las propuestas que nos presentó el maestro estaban unas muy interesantes como crear un editor de textos en la nube, crear un foro de discusión orientado a la educación, desarrollar un sistema de almacenamiento de marcadores, crear una red social tipo Facebook y otra tipo Twitter. A esta última es a la que decidí dedicarme junto con el resto de mi equipo, somos 4 integrantes ;).
Todo iría "normal" hasta el momento en el que se nos informó que no debíamos usar ningún sistema gestor de bases de datos, como MySQL, SQL Server o PostgreSQL. Todo el almacenaje persistente debería de ser en archvos xml.
:S Ahora tengo a en que se irán mis madrugadas, se ve que estará un poco pesado.
De mientras y para no perderse en el tema, econtré dos puntos de partida:
¡Saludos!Esta noche les traigo mis tareas teóricas de la asignatura Tecnologías para la Web, aclaro que no son nada buenas, aún me falta mucho para aprender a redactar bien pero... ¿qué le vamos a hacer?
Prometo de a poco ir mejorando en la redacción.
Incluídas en el súper paquete:
Si las quieren en paquete aquí las dejo:
Tareas teóricas¡Saludos! @fferegrino :)
/*
* Archivo: Banco.c
* Autores: Rodrigo y Antonio
*
* Creado el 17 de febrero de 2011, 09:30 PM
*/
#include "colas.h"
int main() {
cola *Fila_Banco = crear_c();//Creamos una nueva pila
int tiempo_espera = 0;//Esta variable controlará el tiempo de espera.
int menu = 0;//Variable para el menu principal
do{
printf("Banco Bonito :D\n");
printf("Menú de administrador:\n\t1)Llegada de cliente\n\t2)Salida de cliente\n\t3)Salir\n");
printf("Elige: ");
scanf("%d",&menu);
switch(menu)//Opciones de administrador
{
case 1://Recibimos al cliente
printf("\n\n\n\tNuevo cliente\n");
tipodato nuevo_cliente;//Creamos una nueva estructura
printf("Introduce el nombre del cliente: ");
getchar();//Evitar retorno de carro, Linux ;)
nuevo_cliente.nombre =(char *) calloc(51,sizeof(char));//Reservar memoria para el nombre del cliente
gets(nuevo_cliente.nombre);//Obtener el nombre del cliente
int tiempo_operaciones = 0;//Aquí se guardará el tiempo de operaciones del nuevo cliente
int submenu = 0;//Variable para el submenu
do{
printf("\nElija la(s) operacion(es) que %s realizará:\n",nuevo_cliente.nombre);
printf("\t1)Depósito\n\t2)Retiro\n\t3)Cobro de cheques\n\t4)Depósito a terceros\n\t5)Consulta de saldo\n\t6)Nada");
printf("\nElige: ");
scanf("%d",&submenu);
switch(submenu)//Se acumula el tiempo de operaciones del nuevo cliente
{
case 1: tiempo_operaciones += 5; break;
case 2: tiempo_operaciones += 6; break;
case 3: tiempo_operaciones += 8; break;
case 4: tiempo_operaciones += 4; break;
case 5: tiempo_operaciones += 2; break;
default: break;
}
}while(submenu != 6);
nuevo_cliente.tiempo = tiempo_operaciones;//Se guarda en la estructura el tiempo total de operaciones de el cliente nuevo
if(introducir_c(nuevo_cliente,Fila_Banco))
{
printf("\n\n\t%s está formado y va a esperar %d minutos para ser atendido\n\n",nuevo_cliente.nombre,tiempo_espera);//Desplegar información
}
tiempo_espera += tiempo_operaciones;//Se suma el tiempo de operaciones al tiempo de espera global
break;
case 2://Atendemos al cliente
if(vacia_c(Fila_Banco))//Si la cola está vacía
{
printf("\t\nLa fila está vacía, ya atendiste a todos tus clientes... o nunca has tenido clientes :P\n");
}
else
{
tipodato cliente_atendido = sacar_c(Fila_Banco);//Se saca el cliente de la cola
if(!(cliente_atendido.nombre == NULL)){
printf("\t\nWoha! se ha atendido a %s\n", cliente_atendido.nombre);
tiempo_espera -= cliente_atendido.tiempo;//Un cliente sacado de la cola es un cliente atendido, se resta su tiempo de atención al tiempo global de espera
}
}
break;
case 3: break;
default: break;
}
}while(menu != 3);
return (EXIT_SUCCESS);
}
/* * File: main.cpp * Author: Rodrigo y ToñoGates */ #includeLas funciones básicas son desarrolladas:#include "colas.h" void imprimemenu(); void menu_transacciones(); int calcular_tiempo(int []); int tiempo_espera(Cola *c); int main(int argc, char** argv) { char ch; int num=0; //clrscr(); printf("\n\t\t\t Toño&Rod´s Bank \n\n\n ¿Deseas hacer una Cola de clientes? S/N\n"); scanf("%c",&ch); if((ch == 'N')||(ch == 'n')){ printf("Salgo del programa\n"); return (EXIT_SUCCESS); } int t_espera=0; int i=0; int trans[10]={0}; Cola *c; c=crear(); TipoDato p1; p1.nombre=(char *)calloc(100,sizeof(char)); do{ imprimemenu(); scanf("%d",&num); switch (num) { case 1: i=0; printf("\n\tNombre:"); getchar(); gets(p1.nombre); printf("\n\n\tTransaccion(es)a realizar(10 max):"); do{ menu_transacciones(); scanf("%d",&trans[i]); printf("\n¿Desea realizar otra transacción? S/N"); getchar(); scanf("%c",&ch); if((ch == 'N')||(ch == 'n')){ printf("Listo"); num=7; }else i++; }while(num!=7); t_espera=tiempo_espera(c); printf("\nFaltan %d",t_espera); printf(" minutos."); p1.tiempo=calcular_tiempo(trans); if(insertar(c,p1)) printf("\n\n\nCliente introducido con éxito"); else printf("\n\n\nLo sentimos tu Cliente no se pudo insertar..."); break; case 2: if(vacia(c)) printf("\nLa Cola esta vacía. \n"); else{ printf("\nAtendiendo a ..."); TipoDato dat=eliminar(c); printf("\n %s",dat.nombre); } break; case 3: if(vacia(c)) printf("\nCola vacía"); else{ printf("\nEstos son tus clientes en espera...\n"); mostrar(c); } break; } }while (num!=4); return EXIT_SUCCESS; }
int calcular_tiempo(int trans[]){
int t,suma=0;
for(int i=0;i<11;i++){
switch(trans[i]){
case 1: t=5; break;
case 2: t=6; break;
case 3: t=8; break;
case 4: t=4; break;
case 5: t=2; break;
default: t=0; break;
}
suma=suma+t;
}
return suma;
};
int tiempo_espera(Cola *c){
int suma=0;
Nodo *aux=c->frente;
while(aux!=NULL){
suma+=aux->dato.tiempo;
aux=aux->atras;
}
return suma;
};
¡Saludos! @fferegrino :)
/*
* Archivo: main.c
* Autores: Antonio Feregrino y Rodrigo Benavides
*
* Creado el 14 de febrero de 2011, 08:22 PM
*/
#include "pilas.h"
int comprobar(char);
int precedencia(char);
/*
*
*/
int main() {
char primera_expresion[50];//Cadena inicial
char *cadenita_auxiliar = calloc(50+1,sizeof(char));//Cadena final
pila *operadores = crear();//Se crea la pila de los operadores
printf("Introduce la expresión a convertir: \n\n");
gets(primera_expresion);//Se lee la expresion principal
int i = 0, i_cadenita = 0;//Variables usadas para recorrer los arreglos de caracteres
while(primera_expresion[i] != '\0'){//Mientras que la expresión principal no se termine
switch(comprobar(primera_expresion[i])){//Comprobación del tipo de caracter 1 a 1
case 1://En este caso el caracter es un parentesis de apertura (
push(primera_expresion[i],operadores);
break;
case 2://En este caso el caracter es un parentesis de cierre )
while(muestra_ultimo(operadores) != '('){//Mientras que el último elemento de la pila no sea (
cadenita_auxiliar[i_cadenita] = pop(operadores);//Saca los operadores de la pila y colocalos en la cadena final
i_cadenita++;//Aumenta el índice de la cadena final para no sobreescribirla
}
pop(operadores);//Saca el paréntesis de apertura (
break;
case 3://En este caso el caracter es un operando [a-zA-Z0-9]
cadenita_auxiliar[i_cadenita] = primera_expresion[i];//Se introdue directamente a la cadena final
i_cadenita++;//Aumenta el índice de la cadena final para no sobreescribirla
break;
case 4://En este cuarto y último caso, el caracter es un operador [+-/%^]
if(vacia(operadores)){//Si la pila esta vacía
push(primera_expresion[i],operadores);//Introduce el operador
}else{//Si no está vacía
int operador_nv = precedencia(primera_expresion[i]);//Se calcula la precedencia del caracter a evaluar
int operador_ol = precedencia(muestra_ultimo(operadores));//Se calcula la precedencia de la cima
if( operador_nv > operador_ol)//Si la precedencia del nuevo es mayor a la de la cima
{
push(primera_expresion[i],operadores);//Introduce el operador
}
else//Si es menor o igual
{
do{
cadenita_auxiliar[i_cadenita] = pop(operadores);//Saca la cima e introducela en la cadena final
i_cadenita++;//Aumenta el índice de la cadena final para no sobreescribirla
operador_ol = precedencia(muestra_ultimo(operadores));//Calcula la precedencia de la nueva cima
}while(!(operador_nv > operador_ol));//Repite esto hasta que la precedencia del nuevo sea mayor a la de la cima
push(primera_expresion[i],operadores);//Introduce el nuevo operador en la cima de la pila
}
}
break;
}
i++;//Recorre en uno el índice de la expresión inicial
}
printf("Tu expresión postfija es: %s\n",cadenita_auxiliar);//Muestra la cadena final
return (EXIT_SUCCESS);
}
int comprobar(char t){
/* Función que comprueba que caracter es, regresa valores enteros segun sea el caso */
if( t == '(' ) return 1;
if( t == ')' ) return 2;
if(( t <= 90 && t >=65 ) || ( t <= 122 && t >= 97 ) || ( t <= 57 && t >=48 )) return 3;
if( t == '*' || t == '+' || t == '^' || t == '/' || t == '-') return 4;
else return 0;
}
int precedencia(char t){
/* Aquí es calculada la precedencia personalizada de los operadores */
if( t == '^' ) return 3;
if( t == '*' || t == '/' || t == '%' ) return 2;
if( t == '+' || t == '-' ) return 1;
if( t == '(' || t == ')' ) return 0;
else return 0;
}