Гость Опубликовано 16 ноября, 2001 Жалоба Поделиться Опубликовано 16 ноября, 2001 Подскажите плиз, где грабли: #include #include #include int main() { int pl, p1, p2, v, *m; srand(time(NULL)); cin>>pl; m = new int[pl]; for(int i=0; i<=pl; i++) { m=; } for(int i1=1; i1<=pl; i1++) { v = 1 + rand() % (pl - i1 + 1); p1 = m[v]; m[v] = m[p1 - i1 + 1]; v = 1 + rand() % (pl - i1); p2 = m[v]; m[v] = m[pl - i1]; cout< } return 0; } Если закомментировать строчки с получением случайного числа то работает. А вот под винду такой код катит. Тут же пробовал и под линухом и под фрю - результат Floating point expection Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 16 ноября, 2001 Жалоба Поделиться Опубликовано 16 ноября, 2001 Подскажите плиз, где грабли: #include #include #include int main() { int pl, p1, p2, v, *m; srand(time(NULL)); cin>>pl; m = new int[pl]; for(int i=0; i<=pl; i++) { m=; } for(int i1=1; i1<=pl; i1++) { v = 1 + rand() % (pl - i1 + 1); p1 = m[v]; m[v] = m[p1 - i1 + 1]; v = 1 + rand() % (pl - i1); p2 = m[v]; m[v] = m[pl - i1]; cout< } return 0; } Если закомментировать строчки с получением случайного числа то работает. А вот под винду такой код катит. Тут же пробовал и под линухом и под фрю - результат Floating point expection Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2001 Жалоба Поделиться Опубликовано 19 ноября, 2001 ne vdavayas' v podrobnosti est' takoe soobrazenie: stroka v = 1 + rand() % (pl - i1 + 1); poheritsya (nachent delit' na nol) v sluchae kogda i1 = 1 + p1; toze same proizoidet s v = 1 + rand() % (pl - i1) ; kogda pl == i1 .... kak vidno iz zagolovka zikla "i1 <=pl" takoe vpolne vozmozno. pochemu windows delit na nol i schastliv skazat' mozno. esli ya pravil'no ponimayu ANSI v takih sluchayah a % 0 razreshaet delat' shto ugodno. eze odno zoobrazenie pochemu time(NULL)??? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2001 Жалоба Поделиться Опубликовано 19 ноября, 2001 ne vdavayas' v podrobnosti est' takoe soobrazenie: stroka v = 1 + rand() % (pl - i1 + 1); poheritsya (nachent delit' na nol) v sluchae kogda i1 = 1 + p1; toze same proizoidet s v = 1 + rand() % (pl - i1) ; kogda pl == i1 .... kak vidno iz zagolovka zikla "i1 <=pl" takoe vpolne vozmozno. pochemu windows delit na nol i schastliv skazat' mozno. esli ya pravil'no ponimayu ANSI v takih sluchayah a % 0 razreshaet delat' shto ugodno. eze odno zoobrazenie pochemu time(NULL)??? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 20 ноября, 2001 Жалоба Поделиться Опубликовано 20 ноября, 2001 1) m = new int[pl]; // почему просто pl, а не pl+1? 2) m=; // m=i - так наверное? 3) v = 1 + rand() % (pl - i1); //здесь, как сказал kaboom, % на 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 20 ноября, 2001 Жалоба Поделиться Опубликовано 20 ноября, 2001 1) m = new int[pl]; // почему просто pl, а не pl+1? 2) m=; // m=i - так наверное? 3) v = 1 + rand() % (pl - i1); //здесь, как сказал kaboom, % на 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 ноября, 2001 Жалоба Поделиться Опубликовано 21 ноября, 2001 Всем пасиба. Изменил код на: (и заработало) #include #include #include //#include int main() { int pl, p1, p2, v, c=0; int *m; bool b=false; srand(time(NULL)); do{ cout<<"Vvedite kol-vo igrokov:"; cin>>pl; switch(pl) {case 4: case 8: case 16: case 32: case 64: b=true; break; default: b=false; cout<<"Igrokov mojet biti 4, 8, 16, 32, 64."; break; } }while(b == false); m = new int[pl+1]; for(int i1 = 0; i1<=pl; i1++) { m[i1]=i1; } for(int i = 1; i<=pl; i+=2) { c++; v = 1 + rand() % (pl - i) + 1; p1 = m[v]; m[v] = m[(pl - i)+ 1]; v = 1 + rand() % (pl - i); p2 = m[v]; m[v] = m[pl - i]; cout< // if((c % 16) == 0) // { // cout<<"Press any key to continue"< // } } return 0; } Но опять же под виндой все работает как есть, а под фрю пришлось закомментировать строки (см. выше) так как пишет что файл не найден. Мож кто знает, в чем дело? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 ноября, 2001 Жалоба Поделиться Опубликовано 21 ноября, 2001 Всем пасиба. Изменил код на: (и заработало) #include #include #include //#include int main() { int pl, p1, p2, v, c=0; int *m; bool b=false; srand(time(NULL)); do{ cout<<"Vvedite kol-vo igrokov:"; cin>>pl; switch(pl) {case 4: case 8: case 16: case 32: case 64: b=true; break; default: b=false; cout<<"Igrokov mojet biti 4, 8, 16, 32, 64."; break; } }while(b == false); m = new int[pl+1]; for(int i1 = 0; i1<=pl; i1++) { m[i1]=i1; } for(int i = 1; i<=pl; i+=2) { c++; v = 1 + rand() % (pl - i) + 1; p1 = m[v]; m[v] = m[(pl - i)+ 1]; v = 1 + rand() % (pl - i); p2 = m[v]; m[v] = m[pl - i]; cout< // if((c % 16) == 0) // { // cout<<"Press any key to continue"< // } } return 0; } Но опять же под виндой все работает как есть, а под фрю пришлось закомментировать строки (см. выше) так как пишет что файл не найден. Мож кто знает, в чем дело? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 ноября, 2001 Жалоба Поделиться Опубликовано 21 ноября, 2001 a vot na etoi ze stranize conferenzii kto-to uze psrashival kak realizovat' pod linux. nikto ne znaet. ya po-pravde skazet' pervii raz slishi pro . podozrevayu shto chem-to pohoze na ncurses. ya bi skorei vsego ponapisal kuchu #ifdef WIN i #ifdef BSD i ispol'zoval bi ili sootvetstvenno. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 ноября, 2001 Жалоба Поделиться Опубликовано 21 ноября, 2001 a vot na etoi ze stranize conferenzii kto-to uze psrashival kak realizovat' pod linux. nikto ne znaet. ya po-pravde skazet' pervii raz slishi pro . podozrevayu shto chem-to pohoze na ncurses. ya bi skorei vsego ponapisal kuchu #ifdef WIN i #ifdef BSD i ispol'zoval bi ili sootvetstvenno. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 23 ноября, 2001 Жалоба Поделиться Опубликовано 23 ноября, 2001 или делай #include , или юзай getchar(); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 23 ноября, 2001 Жалоба Поделиться Опубликовано 23 ноября, 2001 или делай #include , или юзай getchar(); Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 25 ноября, 2001 Жалоба Поделиться Опубликовано 25 ноября, 2001 Пасибо! getchar() сработало! Вопросец по ходу: а че нет единой ANSII спецификации на С++ что под линух, что под виндозу? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 25 ноября, 2001 Жалоба Поделиться Опубликовано 25 ноября, 2001 Пасибо! getchar() сработало! Вопросец по ходу: а че нет единой ANSII спецификации на С++ что под линух, что под виндозу? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.