Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program zliczajacy tabele w pliku htm

Ostatnio zmodyfikowano 2014-01-05 16:00
Autor Wiadomość
celin94
Temat założony przez niniejszego użytkownika
Program zliczajacy tabele w pliku htm
» 2014-01-05 01:33:13
C/C++
#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
P-101197
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.
P-101203
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.
P-101210
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 :/
P-101217
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.
P-101222
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 ?
P-101224
pekfos
» 2014-01-05 13:49:27
1. Wczytujesz plik.
2. Wyszukujesz.
P-101226
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 ?
P-101230
« 1 » 2
  Strona 1 z 2 Następna strona