domingo, 19 de agosto de 2012

Árbol


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <todas.h>


void datos (void)
    {
    system("color 6");
    int a=15,b=8;
    gotoxy (a,b);
    printf ("Edith Juarez Juarez \n\n");
    int c=20,d=5;
    gotoxy (c,d);
    printf ("Grupo 351\n\n");
    for(int x=3;x<=40;x++){
    gotoxy(x,3);
    printf("*");
  }
    for(int x=3;x<=40;x++){
    gotoxy(x,10);
    printf("*");
  }
  // getch();
  }




struct nodoarbol{
       struct nodoarbol *izqnodo;
       int info;
       char letra; //let
       struct nodoarbol *dernodo;
       };
       typedef struct nodoarbol NODO;
       typedef NODO *ARBOL;
       void insertanodonuevo(ARBOL *, int,char);
       void inorden (ARBOL);
       void preorden (ARBOL);
       void postorden (ARBOL);
       void treefree (ARBOL);
     
main()
{
  datos();
  int i,m,num;
  char newnod, chain ;
  ARBOL raiz=NULL;
  printf("\nDigite cuandos nodos quiere insertar\n");
  scanf("%d",&m);
  for (i=0;i<m;i++)
  {
      fflush(stdin);
      printf("Introduzca numero y numero : ");
      scanf("%d  %c",&num,&chain);
      fflush(stdin);
     
      insertanodonuevo(&raiz,num,chain);
      }
  printf("\nPreorden \n");
  preorden(raiz);
  printf("\ninorden \n");
  inorden(raiz);
  printf("\nPostorden \n");
  postorden(raiz);
  getch();
  treefree(raiz);
  raiz=NULL;
  return 0;
}




void insertanodonuevo(ARBOL *rarbol, int nuevo,char l)
{
     if (*rarbol==NULL)
     {
     *rarbol=(NODO *)malloc(sizeof(NODO));
     if(*rarbol!=NULL)
     {
     (*rarbol)->info=nuevo;
     (*rarbol)->letra=l;
     (*rarbol)->izqnodo=NULL;
     (*rarbol)->dernodo=NULL;
     }
     else {printf("memoria no disponible\n");}
     }
     else
     if(nuevo<(*rarbol)->info)
     insertanodonuevo(&((*rarbol)->izqnodo),nuevo,l);
     else
     if(nuevo>(*rarbol)->info)
     insertanodonuevo(&((*rarbol)->dernodo),nuevo,l);
     }
   
void preorden (ARBOL rarbol)
{
     if(rarbol!=NULL)
     {
                   
     printf("%d",rarbol->info);
     printf("%c",rarbol->letra);
     preorden(rarbol->izqnodo);
     preorden(rarbol->dernodo);
     }
}


void inorden(ARBOL rarbol)
{
     if(rarbol!=NULL)
     {
     inorden(rarbol->izqnodo);
     printf("%d", rarbol->info);
     printf("%c",rarbol->letra);
     inorden(rarbol->dernodo);
     }
}


void postorden(ARBOL rarbol)
{
     if(rarbol!=NULL)
     {
                   
     postorden(rarbol->izqnodo);
     postorden(rarbol->dernodo);
     printf("%d", rarbol->info);
     printf("%c",rarbol->letra);
     }
}


void treefree(ARBOL rarbol)
{
     if(rarbol!=NULL)
{
     treefree (rarbol->izqnodo);
     treefree(rarbol->dernodo);
     treefree (rarbol);
}
}

viernes, 10 de agosto de 2012

Lista doblemente ligada c++


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <todas.h>

#define ASCENDENTE 1
#define DESCENDENTE 0
void datos (void)
    {
    system("color 6");
    int a=15,b=8;
    gotoxy (a,b);
    printf ("Edith Juarez Juarez \n\n");
    int c=20,d=5;
    gotoxy (c,d);
    printf ("Grupo 351\n\n");
    for(int x=3;x<=40;x++){
    gotoxy(x,3);
    printf("*");
  }
    for(int x=3;x<=40;x++){
    gotoxy(x,10);
    printf("*");
  }
   getch();
  }

typedef struct _Nodo{
int Valor;
char Letras[3];
struct _Nodo *Siguiente;
struct _Nodo *Anterior;
}Nodo;

