C++ Bc. 17 cpp: Porovnání verzí
m (Stránka C plus plus Bc. 17 cpp přemístěna na stránku C++ Bc. 17 cpp) |
m (+kategorie programovani, c++) |
||
Řádek 76: | Řádek 76: | ||
d 12 | d 12 | ||
[ [[C | [ [[C++ Bc. 17 | Zpět]] ] | ||
[[Kategorie:Programování]] | |||
[[Kategorie:C++]] |
Verze z 2. 9. 2006, 10:47
#include <string> #include <iostream> #include <iomanip> #include <list> std::string::size_type hledej(const std::string& retezec, const std::string& podretezec); int main() { using namespace std; string retezec = "aaa bbb ccc ddd"; list<string> seznam; seznam.push_back("aa"); seznam.push_back("a b"); seznam.push_back("ccc"); seznam.push_back("fff"); seznam.push_back("d"); cout << "retezec: " << retezec << "\n\n"; // implicitne jsou retezce strng zarovnavany vpravo cout.setf(ios_base::left, ios_base::adjustfield); for (list<string>::const_iterator i=seznam.begin(), e=seznam.end(); i!=e; ++i) { string podretezec = *i; cout << setw(4) << podretezec << " "; string::size_type n = hledej(retezec, podretezec); if (n != string::npos) cout << n; else cout << "nenalezen"; cout << endl; } } std::string::size_type hledej(const std::string& retezec, const std::string& podretezec) { using namespace std; if (podretezec.size() > retezec.size()) return string::npos; string::size_type N = retezec.size() - podretezec.size(); for (string::size_type i=0; i<=N; i++) { bool nalezen = true; for (string::size_type j=0; j<podretezec.size(); j++) if (retezec[i+j] != podretezec[j]) { nalezen = false; break; } if (nalezen) return i; } return string::npos; }
retezec: aaa bbb ccc ddd aa 0 a b 2 ccc 8 fff nenalezen d 12
[ Zpět ]