lunes, 6 de agosto de 2012

Filas Dobles De Caracteres


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define ASCENDENTE 1
#define DESCENDENTE 0
void alex(void);
typedef struct nodo{
int valor;
struct nodo*siguiente;
struct nodo*anterior;
}tipoNodo;
typedef tipoNodo*pNodo;
typedef tipoNodo*Lista;
void Insertar(Lista*l, char v);
void Borrar(Lista*l, char v);
void BorrarLista(Lista*);
void MostrarLista(Lista lista, char orden);
main()
{
alex();
int a,i;
char  x=0, e=0;
Lista lista=NULL;
pNodo p;
printf("\t\t*****************Filas Dobles De Caracteres*****************\n\n");
for (i=1; i<=10; i++)
{
printf("Teclea Los Caracteres:\n");
scanf("%c", &x);
fflush(stdin);
Insertar(&lista, x);
}  
MostrarLista(lista, ASCENDENTE);
MostrarLista(lista, DESCENDENTE);
printf("\n ¿Cuantos Caracteres Quiere Borrar?:");
scanf("%d",&a);
fflush(stdin);
for(i=0;i<a;i++)
{
printf("\nTeclea El Caracter A Borrar: ");
scanf("%c",&e);
fflush(stdin);
Borrar(&lista,e);
}
MostrarLista(lista, ASCENDENTE);
MostrarLista(lista, DESCENDENTE);
BorrarLista(&lista);
system("PAUSE");
return 0;
}
void Insertar(Lista*lista, char v)
{
pNodo nuevo, actual;
nuevo=(pNodo)malloc(sizeof(tipoNodo));
nuevo->valor=v;
actual=*lista;
if(actual)
while(actual->anterior)
actual=actual->anterior;  
if(!actual|| actual->valor>v){
nuevo->siguiente=actual;
nuevo->anterior=NULL;
if(actual)
actual->anterior=nuevo;
if(!*lista)
*lista=nuevo;
}
else{
while(actual->siguiente&&actual->siguiente->valor<v)
actual=actual->siguiente;
nuevo->siguiente=actual->siguiente;
actual->siguiente=nuevo;
nuevo->anterior=actual;
if(nuevo->siguiente)
nuevo->siguiente->anterior=nuevo;
}
}
void Borrar (Lista*lista, char v)
{
pNodo nodo;    
nodo =*lista;
while(nodo&&nodo->valor<v)
nodo=nodo->siguiente;
while(nodo&&nodo->valor>v)
nodo=nodo->anterior;
if(!nodo||nodo->valor!=v)
return;
if(nodo==*lista)
if(nodo->anterior)
*lista=nodo->anterior;
else
*lista=nodo->siguiente;
if(nodo->anterior)
nodo->anterior->siguiente=nodo->siguiente;
if(nodo->siguiente)
nodo->siguiente->anterior=nodo->anterior;
free(nodo);
}
void BorrarLista(Lista*lista)
{
pNodo nodo,actual;
actual=*lista;
while(actual->anterior)
actual=actual->anterior;
while(actual){
nodo=actual;
actual=actual->siguiente;
free(nodo);
}
*lista=NULL;
}
void MostrarLista(Lista lista,char orden)
{
pNodo nodo=lista;
if(!lista)
printf("Lista Vacia");
nodo= lista;
if(orden==ASCENDENTE){
while(nodo->anterior)
nodo=nodo->anterior;
printf("\nOrden Ascendente\n");
while(nodo){
printf("%c->",nodo->valor );
nodo=nodo->siguiente;
}
}
else{
while(nodo->siguiente)
nodo=nodo->siguiente;
printf("Orden Desendente\n");
while(nodo){
printf("%c->",nodo->valor);
nodo=nodo->anterior;
}
}
printf("\n");
}    
void alex(void)
{
printf("Alejandro Gonzalez Arteaga\n");
printf("Grupo: 110352\tMatricula:1311120069\n");
printf("Informatica\n\n");
}          

martes, 24 de julio de 2012

Lista de Busqueda


#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void alex(void);
typedef struct ns
{
int data;
struct ns*sig;
}nodo;
nodo*list_add(nodo**p,int i)
{
nodo*n=(nodo*)malloc(sizeof(nodo));
if (n==NULL)
return NULL;
n->sig=*p;
*p=n;
n->data=i;
return n;
}

void list_remove(nodo**p)
{if(*p!=NULL)
{
nodo*n=*p;
*p=(*p)->sig;
free(n);
}
}

