void main()
{
clrscr();
const int n=80;
char s[n];
cout<<"Vvedit' rjadok sumvoliv\n";
cin>>s;
int len=strlen(s);
Вроде же тебе надо строку из файла читать??? Ну, да ладно...
Название переменной str обычно дается строковой переменной, кстати в конце твоего кода она так и используется

...
{
int k=0;
for(int i=0;i<len;i++)
if (islower(s[i]))
{
k++;
s[i]=toupper(s[i]);
}
cout<<"\n\nKil'kist' MALUX y teksti="<<k;
cout<<"\n\nZapus teksty propusom:\n"<<s;
}
Совсем не понятно зачем тебе были нужны j, s1 и s2...
Хорошим тоном считается выполнять операции(функции) тогда, когда это требуется, т.е. менять на верхний регистор только маленькие буквы...
Кстати, программа явно решает не твою задачу

...
{
char zz;
cout<<"\n\nVvedu vubrany bykvy ";
cin>>zz;
zz=toupper(zz);
bool fzz=0;
int k=0;
for(int i=0;i<len;i++)
{
if(s[i]==zz)
fzz=1;
if((s[i]==' ') || (s[i]==','))
{
s[i]='\n';
if(fzz)
k++;
}
}
cout<<"\n\nKil'kist' SLOV kotorye ne imeut \'"<<zz<<"\' y teksti="<<k;
cout<<"\n\nVuxidnui rjadok:\n"<<s;
cout<<s;
}
Ну, если тебе надо выводить слова, в которых нет буквы, которую ту ввел, алгоритм чуть поменяется...
getch();
}
Конец...