You are on page 1of 20

111))Turbo C Basico I Lenguaje: c Cdigo fuente:

/* este programa ordena asendentemente tres numeros dados*/ /*echo por ruben dario ceballos arellano */ #include #include void main() { float x,y,z,mayor,menor,masme; clrscr(); printf("dame tres numeros para ordenarlos acendentemente\n"); scanf("%f",&x); scanf("%f",&y); scanf("%f",&z); /*-----------desde aqui empiesa a comparar---------------- */ if (x>y){ mayor=x ; menor=y; } else { mayor=y; menor=x; } if (z>mayor){ masme=mayor; mayor=z; } else{ if (z masme=menor; menor=z; } else{ masme=z; } }printf("1.- %.3f\n",menor); printf("2.- %.3f\n",masme); printf("3.- %.3f\n",mayor); getch(); } /*la conclusion de como desarrolle el programa es de que fui comparando variable por variable y los iba apartartando por MAYOR MENOR Y MASME*/

222299Turbo C Basico II Lenguaje: c Cdigo fuente:


// //Victor De la Rocha //-www.myalgorithm.com //-Algoritmia@groups.msn.com //Programa 7, Practica 2 //Deduce el valor absoluto de un numero // #include

#include #include void main(){ //Limpiamos la pantalla clrscr(); //Declaracion de variables int num; //Obtencion de valores desde el teclado printf("numero: ");scanf("%d",&num); //Se evalua para saber si es negativo o positivo if(num>0){ //Si el numero es mayor que cero //entonces el valor queda intacto //unicamente se imprime en pantalla printf("Valor absoluto: %d",num); }else{ //Como el numero es negativo, entonces //Se multiplicara por -1 para que este sea //positivo, y as tener el valor absoluto num=num*-1; //Ahora nomas se imprime printf("Valor absoluto: %d",num); } //Esperamos que se presione una tecla getche(); }

3333399Switch Lenguaje: c Cdigo fuente:


//>>>>>>>>>>>>>>>>>>>> //-Algoritmia@groups.msn.com //Victor De la Rocha //-www.algoritmia.info //Programa 2, Practica3 (uso del switch) //Dados dos valores, dividir siempre el mayor entre el menor //>>>>>>>>>>>>>>>>>>>> #include #include void main(){ //Declaracion de variables float _num1,_num2,_div; clrscr(); printf("Numero 1: ");scanf("%f",&_num1); printf("Numero 2: ");scanf("%f",&_num2); //Si el num1 es mayor que num2 if(_num1>_num2){ if(_num2==0){ printf("ERROR: No existe, division por zero."); }else{ _div=(float)_num1/_num2; printf("%.2f / %.2f = %.2f",_num1,_num2,_div); } } //Si num2 es mayor que num1 if(_num2>_num1){ if(_num1==0){ printf("ERROR: No existe, division por zero."); }else{

_div=(float)_num2/_num1; printf("%.2f / %.2f = %.2f",_num2,_num1,_div); } } //Si num2 y num1 son iguales if(_num2>_num1){ if(_num1==0){//Se compara que ninguno de los dos sea cero printf("ERROR: No existe, division por zero."); }else{ _div=(float)_num2/_num1; printf("%.2f / %.2f = %.2f",_num2,_num1,_div); } } getch(); }

44444)))))Switch Lenguaje: c Cdigo fuente:


//>>>>>>>>>>>>>>>>>>>> //-Algoritmia@groups.msn.com //Victor De la Rocha //-www.myalgorithm.com //Programa 4, Practica3 (uso del switch) //El programa muestra un men con cuatro opciones: //sumar, restar, multiplicar, dividir. Una vez que se escogi la opcin, // el programa preguntara al usuario los nmeros que intervendrn en la //operacin. Dos nmeros sern suficientes para la operacin (utilizando SWITCH). //>>>>>>>>>>>>>>>>>>>> #include #include void main(){ //Declaracion de variables int _num1,_num2,_opc,_sum,_res,_mul; float _div; //inicializo la variable en uno, para poderla comparar //con el cilo while que esta en la linea que sigue. _opc=1; while(_opc!=5){ clrscr(); printf("1- Suma\n"); printf("2- Resta\n"); printf("3- Multiplicacion\n"); printf("4- Division\n"); printf("5- SALIR\n"); printf("Opcion: ");scanf("%d",&_opc); switch(_opc){ case 1 : clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); _sum=_num1+_num2; printf("%d + %d = %d",_num1,_num2,_sum); getche(); break; case 2 : clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2);

