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

Rozszyfrowywanie

Ostatnio zmodyfikowano 2012-07-23 00:09
Autor Wiadomość
cyklopek11
» 2012-07-22 20:04:08
matka5432 a zaglądałeś do komentarzy na stronie do której podałeś link? Jest tam namiar na słownik zawierający 3 878 982 słów polskich z odmianą, skróty oraz wyrażenia z obcych języków które się przyjęły w polskim języku. Ja kiedyś też poszukiwałem jakiegoś słownika więc dzięki za linka.
A tak swoją drogą właśnie przerabiałem sobie ten słownik bo odmiany są wymieniane po przecinku a ja wolę po każdym wyrazie mieć '\r', '\n' i  muszę powiedzieć, że przy takim słowniku bez programowania (wstawek) w asemblerze się nie ucieknie ...
P-60877
matka5432
Temat założony przez niniejszego użytkownika
» 2012-07-22 21:38:37
Tak, patrzylem na komentarze.

Nie ma za co ;)

a co do odmian, narazie jestem poczatkujacy, ledwo znam podstawy c++ i nie chce mi sie w to bawic. Po za tym musze troche praktyki nabarc.

I jeszcze tak przy okazji, nie moge do cholery przekazac informacji przez referencje w moim kodzie. Mam funkcje bool i int main().
Jesli do fukcji wpisze komende "return std::cin.good();" lub jej nie wpisze, nie ma to najmniejszego wplywu na zmienna bool w int main()

funkcja bool:

C/C++
bool funkcja( std::string & napis, std::string & szukanafraza )
{
    size_t znalezionaPozycja = napis.find( szukanafraza );
    znalezionaPozycja++;
    if( znalezionaPozycja == std::string::npos )
    {
       
    }
    else
   
    if( !( znalezionaPozycja == 0 ) )
    {
        std::cout << "Znak zostal odnaleziony na pozycji " << znalezionaPozycja << std::endl;
       
       
       
        ----------->>>>>> W tym miejscu wpisuje komende "return std::cin.good();" lub nie, tak jak wspomnialem nie ma to najmniejszego wplywu na zmienna bool( w tym przypadku "f" ).Zmiennna "f" zawsze ma wartosc 1 <<<<<<-----------
       
       
       
       
    }
    else
    {
        return NULL;
    }
}



----------------------
i odlamek int main()
----------------------


C/C++
string f = "0";
...
<<<<------tutaj jest caly kod
...
if( funkcja( f, f ) == true )
{
    cout << "dobrze" << endl;
    f = "1";
}

else
{
    cout << "zle" << endl;
    f = "0";
}

z gory dzieki, nie mam juz do tego nerwow... grrr
P-60893
Drraven
» 2012-07-22 21:59:06
» KursyKurs STC kurs
P-60897
cyklopek11
» 2012-07-22 22:16:41
Jak porównujesz zmienną z nią samą to zawsze ci wyjdzie prawda:
C/C++
if( funkcja( f, f ) == true )
{
    cout << "dobrze" << endl;
    f = "1";
}

poza tym:
-  po co w funkcji: funkcja zwracasz return std::cin.good() (stan błędu strumienia wejściowego) zamiast normalne true???
- jak nie modyfikujesz referencji to definiuj funkcje ze stałymi referencjami bo z tak pisanym przez ciebie kodem pogubisz się co się gdzie dzieje
bool funkcja( const std::string & napis, const std::string & szukanafraza )

- no i po co inkrementujesz znalezionaPozycja ??
P-60898
matka5432
Temat założony przez niniejszego użytkownika
» 2012-07-22 22:39:24
Jesli poruwnuje zmienna z inna zmienna, to zawsze mam false.
Dzisiaj w sumie proboje to na rozne sposoby rozwiazac okolo kilku godzin.. 5? Ani raz sie nie udalo. zawsze true, lub false.

Inkrementuje po to, aby nie bylo pozycji zerowej. Nie wiem dlaczego, ale przeszkadza mi takie cos
P-60899
cyklopek11
» 2012-07-22 22:43:36
Dobra wstaw tutaj cały kod , podaj dane wejściowe które chcesz sprawdzić i wynik jaki oczekujesz.
P-60900
matka5432
Temat założony przez niniejszego użytkownika
» 2012-07-22 23:09:54
Wiec chodzi o to, aby program mi napisal w konsoli "znaleziono/nie znaleziono" gdy wpisze jakies slowo, by program go wyszukal. Jak narazie efekt wyglada tak, ze za kazdym razem porgram "mowi" mi, ze znalazl slowo, nawet jesli wpisze dowolny ciag cyferek

Az sie boje go tu wstawiac... tylko sie nie wystraszcie ;p

