Visualización de caracteres y formato de salida
El uso básico de printf permite generar representaciones visuales simples en la consola. A continuación, se muestra cómo organizar caracteres para formar figuras básicas tanto en disposición vertical como horizontal.
#include <stdio.h>
int main() {
// Representación vertical
printf(" @ \n");
printf(" /|\\ \n");
printf(" | \n");
printf(" @ \n");
printf(" /|\\ \n");
printf(" | \n");
return 0;
}
Para mostrar elementos en una misma línea (disposición horizontal), ajustamos el flujo de la cadena de texto:
#include <stdio.h>
int main() {
printf(" @ @ \n");
printf(" /|\\ /|\\ \n");
printf(" | | \n");
return 0;
}
Validación de propiedades geométricas
Para determinar si tres longitudes pueden formar un triángulo, se debe cumplir la desigualdad triangular: la suma de dos de sus lados siempre debe ser mayor que el tercero.
#include <stdio.h>
int main() {
float lado1, lado2, lado3;
printf("Ingrese las dimensiones de los tres lados: ");
scanf("%f %f %f", &lado1, &lado2, &lado3);
if ((lado1 + lado2 > lado3) && (lado1 + lado3 > lado2) && (lado2 + lado3 > lado1)) {
printf("Las dimensiones ingresadas forman un triángulo válido.\n");
} else {
printf("Las dimensiones no cumplen con la desigualdad triangular.\n");
}
return 0;
}
Manejo de entrada de caracteres y lógica condicional
El procesamiento de respuestas del usuario mediante getchar() requiere considerar el búfer de entrada, especialmente al capturar múltiples caracteres de forma consecutiva.
#include <stdio.h>
int main() {
char confirmacion1, confirmacion2;
printf("¿Completó las lecturas teóricas? (s/n): ");
confirmacion1 = getchar();
getchar(); // Limpia el carácter de nueva línea del búfer
printf("¿Realizó los ejercicios prácticos? (s/n): ");
confirmacion2 = getchar();
if ((confirmacion1 == 's' || confirmacion1 == 'S') && (confirmacion2 == 's' || confirmacion2 == 'S')) {
printf("Excelente progreso. ¡Continúa así!\n");
} else {
printf("Se recomienda completar todas las actividades pendientes.\n");
}
return 0;
}
Uso de especificadores de formato en scanf
Es crucial que los tipos de datos coincidan con sus respectivos especificadores (%d para enteros, %f para flotantes, %c para caracteres) para evitar errores de memoria o resultados inesperados.
#include <stdio.h>
int main() {
double coordX, coordY;
char letra1, letra2, letra3;
int n1, n2, n3;
scanf("%d %d %d", &n1, &n2, &n3);
printf("Enteros: %d, %d, %d\n", n1, n2, n3);
while(getchar() != '\n'); // Limpieza de búfer
scanf("%c%c%c", &letra1, &letra2, &letra3);
printf("Caracteres: %c, %c, %c\n", letra1, letra2, letra3);
scanf("%lf, %lf", &coordX, &coordY);
printf("Coordenadas: x = %.2f, y = %.2f\n", coordX, coordY);
return 0;
}
Cálculos temporales y precisión numérica
Este ejemplo calcula la equivalencia en años de una cantidad masiva de segundos, demostrando el uso de constantes y conversión de tipos.
#include <stdio.h>
int main() {
long int total_segundos = 1e9;
double segundos_por_dia = 24.0 * 3600;
double segundos_por_anio = 365.0 * segundos_por_dia;
int anios_estimados = (int)(total_segundos / segundos_por_anio + 0.5);
printf("1,000 millones de segundos equivalen aproximadamente a %d años.\n", anios_estimados);
return 0;
}
Funciones matemáticas y exponenciación
Utilizando la biblioteca math.h, podemos realizar operaciones complejas como el cálculo de potencias en un ciclo de ejecución continua.
#include <stdio.h>
#include <math.h>
int main() {
double base_val, resultado;
while (scanf("%lf", &base_val) != EOF) {
resultado = pow(base_val, 365);
printf("El valor %.2f elevado a 365 es: %.4f\n", base_val, resultado);
}
return 0;
}
Conversión de unidades de temperatura
Implemenatción de la fórmula de conversión de Celsius a Fahrenheit mediante el uso de operadores aritméticos básicos.
#include <stdio.h>
int main() {
double celsius, fahr;
while (scanf("%lf", &celsius) != EOF) {
fahr = (celsius * 9.0 / 5.0) + 32;
printf("%.2f°C corresponden a %.2f°F\n", celsius, fahr);
}
return 0;
}
Cálculo de área mediante la fórmula de Herón
Cálculo avanzado de geometría donde se procesa el semiperímetro para hallar el área de un triángulo conociendo sus tres lados.
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, semi, area_final;
while (scanf("%lf %lf %lf", &a, &b, &c) != EOF) {
semi = (a + b + c) / 2.0;
area_final = sqrt(semi * (semi - a) * (semi - b) * (semi - c));
printf("Lados: a=%.2f, b=%.2f, c=%.2f -> Área: %.3f\n", a, b, c, area_final);
}
return 0;
}