Вопрос № 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