# PBinfo #2664 – Search – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Definiți următoarele funcții:

int IndexOf(char s[], char ch)
int LastIndexOf(char s[], char ch)
int NthIndex(char s[], char ch, int k)
Funcția IndexOf primește ca parametri un șir de caractere s și un caracter ch și returnează cea mai din stânga poziție unde se găsește ch în șir, sau returnează -1 dacă ch nu apare în șir.

Funcția LastIndexOf primește ca parametri un șir de caractere s și un caracter ch și returnează cea mai din dreapta poziție unde se găsește ch în șir, sau returnează -1 dacă ch nu apare în șir.

Funcția NthIndex primește ca parametri un șir de caractere s, un caracter ch și un număr întreg k. Presupunând că ch apare de n ori în șir, atunci, dacă 1 ≤ k ≤ n, funcția returnează poziția unde caracterul ch apare a k-a oară. În caz contrar, funcția returnează -1.

Restricții și precizări

5 ≤ lungimea șirului ≤ 250
Șirul s este indexat de la 0.

Exemplu:
Dacă s = "Ana are mere", atunci IndexOf(s, 'a') = 2, LastIndexOf(s, 'e') = 11, NthIndex(s, 'e', 20) = -1 (Caracterul e nu apare de 20 de ori în s), iar NthIndex(s, 'e', 2) = 9.

## Cod sursă C++

```cpp
int IndexOf(char s[], char ch)
{
    for (int i = 0; s[i]; i++)
        if (s[i] == ch) return i;
    return -1;
}
int LastIndexOf(char s[], char ch)
{
    int p = -1;
    for (int i = 0; s[i]; i++)
        if (s[i] == ch) p = i;
    return p;
}
int NthIndex(char s[], char ch, int k)
{
    if (k <= 0) return -1;
    for (int i = 0; s[i]; i++)
        if (s[i] == ch)
        {
            k--;
            if (k == 0) return i;
        }
    return -1;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2664)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2664/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2664/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
