Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с конструкцией "if"  (Прочитано 7045 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Валикос
Гость
« : 31-05-2009 13:22 » 

есть массив, который содержит два числа и операцию между ними(плюс, минус, уможить, разделить)
$elems[1] и есть значение операции, принимаемые значения могут быть такими +, - ,*, /
мне нужно получить значение этих чисел, если я делаю проверку на операцию через конструкцию типа
Код:
my $a = $elems[0];
my $b = $elems[2];
if ($elems[1] eq '+'){my $result = addval($a, $b)}
происходит ошибка использования неинициализированной  переменной $result и соответственно вычисление не происходит
при такой записи
Код:
my $a = $elems[0];
my $b = $elems[2];
my $result = addval($a, $b);
все вычисляется, мне нужно сопоставлять значение операции и вызывать соответствующие подпрограммы, eval использовать нельзя
подскажите в чем может быть проблема
вот на всякий случай код подпрограммы
Код:
sub addval{
my $value1 = shift @_;
my $value2 = shift @_;
my $res = $value1 + $value2;
return $res;
Записан
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #1 : 31-05-2009 15:34 » 

Валикос, Если честно я не понял. Есть конкретно текст задания? или это какая то твоя задумка, тогда разъясни по подробней. То что у тебя сейчас написано в addval это какая то ерунда, вот допустим что будет если передать туда два значения которые должны умножиться? Результат будет не верен так как у тебя там только сложение.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 02-06-2009 10:55 » 

Валикос, да, довольно коряво описано. Попробуй еще раз донести...

Код:
my $a = $elems[0];
my $b = $elems[2];
if ($elems[1] eq '+'){my $result = addval($a, $b)}
происходит ошибка использования неинициализированной  переменной $result и соответственно вычисление не происходит
при такой записи

Где происходит ошибка?

У тебя пропущена точка с запятой после addval(...).

Много лишнего. Например, зачем промежуточные переменные?

Кстати, понимаешь ли ты смысл ключевого слова my?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Валикос
Гость
« Ответ #3 : 03-06-2009 14:10 » new

смысл слова my теперь понимаю, в нем то и была причина моих бед
я разобрался, тему можно закрывать
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines