[Help] Programa que calcula sueldos

Iniciado por sora_ori, 11 Diciembre 2013, 14:00 PM

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

sora_ori

Hola,

Estoy haciendo un programa en C que al introducir unos sueldos me calcule el sueldo neto, pueda modificar el suelo y también poder subir el sueldo.

Es un menú de 4 opciones, solamente me falla la opción 3 que es la de modificar el sueldo. ¿Podrían echarle un ojo y decirme en que fallo?

Gracias


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

int main () {
   float sueldo[10], sueldoNeto[10], segSoc, irpf, sueldoNuevo, porcent;
   int opcion=1;
   int i=0;
   bool lleno = false;
   srand(time(NULL));
   
   while (opcion != 0){
         system("cls");
         printf("1.- Introducir sueldos\n");
         printf("2.- Calcular sueldo neto\n");
         printf("3.- Modificar sueldos\n");
         printf("4.- Subir sueldos\n");
         printf("0.- Salir\n");
         printf("\nEscoge una opcion: ");
         fflush(stdin);
         scanf("%d", &opcion);
         switch (opcion){
                case 1:
                     system("cls");
                     for (i=0; i<10; i++){
                         sueldo[i] = (rand()%4999)+499;
                     }
                     // Mostrar Salario Bruto
                     for (i=0; i<10; i++){
                         printf("%.2f euros\n", sueldo[i]);
                     }
                     printf("\n\n");
                     lleno = true;
                     system("pause");
                     break;
                case 2:
                     system("cls");
                     if (lleno) {
                                for (i=0; i<10; i++){
                                    segSoc = sueldo[i] * 0.06;
                                    if (sueldo[i] <= 700) irpf = sueldo[i] * 0.08;
                                    else
                                    if (sueldo[i] <= 1100) irpf = sueldo[i] * 0.11;
                                    else
                                    if (sueldo[i] <= 1500) irpf = sueldo[i] * 0.13;
                                    else
                                    if (sueldo[i] <= 2100) irpf = sueldo[i] * 0.17;
                                    else
                                    if (sueldo[i] <= 3000) irpf = sueldo[i] * 0.20;
                                    else irpf = sueldo[i] * 0.25;
                                   
                                sueldoNeto[i] = sueldo[i] - segSoc - irpf;
                                }
                                // Visualizar Sueldo Neto
                                for (i=0; i<10; i++){
                                    printf("\nSueldo neto del empleado %i: %.2f euros\n",i+1, sueldoNeto[i]);
                                }
                                printf("\n");
                                system("pause");
                     }
                     else printf("\nERROR! No se ha introducio ningun sueldo\n");
                     break;
                case 3:
                     system("cls");
                     if (lleno) {
                                do{
                                    printf("A que empleado le quieres modificar el sueldo? ");
                                    scanf("%i", &i);
                                }while((i<0) || (i>11));
                                do{
                                    printf("Introduce un nuevo sueldo entre %.2f y 5000: ", sueldo[i]);
                                    scanf("%.2f", &sueldoNuevo);
                                    }while ((sueldoNuevo < sueldo[i]) || (sueldoNuevo > 5000));
                                   
                           printf("\nEl nuevo sueldo es %.2f: ",sueldoNuevo);
                     }
                     else printf("\nERROR! No se ha introducio ningun sueldo\n");
                     break;
                case 4:
                     system("cls");
                     if (lleno){
                                printf("Escribe el portencaje para subir los sueldos: ");
                                scanf("%f", &porcent);
                               
                                for (i=0; i<10; i++){
                                    sueldoNuevo = sueldo[i] + ((sueldo[i] * porcent) / 100);
                                    sueldo[i] = sueldoNuevo;
                                }
                               
                                // Visualizar sueldos subidos
                                for (i=0; i<10; i++){
                                    printf("\nSe ha subido el sueldo a: %2.f", sueldo[i]);
                                }
                         printf("\n\n");
                         system("pause");
                     }
                     else printf("\nERROR! No se ha introducio ningun sueldo\n");
                     break;
                case 0:
                     printf("\nHas decidido salir, hasta luego!\n\n");
                     system("pause");
                     return 0;
                     break;
                default:
                        printf ("La opcion es incorrecta, Presiona ENTER");
                } // Fin switch
   } // Fin While

   printf("\n\n");
   system("pause");
   return 0;
}



Gracias

leosansan


Modifica el scanf quitando el .2:

Código (cpp) [Seleccionar]
scanf("%f", &sueldoNuevo);

Saluditos! ..... !!!!       

sora_ori