Puoi dirmi cosa ne pensi di queste?

codice:
//Prende come parametro una stringa ed un carattere e restituisce il numero
// di occorrenze del carattere nella stringa.

#include <iostream>
//#include <string>
#include <ctime>
#include <cmath>
#include <cstdlib>

using namespace std;


string occorrenze (string a, char b)
{

    int dim=a.length();
    int conta=0;

    for (int i=0; i<dim; i++)
{
    if(a[i]==b)
{
    conta++;
}
}
 cout<< conta;


}
int main ()
{

    string a;
    cin>> a;
    char b;
    cin>> b;
    cout << occorrenze(a, b);

    return 0;
}
codice:
//Riceve una stringa come parametro e, se essa ha lunghezza >=2, scambia il primo carattere
//con l'ultimo e stampa la stringa, altrimenti non fa nulla;



#include <iostream>
#include <string>
#include <ctime>
#include <cmath>
#include <cstdlib>

using namespace std;

string stringa (string a)
{
int dim = a.length ();
if (dim >=2)
{
int scambio= a[0];
a[0]=a[dim-1];
a[dim-1]=scambio;
}
return a;
}

int main()
{

// sdrand(time(NULL));
string a;
   cin>>  a;
   cout<<stringa(a);
   return 0;
   }
codice:
//Prende una stringa come parametro e scambia la prima metà con la seconda;

#include <iostream>
#include <string>
#include <ctime>
#include <cmath>
#include <cstdlib>

using namespace std;


string stringa (string a)
{

    int dim=a.length();
    int b=dim/2;
    int c=dim/2+1;
    if (dim%2==0)
{
    for (int i=0; i<dim/2; i++)
{
    int scambio =a[i];
    a[i]=a[b];
    a[b]= scambio;
    b++;
}
return a;
}
else
{
    for (int i=0; i<dim/2; i++)
    {
        int scambio=a[i];
        a[i]=a[c];
        a[c]=scambio;
        c++;

    }
    return a;
}
}


int main ()
{

    string a;
    cin>> a;
    cout << stringa (a);
    return 0;
}