Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти ошибку в коде 
:(
    Опции темы
floopless
Дата 25.9.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.10.2008

Репутация: нет
Всего: нет



не хочет работать блок case, помогите разобраться в чем дело.. 
вот код:
Код

// Объявление переменных: x,q - для хранения введенных значений; k - результат 
var 
x,q,k: extended; 

begin 

// Очистка окошка ResultMemo 
ResultMemo.Clear; 

// Считывание значений 
x:= StrToFloat (XEdit.Text); 
q:= StrToFloat (QEdit.Text); 

// Вывод начальных значений в окошко ResultMemo 
ResultMemo.Lines.Add('x = '+XEdit.Text); 
ResultMemo.Lines.Add('q = '+QEdit.Text); 

// Выбор функции 
case FunctionGroup.ItemIndex of 

0: 
begin 
// Проверка и выбор выражения 
if abs(x*q) >10 then 
k:= ln(abs(exp(x))+abs(q)) 
else if abs(x*q)<10 then 
k:= exp(exp(x)+q) 
else 
k:= exp(x)+q; 
end; 

1: 
begin 
// Проверка и выбор выражения 
if abs(x*q)>10 then 
k:= ln(abs(Math.Power(x,2))+abs(q)) 
else if abs(x*q)<10 then 
k:= exp(Math.Power(x,2)+q) 
else 
k:= Math.Power(x,2)+q; 
end; 

2: 
begin 
// Проверка и выбор выражения 
if abs(x*q)>10 then 
k:= ln(abs(Math.Sinh(x))+abs(q)) 
else if abs(x*q)< 10 then 
k:= exp(Math.Sinh(x)+q) 
else 
k:= Math.Sinh(x)+q; 
end; 

end; 



вот лог компилятора:
Код

[Hint] Unit1.pas(62): Value assigned to 'k' never used
[Hint] Unit1.pas(64): Value assigned to 'k' never used
[Hint] Unit1.pas(66): Value assigned to 'k' never used
[Hint] Unit1.pas(73): Value assigned to 'k' never used
[Hint] Unit1.pas(75): Value assigned to 'k' never used
[Hint] Unit1.pas(77): Value assigned to 'k' never used
[Hint] Unit1.pas(84): Value assigned to 'k' never used
[Hint] Unit1.pas(86): Value assigned to 'k' never used
[Hint] Unit1.pas(88): Value assigned to 'k' never used

PM MAIL   Вверх
Frees
Дата 25.9.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



а что значит не хочет работать


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Regulum
Дата 25.9.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.6.2009

Репутация: нет
Всего: 1



Предупреждение компилятора можно убрать инициализацией переменной k, например нулем
Код

...
x:= StrToFloat (XEdit.Text); 
q:= StrToFloat (QEdit.Text); 
k:= 0;
...


Но компилятор выдает замечания, а не ошибки.
В чем именно выражается нежелание работать? 

Это сообщение отредактировал(а) Regulum - 25.9.2009, 13:44
PM MAIL   Вверх
floopless
Дата 25.9.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.10.2008

Репутация: нет
Всего: нет



В переменную k должен по идее сохраниться результат вычислений, чего не происходит..
Поэтому и компилятор подсказывает что переменная k не-про-инициализирована..
Только вот почему..? smile 

Тут используется RadioGroup, предлагается выбрать функцию (одну из трех: e(x), X^2 или sh(x))
А дальше в зависимости от того чему равен модуль (x*q) должно выполниться действие.. 

Я уже голову сломал.. smile 

Это сообщение отредактировал(а) floopless - 25.9.2009, 14:02
PM MAIL   Вверх
Regulum
Дата 25.9.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.6.2009

Репутация: нет
Всего: 1



А ты в режиме отладки смотрел, у тебя case вообще выполняется?
Может быть, FunctionGroup.ItemIndex=3 например
PM MAIL   Вверх
CodeMonkey
Дата 25.9.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89





--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Frees
Дата 25.9.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(floopless @  25.9.2009,  16:51 Найти цитируемый пост)
В переменную k должен по идее сохраниться результат вычислений, чего не происходит..Поэтому и компилятор подсказывает что переменная k не-про-инициализирована..

коипилятор предупреждает что ты в k пишеш но потом нигде не читаеш!!(never used) не используется


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
floopless
Дата 25.9.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 18.10.2008

Репутация: нет
Всего: нет



вот, надо было полностью рассказывать.. smile 
я расположил оператор вывода после каждого блока case, дабы вывести результат вычислений..
Код

case FunctionGroup.ItemIndex of

0:
begin
if abs(x*q) >10 then
k:= ln(abs(exp(x))+abs(q))
else if abs(x*q)<10 then
k:= exp(exp(x)+q)
else
k:= exp(x)+q;
ResultMemo.Lines.Add('k ='+FloatToStrF(k,ffFixed,8,4));
end;


Компилятор все молча проглотил, но программа упорно не хотела выводить результат вычислений в Memo.. так я и решил что не выполняется блок case..
Теперь совместными усилиями выяснилось что все выполняется (в k записывается значение)..но вот почему не выводится ничего..?
Попробовал разместить ResultMemo.Lines после end блока case - теперь ошибка - Invalid Floating Point Operation..
??? smile

Добавлено через 11 минут и 21 секунду
Все, решено!!!
УРА!!! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.