fbpx

Problema #2664 – Search – Rezolvari PBInfo

de Mihai-Alexandru

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.

int IndexOf(char s[] , char ch)
{
    int i = 0;
    while(s[i]!='\0')
    {
        if(s[i]==ch)
            return i;
        i++;
    }
    return -1;
}

int LastIndexOf(char s[] , char ch)
{
    int i = 0 , poz = -1;
    while(s[i]!='\0')
    {
        if(s[i]==ch)
            poz=i;
        i++;
    }
    return poz;
}

int NthIndex(char s[] , char ch , int k)
{
    int i = 0 , poz = -1;
    while(s[i]!='\0')
    {
        if(s[i]==ch)
        {
            k--;
        if(k == 0)
            poz = i;
        }
        i++;
    }
    return poz;
}
Comentarii

S-ar putea sa iti placa