[C++] nieznany błąd przy debugowaniu

kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] nieznany błąd przy debugowaniu

Post autor: kalwi »

Nie jestem magikiem i nie wiem jakie "błędy krytyczne" wykrywa (tip: wstaw kod błędu, kod funkcji...)
Transatlantyk
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 30 cze 2014, o 15:08
Płeć: Kobieta
Lokalizacja: Ziemia

[C++] nieznany błąd przy debugowaniu

Post autor: Transatlantyk »



Proszę, przygotowałam projekt pod oddanie więc są już komentarze, teraz błędy:


kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] nieznany błąd przy debugowaniu

Post autor: kalwi »

Kod: Zaznacz cały

void kolejnoscargv(const char*argv[], string &wyjscie, string &wejscie);

Kod: Zaznacz cały

void szukajWszystkichFraz(string &wejscie, int &dw);

Kod: Zaznacz cały

void szukajZnaku(string &wejscie, int &z);

Kod: Zaznacz cały

void thefinalcountdown(int dw, int z, string &wynik);
niepotrzebna referencja przy stringach

Kod: Zaznacz cały

int pomoc();
czemu to jest typu int?

Kod: Zaznacz cały

    if ((((string(argv[1]) != "-h") || (string(argv[1]) != "-i")) && (((string(argv[3]) != "-i")))) || (((string(argv[1]) != "-h") || (string(argv[1]) != "-i")) && (string(argv[3]) != "-o")))
jedno

Kod: Zaznacz cały

(string(argv[1]) != "-h")
jest tu zbędne

Kod: Zaznacz cały

  else { pomoc(); }
niepotrzebne klamry

Kod: Zaznacz cały

sprfile
albo nazywasz wszystko po ang. albo wszystko po polsku. Nie miesza się nazewnictwa.

Kod: Zaznacz cały

if (!plik.tellg())//jeżeli funkcja zwracająca pozycję kursora w pliku od którego należy zczytywać dane zwraca false-plik jest pusy
tellg() nie zwraca fałszu, tylko pozycję. Jeśli plik jest pusty, to zwróci pozycję równą 0. A zanegowane zero to prawda (dla ifa)

W mainie:

Kod: Zaznacz cały

    void szukajWszystkichFraz(string &wejscie, int &dw);
1) nie umiesz korzystać z funkcji, tam nie daje się void czy int czy czegokolwiek innego
2) albo korzystasz ze wskaźników, albo z referencji. Ampersandy do wywalenia.

To samo się tyczy kolejnych funkcji w mainie:

Kod: Zaznacz cały

void szukajZnaku(string &wejscie, int &z);
    void thefinalcountdown(int dw, int z, string &wynik);
    void wynik(string wyjscie, string wynik);
linijka 111:
//funkcja obierająca za argument plik do odczytu
nie, tam jest nazwa pliku do odczytu
referencyjnie przekazany alias dwuznaków typu int
nie, referencja == alias
i dw to jest liczba dwuznaków (liczba będąca typem int, aczkolwiek powinna być type size_t/unsigned int)

Kod: Zaznacz cały

 if (!plik.good()) { pomoc(); }
ponownie, zbędne klamry.
Jak masz fora lub ifa po którym jest jedna linia kodu (tj. zakończona jednym średnikiem) to zwyczaj jest taki, aby nie dawać klamer

Kod: Zaznacz cały

long l;
    plik.seekg(0, ios::end);
    l = plik.tellg();
Czemu nie

Kod: Zaznacz cały

 plik.seekg(0, ios::end);
    long l = plik.tellg();
poza tym nazwa "l" nic nie mówi. Powinno być length jeśli już. Poza tym znowu mieszasz polski z angielskim.

Kod: Zaznacz cały

    string dwu[] = { 'cz','rz','ch','sz','dz','si','ni','zi','Cz','Ch','Rz','Sz','Dz','Si','Ni','Zi' };//tablica możliwych dwuznaków
Wciąż źle. Jak masz więcej niż jeden znak to tam jest cudzysłów, nie apostrof. "CZ".
dwa, że nadal nie uwzględniłaś przypadku np. "nI".

Kod: Zaznacz cały

int j = (0 <= k <= 16);
Co robi wg Ciebie ten kod? Bo w następnej linijce zmienna j będzie równa 1.

na razie starczy...
ODPOWIEDZ