this line does int * int and saves the result as double, so the decimals were never generated. double Profitloss= portfolio[i].numShares * (portfolio[i].CurrPrice-portfolio[i].PurPrice);
you need at least one double/float in the expression to force the compiler to promote all other variables to double/float
double = int * double
double = double * int
double = double * double
int = int * int
that should also fix your input problems, when i enter 1.50 as the purchase price, cin only takes "1" because its looking for an int and stops at the decimal. from that point on all your input is screwed to put it nicely :)
oh, and remove that cin.ignore(), i presume you were trying to fix the messed up inputs.