Pawełek Temat założony przez niniejszego użytkownika |
» 2018-04-08 15:07:57 W którym oknie i dlaczego print a nie int? Nie wiedzieć tez czemu breakpoint u mnie nie działa prawidłowo (chyba), tzn. według poradników na yt, to działanie programu zatrzymuje się na breakpoincie i wszystkie zmienne wypisywane są w samoistnie pojawiającym się oknie 'watches'(U mnie program zatrzymuje się na breakpoincie ale nie wyświetla zmiennych) żeby się dowiedzieć która zmienna w którym momencie ma jaką wartość muszę obsługiwać debuggera krokowo (wciskając ciągle 'next line') a żeby podejrzeć wartości zmiennych wchodzę w Debugging windows -> watches |
|
jankowalski25 |
» 2018-04-08 15:41:38 Dopisano:dlaczego print a nie int? |
Dlatego, że zmienna, którą wypisujesz, nie musi być zawsze typu int . U mnie program zatrzymuje się na breakpoincie |
Czyli działa prawidłowo (chyba że widzisz w którymś oknie jakieś błędy). ale nie wyświetla zmiennych |
Z tym czasami różnie bywa w różnych wersjach Code::Blocks. Wpisanie komendy powinno pokazać to, co trzeba. żeby się dowiedzieć która zmienna w którym momencie ma jaką wartość muszę obsługiwać debuggera krokowo (wciskając ciągle 'next line') |
Nie musisz, wystarczy na przykład postawić breakpointa w innym miejscu i nacisnąć czerwoną strzałkę (lub F8 przy domyślnych ustawieniach). a żeby podejrzeć wartości zmiennych wchodzę w Debugging windows -> watches |
Można i tak, a nawet to jest lepszy pomysł, bo dzięki temu nie musisz ciągle pisać print zmienna dla wszystkich zmiennych, tylko od razu widzisz ich wartości w oddzielnym oknie (które możesz sobie przypiąć, jeśli chcesz). Mimo tego znajomość komend bywa przydatna, choćby po to, aby sprawdzać, czy jakieś wyrażenia są prawdziwe albo żeby zmieniać wartości zmiennych czy wywoływać funkcje. |
|
Pawełek Temat założony przez niniejszego użytkownika |
» 2018-04-08 16:06:27 Trochę nie rozumiem tego, bo komenda ciągle pokazuje mi false (niezależnie od tego czy liczba się powtórzyłą czy nie) a if działa normalnie jakby tam była prawda :/ |
|
jankowalski25 |
» 2018-04-08 16:11:14 if działa normalnie jakby tam była prawda |
Na pewno? Postaw breakpointa na tym ifie i sprawdź, jaka jest wartość tego wyrażenia. komenda ciągle pokazuje mi false (niezależnie od tego czy liczba się powtórzyłą czy nie) |
Spójrz na te dwie zmienne, popatrz na warunek, w którym są użyte i zastanów się, czy nie ma tu jakiegoś błędu w kodzie. |
|
Pawełek Temat założony przez niniejszego użytkownika |
» 2018-04-08 18:07:36 Dziwnie mi ten program wyszedł, niektóre powtórzenia wyłapuje inne nie, zostawiam go tutaj narazie w wersji finalnej #include <conio.h> #include <ctime> #include <cstdlib> #include <iostream> using namespace std;
void wpisz( int tablica[] ) { int i = 0; do { cout << "Podaj " << i + 1 << " liczbe: "; cin >> tablica[ i ]; i++; } while( i < 10 ); }
bool sprawdzenie( int tablica2[], int c, int ile, int a, int tablica[] ) { if( ile == 0 ) return true; do { if( tablica[ a ] == tablica2[ c ] ) return false; c++; } while( c == ile ); return true; }
int main() { srand( time( NULL ) ); int tablica[ 10 ]; int tablica2[ 8 ]; int wylosowanych = 0; wpisz( tablica ); int a; int b = 0; int c = 0; do { a = rand() % 10; if( sprawdzenie( tablica2, c, wylosowanych, a, tablica ) == true ) { wylosowanych++; tablica2[ b ] = tablica[ a ]; b++; cout << "Wylosowano " << b << "liczbe: " << tablica[ a ] << endl; } } while( b < 8 ); return 0; }
Powrócę do niego za miesiąc albo dwa gdy moje umiejętności kodowania będą znacznie większe to może wtedy znajdę powód jego dziwnego zachowania :) |
|
jankowalski25 |
» 2018-04-08 18:32:25 Dlaczego ta pętla ma działać dopóki indeks tablicy jest równy jej zapełnieniu (czyli zawsze tylko raz)? Powrócę do niego za miesiąc albo dwa |
Jeśli zamierzasz odpuścić sobie to zadanie i przerabiać dalej kurs, to nie wiem, czy to jest dobry pomysł. Skoro już zacząłeś uczyć się korzystać z debuggera, to może lepiej to dokończyć na tym przykładzie? Może dlatego, że wspomniana pętla jest wykonywana co najwyżej jeden raz, więc sprawdzasz tylko jedną liczbę, a nie całą zapełnioną część tablicy? |
|
Pawełek Temat założony przez niniejszego użytkownika |
» 2018-04-08 18:46:48 Właśnie rozwiązując już zadanie z rozdziału 22 zauważyłem swój błąd powinno być "c<ile" w pierwotnej wersji programu było "c>ile" a później zmieniłem na "c==ile". Nie wiem dlaczego ale myślałem że jak warunek z while oddaje fałsz to pętla zostaje powtórzona, a przecież pętla się właśnie wtedy kończy gdy warunek w while jest fałszywy. Temat zamykam, dzięki za pomoc, zresztą pewnie jeszcze z niejednym problemem tu zawitam ale obym jak najwięcej rozwiązał sam :) |
|
1 « 2 » |