[ Foro de C++ ]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Declaración de funciones
void r1(char datos_camion[][5], int num_camiones, char matricula[]);
void r2(char datos_camion[][5], int num_camiones, char matricula[], float peso);
void r3(char datos_camion[][5], int num_camiones, char matricula[], float peso);
void r4(char datos_camion[][5], int num_camiones, float peso);
void r5(char datos_camion[][5], int num_camiones);
// Programa principal
int main() {
char datos_camion[][5][10] = {
{"GGG-9999", "200", "40", "200", "0910516566"},
{"QQQ-9877", "2000", "50", "1500", "0910292939"},
{"AAA-1111", "5000", "40", "300", "0969801093"}
};
char choferes[][2][15] = {
{"0910516566", "J. Perez"},
{"0910292939", "M. Anchundia"},
{"0969801093", "C. Amaya"}
};
int opcion = 0;
while (opcion != 8) {
printf("**** Menú de opciones ****\n");
printf("1. Visualizar información de camiones\n");
printf("2. Cargar un camión\n");
printf("3. Descargar un camión\n");
printf("4. Buscar mejor camión\n");
printf("5. Calcular información general\n");
printf("6. Agregar un camión\n");
printf("7. Dar de baja un camión\n");
printf("8. Salir\n");
printf("Ingrese una opción: ");
scanf("%d", &opcion);
switch (opcion) {
case 1: {
char matricula[10];
printf("Ingrese la matrÃcula del camión o enter para visualizar todos: ");
scanf("%s", matricula);
r1(datos_camion, 3, matricula);
break;
}
case 2: {
char matricula[10];
float peso;
printf("Ingrese la matrÃcula del camión: ");
scanf("%s", matricula);
printf("Ingrese el peso de la carga en Kg: ");
scanf("%f", &peso);
r2(datos_camion, 3, matricula, peso);
break;
}
case 3: {
char matricula[10];
float peso;
printf("Ingrese la matrÃcula del camión: ");
scanf("%s", matricula);
printf("Ingrese el peso de la carga en Kg: ");
scanf("%f", &peso);
r3(datos_camion, 3, matricula, peso);
break;
}
case 4: {
float peso;
printf("Ingrese el peso de la carga en Kg: ");
scanf("%f", &peso);
r4(datos_camion, 3, peso);
break;
}
case 5:
r5(datos_camion, 3);
break;
case 6: {
if (3 <= 10) {
char matricula[10], cedula[15], chofer[15];
float capacidad, consumo, carga;
printf("Ingrese la Matricula: ");
scanf("%s", matricula);
printf("Ingrese la Capacidad: ");
scanf("%f", &capacidad);
printf("Ingrese el Consumo: ");
scanf("%f", &consumo);
printf("Ingrese la Carga: ");
scanf("%f", &carga);
printf("Ingrese la Cedula del chofer: ");
scanf("%s", cedula);
printf("Ingrese el nombre del chofer: ");
scanf("%s", chofer);
strcpy(datos_camion[3][0], matricula);
sprintf(datos_camion[3][1], "%.2f", capacidad);
sprintf(datos_camion[3][2], "%.2f", consumo);
sprintf(datos_camion[3][3], "%.2f", carga);
strcpy(datos_camion[3][4], cedula);
strcpy(choferes[3][0], cedula);
strcpy(choferes[3][1], chofer);
} else {
printf("La empresa ya llegó al máximo de camiones\n");
}
break;
}
case 7: {
char matricula[10];
printf("Ingrese la matricula del camión: ");
scanf("%s", matricula);
for (int i = 0; i < 3; i++) {
if (strcmp(datos_camion[i][0], matricula) == 0) {
for (int j = i; j < 3; j++) {
strcpy(datos_camion[j][0], datos_camion[j + 1][0]);
strcpy(datos_camion[j][1], datos_camion[j + 1][1]);
strcpy(datos_camion[j][2], datos_camion[j + 1][2]);
strcpy(datos_camion[j][3], datos_camion[j + 1][3]);
strcpy(datos_camion[j][4], datos_camion[j + 1][4]);
}
printf("El camión ha sido dado de baja\n");
break;
}
}
break;
}
case 8:
break;
default:
printf("Opción incorrecta\n");
}
printf("\n");
}
return 0;
}
void r1(char datos_camion[][5], int num_camiones, char matricula[]) {
printf("Matricula Capacidad Consumo Carga Chofer\n");
if (strcmp(matricula, "0") == 0 || strcmp(matricula, "") == 0) {
// Mostrar todos
for (int i = 0; i < num_camiones; i++) {
for (int j = 0; j < 3; j++) {
if (strcmp(choferes[j][0], datos_camion[i][4]) == 0) {
printf("%-9s %-9s %-7s %-5s %s\n",
datos_camion[i][0], datos_camion[i][1],
datos_camion[i][2], datos_camion[i][3],
choferes[j][1]);
break;
}
}
}
} else {
// Mostrar según la matrÃcula
int encontrado = 0;
for (int i = 0; i < num_camiones; i++) {
if (strcmp(datos_camion[i][0], matricula) == 0) {
encontrado = 1;
for (int j = 0; j < 3; j++) {
if (strcmp(choferes[j][0], datos_camion[i][4]) == 0) {
printf("%-9s %-9s %-7s %-5s %s\n",
datos_camion[i][0], datos_camion[i][1],
datos_camion[i][2], datos_camion[i][3],
choferes[j][1]);
break;
}
}
break;
}
}
if (!encontrado) {
printf("Matricula incorrecta\n");
}
}
}
void r2(char datos_camion[][5], int num_camiones, char matricula[], float peso) {
for (int i = 0; i < num_camiones; i++) {
if (strcmp(matricula, datos_camion[i][0]) == 0) {
float capacidad = atof(datos_camion[i][1]);
float carga = atof(datos_camion[i][3]);
float suma = peso + carga;
if (suma <= capacidad) {
sprintf(datos_camion[i][3], "%.2f", suma);
printf("Camión cargado correctamente\n");
} else {
printf("No se pudo cargar el camión\n");
}
break;
}
}
}
void r3(char datos_camion[][5], int num_camiones, char matricula[], float peso) {
for (int i = 0; i < num_camiones; i++) {
if (strcmp(matricula, datos_camion[i][0]) == 0) {
float carga = atof(datos_camion[i][3]);
if (carga >= peso) {
float resta = carga - peso;
sprintf(datos_camion[i][3], "%.2f", resta);
printf("Descarga correcta\n");
} else {
printf("El peso a descargar es mayor al de la carga actual\n");
}
break;
}
}
}
void r4(char datos_camion[][5], int num_camiones, float peso) {
// Ordenar de menor a mayor consumo de gasolina
for (int i = 0; i < num_camiones - 1; i++) {
for (int j = 0; j < num_camiones - i - 1; j++) {
float consumo_j = atof(datos_camion[j][2]);
float consumo_j1 = atof(datos_camion[j + 1][2]);
if (consumo_j > consumo_j1) {
char temp[10];
strcpy(temp, datos_camion[j][0]);
strcpy(datos_camion[j][0], datos_camion[j + 1][0]);
strcpy(datos_camion[j + 1][0], temp);
}
}
}
// Buscar el camión con capacidad suficiente
for (int i = 0; i < num_camiones; i++) {
float capacidad = atof(datos_camion[i][1]);
float carga = atof(datos_camion[i][3]);
if (capacidad >= peso + carga) {
printf("Matricula: %s\n", datos_camion[i][0]);
printf("Carga actual: %s\n", datos_camion[i][3]);
break;
}
}
}
void r5(char datos_camion[][5], int num_camiones) {
r1(datos_camion, num_camiones, "0");
float cargatotal = 0;
float capacidadtotal = 0;
for (int i = 0; i < num_camiones; i++) {
cargatotal += atof(datos_camion[i][3]);
capacidadtotal += atof(datos_camion[i][1]);
}
float cargapromedio = cargatotal / num_camiones;
printf("Carga total: %.2f\n", cargatotal);
printf("Carga promedio: %.2f\n", cargapromedio);
printf("Capacidad Total: %.2f\n", capacidadtotal);
}
Creo que no te compila porque al definir los valores de las matrices has usado un corchete demás. Revisalo que puede que haya mas problemas.