Comparacion de vectores

Iniciado por mbxxx103, 1 Septiembre 2021, 00:25 AM

0 Miembros y 1 Visitante están viendo este tema.

mbxxx103

Hola a todos necesito que el programa de c me resuelva las condiciones pero no estoy seguro si utilizar un for como lo podria hacer?

d) en qué año hubo más ventas
e) a cada empleado se le pagó un 30% de comisión sobre sus ventas totales
en cada año. ¿Cuántos vendedores ganaron de comisión más de $1500 en
cada año?

#include <stdio.h>
#include <stdlib.h>

main(){
    int minima=1000,maxima=0;
    int v19[20],v20[20];
    int i,a,ct=0,ctt=0,prom=0,prom2=0,promg=0, acum=0, acum2=0;
    //enceramos el vetor
    for(i=0;i<20;i++)
        v19[i]=0;
    for(a=0;a<20;a++)
        v20[a]=0;
    //leer las tempeturas y guardar
    printf("\n *** Ingrese las ventas por empleados del 2019 ***");
    for(i=0;i<20;i++){
        printf("\n Empleado N %d: ",i+1);
        scanf("%d",&v19[i]);
        acum=acum + v19[i];
    }
    system("cls");
    printf("\n *** Ingrese las ventas por empleados del 2020 ***");
    for(a=0;a<20;a++){
        printf("\n Empleado N %d: ",a+1);
        scanf("%d",&v20[a]);
        acum2=acum2 + v20[a];
    }

    //procesos
    for(i=0;i<20;i++){
        /*if(minima>edad[i])
            minima=edad[i];*/

        if(maxima<v19[i])
            maxima=v19[i];

        /*if(edad[i]>65)
            ct++;
        if(edad[i]>18 && edad[i]<64 )
            ctt++;*/

        prom = acum / v19[i];
    }

    for(a=0;a<20;a++){
        /*if(minima>edad[i])
            minima=edad[i];*/

        /*if(maxima<edad[i])
            maxima=edad[i]; */

        /*if(edad[i]>65)
            ct++;
        if(edad[i]>18 && edad[i]<64 )
            ctt++;*/

        prom2 = acum2 / v20[i];
    }

    promg = (prom+prom2)/2;

    //salidas
    system("cls");
    //printf("\n edad mas baja: %d ",minima);
    printf("\n edad mas alta: %d ",maxima);
    printf("\n\n Promedio de ventas 2019: %d",prom);
    printf("\n\n Promedio de ventas 2020: %d",prom2);
    printf("\n\n Promedio de ventas general: %d",promg);
    //printf("\n Cantidad de personas de la tercera edad es: %d",ct);
    //printf("\n Cantidad de personas mayores de edad es: %d",ctt);
    printf("\n\n");
    system("pause");

}




MOD: El código debe ir entre etiquetas de Código GeSHi
MOD: Código formateado


K-YreX

Antes de resolver tus dudas te diré algunos consejos para mejor el código:
  • main() es una función y como tal debe tener un tipo de retorno. La forma correcta de definir la función main() es:

    // Version simplificada (cuando se utilizan argumentos de ejecucion)
    int main() {
      //...
      return 0; // Si no se especifica, se incluye implicitamente
    }

    // Version completa (cuando se utilizan argumentos de ejecucion)
    int main(int argc, char *argv[]) {
      //...
      return 0; // Si no se especifica, se incluye implicitamente
    }


  • Utiliza constantes en vez de "números mágicos" (números literales que aparecen en el código sin explicación: 20). Así si de repente necesitas cambiar ese valor por otro, tan solo tendrás que cambiarlo en la definición y el resto del programa seguirá funcionando correctamente.

    const int NUM_EMPLEADOS = 20;

    int main() {
      int ventas[NUM_EMPLEADOS];
      for(int i = 0; i < NUM_EMPLEADOS; ++i) {
        //...
      }
    }


  • Utiliza funciones que hagan una tarea específica. Así tendrás el código más limpio, no repetirás código y podrás reutilizar una función tantas veces como necesites:

    int calcularSumaTotal(int array[], const int longitud) {
      int total = 0;
      for(int i = 0; i < longitud; ++i) total += array[i];
      return total;
    }

    int main() {
      int ventas2019[NUM_EMPLEADOS];
      int ventas2020[NUM_EMPLEADOS];
      //...

      int totalVentas2019 = calcularSumaTotal(ventas2019, NUM_EMPLEADOS);
      int totalVentas2020 = calcularSumaTotal(ventas2020, NUM_EMPLEADOS);
      //...

      int promedioVentas2019 = totalVentas2019 / NUM_EMPLEADOS;
      int promedioVentas2020 = totalVentas2020 / NUM_EMPLEADOS;




    Ahora sobre tus dudas específicamente:
  • La primera duda ya te la he resuelto en el apartado de crear tus propias funciones.
  • Para calcular la comisión de cada empleado en cada año basta con lo siguiente:

    const float PORCENTAJE_COMISION = 30;

    int main() {
      int ventas2019[NUM_EMPLEADOS];
      //...
      for(int i = 0; i < NUM_EMPLEADOS; ++i) {
        printf("La comision del empleado %d en el 2019 es de: $%.2f\n", (i+1), ventas2019[i] * PORCENTAJE_COMISION / 100.0f);
      }
    }


    Aparte de eso:
  • Las líneas 41 y 56 no tienen sentido. Repites un cálculo 20 veces para quedarte únicamente con el último resultado.
  • Además en la línea 56 estás utilizando el contador equivocado.

    PD: No utilices <system("pause")>. Utiliza mejor <getchar()>. Hace la misma función y requiere de menos recursos del sistema.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;