#include <stdio.h>#include <stdlib.h>
#include <conio.h>typedef struct{ char nombre[30]; char apellido[30]; int edad; unsigned int codigo;} t_persona;int main(){ t_persona persona[3]; int i; char auxn,auxa; for (i=0; i<3; i++) { persona[i].codigo=0; printf("Ingresar nombre:"); cargar_txt(persona[i].nombre); printf("\nIngresar apellido:"); cargar_txt(persona[i].apellido); printf("\nIngresar edad:"); scanf("%d", &(persona[i].edad)); auxn=persona[i].nombre[0]; if(es_mayuscula(auxn)) { auxn=auxn^32; } persona[i].codigo=persona[i].codigo|auxn; persona[i].codigo=persona[i].codigo<<8; auxa=persona[i].apellido[0]; if(es_mayuscula(auxa)) { auxa=auxa^32; } persona[i].codigo=persona[i].codigo|auxa; persona[i].codigo=persona[i].codigo<<8; persona[i].codigo=persona[i].codigo|persona[i].edad; } for(i=0;i<3;i++) { mostrar_bin(persona[i].codigo); printf("\n"); } return 0;}void cargar_txt(char txt[]){ char l; int i=0; do { l=getche(); if(l!='\r') { txt[i]=l; i++; } } while ((l!='\r')&&(i<29)); txt[i]='\0';}void es_mayuscula(char l){ if((l>='A')&&(l<='Z')) return 1; else return 0;}void mostrar_bin (unsigned int var){ int i; int aux; unsigned int mask=1; mask=mask<<((sizeof(unsigned int)*8)-1); for(i=0;i<(sizeof(unsigned int)*8);i++) { aux=var&mask; var=var<<1; if(aux!=0) printf("1"); else printf("0"); }}
/*programar una funcion:int * datos_frase(char*)recibe una frase y devuelve un arreglo de enteros que en cada posicion va a tener la cantidad de letras de cada palabra de la frase.Con lo cual, si mi frace es hola mundo, va a devolver un arreglo de 2 posiciones que va a tener un 4 y un 5.sin desperdiciar memoria.*/#include <stdio.h>#include <stdlib.h>int * datos_frase (char * frase);int es_letra (char l);int main(){ int * palabras=datos_frase("Hola Mundo!, como estan?, yo muy muy muy muy muy bien"); printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",palabras[0],palabras[1], palabras[2], palabras[3],palabras[4],palabras[5], palabras[6], palabras[7],palabras[8],palabras[9], palabras[10], palabras[11]); free(palabras); return 0;}int * datos_frase (char * frase){ int a=10; int * palabras=(int *)malloc(sizeof(int)*a); if(palabras==NULL) printf("Falta de memoria"); char l; int i=0,j=0; int cont=0; do { if(es_letra(frase[i])) { cont++; } if(!es_letra(frase[i+1])&&(es_letra (frase[i]))) { palabras[j]=cont; j++; if(j>=a) { a+=10; palabras=(int*)realloc(palabras,sizeof(int)*a); } cont=0; } i++; }while(frase[i]!='\0'); palabras=(int*)realloc(palabras, sizeof(int)*(j)); return palabras;}int es_letra (char l){ if((l>='a'&&l<='z')||(l>='A'&&l<='Z')) return 1; else return 0;}