El resumen es ingresar 10 salarios, calcular la comisión y llevar a casa en general, e imprimir el valor neto más alto. Puedo obtener el número más alto, pero por el número ingresado, y no por el resultado final (que calculo yo). Me pregunto cómo hago esto, ya que no estoy almacenando los valores netos que estoy calculando. ¿Es este mi problema? Consulte el código a continuación.
#include <stdio.h> int main() { int num[10]; int i = 0; int largest; int com, totaltakehome, finalsalary; while(i < 10) { printf("Enter salesperson salary for week[%d]:", i + 1); scanf("%d", &num[i]); com = num[i] / 100 * 7; printf("Commision is %d\n", com); totaltakehome = 300 + com; printf("Total takehome is %d\n", totaltakehome); printf("\n"); } largest = num[0]; i = 0; while(i < 10) { if(num[i] > largest) { largest = num[i]; } i++; } printf("\nHighest salary is : %d\n", largest); return 0; }
Dado que ninguno de los salarios ingresados anteriormente son necesarios para calcular ...
... puede omitir la matriz num[10]
.
i
en el ciclo. i+1
es una expresión que no cambia el valor de i
. Sugiero usar un ciclo for
para esto que mantiene la declaración de i
, la condición ( i < 10
) y el incremento en un solo lugar.scanf
. Si busca una cosa, debería devolver 1
, de lo contrario, falla.totaltakehome
. Actualmente le asigna un nuevo valor en cada ciclo.Ejemplo:
#include <stdio.h> int main() { int largest = 0; // initialized (and assuming this can't be negative) int totaltakehome = 0; // initialized for(int i = 0; i < 10; ++i) { // loop with increment printf("Enter salesperson salary for week[%d]:", i + 1); int num; if(scanf("%d", &num) != 1) { // check for success fprintf(stderr, "user error, aborting\n"); return 1; } // an alternative commission forumla int com = num * 7 / 100; // perhaps a more fair commission printf("Commision is %d\n", com); // save this commission if it's the largest so far: if(com > largest) largest = com; // Add to `totaltakehome` - don't assign: totaltakehome += 300 + com; // note: `+=`, not `=` printf("\n"); } // print results after the loop: printf("Largest commision %d\n", largest); printf("Total takehome is %d\n", totaltakehome); }
Podemos usar un bucle for básico para la respuesta.
int old = arr[0]; for (i = 0; i < 10; i++) { if (arr[i] > old) old = arr[i]; } return old;
Primero creamos un bucle que se ejecuta diez veces o también podemos usar
sizeof(arr)/sizeof(arr[0])
Para un tamaño de lista desconocido. Perdóname porque estoy en el móvil.
Luego, verificamos si el siguiente número es más grande que nuestro antiguo número más grande conocido, si es así, lo configuramos para que sea el más grande. Si es así, lo configuraremos para que sea el más grande. Entonces finalmente devolvemos nuestro valor. (Esta es una función por cierto)