![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Lauri |
![]()
Сообщение
#1
|
Гость ![]() |
Люди, помогите плиз, скажите - как обозначить формат вводимых данных? (мне надо сделать так, чтобы можно было ввести только цифры, а при введении букв выводилось сообщение об ошибке) может надо использовать a:string, а потом работать со строкой? или case? Вот моя программа (для перевода чисел из десятичной системы в троично-симметричную)...
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата А вариант, предложенный Volvo работает у меня некорректно Полностью ВСЮ свою программу приведи (не кусками, а всю)... И заодно, те данные которые ты вводишь, и ЧТО ТЫ ХОЧЕШЬ ПОЛУЧИТЬ... Сказать "не получается" или "некорректно" очень просто, ты ДОКАЖИ, что это действительно некорректно... |
Lauri |
![]()
Сообщение
#3
|
Гость ![]() |
Код Program perevod; uses crt; var a,err:integer; d,i:byte; mas:array [0..10] of shortint; ok,f,g:boolean; s:string; k:longint; Begin clrscr; repeat writeln ('Vvedite chislo: Exit - press 0'); readln (s); ok:=(ioresult=0); val (s,k,err); ok:= ok and (err=0) and (length(s)<11) and ((k>=-99999999) and (k<=9999999)); if not ok then writeln ('error!!!'); until ok; repeat readln(a); if (a<0) then g:=false else g:=true; d:=0; if (a=0) then halt; repeat i:=0; dec(a); repeat f:=true; inc(mas[i]); if (mas[i]=2) then begin mas[i]:=-1; inc(i); if (d<i) then d:=i; f:=false; end; until f; until (a=0); for i:=d downto 0 do begin if g then write(mas[i]) else write(-mas[i]); mas[i]:=0; end; writeln; until (1<>1); end. Вот так, как я понял... но первый цикл кончается и начинается следующий, который уже выполняет дальнейшие действия (readln(a) - считывается уже другое число, а не то, которое проверялось)... Ввожу "45" - пустая строка, ввожу 45 - 1-1-100 ... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 23:29 |