int TotReg=0;
Nodo *Lista = NULL;

int Inicio(void);
void Agregar(void);
void Listar(int);
void Borrar(void);
void Quitar(void);

main()
{
  datos();
  int op=0;
  while(1)
  {
  system("CLS");
  printf("1.- Agregar\n");
  printf("2.- Ascendente\n");
  printf("3.- Descendente\n");
  printf("4.- Borrar \n");
  printf("5.- Quitar 3 \n");
  printf("6.- Salir\n");
  printf("\nEliga la opcion: ");
  fflush(stdin);
  scanf("%i",&op);
  switch(op)
  {
  case 1:
  free(Lista);
  if(Inicio() == 1)
  Agregar();
  else
  {
  printf("\nNo se pudo reservar memoria\n");
  getch();
  }
  break;
  case 2:
  Listar(0);
  break;
  case 3:
  Listar(1);
  break;
  case 4:
  Borrar();
  break;
  case 5:
  Quitar();
  break;
  case 6:
  free(Lista);
  exit(1);
  break;
  default:
  printf("\n<Opcion no valida>\n\n");
  fflush(stdin);
  getch();
  break;
  }
  }
  }
  int Inicio(void)
  {
  Lista = (Nodo *)malloc(sizeof(Nodo));
  if(Lista == NULL)
  return 0;
  else
  {
  Lista -> Siguiente = NULL;
  Lista -> Anterior = NULL;
  return 1;
  }
  }
void Agregar(void)
{
  int j,i,k,m;
  Nodo *New=NULL;
  Nodo *Tmp=Lista;
  system("CLS");
  if (Tmp!=NULL)
  {
  printf("Cuantos numeros deseas agregar: ");
  fflush(stdin);
  scanf("%d",&j);
  for(i=0;i<j;i++)
  {
  New = (Nodo *)malloc(sizeof(Nodo));
  printf("\nNumero: ");
  fflush(stdin);
  scanf("%i",&New->Valor);
  for(k=0;k<2;k++)
  {
  printf("Letra [%i]: ",k+1);
  fflush(stdin);
  scanf("%c",&New->Letras[k]);
  }
  New->Siguiente=NULL;
  while(Tmp->Siguiente!=NULL) Tmp = Tmp->Siguiente;
  New->Anterior = Tmp;
  Tmp->Siguiente = New;
  TotReg++;
  }
  }
  else
  {
  printf("\nNo se pudo agregar elemento.\n");
  fflush(stdin);
  getch();
  }
  }
  void Listar(int Orden)
  {
  int i=0,j=0;
  Nodo *Tmp=Lista;
  system("CLS");
  if(Tmp!=NULL)
  {
  if(TotReg > 0)
  {
  if(Orden==0)
  {
  while(Tmp->Siguiente != NULL)
  {
  Tmp=Tmp->Siguiente;
  printf("\n\nRegistro [%i]\n",j+1);
  printf("Numero: %i\n",Tmp->Valor);
  printf("Letras: ");
  for(i=0;i<5;i++)
  {
  printf(" %c",Tmp->Letras[i]);
  }
  j++;
  }
  }
  else
  {
  while(Tmp->Siguiente!=NULL) Tmp=Tmp->Siguiente;
  do{
  printf("\n\nRegistro [%i]\n",j+1);
  printf("Numero: %i\n",Tmp->Valor);
  printf("Letras: ");
  for(i=0;i<5;i++)
  {
  printf(" %c",Tmp->Letras[i]);
  }
  j++;
  Tmp = Tmp->Anterior;
  }while(Tmp->Anterior!=NULL);
  }
  }
  else
  {
  printf("\nLista Vacia.");
  }
  }
  else
  {
  printf("No se pudo Listar\n");
  }
  fflush(stdin);
  getch();
  }
  void Borrar(void)
  {
  int Num=0,i=0;
  Nodo *Tmp=Lista;
  system("CLS");
  if(Tmp!=NULL)
  {
  printf("Establezca el numero de elementos a Eliminar: ");
  fflush(stdin);
  scanf("%i",&Num);
  for(i=0;i<Num&&Tmp->Siguiente!=NULL;i++)
  {
  Tmp=Tmp->Siguiente;
  TotReg--;
  }
  Lista=Tmp;
  printf("\nDatos Eliminados.");
  }
  else
  printf("\nLista vacia.");
  fflush(stdin);
  getch();
  }
  void Quitar(void)
  {
  int i = 0;
  Nodo *Tmp = Lista;
  system("CLS");
  if(Tmp->Siguiente != NULL)
  {
  while(Tmp->Siguiente!=NULL)
  {
  Tmp=Tmp->Siguiente;
  for(i=0;i<5;i++)
  {
  if(i>1) Tmp->Letras[i]=' ';
  }
  }
  printf("\nLetras quitadas.");
  }
  else
  {
  printf("\nLista vacia.");
  }
  fflush(stdin);
  getch();
  }

