| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Поясните смысл кода |
| Автор: Kruger2 21.6.2011, 10:54 | ||||||
Тут непонятно.
Если n = случайное число в пределах от 2 до 10 и деление по модулю на 2 я так понимаю, что это действие указывает, что нужны только четные числf, однако я раньше писал что то вроде:
Я вижу действие % 2 незакончнным будто нужно ещё ==0 добавить. Также не совсем понятно, что дает ++n. Добавлено через 14 минут и 35 секунд % 2 означает наверное, что данное условие должно делиться на 2 без остатка. ++n получается пробегает по числам в заданном пределе. т.е .между числами 2, 4, 6, 8, 10. Но без цикла for мне это кажется фигнёй какой то |
| Автор: asmdzen 21.6.2011, 11:14 |
если n получается нечетное - возвращается n+1 в противном случае просто n. |
| Автор: Kruger2 21.6.2011, 11:18 | ||
т.е. читать можно так? |
| Автор: borisbn 21.6.2011, 11:20 |
вот тогда будет проверка на чётность, а в приведённом коде - на нечётность, т.е. что рез-т остатка от деления не равен 0 оба return'а возвращают чётные числа. от 2 до 9, т.к. n % 8 == 0...7, а +2 == 2 до 9 |
| Автор: xvr 21.6.2011, 11:21 |
| rand() % 8 - Возвращает остаток от деления случайного числа на 8, т.е. число в диапазоне 0-7 n = rand() % 8 + 2 - В n присваивается случайное число в диапазоне 2-9 if ( n %2) - Проверяет, что остаток от деления n на 2 не равен нулю, т.е. n нечетное return ++n; - Возвращает увеличенное на 1 n, т.е. число становится четным |
| Автор: Kruger2 21.6.2011, 11:39 | ||||
Если я правильно понял, то эта запись эквивалентна этой:
Так ли это? Добавлено @ 11:40 Компилятор вроде подтверждает мои догадки |
| Автор: asmdzen 21.6.2011, 11:45 |
| Kruger2, if(23) то же самое что if(true) то же самое что if((n = 3) != 0) и if(n = 3). то есть если условие не равно нулю то выполняется код if. return ++n; можно написать и как return n + 1; что будет правильней IMHO. у вас просто код запутан немного, писать было бы правильней как xvr показал. |
| Автор: xvr 21.6.2011, 11:57 | ||
| Я бы прилагательное 'немного' сюда не применял Совсем правильно было бы написать
|
| Автор: Kruger2 21.6.2011, 11:59 | ||||
| тест Добавлено @ 12:03
Краткость сестра таланта Добавлено @ 12:05 Хотя мне тут функция тогда нафик не нужна
Добавлено через 9 минут и 15 секунд Спасибо за помощь. xvr + в репу от меня поставьте пожалуйста. asmdzen borisbn тоже по плюсику за помощь, если кто может поставить |
| Автор: borisbn 21.6.2011, 12:44 |
поставил. я б оставил. запись какая-то монстрообразная. как-то покрасивше будет. имхо |
| Автор: Kruger2 21.6.2011, 14:18 | ||
| Блин, по аналогии пример теперь не могу решить Значит мне нужно четное число, но с шагом 4. Деление тут не подходит и я не вижу какую закономерность прописать пытаюсь применить деление с остатком, как в прошлом примере, но судя по всему тут нужно что то другое:
Как задать зависимость? |
| Автор: borisbn 21.6.2011, 14:40 | ||
|
| Автор: Kruger2 21.6.2011, 15:17 |
| borisbn, Ух ты, красота, спасибо. А если переменные не задавать как константы, то ничего не меняется. Вопрос, для чего определили переменные как константы? Я подозреваю, что причина должна быть Борису + в репу от меня поставьте пожалуйста Добавлено через 4 минуты и 24 секунды Такая формула кажется совершенно нелогичной мне. Любое число * на шаг+ первое число всё таки получается как и надо. Но кажись моей сноровки не хватает, что бы самому до такого дотюкать. Может стоит что то дополнительно почитать, что бы научиться такие формулы создавать?) |
| Автор: xvr 21.6.2011, 19:30 |
Поставил |