nodo **list_search(nodo **n,int i)
{
while(*n!=NULL)
{
if((*n)->data==i)
{
printf("\n El Dato Encontrado es: %d \n",(*n)->data);
return n;
}
n=&(*n)->sig;
}
printf("\nDato no Encontrado\n\n");
return NULL;
}
void list_print(nodo *n)
{
if(n==NULL)
{
printf("\nLista Vacia\n");
}
while (n!=NULL)
{
printf("%d\n",n->data);
n=n->sig;
}
}
int main(void){
    alex();
int gua=0, i, num=0;
nodo*n=NULL;
printf("Teclea Cuantos Valores Quieres\n");
scanf("%d", &gua);
for (i=0; i<gua; i++)
{
   printf("Teclea los valores\n");
    scanf("%d", &num);
    list_add(&n,num);
}

printf("\nDato Para Buscar:  ");
scanf("%d",&num);
list_search(&n,num);
list_print(n);
for(i=0;i<num;i++)
list_remove(&n);
list_print(n);
getch();
return 0;
}
    void alex(void)
{
     printf("Alejandro Gonzalez Arteaga\n");
     printf("Grupo: 110352\tMatricula:1311120069\n");
     printf("Informatica\n\n");
     }

martes, 17 de julio de 2012

Algoritmo Sitio de Taxis.



1.   Inicio.
2.   Se declaran las librerías necesarias para el programa.
3.   Se declara la función alex para los datos personales para mostrarlos en pantalla.
4.   Se declara la estructura  ‘cola’ donde se declararan las variables (Se abre).
I.    Se declara la variable entera para el número de pasajeros.
II.  Se declara la variable de tipo carácter para el nombre del conductor de la unidad.
III. Se declara la variable de tipo carácter para el número de la unidad.
IV. Se declara la variable de tipo carácter para la hora de salida de la unidad.
V.  Se declara la variable de tipo carácter para el destino del traslado.
VI. Se declara la variable de flotante para el costo del traslado.
VII.   Se declara una estructura con el nombre de la principal usando un puntero apuntando a sig.
VIII. Se cierra la estructura y se le coloca un puntero asignando a princ, espaciando y se apunta también a fin.
5.   Se declara a función acolar para mostrar las indicaciones de llenado (Se abre).
A.  Se coloca la estructura cola apuntando a nuevo.
B.  Ahora se hará el chequeo de cada dato para que sea convertido al deseado.
C.  Se imprimirá en pantalla la indicación donde se colocara el nombre del operador de la unidad.
D.  Se almacenara en nuevo asignado a nombre.
E.  Se imprimirá en pantalla la indicación donde se colocara el número de pasajeros.
F.  Se almacenara en nuevo asignado a pasajero.
G.  Se imprimirá en pantalla la indicación donde se colocara el número de la unidad.
H.  Se almacenara en nuevo asignado a número.
I.    Se imprimirá en pantalla la indicación donde se colocara la hora de salida de la unidad.
J.   Se almacenara en nuevo asignado a hora.
K.  Se imprimirá en pantalla la indicación donde se colocara el destino  de la unidad.
L.   Se almacenara en nuevo asignado a destino.
M. Se imprimirá en pantalla la indicación donde se colocara el costo del traslado.
N.  Se almacenara en nuevo asignado a costo.
O.  Ahora el valor de nuevo se asignado a sig se checara si es igual a nulo.
P.  Se comprara si princ es exactamente igual a nulo (Se abre).
Q.  Dada la condición princ será igual a nuevo.
R.  Fin será igual a nuevo (Se cierra).
S.  Sin o es la condición (Se abre).
T.  Fin asignado a sig será igual a nuevo.
U.  Y fin será igual nuevo. (Se cierra).
V.  Se aumenta la variable designada (Se cierra).
6.   Se declara la función mostrar para lo datos ya introducidos (Se abre).
a.   La estructura cola apunta a aux.
b.  Aux es igual a princ.
c.   Si aux es exactamente igual a nulo (Se abre).
d.  Se imprimirá en pantalla que la cola la tiene vacia (Se cierra).
e.  Si no es el caso (Se abre).
f.   Se iniciara el bucle aux es diferente de nulo (Se abre).
g.  Se imprimirán en pantalla todos los datos capturados con sus respectivos valores asignados.
h.  Aux será igual a aux asignado a sig. (Se cierra 3 veces).
7.    Se declara la función desacolar para sacar los elementos de la cola (Se abre).
                       i.      La estructura cola apunta a aux.
                      ii.      La estructura cola apunta a aux1.
                     iii.      Se declara una variable contador.
                     iv.      Aux es igual a princ.
                      v.      Aux1 es igual a princ.
                     vi.      Se dice que el contador tiene un valor de 0.
                    vii.      Se ejecuta el bucle comparando si aux es diferente de nulo (Se abre).
                   viii.      Ahora si aux asignado a pasajero es exactamente igual a aux1 asignado a pasajero (Se abre).
                     ix.      Si el contador es exactamente igual a 0 (Se abre).
                      x.      Princ es igual a princ asignado a sig (Se cierra 2 veces).
                     xi.      Aux es igual a aux asignado a sig.
                    xii.      Aux1 es igual a aux.
                   xiii.      El contador es igual a 1 (Se cierra 2 veces).
