Wyszukiwanie tekstu

0

Witam,

Mam tekst np. AlaMarcinkubapiotrekMichał

I podaje ciąg do sprawdzenia: **PIOTREK
**
I chcę żeby zwróciło mi true bo PIOTREK jest ale małymi literami i jest gdzieś w środku tekstu do sprawdzenia.
Jak ma wyglądać taka funkcja?

1

Tu jest wszystko czego Ci trzeba:
http://msdn.microsoft.com/en-us/library/system.string.aspx
m. in. Contains, IndexOf i ToUpper/ToLower

zadanie domowe: zapamiętać adresy msdn.microsoft.com i google.com

0
 
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <cmath>
using namespace std;
int STR_SZUKAJ_ZNAKU(char* tekst, char* ciag, bool calosc);
/*
Funkcja wyszukuje znaku/ciągu w tekscie                                         
Jeżeli calosc == false:                                                          
- funkcja wyszuka pozycję pierwszego napotkanego znaku z ciągu                  
Jeżeli calosc == true:                                                         
- funkcja wyszuka pozycję pierwszego napotkanego ciągu w tekscie                

Jeżeli nie znajdzie nic zwraca -1
*/
int STR_SZUKAJ_ZNAKU(char* tekst, char* ciag, bool calosc)
{
     int d_ciagu = strlen(ciag);
     int d_tekstu = strlen(tekst);
     for(int n=0; n<d_tekstu; n++)
     {
          if(calosc == false)
          {
               for(int z=0; z<d_ciagu; z++)
               {
                    if(tekst[n] == ciag[z] && tekst[n] == (ciag[z] - 32))
                    {
                         return n;
                    }
               }
          }
          if(calosc == true)
          {
               if(d_tekstu - n < d_ciagu)
                return -1;
               for(int z=0; z<d_ciagu; z++)
               {
                    if(tekst[n+z] != ciag[z] && tekst[n+z] != (ciag[z] - 32))
                     goto nie;
               }
               return n;
               nie:
                calosc = calosc;
                
          }
     }
     return -1;
}




int main()
{
    int p = STR_SZUKAJ_ZNAKU("AdamPiotrekMichal", "PIOTREK" , true);
    bool wystepuje = false;
    if(p != -1)
     wystepuje = true;
    cout<<wystepuje; 
    getch();
}

Funkcja znajduje w podanym ciągu (jezeli calosc false) podanego znaku lub (jezeli calosc = true) calego podanego tekstu i zwraca wartosc != -1 jezeli znak / ciag wystepuje w tekscie lub lub -1 jezeli znaku / ciagu nie ma. Funkcja traktuje litery duze i male tak samo.

Nie sprawdzalem tego. jak bedzie zle to zamien
if(tekst[n] == ciag[z] && tekst[n] == (ciag[z] - 32)) na if(tekst[n] == ciag[z])
i
if(tekst[n+z] != ciag[z] && tekst[n+z] != (ciag[z] - 32)) na if(tekst[n+z] != ciag[z])
Wtedy wszystko będzie działać tylko duże i małe litery będą traktowane jako inny znak

1 użytkowników online, w tym zalogowanych: 0, gości: 1