Mostrando las entradas con la etiqueta amor. Mostrar todas las entradas
Mostrando las entradas con la etiqueta amor. Mostrar todas las entradas

Como tener mayor inteligencia



Keep Calm: 
Cuando estés discutiendo con alguien, mantenete completamente calmo, esto hace que la 
otra persona se enoje mas, y la haga decir cosas ilógicas que podés utilizar en contra de ellos. 

Trucos 






Di que si: 
Afirmar con la cabeza mientras hacés una pregunta, ayuda muchísimo a obtener una respuesta afirmativa de la otra persona. 

tecnicas 








High Five: 
Te pasa que le pifiás a la mano del otro cuando "chocas los 5" ? 
Mirá al codo de la otra persona, y nunca mas le errás. 

Hacks 







Cómo sacarse de la cabeza esa maldita canción que sigue sonando en tu cabeza? 
Pensá en el final de esa canción y asi desaparecerá. Esto se debe al llamado efecto Zeigarnik, que es básicamente un problema que tiene la mente con las cosas inconclusas. 










Hacé que tu hijo te obedezca siempre: Por ejemplo si le decís que tome la leche y siempre dice "No", decile si quiere tomar la leche en una taza roja o azul. Elegirá el color de la taza sin pensar en el contenido, y listo. 

mentales 










Negociando? Usá el silencio a tu favor. La gente odia los silencios incómodos por lo que hará cualquier cosa para evitarlos, posiblemente revelando datos que te jueguen a favor. 

Trucos Mentales Para Salirte con la Tuya 2! 









Hacé que crean tus mentiras: Agregá a la mentira un detalle embarazoso. Por ejemplo; Si llegaste tarde al trabajo porque te quedaste dormido, decí: "Perdón, estoy con diarrea y por eso se me hizo tarde" . Nadie cuestiona la diarrea. 










Perdiste algo y no lo encontrás? Buscá con la vista de derecha a izquierda en vez de izquierda a derecha, que es la dirección en que solemos mirar. Pasamos de largo los objetos mas fácilmente cuando miramos como estamos acostumbrados. 

Trucos 









Mas mentiras a la mentira: Agregá distintos detalles a tu historia. Contá la misma mentira 3 veces distintas agregándole algún detalle distinto cada vez. Cuando la gente escucha la historia por tercera vez con distintos detalles, recordarán la historia principal como real. 

tecnicas 








Revancha: 
Si estás perdiendo contra alguien en algún juego, preguntales como es que están jugando tan pero tan bien. Al sobrepensar sobre ello, cometerán errores, y podrás derrotarlos. 

Hacks 









Venganza asquerosa: Proponele este juego a tu "enemigo" . Decile que no puede diferenciar entre dos marcas distintas de leche, bebiendo con los ojos cerrados. Tené un vaso de jugo de naranja preparado y escondido. Después que pruebe el primer vaso de leche, dale el de jugo de naranja. Como el cuerpo está esperando beber leche, el ácido del jugo hará vomitar a tu enemigo. 

mentales 








Abrite camino: Una multitud te impide el paso? (ej: Recital). Gritá: Voy a vomitar! Todos se corren y y te dejan el camino despejado. 

Trucos Mentales Para Salirte con la Tuya 2! 









El Nerd de la clase: 
No tenés los apuntes para el exámen? Mandá un mail a toda la clase diciendo: "Tengo todos los apuntes para el exámen de mañana, si quieren los intercambiamos para ver que onda". Cuando te lleguen los apuntes, reenviá a otros los que te mandaron como si fueran tuyos. 

Trucos 









Conseguí favores siempre: Decí: "Necesito tu ayuda para..." La gente es mucho mas proclive a ayudar cuando escucha que alguien le está pidiendo ayuda. 

tecnicas 









"Llevame esta": Cuando no quieras cargar con algo, por ejemplo una botella de 2 litros de Coca, asegurate de ir acompañado a comprar y sin dejar de hablarle a tu compañero pasale el objeto en cuestión. La mayoría de la gente tomará el objeto sin pensarlo. 

Hacks 








Drogate de manera legal y sin intoxicarte: 
Necesitás una pelotita de ping pong, una radio, y una luz roja.
 

