Balhaim Temat założony przez niniejszego użytkownika |
Temat 21. zadanie domowe 2. problem..... » 2014-07-26 11:48:45 Program ma za zadanie wylosować 8 liczb bez powtórzeń z 10. Z moim jest coś nie tak... Problem dotyczy chyba funkcji "czy". Proszę o szybką pomoc. #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int cina( int b ) { int a = 0; cout << "Wypisz " << b + 1 << ". liczbe" << endl; cin >> a; return a; }
bool czy( int a, int d ) { int b[ 8 ]; int c = 0; if( d = 0 ) { b[ d ] = a; return false; } do { if(( b[ c ] = a ) = true ) { return true; } c++; } while( c < d ); b[ d ] = a; return false; }
int main() { srand( time( NULL ) ); int a[ 10 ]; int b = 0; int c[ 8 ]; int d; do { a[ b ] = cina( b ); b++; } while( b < 10 ); b = 0; do { do { d =( rand() % 10 ); c[ b ] = a[ d ]; } while ( czy( c[ b ], b ) == true ); b++; } while( b < 8 ); b = 0; do { cout << b + 1 << ". wylosowana to " << c[ b ] << endl; b++; } while( b < 8 ); return 0; }
|
|
pekfos |
» 2014-07-26 12:00:30 if(( b[ c ] = a ) = true )
|
Mylisz operatory. |
|
Mateus. |
» 2014-07-27 14:54:16 Twój kompilator pozwala na to co napisał pekfos? Jeśli tak to go zmień. Gdybyś nadal nie rozumiał == to operator porównania, = to operator przypisania. Jeśli kiedyś będzie ci na przypisaniu w miejscu gdzie kompilator spodziewa się porównania, to można to zrobić tak: if(( a = b ) ) { } . |
|
pekfos |
» 2014-07-27 15:02:08 Twój kompilator pozwala na to co napisał pekfos? Jeśli tak to go zmień. |
Twoja klawiatura pozwala na pisanie takich głupot? Zmień ją! Ten kod jest poprawny, tylko nie działa tak, jak autor tematu się spodziewa.. Jak zresztą w wielu przypadkach, gdy popełnia się głupie błędy i/lub nie wie się, co się robi. |
|
Mateus. |
» 2014-07-27 15:39:30 Moim zdaniem, gdy ktoś pisze w miejscu gdzie ma być warunek operacje przypisania, to kompilator powinien "delikatnie poinformować" o tym, że być może nie o to programiście chodziło. Nie każdy ma takie doświadczenie jak ty i zawsze łatwiej dodać te klamry, gdy nam w danej linijce wyświetli błąd niż zastanawiać się dlaczego program działa, ale nie tak jak chcemy. Poza tym gdzie napisałem, że ten kod jest niepoprawny? Napisałem jedynie, że jego kompilator jest za mało troskliwy (moim zdaniem). |
|
pekfos |
» 2014-07-27 16:16:23 zawsze łatwiej dodać te klamry, gdy nam w danej linijce wyświetli błąd niż zastanawiać się dlaczego program działa, ale nie tak jak chcemy. Poza tym gdzie napisałem, że ten kod jest niepoprawny? |
Jeśli wywala błąd, to nad czym się zastanawiać..? Gdzie napisałeś, że kod jest niepoprawny? W obu postach, pisząc o błędach i 'niepozwalaniu na coś' - to jednoznacznie wskazuje na niepoprawny kod i możesz wprowadzać przez to w błąd. Tu będzie najwyżej ostrzeżenie i to w stylu 'ej stary, na pewno..?', niż faktycznie wskazujące na pomniejszy błąd w kodzie. |
|
Mateus. |
» 2014-07-27 18:34:12 No dobra, muszę uważać jak piszę. Myślę o ostrzeżeniu (np. czy napewno tego chcesz?), a piszę o błędzie. Ja mimo wszystko wolałbym kompilator, który mnie o takim czymś powiadomi. |
|
Elaine |
» 2014-07-27 19:49:22 Dlatego każdy szanujący się kompilator to robi, wystarczy go o to ładnie poprosić. |
|
« 1 » 2 |