8.      Ahora se coloca la función principal ‘main’ (Se abre).
9.      Se entra a la función alex.
10.   Se declara la variable entera para las opciones.
11.   Se declara el bucle hacer (Se abre).
12.   Se imprime en pantalla el título del programa.
13.   Se imprime en pantalla la indicación introducir datos 1.
14.   Se imprime en pantalla la indicación mostrar  datos 2.
15.   Se imprime en pantalla la indicación retirar datos 3.
16.   Se imprime en pantalla la indicación salir 4.
17.   Estas se almacenan en la variable de opciones.
18.   Se coloca el limpiador de pantalla.
19.   Se abre el menú para mostrar opciones (Se abre).
20.   Opción 1 ingresar a la función acolar y se coloca el salto.
21.   Opción 2 ingresar a la función mostrar y se coloca el salto.
22.   Opción 3  ingresar a la función desacolar  y se coloca el salto.
23.   Opción  4  se muestra en pantalla salir del sistema y se coloca el salto (Se cierra 2 veces).
24.   Se coloca el bucle mientras opción sea diferente de 4 (Se cierra).

lunes, 16 de julio de 2012

Sitio De Taxis


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void alex(void);
struct cola{
int pasajero;
char nombre[20];
char numero[20];
char hora[10];
char destino[40];
float costo;
struct cola*sig;
}*princ, *fin;
int j=0;


void acolar()
{
struct cola*nuevo;
nuevo=(struct cola*)malloc(sizeof(struct cola));
printf("Introducir Nombre del Operador:\n");
scanf("%s", nuevo->nombre);
printf("Introducir numero de Pasajeros:\n");
scanf("%d", &nuevo->pasajero);
printf("Introducir Numero de la Unidad:\n");
scanf("%s", nuevo->numero);
printf("Introducir Hora de Salida:\n");
scanf("%s", nuevo->hora);
printf("Introducir Destino:\n");
scanf("%s", nuevo->destino);
printf("Introducir costo del Viaje:\n");
scanf("%f", &nuevo->costo);
nuevo->sig=NULL;
if(princ==NULL){
princ=nuevo;
fin=nuevo;
}
else{
     fin->sig=nuevo;
     fin=nuevo;
}
j++;
}
void mostrar()
{
struct cola*aux;
aux=princ;
if(aux==NULL){
printf("Cola Vacia\n");
}else{
while(aux!=NULL){
printf("Nombre del Operador:%s\n Numero de Pasajeros:%d\n Numero de la Unidad:%s\n Hora de Salida:%s\n Destino:%s\n Costo del Viaje:%.2f\n\n", aux->nombre, aux->pasajero, aux->numero, aux->hora, aux->destino, aux->costo);
aux=aux->sig;
}
}
}
void desacolar()
{
struct cola*aux;
struct cola*aux1;
int cont;
aux=princ;
aux1=princ;
cont=0;
while(aux!=NULL){
if(aux->pasajero==aux1->pasajero){
if(cont==0){
princ=princ->sig;
}
}
aux=aux->sig;
aux1=aux;
cont=1;
}
}

                                                             

main(){
       alex();
int opc;
do{
printf("\n\n\n\t\tRegistro de Servicios***Sitio Reforma**TULTITLAN\t\t\t\n");
printf("\n\t\t1. Ingresar Datos a La Base\n\t\t2. Mostrar Datos de la Base\n\t\t3. Retirar Datos en la Base\n\t\t4. Salir\n\t\t");
scanf("%d", &opc);
system("cls");
switch(opc){
case 1:
     acolar();
     break;
     case 2:
     mostrar();
     break;
     case 3:
     desacolar();
     break;
     default:
     printf("Salir Del Sistema\n");
     break;
     }
     }while(opc!=4);
   
     }
     void alex(void)
{
     printf("Alejandro Gonzalez Arteaga\n");
     printf("Grupo: 110352\tMatricula:1311120069\n");
     printf("Informatica\n\n");
     }
       