_res=_num1-_num2; printf("%d - %d = %d",_num1,_num2,_res); getche(); break; case 3 : clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); _mul=_num1*_num2; printf("%d x %d = %d",_num1,_num2,_mul); getche(); break; case 4 : float r; clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); if(_num2==0){ printf("ERROR: %d / %d = No existe.",_num1,_num2); }else{ _div=(float)_num1/_num2; printf("%d / %d = %.2f",_num1,_num2,_div); } getche(); break; }//END switch }//END while }//

5555)))Switch Lenguaje: c Cdigo fuente:


//>>>>>>>>>>>>>>>>>>>> //-Algoritmia@groups.msn.com //Victor De la Rocha //-www.myalgorithm.com //Programa 4, Practica3 (uso del switch) //El programa muestra un men con cuatro opciones: //sumar, restar, multiplicar, dividir. Una vez que se escogi la opcin, // el programa preguntara al usuario los nmeros que intervendrn en la //operacin. Dos nmeros sern suficientes para la operacin (utilizando SWITCH). //>>>>>>>>>>>>>>>>>>>> #include #include void main(){ //Declaracion de variables int _num1,_num2,_opc,_sum,_res,_mul; float _div; //inicializo la variable en uno, para poderla comparar //con el cilo while que esta en la linea que sigue. _opc=1; while(_opc!=5){ clrscr();

printf("1- Suma\n"); printf("2- Resta\n"); printf("3- Multiplicacion\n"); printf("4- Division\n"); printf("5- SALIR\n"); printf("Opcion: ");scanf("%d",&_opc); switch(_opc){ case 1 : clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); _sum=_num1+_num2; printf("%d + %d = %d",_num1,_num2,_sum); getche(); break; case 2 : clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); _res=_num1-_num2; printf("%d - %d = %d",_num1,_num2,_res); getche(); break; case 3 : clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); _mul=_num1*_num2; printf("%d x %d = %d",_num1,_num2,_mul); getche(); break; case 4 : float r; clrscr(); printf("Valor 1:");scanf("%d",&_num1); printf("Valor 2:");scanf("%d",&_num2); if(_num2==0){ printf("ERROR: %d / %d = No existe.",_num1,_num2); }else{ _div=(float)_num1/_num2; printf("%d / %d = %.2f",_num1,_num2,_div); } getche(); break; }//END switch }//END while }//END

6666)))While Lenguaje: c Cdigo fuente:


//****************************> //-Victor De la Rocha //-Algoritmia@groups.msn.com //-www.myalgorithm.com //-Programa 1, Practica 4 //-Programa que lee caracteres // -Si se oprime: // -ESC - chr(27) - salir

// -TAB - chr(9) - agrega 7 espacios // -ENTER - chr(13) - agrega 25 retornos de carro // -BARRA ESPACIADORA - chr(32) - 3 pitidos //****************************> #include <stdio.h> #include <conio.h> #include <math.h> #include <dos.h> void main(){ //definiendo variables int _caracter,_c; //lectura de los caracteres clrscr();//limpia pantalla do{// se repite hasta que sea ESC (Salir) _caracter=getch();//Se obtiene el caracter if(_caracter==9){//Si es el tabulador for(_c=1;_c<=7;_c++){ printf(" "); delay(25); }//Ciclo 7 veces }//END si es el tabulador if(_caracter==13){//Si es ENTER for(_c=1;_c<=25;_c++){ printf("\n",_caracter); delay(25); }//Ciclo 25 veces }//END si es ENTER if(_caracter==32){//barra espaciadora for(_c=1;_c<=3;_c++){ sound(1000); delay(80); nosound(); }//Tres pitidos }//END barra espaciadora printf("%c",_caracter);//Si se quita esta linea //se puede hacer que el programa //solo haga caso de las teclas //con tareas especiales asignadas }while(_caracter!=27);//END scanf caracter por caracter }/

7777)))While Lenguaje: c Cdigo fuente:


//****************************> //-Victor De la Rocha //-Algoritmia@groups.msn.com //-www.myalgorithm.com //-Programa 4, Practica 4 //-Programa que muestra un menu con dos opciones // 1.- Numeros pares // 2.- Numero nones // Se elije un numero limite, y comienza la // enumeracion desde cero //****************************> #include <stdio.h> #include <conio.h> #include <dos.h> void main(){ //definicion de variables

int _lim,_cont; char _opc; do{//Se repite el menu hasta que sea opcion salir clrscr();//Limpiamos la pantalla printf(" 1.- Pares\n"); printf(" 2.- Nones\n"); printf(" 3.- Salir\n"); printf("Opcion: ");_opc=getch(); delay(20); //evaluamos la opcion elegida switch(_opc){ case '1'://pares _cont=0;//inicializo el contador en cero clrscr(); printf("PARES\n"); printf("limite para la numeraracion: "); scanf("%d",&_lim); while(_cont<_lim-1){//conteo _cont=_cont+2; printf("%d, ",_cont); }//END conteo getch(); break; case '2'://nones _cont=1;//inicializo el contador en cero clrscr(); printf("NONES\n"); printf("limite para la numeraracion: "); scanf("%d",&_lim); while(_cont<_lim-1){//conteo _cont=_cont+2; printf("%d, ",_cont); }//END conteo getch(); break; }//END switch }while(_opc!='3' );//END se repite el menu hasta... }//

888)) While
Lenguaje: c Cdigo fuente:
//****************************> //-Victor De la Rocha //-Algoritmia@groups.msn.com //-www.myalgorithm.com //-Programa 14, Practica 5 //-Tema principal: ciclos o bucles WHILE //-Programa que despliega la numeracion del 1 al 1000 y del 1000 // al 1 en un solo ciclo while //****************************> #include <stdio.h> #include <conio.h> #include <dos.h> void main(){ int cont;//definicion de la variable contador int desicion;//definicion de la desicion while(1){//mientras que sea verdedaero oesa true if(desicion==1){//igual.. mientras sea true if(cont==1){//igual que la linea anterior

break;//salir del ciclo while true }//END if --cont;//pre-decrementar variable delay(5);//retardar la ejecucion printf("%d, ",cont);//imprimir en pantalla el resultado }else{ if(cont<1000){//mientras q no llegue a 1000 cont++;//ir incrementanto en uno delay(5);//retardando la ejecucion en tiempo printf("%d, ",cont);//salida de datos a la pantalla }//END if if(cont==1000){//verificar que ya sea 1000 desicion=1;//volver true desicion }//END if }//END if }//END while getch();//esperar a q presione una tecla }//

9999))) varios
Lenguaje: c Cdigo fuente:
#include <stdio.h> #include <stdlib.h> /* declaracion */ struct tpila { int clave; struct tpila *sig; }; /* prototipos e implementacion */ void crear(struct tpila **pila); int vacia(struct tpila *pila); void apilar(struct tpila *pila, int elem); void desapilar(struct tpila *pila, int *elem); void crear(struct tpila **pila) { *pila = (struct tpila *) malloc(sizeof(struct tpila)); (*pila)->sig = NULL; } int vacia(struct tpila *pila) { return (pila->sig == NULL); } void apilar(struct tpila *pila, int elem) { struct tpila *nuevo; nuevo = (struct tpila *) malloc(sizeof(struct tpila)); nuevo->clave = elem; nuevo->sig = pila->sig; pila->sig = nuevo; } void desapilar(struct tpila *pila, int *elem) { struct tpila *aux;

aux = pila->sig; *elem = aux->clave; pila->sig = aux->sig; free(aux); } /* programa de prueba */ int main(void) { struct tpila *pila; int elem; crear(&pila); if (vacia(pila)) printf("\nPila vacia!"); apilar(pila, 1); desapilar(pila, &elem); return 0; }

