IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

3 страниц V < 1 2 3 >  
Closed Topic Открыть новую тему 
> проверка типа переменной
BRS
сообщение 13.09.2004 16:54
Сообщение #21


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


а можно всетаки про функцию подробнее?
че то не получаеться
вопервых ругаеться на ГетКей, а во вторых - как ее правильно в прогу сунуть?


Это ко мне вопрос что-ли?
Хех, ты вункцию ГетКей не всунешь в начало, чтобы она все время работала smile.gif , ето не ризидент :D
Олег_Зет


Сообщение отредактировано: Oleg_Z - 13.09.2004 17:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 17:13
Сообщение #22


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Код
Function GetKey : Char;
 Var Ch : Char;
 Begin
   Repeat
     Ch:=ReadKey;
   Until ((Ch>'0') and (Ch<'9')) or (Ch=#13);
   GetKey:=Ch;
 End;


А как бы это слегка усовершенствовать?
Тут пока один недостаток... Ввожу я abc - не вводиться, но если попробовать 1abc - все вводиться...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.09.2004 17:20
Сообщение #23


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Послушай, BRS, эта функция никакого не дает преимущества перед использованием строки:
Код

var
s:string;
begin
readln(s);
....

и дальнейшей ее обработки. Эта функция не резидент, и резидента из нее не сделаешь!
Ты условие смотри четко! Не может быть, что бы тебе дали такое условие (блокировать нажатия клавиш) это настолько сложно, что по памяти я (модератор = ведущий разговора, то есть знающий предметную обоасть разговора) даже не могу написать, обязательно посмотрю в справочник по асму!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 17:25
Сообщение #24


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


я просто думал что подобное ограничение ввода - тоже может быть выходом.
ОК - усе понял - пока в такой вариант событий не полезу )))

Вот то, что "пока" сказал, за это уважаю!
Быть тебе знатоком Паса!
:p4:
:p1:

ПАСЫБА ))) :p1: :p2: :p5:

Сообщение отредактировано: BRS - 13.09.2004 17:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 17:34
Сообщение #25


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Раскажите мне кто нибудь подробнее про работу со строкой, плз...

Сообщение отредактировано: BRS - 13.09.2004 17:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.09.2004 17:37
Сообщение #26


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


А ФАК я для кого писал????
(ООО, прошу прощения, FAQ, то есть ЧаВо) lol.gif
http://pascal.dax.ru/forum/index.php?showtopic=2361


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 17:39
Сообщение #27


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Понял ) исправлюсъ, куда послали туда и отпавлюсь :D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 13.09.2004 17:42
Сообщение #28


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Тот пример функции, который я привел для примера - действительно не ризидент :D
Это пример того, что можно заменить READKEY на свою функцию для фильтрации.
Еще раз говорю - пример! Далее размышляй, домысливай - используй...
rolleyes.gif

А я смотрю сначала, странный резидент... как задание центра выполнять будет не соображу... lol.gif

Сообщение отредактировано: Oleg_Z - 13.09.2004 17:44


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 18:19
Сообщение #29


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Блин я запутался

Цитата
Для ввода использовать строковую переменную.
Затем после ввода перебрать в цикле все символы введенной строки. Если среди них встретилось что-то, кроме цифр 0-9, значит, повторить ввод. Если ничего левого нет, тогда преобразуем строку в целое число с помощью процедуры Val (параметры наизусть не помню).


может кто нить мне пример проги в которой так строка обрабатываеться кинуть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 13.09.2004 18:24
Сообщение #30


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Код
Function CheckNum(St : String) : Boolean;
Var i : Byte;
Begin
CheckNum:=True;
For i:=1 to Length(St) do
 If (St[i]<'0') or (St[i]>'9') then
 Begin
    CheckNum:=False;
    Exit;
 End;
End;


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 18:54
Сообщение #31


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Всем агромное спасибо ) теперь знаю немного больше ) Ура! )

Сообщение отредактировано: BRS - 13.09.2004 18:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 13.09.2004 19:12
Сообщение #32


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


спасиба - не булькает :D


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 13.09.2004 20:29
Сообщение #33


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


О! У мня еще вопрос по функции Val появился
Val(Chr, i, code) - что есть такое code??????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 13.09.2004 20:33
Сообщение #34


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


А не проще ли
Код
var str:string;
     value,code:integer;
begin
repeat
readln(str);
val (str,value,code);
until code=0;
end.

Поясню - val "возвращает" в code типа errorlevel`а и если он не 0 то в строке есть НЕ цифры.

зы: программа скорее всего работать не будет :D , но идея, я думаю, ясна


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BRS
сообщение 14.09.2004 6:17
Сообщение #35


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


даже насколько я понял несколько больше - еще если число привосходит допустимые рамки
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 14.09.2004 6:47
Сообщение #36


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
если число привосходит допустимые рамки

Именно! :p5:

А хороший у тебя аватар, далеко пойдешь smile.gif
Вот тебе еще

(я этот шедевр стащил с школьного компа в прошлом году, а точнее с компа директора школы, гыыыы.... ух, что там еще было .... lol.gif (ну доки всякие сов. секкр.) )

Сообщение отредактировано: Oleg_Z - 14.09.2004 7:02


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Werwolf86
сообщение 14.09.2004 7:20
Сообщение #37


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


Цитата(Guest @ 13.09.04 14:32)
а как зделать чтоб процедура работала всю программу?
чтобы походу работы проги нажатие других клавиш не давало результата?

А смысл? Не проще сделать контроль ввода кейсом? и Все...действие только при нажатиии нужной клавиши))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Werwolf86
сообщение 14.09.2004 7:50
Сообщение #38


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской

Репутация: -  0  +


например контроль ввода real:

Код
procedure Inputreal(n_pos:byte;lo,hi:real; var res:real);
var S:string;
     ErrCode:Integer;
     Ch:char;
     flag:boolean;
begin
  repeat
     flag:=false;
     s:='';
     repeat
         ch:=readkey;
         Case ch of
             Bs: if length(S)>0 then Delete(S,length(S),1);
             Enter: if length(S)>0 then flag:=true;
             '0'..'9','.':if length(S)<n_pos then S:=S+ch;
         end;
         gotoxy(1,1);
         clreol;
         write(S);
      until flag;
      val (s,res,errcode);
   until (errcode=0) and (res<=hi) and (res>=lo)
end;

Не забываем заключать код в соответствующие теги!

Сообщение отредактировано: APAL - 14.09.2004 12:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 14.09.2004 8:18
Сообщение #39


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Код
function getinteger(min,max:integer):integer;
var value,code:integer;
    str:string;
begin
 repeat
  readln(str);
  val(str,value,code);
 until (code=0) and ((value>=min) and (value <=max));
 getinteger:=value;
end;


вот так и рамки мона задать


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 14.09.2004 19:44
Сообщение #40


Гость






Цитата
То есть сложный, потому что нажатия CTRL+ALT+DEL только я могу заблокировать 
(может еще кто может? )

Нашёл чем удивить smile.gif
 К началу страницы 
+ Ответить 

3 страниц V < 1 2 3 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.11.2025 13:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"