Tienes que tener cuidado con la lógica que utilizas y con los índices, contadores y acumuladores que utilizas.
He reestructurado el código (te lo pego a continuación) y a mí me está funcionando, pruébalo a ver si te funciona.
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int main() {
//string diccionario[]={"casa", "perro", "carro", "computadora", "cabana", "coche", "mer", "sfefef"};
string diccionario[]= {"casa", "perro", "carro"};
int contador = 0;
int vec[27] = {0};
int acum1=0;
for(char a='a'; a<='z'; a++) {
cout<<"LETRA ANALIZANDO: "<<a<<endl;
for(int b=0; b<3; b++) {
acum1=0;
cout<<"Palabra analizando: "<<diccionario[b]<<endl;
for(int c=0; c<diccionario[b].length(); c++) {
if(diccionario[b][c]==a) {
acum1++;
}
}
vec[contador]=vec[contador]+acum1;
cout<<"Encontrada la letra: "<<acum1<<" veces en la palabra"<<endl;
}
cout<<"Encontrada la letra: "<<vec[contador]<<" veces en todas las palabras "<<endl;
contador = contador+1;
}
for(int i=0; i<27; i++)
cout<<vec[i]<<endl;
//system("pause");
return 0;
}
Se usa un único acumulador: acum1, que va contando las veces que aparece una letra en todas las palabras y finalmente se guarda el número de apariciones en el vector vec.
Saludos.