101010)))
Control de programas en C Lenguaje: c Cdigo fuente:
#include <stdio.h> /* la funcin main comienza la ejecucin del programa */ int main() { int calificacion; /* una calificacin */ int cuentaA = 0; /* nmero de As */ int cuentaB = 0; /* nmero de Bs */ int cuentaC = 0; /* nmero de Cs */ int cuentaD = 0; /* nmero de Ds */ int cuentaF = 0; /* nmero de Es */ printf( "Introduzca la letra de la calificacion.\n" ); printf( "Introduzca el caracter EOF para finalizar la entrada de datos.\n" ); /* repite hasta que el usuario digita la secuencia de teclas de fin-de-archivo */ while ( ( calificacion = getchar() ) != EOF ) { /* determina cual calificacin se introdujo */ switch ( calificacion ) { /* switch anidado dentro del while */ case 'A': /* la calificacin es A */ case 'a': /* o a */ ++cuentaA; /* incrementa cuentaA */ break; /* necesario para salir de switch */ case 'B': /* la calificacin es B */ case 'b': /* o b */ ++cuentaB; /* incrementa cuentaB */ break; /* sale de switch */ case 'C': /* la calificacin es C */ case 'c': /* o c */ ++cuentaC; /* incrementa cuentaC */ break; /* sale de switch */ case 'D': /* la calificacin es D */

case 'd': /* o d */ ++cuentaD; /* incrementa cuentaD */ break; /* sale de switch */ case 'F': /* la calificacin es F */ case 'f': /* o f */ ++cuentaF; /* incrementa cuentaF */ break; /* sale de switch */ case '\n': /* ignora nuevas lneas, */ case '\t': /* tabuladores, */ case ' ': /* y espacios en la entrada */ break; /* fin de switch */ default: /* atrapa todos los dems caracteres */ printf( "Introdujo una letra incorrecta." ); printf( " Introduzca una nueva calificacion.\n" ); break; /* opcional; de todas maneras saldr del switch */ } /* fin de switch */ } /* fin de while */ /* muestra el resumen de los resultados */ printf( "\nLos totales por calificacion son:\n" ); printf( "A: %d\n", cuentaA ); /* despliega el nmero de calificaciones A */ printf( "B: %d\n", cuentaB ); /* despliega el nmero de calificaciones B */ printf( "C: %d\n", cuentaC ); /* despliega el nmero de calificaciones C */ printf( "D: %d\n", cuentaD ); /* despliega el nmero de calificaciones D */ printf( "F: %d\n", cuentaF ); /* despliega el nmero de calificaciones F */ return 0; /* indica terminacin exitosa del programa */ }

1111))))))) Programas estructurados en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> /* la funcin main inicia la ejecucin del programa */ int main() { /* inicializa las variables en las definiciones */ int aprobados = 0; /* nmero de aprobados */ int reprobados = 0; /* nmero de reprobados*/ int estudiante = 1; /* contador de estudiantes */ int resultado; /* resultado de un examen */ /* procesa las calificaciones de 10 estudiantes mediante el uso de un ciclo controlado por un contador */ while ( estudiante <= 10 ) { /* indica al usuario la introduccin del valor del usuario */ printf( "Introduzca el resultado ( 1=aprobado,2=reprobado ): " ); scanf( "%d", &resultado ); /* si el resultado es igual a 1, incrementa aprobados */ if ( resultado == 1 ) { aprobados = aprobados + 1; } /* fin de if */ else { /* de lo contrario, incrementa reprobados */ reprobados = reprobados + 1; } /* fin de else */

estudiante = estudiante + 1; /* incrementa el contador de estudiante */ } /* fin de while */ /* fase de terminacin; despliega el nmero de aprobados y reprobados */ printf( "Aprobados %d\n", aprobados ); printf( "Reprobados %d\n", reprobados ); /* si aprobaron ms de ocho estudiantes , imprime "objetivo alcanzado" */ if ( aprobados > 8 ) { printf( "Objetivo alcanzado\n" ); } /* fin de if */ return 0; /* indica que el programa termin con exito */ }

122222)) Programas estructurados en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> /* la funcin main inicia la ejecucin del programa */ int main() { int contador; /* nmero de calificaciones introducidas */ int calificacion; /* valor de la calificacin */ int total; /* suma de las calificaciones */ float promedio; /* nmero con punto decimal para el promedio */ /* fase de inicializacin */ total = 0; /* inicializa el total */ contador = 0; /* inicializa el contador del ciclo */ /* fase de proceso */ /* obtiene la primera calificacin del usuario */ printf( "Introduzca la calificacion, -1 para terminar: " ); /* indicador para la entrada */ scanf( "%d", &calificacion ); /* lee la calificacin del usuario */ /* realiza el ciclo mientras no se introduzca el valor centinela */ while ( calificacion != -1 ) { total = total + calificacion; /* suma calificacin a total */ contador = contador + 1; /* incrementa el contador */ /* obtiene la siguiente calificacin del usuario */ printf( "Introduzca la calificacion, -1 para terminar: " ); /* indicador para la entrada */ scanf("%d", &calificacion); /* lee la siguiente calificacin */ } /* fin de while */ /* fase de terminacin */ /* si el usuario introduce al menos una calificacin */ if ( contador != 0 ) { /* calcula el promedio de todas las calificaciones introducidas */ promedio = ( float ) total / contador; /* evita la truncacin */ /* despliega el promedio con dos dgitos de precisin */ printf( " El promedio de la clase es: %.2f\n", promedio ); } /* fin de if*/ else { /* si no se introduce calificacin alguna , despliega el mensaje */ printf( "No se introdujeron calificaciones\n" ); } /* fin de else */

return 0; /* indica que el programa termin con exito */ }/

133333))) Programas estructurados en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> /* la funcin main inicia la ejecucin del programa */ int main() { int contador; /* nmero de la calificacin siguiente */ int calificacion; /* valor de la calificacin */ int total; /* suma de las calificaciones introducidas por el usuario */ int promedio; /* promedio de las calificaciones */ /* fase de inicializacin */ total = 0; /* inicializa total */ contador = 1; /* inicializa el contador del ciclo */ /* fase de proceso */ while ( contador <= 10 ) { /* repite 10 veces el ciclo */ printf( "Introduzca la calificacion: " ); /* indicador para la entrada */ scanf( "%d", &calificacion ); /* lee la calificacin del usuario */ total = total + calificacion; /* suma la calificacin al total */ contador = contador + 1; /* incrementa el contador */ } /* fin de while */ /* fase de terminacin */ promedio = total / 10; /* divisin entera */ printf( "El promedio de la clase es %d\n", promedio ); /* despliega el resultado */ return 0; /* indica que el programa termin con exito */ }

141444))) Introduccion a la programacion en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> /* la funcin main inicia la ejecucin del programa */ main() { int num1; /* primer nmero que lee el usuario */ int num2; /* segundo nmero que lee el usuario */ printf( "Introduza dos enteros, y le dire\n" ); printf( "las relaciones que satisfacen: " ); scanf( "%d%d", &num1, &num2 ); /* lectura de los enteros */ if ( num1 == num2 ) {

printf( "%d es igual que %d\n", num1, num2 ); } /* fin de if */ if ( num1 != num2 ) { printf( "%d no es igual que %d\n", num1, num2 ); } /* fin de if */ if ( num1 < num2 ) { printf( "%d es menor que %d\n", num1, num2 ); } /* fin de if */ if ( num1 > num2 ) { printf( "%d es mayor que %d\n", num1, num2 ); } /* fin de if */ if ( num1 <= num2 ) { printf( "%d es menor o igual que %d\n", num1, num2 ); } /* end if */ if ( num1 >= num2 ) { printf( "%d es mayor o igual que %d\n", num1, num2 ); } /* fin de if */ return 0; /* indica que el programa termin con xito */ }

15555))) Arreglos en C
Lenguaje: c Cdigo fuente:
#include <stdio.h> #define TAMANIO 5 /* prototipos de las funciones */ void modificaArreglo( int b[], int tamanio ); void modificaElemento( int e ); /* la funcin main comienza la ejecucin del programa */ int main() { int a[ TAMANIO ] = { 0, 1, 2, 3, 4 }; /* inicializa a */ int i; /* contador */ printf( "Efectos de pasar arreglos completos por referencia:\n\nThe " "los valores del arreglo original son:\n" ); /* muestra el arreglo original */ for ( i = 0; i < TAMANIO; i++ ) { printf( "%3d", a[ i ] ); } /* fin de for */ printf( "\n" ); /* pasa el arreglo a modificaArreglo por referencia */ modificaArreglo( a, TAMANIO ); printf( "Los valores del arreglo modificado son:\n" ); /* muestra el arreglo modificado */ for ( i = 0; i < TAMANIO; i++ ) { printf( "%3d", a[ i ] ); } /* fin de for */

/* muestra el valor de a[ 3 ] */ printf( "\n\n\nEfectos de pasar un elemento del arreglo " "por valor:\n\nEl valor de a[3] es %d\n", a[ 3 ] ); modificaElemento( a[ 3 ] ); /* pasa el elemento a[ 3 ] del arreglo por valor */ /* muestra el valor a[ 3 ] */ printf( "El valor de a[ 3 ] es %d\n", a[ 3 ] ); return 0; /* indica terminacin exitosa */ } /* fin de main */ /* en la funcin modificaArreglo, "b" apunta al arreglo original "a" e memoria */ void modificaArreglo( int b[], int tamanio ) { int j; /* contador */ /* multiplica cada elemento del arreglo por 2 */ for ( j = 0; j < tamanio; j++ ) { b[ j ] *= 2; } /* fin de for */ } /* fin de la funcin modificaArreglo */ /* en la funcin modificaElemento, "e" es una copia local del elemento a[ 3 ] del arreglo se pas desde main */ void modificaElemento( int e ) { /* multiplica el parmetro por 2 */ printf( "El valor en modificaElemento es %d\n", e *= 2 ); }

1666)) Caracteres y cadenas en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> void inversa( const char * const ptrS ); /* prototipo */ int main() { char enunciado[ 80 ]; /* crea una arreglo de caracteres */ printf( "Introduzca una linea de texto:\n" ); /* utiliza gets para leer una lnea de texto */ gets( enunciado ); printf( "\nLa linea impresa al reves es:\n" ); inversa( enunciado ); return 0; /* indica terminacin exitosa */ } /* fin de main */ /* imprime recursivamente los caracteres de una cadena en orden inverso */ void inversa( const char * const ptrS ) { /* si es el final de la cadena */ if ( ptrS[ 0 ] == '\0' ) { /* caso base */ return;

} /* fin de if */ else { /* si no es el fin de la cadena */ inversa( &ptrS[ 1 ] ); /* paso recursivo */ putchar( ptrS[ 0 ] ); /* utiliza putchar para desplegar los caracteres */ } /* end else */ }

17777)) Estructuras, uniones, manipulaciones de bits y enumeraciones en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> void despliegaBits( unsigned valor ); /* prototipo */ int main() { unsigned numero1; /* define numero1 */ unsigned numero2; /* define numero2 */ unsigned mascara; /* define mascara */ unsigned estableceBits; /* define estableceBits */ /* demuestra el operador de bits Y (&) */ numero1 = 65535; mascara = 1; printf( "El resultado de combinar los siguientes valores\n" ); despliegaBits( numero1 ); despliegaBits( mascara ); printf( "con el uso del operador de bits Y & es\n" ); despliegaBits( numero1 & mascara ); /* demuestra el operador de bits O (|) incluyente */ numero1 = 15; estableceBits = 241; printf( "\nEl resultado de combinar los siguientes valores\n" ); despliegaBits( numero1 ); despliegaBits( estableceBits ); printf( "con el uso del operador de bits O inclusivo | es\n" ); despliegaBits( numero1 | estableceBits ); /* demuestra el operador de bits O (|) excluyente */ numero1 = 139; numero2 = 199; printf( "\nEl resultado de combinar los siguientes valores\n" ); despliegaBits( numero1 ); despliegaBits( numero2 ); printf( "con el uso del operador de bits O excluyente ^ es\n" ); despliegaBits( numero1 ^ numero2 ); /* demuestra el operador de bits complemento (~) */ numero1 = 21845; printf( "\nEl complemento a uno de\n" ); despliegaBits( numero1 ); printf( "es\n" ); despliegaBits( ~numero1 ); return 0; /* indica terminacin exitosa */ } /* fin de main */ /* despliega los bits de un valor entero sin signo */ void despliegaBits( unsigned valor ) {

unsigned c; /* contador */ /* declara despliegaMarcara y desplaza 31 bits a la izquierda */ unsigned despliegaMascara = 1 << 31; printf( "%10u = ", valor ); /* ciclo a travs de los bits */ for ( c = 1; c <= 32; c++ ) { putchar( valor & despliegaMascara ? '1' : '0' ); valor <<= 1; /* desplaza el valor de valor 1 bit a la izquierda */ if ( c % 8 == 0 ) { /* muestra un espacio despus de 8 bits */ putchar( ' ' ); } /* fin de if */ } /* fin de for */ putchar( '\n' ); }/

1888)) Estructuras, uniones, manipulaciones de bits y enumeraciones en C


Lenguaje: c Cdigo fuente:
#include <stdio.h> /* definicin de la estructura cartaBit con campos de bits */ struct cartaBit { unsigned cara : 4; /* 4 bits; 0-15 */ unsigned palo : 2; /* 2 bits; 0-3 */ unsigned color : 1; /* 1 bit; 0-1 */ }; /* fin de la estructura cartaBit */ typedef struct cartaBit Carta; /* nuevo nombre de tipo para la estructura cartaBit */ void llenaMazo( Carta * const wMazo ); /* prototipo */ void repartir( const Carta * const wMazo ); /* prototipo */ int main() { Carta mazo[ 52 ]; /* crea el arreglo de Cartas */ llenaMazo( mazo ); repartir( mazo ); return 0; /* indica terminacin exitosa */ } /* fin de main */ /* inicializa Carta */ void llenaMazo( Carta * const wMazo ) { int i; /* contador */ /* ciclo a travs de wMazo */ for ( i = 0; i <= 51; i++ ) { wMazo[ i ].cara = i % 13; wMazo[ i ].palo = i / 13; wMazo[ i ].color = i / 26; } /* fin de for */ } /* fin de la funcin llenaMazo */

/* muestra las barajas con formatoc de dos columnas; el subndice de las barajas de 0 a 25 es k1 (columna 1); el sundice de las barajas de 26 a 51 es k2 (columna 2) */ void repartir( const Carta * const wMazo ) { int k1; /* subndice 0-25 */ int k2; /* subndice 26-51 */ /* ciclo a travs de wMazo */ for ( k1 = 0, k2 = k1 + 26; k1 <= 25; k1++, k2++ ) { printf( "Carta:%3d Palo:%2d Color:%2d ", wMazo[ k1 ].cara, wMazo[ k1 ].palo, wMazo[ k1 ].color ); printf( "Carta:%3d Palo:%2d Color:%2d\n", wMazo[ k2 ].cara, wMazo[ k2 ].palo, wMazo[ k2 ].color ); } /* fin de for */ }

19))))) Lenguaje: c
Cdigo fuente:
#include <stdio.h> void despliegaBits( unsigned valor ); /* prototipo */ int main() { unsigned x; /* variable para almacenar la entrada del usuario */ printf( "Introduzca un entero sin signo: " ); scanf( "%u", &x ); despliegaBits( x ); return 0; /* indica terminacin exitosa */ } /* fin de main */ /* despliega los bits de un valor entero sin signo */ void despliegaBits( unsigned valor ) { unsigned c; /* contador */ /* define despliegaMascara y desplaza 31 bits hacia la izquierda */ unsigned despliegaMascara = 1 << 31; printf( "%10u = ", valor ); /* ciclo a travs de los bits */ for ( c = 1; c <= 32; c++ ) { putchar( valor & despliegaMascara ? '1' : '0' ); valor <<= 1; /* desplaza valor 1 hacia la izquierda */ if ( c % 8 == 0 ) { /* despliega espacio despus de 8 bits */ putchar( ' ' ); } /* fin de if */ } /* fin de for */ putchar( '\n' ); }

2000)) Lenguaje: c

Cdigo fuente:
#include <stdio.h> void despliegaBits( unsigned valor ); /* prototipo */ int main() { unsigned numero1 = 960; /* inicializa numero1 */ /* demuestra el operador de desplazamiento a la izquierda a nivel de bits */ printf( "\nEl resultado del desplazamiento a la izquierda de\n" ); despliegaBits( numero1 ); printf( "8 posiciones de bit con el uso del " ); printf( "operador de desplazamiento a la izquierda << es\n" ); despliegaBits( numero1 << 8 ); /* demuestra el operador de desplazamiento a la derecha a nivel de bits */ printf( "\nEl resultado del desplazamiento a la derecha de\n" ); despliegaBits( numero1 ); printf( "8 posiciones de bit con el uso del " ); printf( "operador de desplazamiento a la derecha >> es\n \n" ); despliegaBits( numero1 >> 8 ); return 0; /* indica terminacin exitosa */ } /* fin de main */ /* despliega los bits de un valor entero sin signo */ void despliegaBits( unsigned valor ) { unsigned c; /* contador */ /* declara despliegaMascara y desplaza a la izquierda 31 bits */ unsigned despliegaMascara = 1 << 31; printf( "%7u = ", valor ); /* ciclo a travs de los bits */ for ( c = 1; c <= 32; c++ ) { putchar( valor & despliegaMascara ? '1' : '0' ); valor <<= 1; /* despliega wel valor 1 posicin a la izquierda */ if ( c % 8 == 0 ) { /* muestra un espacio despus de 8 bits */ putchar( ' ' ); } /* fin de if */ } /* fin de for */ putchar( '\n' ); }