tutaj mam funkcje i kawalek int main();  :)
C/C++
#include <string>
#include <iostream>
#include <conio.h>
#include <fstream>

bool funkcja( const std::string & napis, const std::string & szukanafraza )
{
    size_t znalezionaPozycja = napis.find( szukanafraza );
    znalezionaPozycja++;
    if( znalezionaPozycja == std::string::npos )
    {
       
    }
    else
   
    if( !( znalezionaPozycja == 0 ) )
    {
        std::cout << "Znak zostal odnaleziony na pozycji " << znalezionaPozycja << std::endl;
        return true;
    }
    else
    {
        return NULL;
    }
   
}

using namespace std;
int main()
{
   
    string f;
    f = "0";
    cout << "f to: " << f << endl;
   
   
    cout << "jaka chcesz wyszukac fraze?" << endl;
    string szukanafraza;
    getline( cin, szukanafraza );
    string n;
    int a;
    n.insert( 0, szukanafraza, 0, 1 );
    string napis;
    
to co widzicie pod spodem od warunku if do komentarza z errorem to kawalek kodu ktory powtarza sie 21 razy, roznica w kazdym z nich jest tylko taka, ze literki (w tym przypadku "W") sie zmieniaja. Chcialem w to miejsce wstawic zmienna, ale kompilator widzial tam blad. Chwilke sie z tym pobawilem, ale bez skutkow.

   
C/C++
if( n == "W" )
{
    fstream plik;
    plik.open( "w.txt", ios::in | ios::out );
    if( plik.good() )
    {
        while( !plik.eof() )
        {
            getline( plik, napis );
            funkcja( napis, szukanafraza );
        }
       
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
   
}


...............<<<<----tutaj jest reszta 19 kodow



if( n == "M" )
{
    string napis;
   
    fstream plik;
    plik.open( "m.txt", ios::in | ios::out );
    if( plik.good() )
    {
        while( !plik.eof() )
        {
            getline( plik, napis );
            funkcja( napis, szukanafraza );
        }
       
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
   
}
Ponizsza linijka to wlasnie moje zmartwienie.. nie wiem co wpisac w warunek if, aby true/false byla zmienna i dzialala tak jak opisalem u gory ;/

  
C/C++
if( funkcja( napis, szukanafraza ) == true )
{
    cout << "nie znaleziono" << endl;
    f = "1";
}

else
{
    cout << "znaleziono" << endl;
    f = "0";
}

getch();
return 0;
}
P-60904
cyklopek11
» 2012-07-22 23:56:59
Namieszałeś nieźle oto działający kod (trzeba go jeszcze doprowadzić do ładu):
C/C++
#include <string>
#include <iostream>
#include <conio.h>
#include <fstream>


using namespace std;

bool funkcja( const string & napis, const string & szukanafraza )
{
    size_t znalezionaPozycja = napis.find( szukanafraza );
    //znalezionaPozycja++;
    if( znalezionaPozycja == string::npos )
    {
       
        return false;
    }
    else
   
   
    {
        cout << "Ciag znakow  zostal odnaleziony na pozycji " << znalezionaPozycja /* dodaj tutaj ewentualnie + 1 */ << std::endl;
        return true;
    }
   
   
}



int main()
{
    bool czyZnalezionoCos = false;
    string f;
    f = "0";
    cout << "f to: " << f << endl;
   
   
    cout << "jaka chcesz wyszukac fraze?" << endl;
    string szukanafraza;
    getline( cin, szukanafraza );
    string n;
    int a;
    n.insert( 0, szukanafraza, 0, 1 );
    string napis;
   
    if( n == "W" )
    {
        fstream plik;
        plik.open( "w.txt", ios::in | ios::out );
       
        if( plik.good() )
        {
            while( !plik.eof() )
            {
                getline( plik, napis );
                czyZnalezionoCos = funkcja( napis, szukanafraza );
                if( czyZnalezionoCos == true ) break;
               
            }
            if( plik.eof() ) plik.clear();
           
            plik.close();
        } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
       
    }
   
    if( czyZnalezionoCos == false ) // <------ tu był główny błąd
    {
        cout << "nie znaleziono" << endl;
        f = "1";
    }
   
    else
    {
        cout << "znaleziono" << endl;
        f = "0";
    }
   
    getch();
    return 0;
}

W katalogu z exekiem stworzyłem plik w.txt o treści:

Waldek
Weronika
Witek
Wojtek

Wszystko gra ale na przyszłość:
 - czyść flagi błędów strumienia
 - zapisuj wynik bool do zmiennej tymczasowej i porównuj a nie porównuj tego co zwraca funkcja po tym jak wykonała już całą robotę (tam tkwił błąd)
P-60905
1 2 3 4 « 5 » 6
Poprzednia strona Strona 5 z 6 Następna strona