Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2010, 12:58   #1
DeEgo
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
По умолчанию Сравнение символов

Дан алфавит и какое то слово. Нужно проверить не содержит ли это слово "левых" символов, т.е. символов не из этого алфавита..

переменные объявлены как символьные константы символьного типа Alph, text1: string;

Цитата:
for i := 1 to lend do //lend- длина слова
begin
for k := 1 to dl do //dl- длина алфавита
begin
if text1[i]<>alph[k] then
begin
application.MessageBox('Корректно введите текст!','Ошибка', MB_OK);
exit;
end;
end;
end;
самое интересное что если знак поменять на равно то программа работает правильно только наоборот..=) помогите пожалуйста а то я уже замучился..

У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор

Последний раз редактировалось mihali4; 12.03.2010 в 14:46.
DeEgo вне форума Ответить с цитированием
Старый 12.03.2010, 13:05   #2
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Не проще ли взять числовые значение символов и проверять лежит ли текущий символ в интервале?
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 12.03.2010, 13:56   #3
DeEgo
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 12
По умолчанию

возможно и проще.. а как это сделать?=))
DeEgo вне форума Ответить с цитированием
Старый 12.03.2010, 14:01   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Если твой алфавит похож на некоторую последовательность, то можно так :
Код:
  s := 'строка для проверки';
  a:=0;
  for i:= 1 to Length(s) do 
     if not (s[i] in ['А'..'Я','0'..'9']) then Inc(a);
  if a > 0 then ShowMessage('В строке есть недопустимые символы !');
Надеюсь направление понятно ...

Еще:
Как вариант ...
Код:
const
  alf:array[1..3] of char = ('a','b','c');
...
...
...
  for i:= 1 to Length(s) do if not (s[i] in [alf[1]..alf[3]]) then
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 12.03.2010 в 14:22.
Kotofff вне форума Ответить с цитированием
Старый 12.03.2010, 14:03   #5
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

DeEgo, так как написал Kotofff, так даже проще будет.
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 12.03.2010, 15:14   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

сто неправильно
Код:
or i := 1 to lend do //lend- длина слова
begin
for k := 1 to dl do //dl- длина алфавита
begin
if text1[i]<>alph[k] then  // сравниваем символ с первым в списке ероятнее всего он не такой НО у нас ЕСТЬ еще другие 
begin // а мы сразу БА-БАХ
application.MessageBox('Корректно введите текст!','Ошибка', MB_OK);
exit;
end;
end;
end;
и как можно исправить
Код:
or i := 1 to lend do //lend- длина слова
begin
r:=0;
for k := 1 to dl do //dl- длина алфавита
begin
if text1[i]=alph[k] then r:=к+!1;//считаем сколько мы нашли таких символов в нашем алфавите 
end; // в конце цикла r=0 таких нет r>0 есть 
// и вот теперь 
if r=0 then begin
application.MessageBox('Корректно введите текст!','Ошибка', MB_OK);
exit;
end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение в паскаль Asicks Помощь студентам 10 02.01.2010 18:55
Сравнение данных GX_h10 SQL, базы данных 1 29.12.2009 12:49
сравнение с заполненеим. wildvad Microsoft Office Excel 8 01.10.2009 22:04
Сравнение времени POX Общие вопросы Delphi 10 01.07.2009 08:27