![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Lauri |
![]()
Сообщение
#1
|
Гость ![]() |
Люди, помогите плиз, скажите - как обозначить формат вводимых данных? (мне надо сделать так, чтобы можно было ввести только цифры, а при введении букв выводилось сообщение об ошибке) может надо использовать a:string, а потом работать со строкой? или case? Вот моя программа (для перевода чисел из десятичной системы в троично-симметричную)...
|
![]() ![]() |
Shura |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 136 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
А вот, если что, процедура, которая осуществляет ввод значения (от -999999999 до 999999999) в глобальную переменную, и не дает пользователю даже ввести некорректные данные. Требует модуль Crt (используется функция ReadKey).
Код Program Vvod; Uses Crt; Var a: LongInt; Procedure GetNumber(var a: LongInt); var s: String; ch: Char; error: Integer; begin s:=''; repeat ch:=ReadKey; case ord(ch) of 45: if s = '' then begin s:='-'; Write('-') end; 48..57: if (length(s) - Pos('-',s) < 9) then begin s:=s+ch; Write(ch) end; 8: begin GotoXY(WhereX-1,WhereY); Write(' '); GotoXY(WhereX-1,WhereY); Delete(s,length(s),1) end end {case} until (ch = #13); Val(s,a,error) end; {****************************************************************************} Begin ClrScr; GetNumber(a); WriteLn; WriteLn('Vvedeno chislo: ', a); ReadLn End. -------------------- Старайтесь восполнять пробелы в области незнания! ;-D
|
Lauri |
![]() ![]()
Сообщение
#3
|
Гость ![]() |
Но как же совместить эту процедуру с моей программой?.. Мои попытки заканчивались тем, что введя цифры, получалась пустая строка, а далее - обычный ход программы...
А вариант, предложенный Volvo работает у меня некорректно, я грешу на то, что используется repeаt внутри repeat... А вот если так, к примеру: Код writeln ('Введите число'); readln (a); readln (s); или writeln ('Введите число'); readln (a,s); Так вообще можно делать? Первый вариант - получается что сначала считывается a, а потом только b, а мне надо так, чтобы ОДНО число проверялось и оно же считалось... Помоги, пожалуйста, для меня это очень важно, вопрос буквально жизни и смерти! З.Ы. Тока не смейтесь плиззз, да, я ламер в этом деле... надеюсь что в скором будущем перестану им ыть ![]() |
![]() ![]() |
![]() |
Текстовая версия | 9.10.2025 7:44 |