Hola, esto te pasa porque has puesto dos if en la función agregarSaldo(float) que no son excluyentes. Es decir, cuando entras en esa función se evalúan los dos if.
La primera vez, cuando no hay saldo, esto es lo que sucede:
Código C++:
Ver originalif(saldoTotal == 0)
saldoTotal = saldo;
Como saldoTotal es 0, se añade
saldo al total....pero se evalúa el siguiente if:
Código C++:
Ver originalif(saldoTotal > 0)
saldoTotal = saldo + saldoTotal;
Como ahora saldoTotal ya es >0 por la sentencia anterior, se le vuelve a añadir el valor de
saldo
En las sucesivas llamadas a la función ya no se cumple e primer if, porque saldoTotal ya es mayor que 0, luego sólo se ejecuta el segundo.
Para solucionarlo has de hacer que los dos if sean excluyentes :
Aún así no le veo mucha lógica a la función propiamente dicha. Se debería limitar a sumar la cantidad deseada a saldoTotal, sin hacer distinciones si saldoTotal es = a 0 o mayor.