[c++] zadanie z klasa string

Witam

zadanko z symfonii

od razu sposob rozwiazania

#include 

#include 

using namespace std; 

int funkcja(string a) ; 

//////////////////////////////////////////////////////////////////////////////////////////////////

int main()

{

   string napis ; 

   cin>>napis ; 

   funkcja(napis) ;    


}

//////////////////////////////////////////////////////////////////////////////////////////////////

int funkcja(string a) 

{


    string mozliwosci ="ABCDEFGJKLMNPQR" ; //     

    string symbol = a.substr(8,1) ; //bierze jedna litere

    int i; 

    for(i=0; ; i++)

    {


             if(symbol == mozliwosci.at(i)) //jezeli to 'ta' literka wypisuje ja 

             {

             cout<
             break;

             }


    }



    return i ;                    






}         



[/code]

Mam problem z linijka 23 -coś jest źle -> nie wiem też czy sposób rozwiązania jest ,w miarę" poprawny(pewnie rodzaj petli mógłby być trochę inny)

z góry thx

Kmbinujesz :wink:

std::string ma taką funkcję jak find która poszukuje w ciągu danego znaku lub podciągu i zwraca jego indeks(liczone od 0). Czyli zamiast pętli powinno być:

string mozliwosci = /*...*/;

char symbol = a[a.size() - 1]/* *a.rbegin() też może być*/; //Ostatni znak.

int i = mozliwosci.find(symbol) /*+ 1*/; //To +1 jest po to, by wynik był od 1, nie od 0.

@EDIT: moja wina, nie doczytałem treści zadania.

char symbol = a.substr(8,1) ; //bierze jedna litere

Poco ta pętla skoro i tak wypisze 8, o ile w napisie “mozliwosci” nie będzie powtarzających się literek?

dzięki fiołek :slight_smile: właśnie o taką pomoc mi chodziło

widziałem na forach niemądre rozwiązania typu case i zwracane wartości no-sens a o find nie pomyślałem :slight_smile:

Fiołek , numeracja ma być od zera, patrz zadanie. Więc całość może wyglądać następująco:

int funkcja(const string &nazwa) { return string("ABCDEFGJKLMNPQR").find(nazwa[8]); } [/code]