Program zliczajacy tabele w pliku htm
Ostatnio zmodyfikowano 2014-01-05 16:00
celin94 Temat założony przez niniejszego użytkownika |
Program zliczajacy tabele w pliku htm » 2014-01-05 01:33:13 #include <fstream> #include <iostream> using namespace std;
void searchTable( const char * s1, const char * s2, int number ) { string tekst = s1; string szukanaFraza = s2; size_t znalezionaPozycja = tekst.find( szukanaFraza ); if( znalezionaPozycja == string::npos ) { std::cout << "Nie znaleziono frazy w tekscie" << std::endl; return; } number = 0; do { number++; } while( znalezionaPozycja != string::npos ); }
int main() { ifstream plik( "KKK.htm" ); if( !plik ) { cout << "Plik nie zostal otwarty\n"; return 1; } int tableNumber; searchTable( "UAC.htm", "<table", tableNumber ); cout << "Liczba tabel = " << tableNumber << endl; } A wiec mam problem z programem, ktory na podstawie pliku KKK.htm ma zliczyc wszystkie jego tabele. Prosze o pomoc, poniewaz nawet nie mam juz pomyslow jak napisac to poprawnie |
|
m4snow |
3 » 2014-01-05 12:12:07 1) szukasz <table w nazwie "UAC.htm" a to nie jest zawartość pliku z html. 2) musisz zmniejszać zakres wyszukiwania o znaleziony kawałek tekstu czyli dodaj w do .. while taki kod który będzie aktualizował ci zmienną tekst o pomniejszony kawałek tekstu, bo inaczej będziesz mieć zapętlenie(teraz też masz zapętlenie). Użyj np: tekst = tekst.substr(znalezionaPozycja + szukanaFraza.length(), tekst.length());
EDIT: pekfos masz rację. Pewnie że można napisać tekst = tekst.substr(tekst.find(szukanaFraza)+1)
3) W pętli też musisz koniecznie jeszcze raz wyszukiwać pożądaną frazę, bo inaczej nigdy się nie skończy warunek. |
|
pekfos |
» 2014-01-05 12:42:15 musisz zmniejszać zakres wyszukiwania o znaleziony kawałek tekstu czyli dodaj w do .. while taki kod który będzie aktualizował ci zmienną tekst o pomniejszony kawałek tekstu, bo inaczej będziesz mieć zapętlenie(teraz też masz zapętlenie). Użyj np:
tekst = tekst.substr(znalezionaPozycja + szukanaFraza.length(), tekst.length());
|
Ten przykład to chyba najgorsze z możliwych rozwiązań. Każde find w std::string pozwala określić indeks, od którego ma się rozpocząć wyszukiwanie. |
|
celin94 Temat założony przez niniejszego użytkownika |
» 2014-01-05 13:02:13 A moglbym prosic o to zeby ktos poprawil ten program? Wiem ze ide na latwizne ale siedze przy tym dluzszy czas i stracilem wszelkie checi :/ |
|
pekfos |
» 2014-01-05 13:32:17 Więc zrób sobie przerwę. Tu zamiast poprawiać należałoby napisać od nowa. Nawet nie odczytujesz niczego z pliku. pekfos masz rację. Pewnie że można napisać
tekst = tekst.substr(tekst.find(szukanaFraza)+1)
|
Jeszcze gorzej. Zostaw substr() w spokoju. |
|
celin94 Temat założony przez niniejszego użytkownika |
» 2014-01-05 13:46:30 Niestety lecz czas mnie goni i mam malo czasu na zrobienie tego. Moglbys napisac w podpunktach kolejnosc jak ten program powinien wygladac ? |
|
pekfos |
» 2014-01-05 13:49:27 1. Wczytujesz plik. 2. Wyszukujesz. |
|
celin94 Temat założony przez niniejszego użytkownika |
» 2014-01-05 14:05:31 A moglbys opisac w jaki sposob moge wyszukac wyraz w tym pliku ? |
|
« 1 » 2 |