domingo, 15 de julio de 2012

Algoritmos Lista simple

Insertar 
/* inserción en una lista vacía */
int ins_en_lista_vacia (Lista * lista, char *dato){
  Element *nuevo_elemento;
  if ((nuevo_elemento = (Element *) malloc (sizeof (Element))) == NULL)
    return -1;
  if ((nuevo _elemento->dato = (char *) malloc (50 * sizeof (char)))
      == NULL)
    return -1;
  strcpy (nuevo_elemento->dato, dato);

  nuevo_elemento->siguiente = NULL;
  lista->inicio = nuevo_elemento;
  lista->fin = nuevo_elemento;
  lista->tamaño++;
  return 0;
}


1 Inicio
2 Declarar el elemento a insertar
3  Asignar un espacio de memoria para el nuevo elemento
4 Asignar nuevo_elemento->datos
5  Asignar el valor NULL  del nuevo_elemento al siguiente
6 Asignar el valor del nuevo elemento a lista -> inicio
7 Asignar el valor del nuevo elemento a lista -> fin
8 Se actualiza el tamaño
9 Fin




 Eliminar 
/* eliminación al inicio de la lista */
int sup_inicio (Lista * lista){
  if (lista->tamaño == 0)
    return -1;
  Element *sup_elemento;
  sup_element = lista->inicio;
  lista->inicio = lista->inicio->siguiente;
  if (lista->tamaño == 1)
    lista->fin = NULL;
  free (sup_elemento->dato);
  free (sup_elemento);
  lista->tamaño--;
  return 0;
}
 
1 incio
2 Se declara el apuntador sup_inicio para guardar la dirección que se va a eliminar.
3 Si lista -> tamaño es exactamente igual a cero se retornara menos uno.
4 Declarar el apuntador sup_elemento 
5 Asignar el valor de sup_element a lista -> inicio.
6 Asignar el valor de lista -> incio a lista -> inicio -> siguiente.
7 Si lista -> tamaño es exactamente igual a uno entonces lista -> fin se le asignara el valor de NULL.
8 Liberar la memoria ocupada por el sup_elemento -> dato.
9 Se actualiza el tamaño de la lista.
 

Eliminar II



void borrar(void) { char* q;  q=crecup();  if(q==NULL)  {  printf("No hay datosn");  return;  } printf("Este es el dato recuperado y borrado: Dato numero %d: %s\n",rpos+1,q);  free (q); }
1 Inicio
2 Declarar una variable
3 La variable es exactamente igual a NULL entonces imprimir no hay datos 
4 Imprimir  el dato borrado
5 Liberar el espacio de memoria de la variable



Buscar 

int buscar(struct nodo *p, int valor) { if(p==NULL) return(FALSE); do{
if(p->dato == valor) return(TRUE); else p = p->sig; } while(p != NULL);
return(FALSE); }
**Nota antes tenemos que definir TRUE Y FALSE
1 Inicio
2 Si valor esta dentro de la lista retorna TRUE  en caso contrario dice FALSE
3 Fin

lunes, 2 de julio de 2012

Colas con enteros c++


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <todas.h>
#define MAX 100
void datos (void)
    {
    system("color 6");
    int a=15,b=8;
    gotoxy (a,b);
    printf ("Edith Juarez Juarez \n\n");
    int c=20,d=5;
    gotoxy (c,d);
    printf ("Grupo 351\n\n");
    for(int x=3;x<=40;x++){
    gotoxy(x,3);
    printf("*");
  }
    for(int x=3;x<=40;x++){
    gotoxy(x,10);
    printf("*");
  }
  // getch();
  }
