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

Warunek if nie działa ?!

Ostatnio zmodyfikowano 2014-08-28 10:49
Autor Wiadomość
ChomikPL
Temat założony przez niniejszego użytkownika
Warunek if nie działa ?!
» 2014-08-28 10:07:38
Witajcie,

Jak znam życie, to jest to jakiś trywialny błąd, ale dopiero uczę się programować korzystając z kursu. Oto kod:

#include <iostream>
#include <string>

void konwertuj( std::string & sTekst )
{
    int sWynik;
    int bWynik;
    int cWynik;
    bool b;
    sWynik = sTekst.find(" ");
    bWynik = sTekst.find("<");
    cWynik = sTekst.find(">");
    std::cout << sWynik << std::endl;
    std::cout << sTekst.find(" ", sWynik+1)<< std::endl;

    do
    {
        b = sTekst.find(" ", sWynik + 1) == sWynik;
        std::cout << b << std::endl;
        if(sTekst.find(" ", sWynik + 1) == sWynik);
            {
                std::cout << sWynik << std::endl;
                std::cout << sTekst.find(" ", sWynik+1)<< std::endl;
                sTekst.erase(sWynik,1);
                std::cout << sWynik << std::endl;
                std::cout << sTekst.find(" ", sWynik+1)<< std::endl;

            }
    }while (sWynik == sTekst.size());


}




int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    konwertuj(tekst);
    std::cout << tekst;

    return 0;
}

- Pytam dlaczego w funkcji "konwertuj" kompilator uporczywie wchodzi do instrukcji zapisanych pod warunkiem if, choć warunek ten spełniony nie jest ...
P-116320
Jacob99
» 2014-08-28 10:10:48
Po czym wnioskujesz, że wchodzi, gdy warunek nie jest spełniony?
P-116322
ChomikPL
Temat założony przez niniejszego użytkownika
» 2014-08-28 10:12:31
Kompilator wypisuje na ekran instrukcje zapisane pod if'em.
P-116323
Jacob99
» 2014-08-28 10:15:46
Pokaż co konkretnie i w którym miejscu wypisuje program.(Czyli skopiuj zawartość konsoli). A kompilator nie wypisuje tekstów na ekran.Kompilator
P-116324
ChomikPL
Temat założony przez niniejszego użytkownika
» 2014-08-28 10:19:42
Wypisuje:

5
10 //(to jest oczywiste bo wpisałem to przed pętlą do-while)
0 //(To jest wartoś zmiennej typu bool, żeby wykazać, że w warunku if jest false)
5 //(od tego miejsca są instrukcje wypisywane w srodku if'a)
10
5
9
P-116325
Foxey
» 2014-08-28 10:44:26
if(sTekst.find(" ", sWynik + 1) == sWynik);

na końcu jest średnik, który kończy if'a, a instrukcje w nawiasie są po prostu wykonywane bez warunku.



W sensie, usuń średnik ;)
P-116326
ChomikPL
Temat założony przez niniejszego użytkownika
» 2014-08-28 10:46:24
Heheheh, jestem głupi jak but ;F Dzieki wielkie ;)
P-116327
Foxey
» 2014-08-28 10:49:17
Zdarza się :D
Na średnikach można sobie żyły pociąć. Dziwię się, że kompilator (jakiegokolwiek nie używasz) nie poinformował Cię o tym, że są nawiasy bez 'opieki', czyli po prostu niepotrzebny fragment. Nie pamiętam który, ale na pewno któryś tak mnie informował. Sam pracuję na VC++, ale nie pamiętam, bo mi się nie zdarzyło ostatnio :D
P-116328
« 1 »
  Strona 1 z 1