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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 19:44   #1
Михаил К.
Новичок
Джуниор
 
Регистрация: 18.06.2011
Сообщений: 1
Печаль Определение табличного значения имея изначально 2 исходных значения?

Здраствуйте. Сразу оговорю, что я только недавно начал изучать язык программирования. Суть вопроса: есть таблица значений Коэффициент доверия (Стъюдента)(многие студенты тех.ВУЗов знают). Таблица имеет вид:
Число измерений N Надёжность Sigma
0.5_______ 0.9;
2 1_________6.3;
3 0.82________2.9;
4 ...........................
5 ......................
.
. .............................
>20 0.67_______1.6;
Запрограммировал в след виде:

Код:
procedure TForm1.Button1Click(Sender: TObject);
 begin
 Sigma:=StrToFloat(Edit1.Text);
 N:=StrToInt(Edit2.Text);
 if (Sigma=0.5) And (N=2) then Kalfa:=1;
 if (Sigma=0.5) And (N=3) then Kalfa:=0.82;
 if (Sigma=0.5) And (N=4) then Kalfa:=0.77;
 if (Sigma=0.5) And (N=5) then Kalfa:=0.74;
 if (Sigma=0.5) And (N=6) then Kalfa:=0.73;
 if (Sigma=0.5) And (N=7) then Kalfa:=0.72;
 if (Sigma=0.5) And (N=8) then Kalfa:=0.71;
 if (Sigma=0.5) And (N=9) then Kalfa:=0.71;
 if (Sigma=0.5) And (N=10) then Kalfa:=0.70;
 if (Sigma=0.5) And (N=20) then Kalfa:=0.69;
 if (Sigma=0.5) And (N>20) then Kalfa:=0.67;
 if (Sigma=0.9) And (N=2) then Kalfa:=6.3;
 if (Sigma=0.9) And (N=3) then Kalfa:=2.9;
 if (Sigma=0.9) And (N=4) then Kalfa:=2.4;
 if (Sigma=0.9) And (N=5) then Kalfa:=2.1;
 if (Sigma=0.9) And (N=6) then Kalfa:=2.0;
 if (Sigma=0.9) And (N=7) then Kalfa:=1.9;
 Edit3.Text:=FloatToStr(Kalfa);
 end;
___________________________________ _____________________________
При запуске программы и вводе значений Sigma=0.5 и N без разницы всё нормально, т.е. выдаёт необходимый результат, а при вводе Sigma=0.9 выдаёт значение 0.

Последний раз редактировалось Stilet; 18.06.2011 в 21:24.
Михаил К. вне форума Ответить с цитированием
Старый 18.06.2011, 21:16   #2
romlo
Пользователь
 
Аватар для romlo
 
Регистрация: 21.06.2010
Сообщений: 49
По умолчанию

Странно, у меня тоже глючит.
Замени тип переменной sigma на string и попробуй так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 begin
 Sigma:=Edit1.Text;
 N:=StrToInt(Edit2.Text);
 if (Sigma='0,5') And (N=2) then Kalfa:=1;
 if (Sigma='0,5') And (N=3) then Kalfa:=0.82;
 if (Sigma='0,5') And (N=4) then Kalfa:=0.77;
 if (Sigma='0,5') And (N=5) then Kalfa:=0.74;
 if (Sigma='0,5') And (N=6) then Kalfa:=0.73;
 if (Sigma='0,5') And (N=7) then Kalfa:=0.72;
 if (Sigma='0,5') And (N=8) then Kalfa:=0.71;
 if (Sigma='0,5') And (N=9) then Kalfa:=0.71;
 if (Sigma='0,5') And (N=10) then Kalfa:=0.70;
 if (Sigma='0,5') And (N=20) then Kalfa:=0.69;
 if (Sigma='0,5') And (N>20) then Kalfa:=0.67;
 if (Sigma='0,9') And (N=2) then Kalfa:=6.3;
 if (Sigma='0,9') And (N=3) then Kalfa:=2.9;
 if (Sigma='0,9') And (N=4) then Kalfa:=2.4;
 if (Sigma='0,9') And (N=5) then Kalfa:=2.1;
 if (Sigma='0,9') And (N=6) then Kalfa:=2.0;
 if (Sigma='0,9') And (N=7) then Kalfa:=1.9;
 Edit3.Text:=FloatToStr(Kalfa);
 end;

Последний раз редактировалось romlo; 18.06.2011 в 21:21.
romlo вне форума Ответить с цитированием
Старый 18.06.2011, 21:32   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Иногда чтоб не париться с некорректностью обработки (пардонте, неточностью обработки) процессором вещественных чисел делают такой финт:
Код:
 var kalfa:Double;Sigma,n:integer;
 begin
 Sigma:=trunc(0.9*1000);
 N:=4;
 if (Sigma=500) And (N=2) then Kalfa:=1;
 if (Sigma=500) And (N=3) then Kalfa:=0.82;
 if (Sigma=500) And (N=4) then Kalfa:=0.77;
 if (Sigma=500) And (N=5) then Kalfa:=0.74;
 if (Sigma=500) And (N=6) then Kalfa:=0.73;
 if (Sigma=500) And (N=7) then Kalfa:=0.72;
 if (Sigma=500) And (N=8) then Kalfa:=0.71;
 if (Sigma=500) And (N=9) then Kalfa:=0.71;
 if (Sigma=500) And (N=10) then Kalfa:=0.70;
 if (Sigma=500) And (N=20) then Kalfa:=0.69;
 if (Sigma=500) And (N>20) then Kalfa:=0.67;
 if (Sigma=900) And (N=2) then Kalfa:=6.3;
 if (Sigma=900) And (N=3) then Kalfa:=2.9;
 if (Sigma=900) And (N=4) then Kalfa:=2.4;
 if (Sigma=900) And (N=5) then Kalfa:=2.1;
 if (Sigma=900) And (N=6) then Kalfa:=2.0;
 if (Sigma=900) And (N=7) then Kalfa:=1.9;
 write(Kalfa);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Преобразовывая с некой точностью вещественное в его подобие в виде целого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод значения time_t и значения uid_t и gid_t papos Помощь студентам 0 23.02.2011 21:49
Как найти все N-значения и заменить их на значения из 2-х ячеек? Smile2007 Microsoft Office Excel 10 09.12.2010 09:34
Определение значения системы в заштрихованной области pascal neomax38 Помощь студентам 2 06.10.2010 11:16
В зависимости от значения в ComboBox1 выводить значения в ComboBox2 LeX2009 БД в Delphi 14 21.05.2010 16:49
Создать приложение, вычисляющее значения переменных по заданным расчетным формулам и наборам исходных дан lubov_morkov Помощь студентам 3 10.09.2009 18:25