PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » прога


прога

Сообщений 1 страница 5 из 5

1

Решил написать прогу для физики, наткнулся на небольшую проблему, прога не делит площадь на 0.1, 0.2 и т.д. выбивает +Infinity, и вообще не работает с дробными числами ниже 1.

Код:
S.d = 0
l.d = 0
p.d = 0
R.d = 0

OpenWindow(0, 0, 0, 300, 400, "Физика", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
 TextGadget(0, 10, 10, 150, 15, "Визначаемо опiр провiдника Ом")
 ComboBoxGadget(1, 12, 38, 100, 20, #PB_EventType_Change)
 AddGadgetItem(1, 0, "Алюмiнiй")
 AddGadgetItem(1, 1, "Вольфрам")
 AddGadgetItem(1, 2, "Графiт")
 AddGadgetItem(1, 3, "Залiзо")
 AddGadgetItem(1, 4, "Золото")
 AddGadgetItem(1, 5, "Мiдь")
 AddGadgetItem(1, 6, "Нiкелiн")
 AddGadgetItem(1, 7, "Срiбло")
 AddGadgetItem(1, 8, "Сталь")
 AddGadgetItem(1, 9, "Цинк")
 TextGadget(3, 130, 40, 150, 20, "- Речовина")
 StringGadget(4, 12, 64, 100, 20, "")
 TextGadget(5, 130, 64, 150, 20, "- Довжина провiдника в м")
 StringGadget(6, 12, 88, 100, 20, "")
 TextGadget(7, 130, 88, 150, 20, "- Площа провiдника в мм")
 ButtonGadget(8, 12, 130, 100, 20, "Итого")
 TextGadget(9, 12, 160, 150, 20, "")
 
 
 Repeat
   Event = WindowEvent()
   If EventGadget() = 8
     ; речовина
     
     If GetGadgetState(1) = 0
       p.d = 0.028
     EndIf
          If GetGadgetState(1) = 1
       p.d = 0.055
     EndIf
          If GetGadgetState(1) = 2
       p.d = 0.03
     EndIf
          If GetGadgetState(1) = 3
       p.d = 0.1
     EndIf
          If GetGadgetState(1) = 4
       p.d = 0.024
     EndIf
          If GetGadgetState(1) = 5
       p.d = 0.018
     EndIf
          If GetGadgetState(1) = 6
       p.d = 0.4
     EndIf
          If GetGadgetState(1) = 7
       p.d = 0.016
     EndIf
          If GetGadgetState(1) = 8
       p.d = 0.12
     EndIf
          If GetGadgetState(1) = 9
       p.d = 0.061
     EndIf
     
     ; речовина
     
     l.d=Val(GetGadgetText(4))
     
     S.d=Val(GetGadgetText(6))
     
       R.d = p.d * l.d / S.d
       SetGadgetText(9, "Итого: " + StrD (R))
     EndIf
     
     
   Until Event = #PB_Event_CloseWindow

P.S. Извиняюсь за украинский язык.

Отредактировано Foreword (24.12.2012 00:10:49)

0

2

Замени в строках 66,68 Val на ValD

+1

3

Во так будет короче код.

Код:
Select GetGadgetState(1)
  Case 0 : p = 0.028
  Case 1 : p = 0.055
  Case 2 : p = 0.03
  Case 3 : p = 0.1
  Case 4 : p = 0.024
  Case 5 : p = 0.018
  Case 6 : p = 0.4
  Case 7 : p = 0.016
  Case 8 : p = 0.12
  Case 9 : p = 0.061
EndSelect

+1

4

Пётр написал(а):

Во так будет короче код.

Спасибо, а можно где нибудь найти уроки по Select - Endselect а то не особо пойму для чего они?

0

5

В справке все есть. Поставь текстовый курсор на Select и нажми на F1. http://purebasic.ru/manual.php?id=1106&lng=rus
Можешь еще это посмотреть. http://pure-basic.narod.ru/docs/books/4.htm

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » прога