1. Poné la radio en alguna parte del dial dnd solo haya ruido. 
2. Cortá la pelotita en 2 y pegate cada mitad en cada ojo. 
3. Prendé la luz roja y asegurate de que apunte hacia vos. 
4. Esperá media hora y mandale saludos a Alf y al Unicornio que te lleva por el bosque de la felicidad a conversar con las tortugas ninja. 


mentales 

La familia y el amor

  1. El vínculo que te une a tu verdadera familia no es el de la sangre, es el del respeto y la alegría que tú sientes por las vidas de ellos, y ellos por la tuya. Muy raramente los miembros de una familia crecen bajo el mismo techo
  1.  La unión de la familia no se mide por el número de miembros, sino por la unión que hay en ellos.
  2. Tal vez en el dinero encuentres un poco de felicidad, en las amistades encuentres alegrías, en las medicinas la cura pare tu enfermedad, pero el amor solo lo encontraras en tu familia.
  3. Creemos nuestras propias tradiciones. Tener cosas en común une. Por lo que se recomienda que cada familia tenga sus propias costumbres. Comer juntos todos los sábados, visitar a los abuelos los domingos, o jugar cartas todas las noches son hábitos que fomentan la unión familiar. 
  1. La familia crece cuando los hijos hacen la suya propia.
  2. Tener hijos no lo convierte a uno padre, del mismo modo en que tener un piano no lo vuelve pianista.
  3. Ningún éxito en la vida puede compensar el fracaso en el hogar.
  4. El que desea haber nacido en otra familia se rechaza a sí mismo.
  5. Ama tu familia de principio a fin, sin medida, porque siempre, donde vayas, serás parte de una.
  6. El mejor legado de un padre a sus hijos es un poco de su tiempo cada día.
  7. Acontece que el hombre le da vuelta al mundo para buscar lo que le hace falta… Regresa a casa y ahí lo encuentra.
  8. Las lágrimas de un padre reflejan la fortaleza y el espíritu de la unión familiar, aun cuando la familia se encuentre en la cuerda floja del abismo.
Único producto 100% garantizado. De 1 a 5 cm. en semanas. Llámenos.
Conozca la Herramienta que está haciendo furor en la Argentina Hoy
  1. Lo más grande que un hombre puede hacer por sus hijos es amar a la madre de sus hijos.
  2. Hermana, como las ramas de un árbol, crecemos en distintas direcciones pero nuestra raíz continúa siendo la misma. Así la vida de cada una siempre será una parte fundamental de la de la otra.
  3. Una madre tiene algo de Dios y mucho de ángel. (Reflexiones y frases para una madre)
  1. El mundo sufre porque no hay tiempo para los hijos, no hay tiempo para los esposos, no hay tiempo para disfrutar la compañía de otros.
  2. La familia es el lugar principal del crecimiento de cada uno, pues a través de ella el ser humano se abre a la vida y a esa exigencia natural de relacionarse con los otros
  3. La familia es la única comunidad en la que todo hombre es amado por sí mismo, por lo que es y no por lo que tiene.
  4. La familia y el matrimonio son instituciones en la vida del hombre que se asemejan a una fuente viva: mientras más agua se saca, con más abundancia brota ella de la fuente.
  5. Una estructura familiar sana lleva a construir relaciones sociales positivas. Una familia enferma o pervertida facilita el aumento de las tensiones y las luchas fuera del hogar.
  6. No debe haber favoritismos, especialmente cuando sucede un hecho que afecta la salud de uno de los miembros de la familia o su conducta, el tema debe tratarse en la familia y no separar el problema.
  7. El futuro depende, en gran parte, de la familia, lleva consigo el porvenir mismo de la sociedad; su papel especialísimo es el de contribuir eficazmente a un futuro de paz.
  8. El pequeño mundo de la niñez con su entorno familiar es un modelo del mundo. Cuanto más intensamente le forma el carácter la familia, el niño se adaptará mejor al mundo

Relexion sobre la pareja


No dejes de perderte reflexiones de lamor
Duele amar a alguien y no ser correspondido. Pero lo que es más doloroso es amar a alguien y nunca encontrar el valor para decirle a esa persona lo que sientes.
Tal vez nosotros debamos conocer a unas cuantas personas equivocadas antes de conocer a la persona correcta, para que al fin cuando la conozcamos sepamos ser agradecidos por ese maravilloso regalo...
Una de las cosas mas tristes de la vida es cuando conoces a alguien que significa todo, y sólo para darte cuenta que al final no era para ti y lo tienes que dejar ir.

