Programación en C para la Gestión y Clasificación de Sustancias Químicas
Clasificado en Informática
Escrito el en
español con un tamaño de 4,13 KB
Sistema de Gestión de Sustancias Químicas en Lenguaje C
Este documento presenta una implementación técnica para el manejo de sustancias químicas utilizando el lenguaje de programación C. El código abarca desde la generación de datos aleatorios hasta la persistencia en archivos externos.
a) Generación de la Tabla de Sustancias
La función crear_tabla se encarga de inicializar los arreglos bidimensionales y unidimensionales. Utiliza la función rand() para asignar valores de clasificación y valor de forma automática, permitiendo la entrada del nombre de la sustancia por teclado.
void crear_tabla(int n, char S[50][12], float C[50], int V[50], char Tip[50][12]) {
int i;
for (i = 1; i <= n; i++) {
printf("\n\t Ingrese nombre de la Sustancia = ");
scanf("%s", S[i]);
C[i] = (rand() % 1401 + 599) / 10.0;
V[i] = rand() % 851 + 150;
if (V[i] > 500) strcpy(Tip[i], "A");
else if (V[i] > 250) strcpy(Tip[i], "B");
else strcpy(Tip[i], "C");
}
}b) Visualización de Datos en Pantalla
Para mostrar la información procesada, se utiliza la función ver_tabla, la cual formatea la salida mediante especificadores de formato en printf para garantizar una visualización tabular clara.
void ver_tabla(int n, char S[50][12], float C[50], int V[50], char Tip[50][12]) {
int i;
printf("\n\t %5s %12s %12s %12s %12s ", "Nro", "Sustancias", "Clasif", "Valor", "Tipo");
for (i = 1; i <= n; i++) {
printf("\n\t %5d %12s %12.1f %12d %12s ", i, S[i], C[i], V[i], Tip[i]);
}
}c) Creación de Archivos Externos (AE)
La persistencia de datos se logra mediante la función crear_AE, que filtra las sustancias de tipo A y B para almacenarlas en un archivo de texto llamado Sustancias.txt, utilizando punteros a archivos.
void crear_AE(int n, char S[50][12], float C[50], int V[50], char Tip[50][12]) {
int i;
FILE *tabla;
tabla = fopen("Sustancias.txt", "w");
fprintf(tabla, "\n\t %5s %12s %12s %12s %12s ", "Nro", "Sustancias", "Clasif", "Valor", "Tipo");
for (i = 1; i <= n; i++) {
if (V[i] > 250) {
fprintf(tabla, "\n\t %5d %12s %12.1f %12d %12s ", i, S[i], C[i], V[i], Tip[i]);
}
}
fclose(tabla);
}d) Búsqueda de Registros en el Archivo
La función Buscar_AE permite realizar consultas sobre el archivo generado. Implementa una lectura secuencial y utiliza strcmp para comparar el nombre ingresado con los registros existentes.
void Buscar_AE() {
char NN[12], xx[12], Sustancia[12], Tipo[12];
int i, Valor;
float Clasif;
FILE *tabla;
printf("\n\t Ingrese nombre de la sustancia a buscar = ");
scanf("%s", NN);
tabla = fopen("Sustancias.txt", "a+");
printf("\n\t ");
for (i = 1; i <= 5; i++) {
fscanf(tabla, "%s", xx);
printf(" %12s", xx);
}
while (fscanf(tabla, "%d %s %f %d %s", &i, Sustancia, &Clasif, &Valor, Tipo) != EOF) {
if (strcmp(NN, Sustancia) == 0) {
printf("\n\t %12d %12s %12.1f %12d %12s", i, Sustancia, Clasif, Valor, Tipo);
}
}
fclose(tabla);
}Función Principal (Main)
El punto de entrada del programa gestiona el flujo de ejecución y valida que el número de sustancias ingresadas esté dentro del rango permitido (1 a 29) mediante un bucle do-while.
int main() {
int n;
char Sust[50][12], Tip[50][12];
int Valor[50];
float Clasif[50];
do {
printf("\n\t Ingrese n = ");
scanf("%d", &n);
} while ((1 > n) || (n > 29));
crear_tabla(n, Sust, Clasif, Valor, Tip);
ver_tabla(n, Sust, Clasif, Valor, Tip);
crear_AE(n, Sust, Clasif, Valor, Tip);
Buscar_AE();
return 0;
}