martes, 26 de junio de 2012

Palindrome


#define MAX 8
#include <stdio.h>
#include <conio.h>
int top=0;
char pila[MAX];
void push(char i);
char pop (void);
void Listar(void);
void alex (void);
main()
{
      printf("\t\t***Palindromo***\n\n");
      printf("Inserta Las Letras\n");
      char let;
      int x,y;
      for(x=0;x<MAX;x++)
      {
         printf("ESCRIBE LA LETRA %d: ",x+1);
         fflush(stdin);
         scanf("%c", &let);
       
         push(let);
         }
         Listar();
         for(y=top;y>0;y--)
           printf("LA LETRA ESCRITAS FUERON: %c\n",pop());
           alex();
           getch();
           }
           char pop (void){
               top--;
               if(top<0)
               {
                 printf("MEMORIA VACIA");
                 return(0);
                 }
                 return pila[top];
                 }
           void push (char i){
               if(top>=MAX)
               {
                  printf("PILA LLENA");
                  return;
                  }
                  pila[top]=i;
                  top++;
                  }
           void Listar (void){
                int i;
                for(i=0;i<top;i++)
                   printf("Letra: %c\n",pila[i]);
                   getch();
                   }
                    void alex(void)
{
     printf("\n\nAlejandro Gonzalez Arteaga\n");
     printf("Grupo: 110352\tMatricula:1311120069\n");
     printf("Informatica\n\n");
     }


Números Flotantes En Push Y Pop


#include <stdio.h>
#include <conio.h>
#define Max 10
int top=0;
float pila [Max];
void push (float y);
float pop (void);
void Listar (void);
void alex(void);
float a,b,c,d,e,f,g,h,j,k;
int x;
main()
{
      printf("\t\t***Valores Flotantes***\n\n");
      printf("Inserta Los Valores\n");
      printf("1er valor: ");
      scanf("%f",&a);
      printf("2do valor:");
      scanf("%f",&b);
      printf("3er valor:");
      scanf("%f",&c);
      printf("4to valor:");
      scanf("%f",&d);
      printf("5to valor:");
      scanf("%f",&e);
      printf("6to valor:");
      scanf("%f",&f);
      printf("7mo valor:");
      scanf("%f",&g);
      printf("8vo valor:");
      scanf("%f",&h);
      printf("9no valor:");
      scanf("%f",&j);
      printf("10mo valor:");
      scanf("%f",&k);
      push(a);
      push(b);
      push(c);
      push(d);
      push(e);
      push(f);
      push(g);
      push(h);
      push(j);
      push(k);
      printf("\nSalio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      printf("Salio el dato: %.2f\n",pop());
      Listar();
      alex();
      getch();
      }
       void Listar (void)
       {
            printf("\n**Los valores** \n");
            for(x=0;x<Max;x++)
            {
                           
                             printf("Los valores son:%.2f\n",pila[x]);
                             }
                             }              
     
     
     
     
     
     
       void push(float y)
      {
           if (top>=Max)
           {
                        printf("pila llena");
                        return;
                        }
                        pila[top]=y;
                        top++;
                        }
                       
      float pop (void)
                        {
                            top--;
                            if(top<0)
                            {
                                     printf("pila vacia");
                                     return(0);
                                     }
                                     return pila [top];
                                     }
     
      void alex(void)
{
     printf("\n\nAlejandro Gonzalez Arteaga\n");
     printf("Grupo: 110352\tMatricula:1311120069\n");
     printf("Informatica\n\n");
     }


viernes, 8 de junio de 2012

Volumen de un Cilindro de Base Circular


#include<stdio.h>
#include<conio.h>
void alex(void);
float vol(float y, float x);
int main()
{
float altura, volumen, radio;
alex();    
printf("Ingresar el valor de la altura del cilindro :\n");
scanf("%f", &altura);
printf("Ingresar el valor del radio del circulo de la base del cilindro\n");
scanf("%f", &radio);
volumen = vol(radio, altura);
printf("El volumen es :%.2f", volumen);
getch();
}
void alex(void)
{
     printf("Alejandro Gonzalez Arteaga\n");
     printf("Grupo: 110352\tMatricula:1311120069\n");
     printf("Informatica\n\n");
     }

float vol(float y, float x)
{
      return ((3.1416)*(y*y)*(x));
      }