Cuando la puerta de la felicidad se cierra, otra se abre, pero algunas veces miramos tanto tiempo a aquella puerta que se cerró, que no vemos la que se ha abierto frente a nosotros.

Es cierto que no sabemos lo que tenemos hasta que lo perdemos, pero también es cierto que no sabemos lo que nos hemos estado perdiendo hasta que lo encontramos.
Darle a alguien todo tu amor nunca es un seguro de que te amará, pero no esperes que te amen, sólo espera que el amor crezca en el corazón de la otra persona, pero si no crece sé feliz porque creció en el tuyo.

"La capacidad de reír juntos es el amor" (Françoise Sagan, escritora francesa)
Hay cosas que te encantaría oír y que nunca escucharás de la persona que te gustaría que las dijera. Pero no seas tan sordo para no oírlas de aquel que las dice desde su corazón.
El amor llega a aquel que espera, aunque lo hayan decepcionado, a aquel que aun cree, aunque haya sido traicionado, a aquel que todavía necesite amar, aunque antes haya sido lastimado y a aquel que tiene el coraje y la fe para construir la confianza de nuevo

Las diferencias de amigos y mejores amigos

Amigo: Te pide permiso para agarrar agua o comida.
Mejor amigo: Es la razón por la cual no tienes comida en la nevera.
Amigo: Te sacaría de la cárcel.
Mejor amigo: Estaría preso contigo diciéndote: “¿tienes frío maricon?”.
Amigo: No te ha visto llorar.
Mejor amigo: No le diría a nadie que has llorado, pero se cagaría de la risa cuando ya no estuvieras triste.
Amigo: Te pide prestadas tus cosas un par de días y te las devuelve.
Mejor amigo: Bota tus vainas y te dice “Coño pana; no se donde lo dejé”…
Amigo: Solo sabe algunas cosas sobre ti.
Mejor amigo: Podría escribir un libro con todas las pendejadas que han pasado y las brutalidades que has hecho.
Amigo: Te dejaría de hablar si los demás lo hacen.
Mejor amigo: Manda a comer mierda a los que te dejen de hablar.
Amigo: Toca la puerta de tu casa.
Mejor amigo: Entra hasta tu cuarto y grita: Hay comida…?
Amigo: Te quita la cerveza cuando ve que ya estás cayéndote de la pea.
Mejor amigo: Ya tambaleándose se acerca y te medio dice: “te la terminas GÜEVÓN porque aquí no desperdiciamos nada”

C++ ejemplos

