[ Foro de C++ ]

ayudenme a arreglar este codigo que me lo isieron mal y no copila esta en c

05-Aug-2023 00:39
Invitado (apolo)
1 Respuestas

#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);
}


15-Aug-2023 07:34
Invitado (Arturo )

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.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)