Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Perl


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Perl

Выпуск № 65
от 11.08.2006, 16:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 150, Экспертов: 9
В номере:Вопросов: 2, Ответов: 3


Вопрос № 51255: Здравствуйте, вот написал программку (см. в приложении), аля "угадай число". Понятно, что возможно я это сделал не очень эффективно, поэтому я обращаюсь к вам, что бы вы дали свои рекомедации, что можно было бы сделать лучше, что-либо усове...
Вопрос № 51256: Доброго врение суток... посмотрите пожалуйста код и скажите где ошибка. Задача: программа должна вывести "ошибка ввода" если пользователь ввел не "да" и не "нет", а если ввел "да" ии "нет", пр...

Вопрос № 51.255
Здравствуйте, вот написал программку (см. в приложении), аля "угадай число". Понятно, что возможно я это сделал не очень эффективно, поэтому я обращаюсь к вам, что бы вы дали свои рекомедации, что можно было бы сделать лучше, что-либо усовершенствовать и более рационализировать прогу...
Спасибо...

Приложение:

Отправлен: 05.08.2006, 18:22
Вопрос задал: Lperw (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Muad Dib
Здравствуйте, Lperw!

Вот видишь! Отлично у тебя все получилось ... Если немного переделать то что получилось у тебя, то будет примерно вот так:


#!/usr/bin/perl -w

do{
my $num = int(rand(3));
print "Угадай число от 1 до 3 ";
my $mynum="";
$mynum=; chomp $mynum;
if ($mynum eq $num) {
print "Вы угадали. Хотите повторить? ";
}else{
print "Вы ошиблись, хотите повторить?(y/n): ";
}
my $ans =; chomp $ans;
}until $ans eq "n";
print "Всего доброго!!! ";


Ответ отправил: Muad Dib (статус: Студент)
Ответ отправлен: 06.08.2006, 03:24
Оценка за ответ: 5


Вопрос № 51.256
Доброго врение суток...
посмотрите пожалуйста код и скажите где ошибка.
Задача: программа должна вывести "ошибка ввода" если пользователь ввел не "да" и не "нет", а если ввел "да" ии "нет", программа должна вывести то что ввел пользователь. У меня почемуто в любом случае выводится "ошибка ввода"
Всем спасибо...

Приложение:

Отправлен: 05.08.2006, 18:44
Вопрос задал: Lperw (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: dianacode
Доброе время суток, Lperw

ну я бы во-первых обратила внимание на консоль, с которой работаю -
кодировка и прочая ересь -

1) пробуем подключать locale

ну и искать всёж регуляркой - не надеятся на авось -

2) =~/

3) в конце-концов самый лучший вариант - НЕ ЗАПАРИВАТЬСЯ и не искать таких вариантов - используйте EN набор символов и будет вам щастье )

с уважением, удачи

Приложение:

---------
There is more than one way to do it

Ответ отправила: dianacode (статус: 2-ой класс)
Ответ отправлен: 06.08.2006, 01:25

Отвечает: Muad Dib
Здравствуйте, Lperw!
Ошибка впринципе в том что вы очень уж закрутили условием cмотрим что у вас:
if( $ans ne "yes" or $ans ne "no"){print "mistake;}
Если $ans yes - то будет истинным второе значение и or вернет 1. Если $ans no - первое, опять таки 1, если будет вообще что-то левое, то опять таки будет 1 - т.е. при любом раскладе будет печатать mistake. Условие лучше привести к виду:
if($ans eq yes or $ans eq no){print "your string $ans"} ... ну и так далее, или свести к регулярному выражнию как вам посоветовали раньше:

#!/usr/bin/perl -w
print qq( );
$ans = ;
if ($ans=~m/^(да|нет)$/ ){
print "your string $ans ";
}else{
print "mistake ";
}

По поводу use POSIX и use locale - не знаю - у меня все прекрасно и без них работает :).


Ответ отправил: Muad Dib (статус: Студент)
Ответ отправлен: 06.08.2006, 04:15
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное