En el anterior post realizamos algunos ejercicios de programación en C. En ésta ocasión continuaremos con los ejercicios.
Ejemplo 1. Obtener el número binario de un número decimal mayor a cero.
binario.c
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #define MAX 100 int main(int argc, char *argv[]){ char binario[MAX]; int decimal; int residuo; char c; do{ puts("Introduce numero decimal:"); scanf("%d",&decimal); }while(decimal <= 0); printf("Decimal: %d\n",decimal); while(decimal >= 2){ residuo = decimal % 2; decimal = (int) decimal/2; c = (char)residuo+'0'; strcat(binario, &c); } c = (char)decimal+'0'; strcat(binario, &c); char binarioFinal[MAX]; int i, j,k; for(i=0; binario[i] != '\0'; i++ ); j=i-1; for(k=0; k<=i; k++){ binarioFinal[k]=binario[j]; j--; } printf("Binario final:%s\n",binarioFinal); return 0; }
En éste ejemplo podemos ver la descomposición de un número decimal a su forma binaria (0,1). Obtenemos el residuo de la división (%) y lo vamos almacenando en una cadena string, incluimos el último dígito decimal, para al final mostrar la cadena final (en reversa). Ej. Si el número introducido es 3 deberá mostrar su equivalente en binario que sería: 11.
Compilamos y creamos el ejecutable.
$ gcc binario.c -o ejecutable.exe $ ./ejecutable.exe
Ejemplo 2. Crear un programa que tome dos números enteros mayores a cero que realice las seis operaciones básicas de la aritmética: suma, resta, multiplicación(producto) , división, potenciación y radicación.
matematicas.c
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<math.h> int suma(int,int); int resta(int,int); int producto(int,int); double division(int,int); double potencia(double, int); int radicacion(int); int suma(int a, int b){ return a+b; } int resta(int a, int b){ return a-b; } int producto(int a, int b){ return a*b; } double division(int a,int b){ return (double) a/b; } double potencia(double b, int p){ int i = 1; double pot = 1.0; while(i <= p){ pot = pot * b; i++; } return pot; } int radicacion(int a){ return sqrt((double) a); } int main(int argc, char *argv[]){ int a = 0, b = 0, mySuma = 0, myResta = 0, myProd = 0; double myDiv = 0.0, myPot = 0.0; do{ system("clear"); puts("Introduce dos numeros enteros mayor a cero:"); printf("a = %d y b = %d\n",a,b); scanf("%d %d",&a,&b); }while(a <= 0 || b <= 0); printf("Numeros introducidos: a=%d y b=%d\n",a,b); mySuma = suma(a,b); myResta = resta(a,b); myProd = producto(a,b); myDiv = division(a,b); myPot = potencia((double) a,b); printf("Suma = %d\n",mySuma); printf("Resta = %d\n",myResta); printf("Producto = %d\n",myProd); printf("Division = %.3lf\n",myDiv); printf("Potencia = %.0lf\n",myPot); printf("Raiz de a = %d es: %d\n",a, radicacion(a)); printf("Raiz de b = %d es: %d\n",b, radicacion(b)); return 0; }
Creamos seis cabeceras y sus implementaciones (funciones) para realizar las operaciones aritméticas básicas. Obligamos a introducir dos número enteros positivos. Si algún número es cero el bucle do-while continuará hasta que los dos números sean mayores a cero.
Para poder compilar y crear el ejecutable (esto si usas GCC):
$ cc matematicas.c -lm -o ejecutable.exe
Ejemplo 3. Crear un programa que tome tres parámetros, dos decimales y un operador (+, -, x, / , %) para realizar las operaciones de: suma, resta, producto, división y resto/residuo.
operador.c
#include<stdio.h> #include<ctype.h> #include<curses.h> #include<string.h> #include<stdlib.h> int operacion(int, int, char); int operacion(int a, int b, char opc){ int resultado = 0; if(opc == '+'){ puts("\tSuma"); resultado = a+b; } if(opc == '-'){ puts("\tResta"); resultado = a-b; } if(opc =='x'){ puts("\tProducto"); resultado = a*b; } if(opc == '/'){ puts("\tDivision"); if(b <= 0){ resultado = a; }else{ resultado = a/b; } } if(opc == '%'){ puts("\tResiduo"); resultado = a%b; } return resultado; } int main(int argc, char *argv[]){ if(argc >= 3){ int a = atoi(argv[1]); int b = atoi(argv[2]); char c = argv[3][0]; // tomar el primer caracter de la fila 3, columna 0 printf("Entrada \t a = %d b = %d , operador: %c\n",a,b,c); printf("Resultado: %d\n",operacion(a,b,c)); }else{ puts("\tDebes introducir tres argumentos: num1 num2 operador\n"); } return 0; }
Compilar y ejecutar:
$ gcc operador.c -o ejecutable.exe $ ./ejecutable.exe 2 3 + Suma Resultado: 5
Enlaces:
http://codemonkeyjunior.blogspot.com/2021/08/vale-la-pena-aprender-c-y-o-c.html