Здесь ваша проблема решена. Просто выполните функцию перед оператором cout. Происходит то, что при печати он следует порядку справа налево для исполнения. Вы можете испытать это в C, также используя функцию printf. Мне было очень весело с этим, я использовал операторы ++ или - для чисел и печатал их. Это как бы сбивает с толку тот порядок, в котором они увеличиваются и уменьшаются.
#include<iostream>
#include<string>
using namespace std;
string::size_type find_ch(string &str,char ch,int &i_r)
{
string::size_type first=0;
for(auto i=static_cast<int>(str.size())-1;i>0;i--)
{
cout<<"Value of i_r : "<<i_r<<endl;
if(str[i]==ch)
{
first=i+1;
i_r++;
}
}
return first;
}
bool check_char(string &str,char ch)
{
for(auto i=str.begin();i!=str.end();i++)
if(*i==ch)
return 1;
return 0;
}
int main()
{
string str,&rstr=str;
char ch=' ';
int freq=0,&i_r=freq;
cout<<"Enter a string : ";
getline(cin,str);
cout<<"Enter a character you want to find first occurrence index and count : ";
cin>>ch;
if(check_char(rstr,ch))
{
auto a = find_ch(rstr,ch,i_r);
cout<<"First occurrence of character "<<ch<<" is "<<a<<" and
frequency of character is "<<i_r;
}
else
cout<<"Character does not exist in the string.";
return 0;
}