2017-10-19 14 views
0

J'ai lagersaldot où si l'utilisateur choisit 1 il ajoute un nombre et s'il choisit 2 il soustrait un nombre de lui. Mais s'il choisit 2, et le numéro est <0 comment puis-je conserver l'ancienne valeur? disons que lagersaldot est 10 et choisit de soustraire 15 qui est sous 0, il doit garder sa valeur 10.Comment conserver la valeur si la fonction est vraie?

void updateLagersaldo(struct varor reg[], int nrOfGoods){ 
     int i, varunummer, change; 
     printf("Enter Varunummer: ");// identify the item and change lagersaldo 
     scanf("%d", &varunummer); 
     i= ifVarunummerExist(varunummer, reg, nrOfGoods); 
     printf("\nVarunummer \t Namn \t\t\t Lagersaldo\n"); 
     printf(" %d \t\t %s \t\t\t %d\n",reg[i].varunummer,reg[i].namn,reg[i].lagersaldo); 
     if(i >= 0){ 
      char choice; 
      printf("\n (1) Sum lagersaldot \n (2) Subtract lagersaldot"); 
      scanf(" %c%*c", &choice); 
      if(choice=='1'){ 
       printf("Sum lagersaldot with: "); 
       scanf("%d", &change); 
       reg[i].lagersaldo+=change; 
      } 

//HERE IF CHOICE IS 2 IF LAGERSALDO<0 
      if(choice=='2'){ 
       printf("Subtract lagersaldot with: "); 
       scanf("%d", &change); 
       reg[i].lagersaldo-=change; 
       if(reg[i].lagersaldo<0){ 
        printf("Error! Can't be under 0 !!"); 
        return; 
       } 
      } 

     }else printf("Varunummer not exist!\n"); 
    } 
+0

Avez-vous essayé de vérifier la résultat de la soustraction avant de lui attribuer la variable? – Kevin

+0

@Kevin voulez-vous dire si j'ai vérifié si elle conserve sa valeur après? Je ne l'ai pas fait –

+3

Non, je veux dire 'si (reg [i] .lagersaldo-changer <0) {erreur} autre {faire la soustraction}' – Kevin

Répondre

2

Vous pouvez faire la vérification avant de faire la soustraction:

if (reg[i].lagersaldo - change < 0) { 
    printf("Error! Can't be under 0 !!"); 
    return; 
} 
reg[i].lagersaldo -= change;