Пожалуйста, очень прошу помощи. Я верю в умных людей.

Определить, являются ли введеные с клавиатуры символы правильной записью целого числа, и вычислить сумму цифр введенного числа. Ввод заканчивается точкой.

Я совсем уже запуталась. Ничего не получается. Буду благодарна, если мне кто-нибудь поможет.

@темы: Вопрос, Pascal

Комментарии
08.09.2012 в 22:53

Православные красные звёзды над Кремлём канонично горят ©
В чём именно у Вас проблема, не получается считать с клавиатуры или разобрать получившуюся строку?
09.09.2012 в 01:19

Жизнь прекрасна!
По условию задачи имеем, что правильная запись числа будет состоять только из цифр и заканчиваться точкой, т.е. все остальные знаки нам уже сразу дают неправильную запись. Итого алгоритм простой - считывать каждый символ и проверять его, является ли он символом цифры или нет. Если является, то из символа цифры вычисляем само значение цифры и прибавяем к будущей сумме. Иначе, если встретили любой иной символ, сообщаем, что запись неверна и выходим из программы. И так выполнять проверку до тех пор, пока символ не будет точкой.


09.09.2012 в 16:50

SpiritOK да как-то сложно объяснить х)
Elijah.Ulesko а разве там не нужна логическая переменная?
но спасибо, большое спасибо ._.
09.09.2012 в 17:04

Жизнь прекрасна!
Lorem Solis, можно добавить переменную, если так удобнее =)
Насчёт решения постараюсь чуточку проще. У нас есть 3 типа важных для нас символов: цифры, точка и всё остальное. Если мы вводим только первые 2 типа символов, то у нас могут быть 2 результата:
1). Мы вводим правильное число, согласно всем условиям. Допустим: "123.". Итого мы должны получить сумму, равную шести.
2). Мы вводим правильное число, ставим точку, и пишем ещё одно число. Допусти, так: "123.123". В данном случае мы читаем цифры до точки и останавливаемся, т.к. данные после точки нам уже не нужны, ибо это есть окончание ввода.

Если же мы будем использовать другие символы, то мы всяко не получим нормальную запись числа. Как пример, могут быть такие данные: "123q.", "0l0l0.", "это число =)." - все они будут ошибкой для нас. Поэтому, еслимы при считывании последовательности символов внезапно натыкаемся на любой другой символ, отличной от точки или цифр, то можем со спокойной совестью выходить из программы, т.к. дальше уже считывать смысла нет - ошибка уже есть.

Согласно всем этим мыслям и получаем алгоритм, который описан выше.
09.09.2012 в 17:30

фух. все мысли воедино, и я все поняла! спасибо :beg:
вы очень помогли. меня так позорно заглючило что-то..
очень-очень-очень благодарна :inlove:
09.09.2012 в 17:36

Жизнь прекрасна!
Lorem Solis, рад, что смог помочь ^_^
А насчёт "позорно заглючило" - в этом ничего позорного нет. Когда изучаешь что-то новое, нередки случаи, когда решение не сразу понятно.