![]() |
|
Модераторы: bsa |
![]()
|
|
| Killer_13 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Здрастуйте, уже замусорил форум своим одвечным вопросом проверки на unsigned int! Но вот может в конце концов кто нить помочь, подсказать? Заранее благодарен
Так вот есть задача определения високосного года, функция должна возвращать значение в промежутке от щ до UINT_MAX
вот этот кусочек, немогу доделать и все. :(
нужно чтоб значение переменной d было всегда в диапазоне от 0 до UINT_MAX иначе выдать сообщение, и запросить еще раз ввести значение. Надеюсь, что кто то подскажет как, и это будет мое последнее сообщение о unsigned int |
||||
|
|||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
_atoi64 вернёт 64-битное число, младшие 32 бита - твоё unsigned int
Это сообщение отредактировал(а) Cheloveck - 5.5.2009, 21:07 -------------------- ![]() |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Cheloveck,
|
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
zim22, во ты шустрый, я ступил, не успел исправить, а ты уж тут как тут)))
-------------------- ![]() |
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
Господа, а если к примеру в стринг будет введено максимальное число unsigned int - 4294967295
тогда функция atoi - неправильно отобразит заданное значение, поскольку она возвращает значение int. если я например набираю какое то 9 значное число, оно мне не выдает ошибку, оно пишет 2147483648 не високосный год мне же нужно, чтоб действительно проверялось и печатался мой принтф, что значение оч длинное |
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
Killer_13,
а что atol() не работает? |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
| Killer_13 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
прошу понять меня правильно, то что я спрашиваю.
добавляю скрин. Почему мне выдает эту строчку
при вводе значения 42949672956 вместо
А эт как? Подскажите, если поможет при решении моего вопроса. :( Это сообщение отредактировал(а) Killer_13 - 5.5.2009, 21:43 Присоединённый файл ( Кол-во скачиваний: 8 )
11.jpg 46,41 Kb |
||||||
|
|||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
потому что, если число не соответствует диапазону значений, то оно преобразуется так, чтобы соответствовало. |
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
а мне нужно чтоб выдавало мой принтф если число не соответствует. :(:(:(
|
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
а так, что т.к. число должно быть в диапазоне [0, UINT_MAX], то следовательно на строку накладываются ограничения: 1) строка должна состоять только из цифр (буквы, знаки, символы пунктуации не допускаются) 2) размер строки должен быть не больше, чем количество десятичных разрядов числа UINT_MAX Размер по формуле считается
3) всякие разные другие проверки. Возможно есть способ попроще |
||||
|
|||||
| Killer_13 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
в программе это все уже учтено
здесь - длина строки не больше 10, за вашей формулой именно столько и выдалось
здесь позволяет вводить только цифры
А вот почему не работает, почему не печатается принтф из этого условия??????? вот, мой основной вопрос, и почему не проверяется диапазоном?
|
||||||
|
|||||||
| Killer_13 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
я вижу, что делаю не правильно, число d типа unsigned int проверяю в его же диапазоне.
ну а если сделать вот так.
почему не печатается
а печатается
|
||||||
|
|||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Killer_13, держи
Это сообщение отредактировал(а) zim22 - 6.5.2009, 07:36 |
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: 1 Всего: 1 |
соответственно это не проходит, нужно все стандартным вариантом делать. А вообще будет проверяться на машинах, где стоит Solaris, и ХЗ как он отреагирует. вот, в итоге компиляции
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |