![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.06.2010
Сообщений: 13
|
![]()
Добрый вечер, я совсем новичок, задание сделала не пойму в чем ошибка. Пользователь вводит с клавиатуры число - программа должна
показать сколько в данном числе цифр. Число вводится целиком в одну переменную. Если ввести число, в котором больше 10 цифр пишет = 0. ![]() Код:
|
![]() |
![]() |
![]() |
#2 |
Я ещё только учусь
Форумчанин
Регистрация: 06.05.2009
Сообщений: 158
|
![]()
При деление числа на 10 никак не может получиться отрицательное число или = 0, а в условие цикла стоит делать пока а>0 следовательно происходит зацикливание
![]() |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Как раз наоборот, не происходит ни одной итерации цикла. Когда вы, Inna_L, вводите столь большое число, происходит так называемое "переполнение". Дело в том, что в 32-х битных ОС int обычно длиной в 4 байта, один бит на знак, таким образом максимальное число, которое можно закодировать оставшимися битами является два с лишним миллиарда(а минимальное минус два с лишним миллиарда). При превышении этого числа происходит переполнение и число становится отрицательным, а в условии цикла условие на "больше нуля". То есть во-первых, не вводите такие длинные числа, а во-вторых, неплохо бы в цикле делать проверку на ноль, а не на больше нуля, это будет работать, так как int - целочисленный тип, дробей в нём не бывает. То есть, например, так:
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с заданием аргументов функции по умолчанию | LMnet | Помощь студентам | 4 | 15.01.2010 17:59 |
Проблема с заданием условий. Помогите пожалуйста. | lubov09 | Microsoft Office Excel | 7 | 04.11.2009 13:55 |
помогите с заданием | klepan | Общие вопросы C/C++ | 2 | 26.06.2009 12:32 |