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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.06.2009, 18:39   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Печаль Гласные и согласные буквы

Можно ли как-нибудь написать код, чтобы программа различала гласные и согласные буквы? Возможно ли это вообще?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 22.06.2009, 18:44   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

А что надо делать с гласными или согласными буквами? выводить в массив? или снова в StringGrid?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума
Старый 22.06.2009, 19:24   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
begin
if edit1.Text[2] in ['Б','б','В','в','Г','г','Д','д','Ё','ё','Ж'
     ,'ж','З','з','Й','й','К','к','Л','л','М','м','Н'
     ,'н','П','п','Р','р','С','с','Т','т','Ф'
     ,'ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ'] then ShowMessage('2 символ согласная');
if edit1.Text[2] in ['А','а','Е','е','И','и','О','о','У','у','Ы','ы'
     	,'Ь','ь','Э','э','Ю','ю','Я','я'] then ShowMessage('2 символ гласная');
if edit1.Text[2] in ['0'..'9'] then ShowMessage('2 символ цифра');
if edit1.Text[2] in ['a'..'z','A'..'Z'] then ShowMessage('2 символ буква латиницы')
end;
както так, можно массивы создать с ними сверять ни или ещё както

ЗЫ только буквы посмотри лень фильтровать внимательно было может какие не туда попали
vovk вне форума
Старый 22.06.2009, 19:34   #4
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Можно перевести текст из edit1.text в AnsiUpperCase, и тогда проверка станет меньше.
╓-----┴-----╜
mFlat
mflat вне форума
Старый 22.06.2009, 19:35   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от Neeter
А что надо делать с гласными или согласными буквами? выводить в массив? или снова в StringGrid?
Да, в StringGrid. Помните ту тему, где я спрашивал про номера и буквы? . В этот раз нужно разрешить задачу следующего рода: номера должны браться только либо для гласных букв, либо только для согласных. Например, если введено слово "Иван", то номера должны быть только для букв "И" и "А". Для согласных номера заноситься не должны.
P.S. Вы не подумайте, эти задачи я не для какого-нибудь зачета спрашиваю. Нет! Просто работаю над сложным проектом, во время работы над которым и приходится разбираться с такими вопросами.
Код:
begin
if edit1.Text[2] in ['Б','б','В','в','Г','г','Д','д','Ё','ё','Ж'
     ,'ж','З','з','Й','й','К','к','Л','л','М','м','Н'
     ,'н','П','п','Р','р','С','с','Т','т','Ф'
     ,'ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ'] then ShowMessage('2 символ согласная');
if edit1.Text[2] in ['А','а','Е','е','И','и','О','о','У','у','Ы','ы'
     	,'Ь','ь','Э','э','Ю','ю','Я','я'] then ShowMessage('2 символ гласная');
if edit1.Text[2] in ['0'..'9'] then ShowMessage('2 символ цифра');
if edit1.Text[2] in ['a'..'z','A'..'Z'] then ShowMessage('2 символ буква латиницы')
end;
Код интересный, но, к сожалению, для моей задачи он не пойдет . Все равно спасибо)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 22.06.2009, 19:41   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

А почему не подойдёт? Можно при вводе смотреть можно потом проверять? может объясните подробнее при каких действиях, что должно происходить и подумаем как приспособить.
Никаких втсроенных функций по этому поводу нет, так что проверять всё равно придётся..

Последний раз редактировалось vovk; 22.06.2009 в 19:44.
vovk вне форума
Старый 22.06.2009, 19:59   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Уважаемый, vovk посмотрите здесь http://programmersforum.ru/showpost....4&postcount=13. Я в той теме объяснял, что мне нужно. Только к той теме уже задание немного другое добавилось. В том посте код нужно просто дополнить какой-то правильной процедурой.
P.S. Ссылку дал во избежании кросспоста и чтобы не повторяться в темах.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 22.06.2009, 20:53   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

ну если правильно понял то просто ещё 1 условие же добавится
можно просто функцию добавить, чтото вроде
Код:
Function check_Sm(Sm:AnsiChar;v:Boolean=true):boolean;
begin
Result:=false;
if v and (sm in ['Б','б','В','в','Г','г','Д','д','Ё','ё','Ж'
     ,'ж','З','з','Й','й','К','к','Л','л','М','м','Н'
     ,'н','П','п','Р','р','С','с','Т','т','Ф'
     ,'ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ'])
     then Result:=true;
if (not v) and (sm in ['А','а','Е','е','И','и','О','о','У','у','Ы','ы'
     	,'Ь','ь','Э','э','Ю','ю','Я','я']) then Result:=true
end;
и вроде тут у вас чтото присваивается
Код:
 if Pos(AnsiUpperCase(Letter), str) <> 0 then
заменить на
Код:
 if (Pos(AnsiUpperCase(Letter), str) <> 0) and check_Sm(Letter,true) then
если нужна согласная или
Код:
 if (Pos(AnsiUpperCase(Letter), str) <> 0) and check_Sm(Letter,false) then
если гласная


или даже пораньше проверяем
Код:
 Letter := StringGrid1.Cells[i, 0][1];
if  check_Sm(Letter) then  // если нужна согласная или if  check_Sm(Letter,false) если гласная
for j := 0 to Chars.Count - 1 do               //Цикл до конца файла
   begin
    str := Chars[j];               //Присваиваем текущую строку
    if Pos(AnsiUpperCase(Letter), str) <> 0 then    //Найдена ли буква (измененная в регистре на заглавную) в текущей строке
    begin
     Number := Copy(str, 1, 1)[1];      //Если найдена, то присваиваем переменной число в текущей строке
     inc(sum, Number);   //Увеличиваем сумму на Number
     Break;                                     //Заканчиваем цикл
    end;
   end;
Зы надеюсь правильно понял

Последний раз редактировалось vovk; 22.06.2009 в 21:00.
vovk вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напечатать в алфавитном порядке все гласные буквы, которые не входят более чем в одно слово. GHOST_DOG Помощь студентам 5 30.03.2009 15:24
из строки по алфавиту вывести все гласные( innaa639 Помощь студентам 1 24.02.2009 16:13
Дан текст из строчных латинских букв и других знаков. Вычеркнуть из текста все гласные буквы." XeRoX Помощь студентам 6 15.06.2008 09:41