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?
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?
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
#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