Ejemplos
En este apéndice se incluyen algunos programas de ejemplo escritos en lenguaje
C.  Los  programas  han sido  realizados  de  forma  que  puedan ser  compilados  en la
mayoría de compiladores existentes para los sistemas operativos MS-DOS y UNIX sin
que exista la necesidad de realizar ningún tipo de cambio en los mismos.
B.1 - palindro.c.
/* Programa que calcula si una palabra es palindroma, esto es, se lee
igual de derecha a izquierda que de izquierda a derecha. */
#include <stdio.h>
#include <string.h>
#define TAM 100
/* Rutina que calcula si una palabra es palindroma.
Parametros: char *cadena Puntero al string con la palabra.
Return: int 0 no palindroma, <>0 palindroma. */
int Palindroma(char *cadena)
{
   register int i,j;
   i=0;
   j=strlen(cadena)-1;
   while (i<j && cadena[i]==cadena[j])
   {
      i++;
j--;
}
return (i>=j);
}
int main(void)
{
   char cadena[TAM];
   printf("\nIntroduce la palabra\n");
   gets(cadena);
   printf("La palabra: %s %s palindroma.\n",cadena,
      (Palindroma(cadena)) ? "es" : "no es");
return 0;
}
B.2 - matriz.c.
/* Programa que calcula el producto de dos matrices. */
#include <stdio.h>
75El lenguaje de programación C
/* Definicion del tamaño maximo */
#define TAM 10
/* Definicion de los codigos de error */
#define OK 0
#define ERROR 1
/* Definicion de la estructura de datos */
struct MATRIZ
{
   unsigned fila,columna;
float matriz[TAM][TAM];
};
/* Rutina que muestra un menu y pide una opcion del menu.
Parametros: Ninguno.
Return: char Opcion del menu elegida. */
char Menu(void)
{
   register char d;
   printf("\nElige la opcion deseada:\n");
   printf("\t0 -- Salir del programa.\n");
   printf("\t1 -- Cambiar la matriz A.\n");
   printf("\t2 -- Cambiar la matriz B.\n");
   printf("\t3 -- Calcular A*B\n");
   printf("\t4 -- Calcular B*A\n");
   while ((d=getchar())<'0' || d>'4');
return d;
}
/* Rutina que pide el numero de filas o de columnas de una matriz.
Parametros: char *cadena Puntero al string a mostrar.
Return: unsigned Numero de filas o de columnas. */
unsigned PedirTamano(const char *cadena)
{
unsigned valor;
do
{
      printf("%s",cadena);
      scanf("%u",&valor);
   }
   while (valor==0 || valor>TAM);
   return valor;
}
/* Rutina que cambia una matriz.
Parametros: struct MATRIZ *a Puntero a la matriz que vamos a cambiar.
Return: Ninguno. */
void PedirMatriz(struct MATRIZ *a)
{
   register unsigned i,j;
float valor;
76El lenguaje de programación C
   a->fila=PedirTamano("\nNumero de filas de la matriz: ");
   a->columna=PedirTamano("\nNumero de columnas de la matriz: \n");
   for(i=0;i<a->fila;i++)
      for(j=0;j<a->columna;j++)
      {
         printf("M[%u][%u]: ",i,j);
         scanf("%f",&valor);
         a->matriz[i][j]=valor;
      }
}
/* Rutina que multiplica dos matrices. Las matrices se pasan por
puntero pues ello es mas rapido, aunque no se modifican en toda la
funcion.
Parametros: struct MATRIZ *a Puntero a la estructura con la primera
matriz a multiplicar.
            struct MATRIZ *b Puntero a la estructura con la segunda
matriz a multiplicar.
            struct MATRIZ *res Puntero a la estructura que contendra
el resultado.
Return: int Codigo de error. */
int Multiplicar(const struct MATRIZ *a,const struct MATRIZ *b,struct
MATRIZ *res)
{
   register unsigned i,j,k;
if (a->columna!=b->fila)
      return ERROR;
   res->fila=a->fila;
   res->columna=b->columna;
for(i=0;i<a->fila;i++)
      for(j=0;j<b->columna;j++)
{
         res->matriz[i][j]=0;
for(k=0;k<a->fila;k++)
            res->matriz[i][j]+=a->matriz[i][k]*b->matriz[k][j];
}
   return OK;
}
/* Rutina que muestra en pantalla el resultado de la operacion.
Parametros: struct MATRIZ *res Puntero a la estructura con el
resultado.
Return: Ninguno. */
void Mostrar(const struct MATRIZ *res)
{
register unsigned i,j;
for(i=0;i<res->fila;i++)
{
      for(j=0;j<res->columna;j++)
         printf("Res[%u][%u]= %f\n",i,j,res->matriz[i][j]);
      printf("\nPulsa Enter para continuar.\n");
      getchar();
   }
}
77El lenguaje de programación C
int main(void)
{
   struct MATRIZ a,b,res;
   char d;
   a.fila=a.columna=b.fila=b.columna=1;
   a.matriz[0][0]=b.matriz[0][0]=1.0;
   do
      switch(d=Menu())
{
         case '0':break;
case '1':PedirMatriz(&a);
            break;
case '2':PedirMatriz(&b);
break;
case '3':
if (Multiplicar(&a,&b,&res)==ERROR)
               printf("\nNo es posible multiplicar A*B\n");
else
               Mostrar(&res);
break;
         case '4':
            if (Multiplicar(&b,&a,&res)==ERROR)
               printf("\nNo es posible multiplicar B*A\n");
else
Mostrar(&res);
break;
      }
   while (d!='0');
return 0;
}
B.3 - ordenar.c.
/* Programa que ordena un fichero de cualquier tamaño mediante el
algoritmo QuickSort. El fichero contiene como primer elemento un
unsigned con el numero de elementos del fichero, y a continuacion
figuran todos los elementos a ordenar */
#include <stdio.h>
#include <stdlib.h>
/* Rutina que lee el fichero de datos y devuelve un puntero al array
de la memoria reservada.
Parametros: char *nombre Nombre del fichero a leer.
            unsigned *num Puntero al unsigned que contendra el numero
de elementos del array.
Return: float * Puntero al array de float, NULL si sucede un error. */
float *LeerFichero(const char *nombre, unsigned *num)
{
   FILE *fp;
float *p;
register unsigned i;
78El lenguaje de programación C
   if ((fp=fopen(nombre,"rt"))==NULL)
{
      printf("\nError, no puedo abrir el fichero: %s\n",nombre);
      return NULL;
}
fscanf(fp,"%u\n",num);
if ((p=(float *)calloc(*num,sizeof(float)))==NULL)
{
      printf("\nError, memoria insuficiente.\n");
      fclose(fp);
return NULL;
}
for(i=0;i<*num;i++)
fscanf(fp,"%f\n",&p[i]);
fclose(fp);
return p;
}
/* Rutina que escribe el fichero de datos ordenado.
Parametros: char *nombre Nombre del fichero donde guardar los datos.
            unsigned num Numero de elementos del array.
            float *p Puntero al array ordenado.
Return: Ninguno. */
void GuardarFichero(const char *nombre,const unsigned num,const float
*p)
{
   FILE *fp;
register unsigned i;
if ((fp=fopen(nombre,"wt"))==NULL)
{
      printf("\nError, no puedo crear el fichero: %s\n",nombre);
      return;
}
fprintf(fp,"%u\n",num);
for(i=0;i<num;i++)
fprintf(fp,"%f\n",p[i]);
fclose(fp);
}
/* Rutina que ordena un array segun el algoritmo Quick-Sort.
Parametros:   float *p Puntero al array a ordenar.
              unsigned izq Elemento de la izquierda a ordenar.
              unsigned der Elemento de la derecha a ordenar.
Return:   Ninguno. */
void QuickSort(float *p,unsigned izq,unsigned der)
{
register unsigned i=izq,j=der;
float val,inter;
val=p[(i+j)/2];
do
{
      while (p[i]<val) i++;
while (p[j]>val) j--;
if (i<=j)
79El lenguaje de programación C
      {
         inter=p[i];
p[i]=p[j];
p[j]=inter;
i++;
j--;
      }
   }
while (i<=j);
if (izq<j) QuickSort(p,izq,j);
if (i<der) QuickSort(p,i,der);
return;
}
int main(int argc,char *argv[])
{
float *p;
unsigned num;
if (argc!=3)
   {
      printf("\nModo de uso: %s <fichero1> <fichero2>\n",argv[0]);
      return(1);
}
if ((p=LeerFichero(argv[1],&num))==NULL)
return 1;
QuickSort(p,0,num-1);
GuardarFichero(argv[2],num,p);
free(p);
return 0;
}
B.4 - fichero.c.
/* Programa que maneja una pequeña base de datos directamente sobre el
fichero */
#include <stdio.h>
#include <string.h>
/* Definicion de las constantes del programa */
#define TAM 30
#define TAM_BUFFER 10
/* Definicion de los codigos de error */
#define OK 0
#define ERROR 1
/* Definicion de las estructuras de datos del programa */
struct FICHA
{
   unsigned long dni;
char nombre[TAM];
   char apellido[2][TAM];
};
80El lenguaje de programación C
/* Rutina que muestra un menu en pantalla.
Parametros: Ninguno.
Return: char Opcion elegida. */
char Menu(void)
{
   register char d;
   printf("\nElige una opcion:\n");
   printf("\t0 -- Salir del programa.\n");
   printf("\t1 -- Insertar un nuevo elemento.\n");
   printf("\t2 -- Buscar un elemento por su dni.\n");
   printf("\t3 -- Buscar un elemento por su apellido.\n");
   while ((d=getchar())<'0' || d>'3');
return d;
}
/* Rutina que muestra un elemento en pantalla.
Parametros: struct FICHA *ficha Puntero a la estructura con los datos
a mostrar.
Return: Ninguno. */
void Mostrar(const struct FICHA *ficha)
{
   printf("\n\nDNI: %lu\n",ficha->dni);
   printf("NOMBRE: %s\n",ficha->nombre);
   printf("PRIMER APELLIDO: %s\n",ficha->apellido[0]);
   printf("SEGUNDO APELLIDO: %s\n",ficha->apellido[1]);
   printf("\nPulsa Enter para continuar\n");
   getchar();
}
/* Rutina que busca un elemento dado su dni.
Parametros: FILE *fichero Puntero al fichero de trabajo.
            unsigned long dni Numero de dni a buscar.
            char opcion Opcion de ejecucion, 1 mostrar, 0 no mostrar.
Return: int Codigo de error. */
int BuscarDni(FILE *fichero,const unsigned long dni,const char opcion)
{
struct FICHA ficha;
   fseek(fichero,0L,SEEK_SET);
while (fread(&ficha,sizeof(struct FICHA),1,fichero)==1)
      if (dni==ficha.dni)
{
         if (opcion)
            Mostrar(&ficha);
Return OK;
}
   return ERROR;
}
/* Rutina que busca por apellidos.
Parametros: FILE *fichero Puntero al fichero de trabajo.
            char *apellido Apellido a buscar.
Return: int Codigo de error.*/
81El lenguaje de programación C
int BuscarApellido(FILE *fichero,char *apellido)
{
   struct FICHA ficha;
char encontrado=0;
fseek(fichero,0L,SEEK_SET);
while (fread(&ficha,sizeof(struct FICHA),1,fichero)==1)
      if (!strcmp(apellido,ficha.apellido[0]) ||
         !strcmp(apellido,ficha.apellido[1]))
      {
         Mostrar(&ficha);
         encontrado=1;
      }
   return (encontrado) ? OK : ERROR;
}
/* Rutina que inserta un nuevo elemento en el fichero.
Parametros: FILE *fichero Puntero al fichero de trabajo.
            struct FICHA *ficha Puntero a la ficha a insertar.
Return: int Codigo de error. */
int Insertar(FILE *fichero,const struct FICHA *ficha)
{
   if (BuscarDni(fichero,ficha->dni,0)!=ERROR)
      return ERROR;
   fseek(fichero,0L,SEEK_END);
   fwrite(ficha,sizeof(struct FICHA),1,fichero);
return OK;
}
/* Rutina que pide los datos de una ficha.
Parametros: struct FICHA *ficha Puntero a la ficha que contendra los
datos.
            char opcion Opcion de ejecucion (0..2).
Return: struct FICHA * Puntero a la ficha que contiene los datos. */
struct FICHA *PedirDatos(struct FICHA *ficha,
const char opcion)
{
   switch(opcion)
{
      case 0: printf("\nDNI: ");
         scanf("%lu",&ficha->dni);
fflush(stdin);
break;
case 1: fflush(stdin);
printf("APELLIDO: ");
         strupr(gets(ficha->apellido[1]));
break;
case 2: printf("\nDNI: ");
scanf("%lu",&ficha->dni);
fflush(stdin);
printf("NOMBRE: ");
strupr(gets(ficha->nombre));
printf("PRIMER APELLIDO: ");
         strupr(gets(ficha->apellido[0]));
         printf("SEGUNDO APELLIDO: ");
         strupr(gets(ficha->apellido[1]));
82El lenguaje de programación C
         break;
   }
return ficha;
}
int main(int argc,char *argv[])
{
FILE *fichero;
struct FICHA ficha;
register char d;
if (argc!=2)
{
      printf("\nModo de uso: %s <fichero>\n",argv[0]);
return 1;
}
if ((fichero=fopen(argv[1],"a+b"))==NULL)
{
      printf("\nError creando el fichero: %s\n",argv[1]);
return 1;
}
if (setvbuf(fichero,NULL,_IOFBF,
TAM_BUFFER*sizeof(struct FICHA))!=0)
{
      printf("\nError creando el buffer para %d elementos.\n",
         TAM_BUFFER);
fclose(fichero);
return 1;
}
do
switch(d=Menu())
{
         case '0':break;
case '1':if (Insertar(fichero,PedirDatos(&ficha,2))==ERROR)
                     printf("\nNumero de dni duplicado.\n");
            break;
         case '2':PedirDatos(&ficha,0);
            if (BuscarDni(fichero,ficha.dni,1)==ERROR)
               printf("\nDni no existente.\n");
            break;
         case '3':PedirDatos(&ficha,1);
            if (BuscarApellido(fichero,ficha.apellido[1])==ERROR)
               printf("\nApellido inexistente.\n");
            break;
      }
   while (d!='0');
fclose(fichero);
return 0;
}
B.5 - arbol.c.
/* Programa que lee las palabras de un fichero y las almacena en un
arbol binario */
#include <stdio.h>
 El lenguaje de programación C
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
/* Definicion de la longitud maxima de una palabra */
#define TAM 30
/* Definicion de las estructuras de datos del programa */
struct ARBOL
{
   char pal[TAM+1];
struct ARBOL *izq,*der;
};
/* Rutina que lee una palabra del fichero.
Parametros: FILE *fichero Puntero al fichero de donde se leen las
palabras.
            char *cadena Array de caracteres donde almacenar las
palabras.
Return: char * Puntero a la cadena con la palabra leida, NULL si
error. */
char *LeerPalabra(FILE *fichero,char *cadena)
{
   register char d,i=0;
while ((d=fgetc(fichero))!=EOF && !isalpha(d));
if (d==EOF)
      return NULL;
do
cadena[i++]=d;
while (i<TAM && (isalpha(d=fgetc(fichero)) || isdigit(d) ||
d=='_'));
cadena[i]='\0';
   return cadena;
}
/* Rutina que crea el arbol binario, leyendo para ello el fichero.
Parametros: char *nombre Nombre del fichero a leer.
Return: struct ARBOL * Puntero a la raiz del arbol creado, NULL si
error. */
struct ARBOL *LeerFichero(char *nombre)
{
   FILE *fichero;
   char cadena[TAM+1],insertado;
   int val;
struct ARBOL *cab=NULL,*p,*q;
if ((fichero=fopen(nombre,"rt"))==NULL)
   {
      printf("\nError, no puedo leer el fichero: %s\n",nombre);
      return(NULL);
   }
   while (LeerPalabra(fichero,cadena)!=NULL)
{
      if ((q=(struct ARBOL *)malloc(sizeof(struct ARBOL)))==NULL)
{
84El lenguaje de programación C
         printf("\nError reservando memoria.\n");
         fclose(fichero);
return NULL;
      }
      strcpy(q->pal,cadena);
q->izq=q->der=NULL;
if (cab==NULL)
cab=q;
else
{
p=cab;
insertado=0;
while (!insertado)
            if ((val=strcmp(cadena,p->pal))<0)
               if (p->izq==NULL)
{
                  p->izq=p;
                  insertado=1;
}
else
p=p->izq;
            else
if (val>0)
if (p->der==NULL)
{
                     p->der=q;
insertado=1;
}
else
p=p->der;
               else
insertado=1;
      }
   }
fclose(fichero);
return cab;
}
/* Rutina que muestra por pantalla el arbol ordenado a la vez que
libera la memoria.
Parametros: struct ARBOL *p Puntero al nodo a mostrar.
            unsigned *cont Puntero al contador de elementos para
permitir parar la visualizacion.
Return: Ninguno.
*/
void Mostrar(struct ARBOL *p,unsigned *cont)
{
   if (p->izq!=NULL)
      Mostrar(p->izq,cont);
puts(p->pal);
if (++*cont>21)
{
*cont=1;
printf("\nPulsa Enter para continuar.\n");
getchar();
}
if (p->der!=NULL)
85El lenguaje de programación C
      Mostrar(p->der,cont);
   free(p);
}
int main(int argc,char *argv[])
{
struct ARBOL *p;
unsigned cont=1;
if (argc!=2)
{
      printf("\nModo de uso: %s <fichero>\n",argv[0]);
      return 1;
}
if ((p=LeerFichero(argv[1]))==NULL)
return 1;
printf("\n\n\n\n\n\n");
Mostrar(p,&cont);
   return 0;
}

THEMRFRIKI S.A. Con tecnología de Blogger.

About