char *p[MAX];
char *crecup(void);
void calmac(char *c);
int spos, rpos;
void intro(void);
void revisar(void);
void borrar(void);

int main(void)
{
    datos();
    char s[MAX];
    register int t;
    spos=0;
    rpos=0;

    for(t=0; t<MAX; ++t) p[t]=NULL;
    for(;;)
    {
    printf("\n1.-Introducir\n2.-Revisar,\n3.-Borrar\n4.- Salir\n");
    printf("\nEscriba el numero\n\n");
    gets(s);
    *s=toupper(*s);
    switch(*s)
    {  
    case'1':intro(); break;
    case'2':revisar(); break;
    case'3':borrar(); break;
    case'4':exit(0); break;
    }
    }
    return 0;
    }
    void intro(void)
    {
    char s[MAX], *p;
    do
    {
    printf("\nDigite el numero %d:\n", spos+1);    
    gets(s);
    system("cls");
    if(*s=='\0')break;
    p=(char*)malloc(strlen(s)+1);
    if(!p)
    {
    printf("No hay memoria reservada\n");
    return;
    }
    strcpy(p,s);
    calmac(p);
    }
    while(*s);
    }
       
    void revisar(void)
    {
    int t;
    if(rpos==spos)
    {
    printf("No hay datos\n");
    return;
    }
    for(t=rpos; t<spos; t++)
    printf("\nNumero %d: %s\n", t+1, p[t]);
    }
    void borrar(void)
    {
    char *q;
    q=crecup();
    if(q==NULL)
    {
    printf("No hay datos\n");
    return;
    }
    printf("Este es el dato recuperado y borrado: Dato numero %d: %s\n", rpos+1, q);
    free(q);
    }
    void calmac(char *q)
    {
    if(spos==MAX)
    {
    printf("\nlA COLA ESTA LLENA\n");
    return;
    }
    p[spos]=q;
    spos++;
    }
    char *crecup(void)
    {
    if(rpos==spos)
    {
    printf("\nNo hay datos\n");
    return NULL;
    }
    rpos++;
    return p[rpos-1];
    }
 

domingo, 24 de junio de 2012

Capicua


#include <iostream>
#include <stdio.h>
#include <stdlib.h>

#include <conio.h>
#include <ctype.h>
void datos (void)
    {
    printf ("Edith Juarez Juarez \n\n");
    printf ("Grupo 351\n\n");
    }
int alreves(int n, int digitos)
{
  int resto, cocie;

  if (n<10)     // Si tenemos un número de dígitos menor a 2, devolvemos n
    return n;
  else
    {
      resto = n % 10;
      cocie = n / 10;
      return resto*digitos + alreves(cocie, digitos/10);
    }
}

int main()
{
   
  system ("Color 16");
  datos();
  int num, rev;
  int digitos = 1;
  int tmp;
 
  printf("Este programa nos dice si un numero es capicua o no \n\n");
 
  printf("Dame un numero: \n");
  scanf("%d", &num);
  tmp =num;
  while (tmp>=10)
    {
      tmp=tmp/10;
      digitos=digitos*10;
    }
  rev = alreves(num, digitos);
  if (rev==num)
    printf("\nEste numero SI es capicua");
  else
    printf("\nEste numero NO es capicua");
  getch();
  return 0;
}


lunes, 4 de junio de 2012

Suma de vectores


#include<stdio.h>
#include<conio.h>
#include<todas.h>
#define N 20
void datos (void)
    {
    system("color 6");
    int a=15,b=8;
    gotoxy (a,b);
    printf ("Edith Juarez Juarez \n\n");
    int c=20,d=5;
    gotoxy (c,d);
    printf ("Grupo 351\n\n");  
    for(int x=3;x<=40;x++){
    gotoxy(x,3);
    printf("*");
  }
    for(int x=3;x<=40;x++){
    gotoxy(x,10);
    printf("*");
  }
   getch();
  }