2121))) Lenguaje: c
Cdigo fuente:
#include <stdio.h> int multiplo( int num ); /* prototipo */ int main() { int y; /* y almacenar un entero introducido por el usuario */ printf( "Introduce un entero entre 1 y 32000: " ); scanf( "%d", &y );

/* si y es un mltiplo de X */ if ( multiplo( y ) ) { printf( "%d es un multiplo de X\n", y ); } /* fin de if */ else { printf( "%d no es un multiplo de X\n", y ); } /* fin de else */ return 0; /* indica terminacin exitosa */ } /* fin de main */ /* determina su suma es un mltiplo de X */ int multiplo( int num ) { int i; /* contador */ int mascara = 1; /* inicializa mascara */ int mult = 1; /* initialize mult */ for ( i = 1; i <= 10; i++, mascara <<= 1 ) { if ( ( num & mascara ) != 0 ) { mult = 0; break; } /* fin de if */ } /* fin de for */ return mult; }/

Lenguaje: c Cdigo fuente:


#include <stdio.h> #include <stdlib.h> #include <time.h> /* definicin de la estrcutura carta */ struct carta { const char *cara; /* define el apuntador cara */ const char *palo; /* define el apuntador palo */ }; /* fin de la estructura carta */ typedef struct carta Carta; /* nuevo tipo de nombre para la estructura carta */ /* prototipos */ void llenaCarta( Carta * const wMazo, const char * wCara[], const char * wPalo[] ); void barajar( Carta * const wMazo ); void repartir( const Carta * const wMazo ); int main() { Carta mazo[ 52 ]; /* define el arreglo Carta */ /* inicializa el arreglo de apuntadores */ const char *cara[] = { "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Joto", "Quina", "Rey"}; /* inicializa el arreglo de apuntadores */ const char *palo[] = { "Corazones", "Diamantes", "Treboles", "Espadas"}; srand( time( NULL ) ); /* randomizar */ llenaCarta( mazo, cara, palo ); /* carga el mazo con las cartas */ barajar( mazo ); /* coloque la Carta en orden aleatorio */ repartir( mazo ); /* reparte las 52 cartas */

return 0; /* indica terminacin exitosa */ } /* fin de main */ /* coloca cadenas dentro de las estructuras Carta */ void llenaCarta( Carta * const wCarta, const char * wCara[], const char * wPalo[] ) { int i; /* contador */ /* ciclo a travs de wCarta */ for ( i = 0; i <= 51; i++ ) { wCarta[ i ].cara = wCara[ i % 13 ]; wCarta[ i ].palo = wPalo[ i / 13 ]; } /* fin de for */ } /* fin de la funcin llenaCarta */ /* baraja el mazo */ void barajar( Carta * const wMazo ) { int i; /* contador */ int j; /* variable para almacenar el valor aleatorio entre 0 - 51 */ Carta temp; /* define la estructura temporal para intercambiar cartas */ /* ciclo a travs de wMazo para intercambiar aleatoriamente Carta */ for ( i = 0; i <= 51; i++ ) { j = rand() % 52; temp = wMazo[ i ]; wMazo[ i ] = wMazo[ j ]; wMazo[ j ] = temp; } /* fin de for */ } /* fin de la funcin barajar */ /* reparte las cartas */ void repartir( const Carta * const wMazo ) { int i; /* contador */ /* ciclo a travs de wMazo */ for ( i = 0; i <= 51; i++ ) { printf( "%5s of %-8s%c", wMazo[ i ].cara, wMazo[ i ].palo, ( i + 1 ) % 2 ? '\t' : '\n' ); } /* fin de for */ }

212121)))

You might also like