string tab[ile];
int suma[ile];
to nie powinno sie skompilować zgodnie ze standardem. Niektóry kompilatory idą na rękę i to przepuszczaja, ale lepiej unikać i używać dynamicznej alokacji.
for (int i=0; i<ile; i++)
{
cin>>tab[ile];
chciałeś pewnie wpisywać do tab[i].
if (tab[i][j]=='-') suma[i]-=tab[i][j+1];
dodajesz char do inta. Spróbuj czegoś takiego, to zobaczysz w czym jest problem:
int x = '1';
cout<<x<<endl;
I problem jest troszke bardziej złożony niż założyłeś. Co jeśli będzie 1+69. Wtedy Twój algorytm doda sobie 1 do 6, ignorujac 9 i zwróci 7 (po tym jak naprawisz reszte problemów). Ja bym się posłużył klasą stringstream, która wyciągnie Ci całe liczby zamiast pojedyńczych cyfr z tego stringa:
stringstream s(tab[i]);
int liczba;
s >> liczba;
Edit: stringstrem mino wszystko zadziala i sam zajmie sie plusami i minusami :p