int main()
{
datos();
int vec1[N] , vec2[N];
int i , l1, l2 ,sumavec1=0 , sumavec2=0 ,totalsuma=0;
system ("color 3");
printf("\nIngresar Longitud de Vector uno: ");
scanf("%d",&l1);
printf("Ingresar Valores\n");
for(i=0 ; i<l1 ; i++){
printf("Valor %d): ",i+1);
scanf("%d",&vec1[i]);
}

printf("\nIngresar Longitud de Vector dos: ");
scanf("%d",&l2);
printf("Ingresar Valores\n");
for(i=0 ; i<l2 ; i++){
printf("Valor %d): ",i+1);
scanf("%d",&vec2[i]);
}


for(i=0 ; i<l1 ; i++)
sumavec1 = sumavec1 + vec1[i];
printf("\nSuma de Valores de Vector 1:%d ",sumavec1);


for(i=0 ; i<l2 ; i++)
sumavec2 = sumavec2 + vec2[i];
printf("\nSuma de Valores de Vector 2:%d ",sumavec2);

printf("\nSuma total de los 2 vectores es:%d ",totalsuma=sumavec1+sumavec2);
getch();
}

lunes, 21 de mayo de 2012

Menú de operaciones con funciones


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>

void datos (void)
    {
    printf ("Edith Juarez Juarez \n\n");
    printf ("Grupo 351\n\n");
    }

int opc (void)
    {
         int x;  
        printf("MENU DE OPERACIONES \n\n") ;
        printf("1.- AREA DEL TRIANGULO \n\n");
        printf("2.- AREA DEL ESFERA \n\n ");
        printf("3.- VOLUMEN DE UN CUBO \n\n");
        printf("4.- AREA DEL PENTAGONO \n\n ");
        printf("5.- CALCULAR EL IVA\n\n ");
        printf("6.- SALIR \n\n");
         printf("ELIGE LA OPERACION A REALIZAR:  ");
         scanf("%d", &x);
         system("cls");
         return x;
    }
    void triangulo (void)
    {
         float base,h,are_tri;
         printf("DAME EL VALOR DE LA BASE:  ");
         scanf("%f" ,&base);
         printf("DAME EL VALOR DE LA ALTURA: ");
         scanf("%f" , &h);
         are_tri = base * h / 2;
         printf("EL AREA DEL TRIANGULO ES: %.2f \n\n", are_tri);
    }
    void esfera (void)//a=4.pi.r pot 2
    {
         float rad_esf, are_esf, pi=3.1416;
   
         printf("DAME EL RADIO   ");
         scanf("%f", &rad_esf);                    
         are_esf = (4*pi*(pow(rad_esf,2)));
         printf("EL AREA DE LA ESFERA ES: %.2f\n\n", are_esf);  
    }
    void cubo (void)
    {
         float l,are_cu;
         printf("Introduce el lado:  ");
         scanf("%f",&l);
         are_cu=(pow(l,3));
         printf("El area del cuadrado es:  %.2f\n\n",are_cu);
    }
    void pentagono (void)//A= P*a /2 P=7.26 * 5 ; P=36.3  A= (36.3 *5) / 2
    {
       float p,pen,apo,aper;
       printf("Introduce el perimetro:  ");
       scanf("%f",&p);
       aper=p*5;
       printf("Introduce el apotema:  ");
       scanf("%f",&apo);
       pen=aper*apo/2;
       printf("El area del petagono es:  %.2f\n\n",pen);
    }
   
    void iva (void)
    {
       float iv,mon,s=1.16;
       printf("Introduce el monto:  ");
       scanf("%f",&mon);
       iv=mon*s;
       printf("El area del circulo es:  %.2f\n\n",iv);
    }
    void menu (void)
    {
       
         int x;
         do
         {
             x=opc();
             switch(x)
             {
                 case 1:
                      triangulo();
                 break;
                 case 2:
                      esfera();
                 break;            
                 case 3:
                      cubo();
                 break;            
                 case 4:
                      pentagono();
                 break;
                 case 5:
                      iva();
                 break;
                 case 6:
                      printf("ADIOS\n\n");
                 break;            
                 default:
                      printf("OPCION INVALIDA \n\n");
            }
         }while(x !=6);  
}
using namespace std;
int main(int argc, char *argv[])
{
    datos();
    printf ("Este es un programa que te resuelve lo que se muestra en el siguente menu\n\n ");
    system ("color 1f");
    menu();
    system("PAUSE");
    return EXIT_SUCCESS;
}