Хочу написать калькулятор ионов для солей - VB
Формулировка задачи:
Ребята, все привет. Нужна помощь, хочу написать калькулятор ионов для солей. Он такой есть вот тут. Но мне нужен на VB. Смысл такой, в текстовое окно вводим формулу например KH2PO4 как разложить эту строку на атомы, что сложить все атомы например K=39+(H=1*2)+P=30+(O=16*4)=139? Там если посмотреть исходный код есть строки такие:
Я так понимаю это объявляются переменные?
А это что массив? Нифига не понимаю. Это Ява скрипт.
И вот это еще, для чего? Для поиска в строке этих Символов?
Спасибо за редактирование, смысл уловил.
Думаю сформулировал сложно вопрос. Тогда вот так спрошу, вот есть Textbox вводится строка KH2PO4, как ее разложить, то есть распознать что это именно K, Н2, P, O4.
Решение задачи: «Хочу написать калькулятор ионов для солей»
textual
Листинг программы
Option Explicit Option Compare Binary Private Type t_El N As String M As Double End Type Dim a(0 To 92) As t_El Dim EM() As Byte Sub main() a(1).N = "H": a(1).M = 1.008: a(2).N = "He": a(2).M = 4.003: a(3).N = "Li": a(3).M = 6.941: a(4).N = "Be": a(4).M = 9.0122 a(5).N = "B": a(5).M = 10.811: a(6).N = "C": a(6).M = 12.011: a(7).N = "N": a(7).M = 14.007: a(8).N = "O": a(8).M = 15.999 a(9).N = "F": a(9).M = 18.998: a(10).N = "Ne": a(10).M = 20.18: a(11).N = "Na": a(11).M = 22.99: a(12).N = "Mg": a(12).M = 24.305 a(13).N = "Al": a(13).M = 26.982: a(14).N = "Si": a(14).M = 28.086: a(15).N = "P": a(15).M = 30.974: a(16).N = "S": a(16).M = 32.066 a(17).N = "Cl": a(17).M = 35.453: a(18).N = "Ar": a(18).M = 39.948: a(19).N = "K": a(19).M = 39.098: a(20).N = "Ca": a(20).M = 40.078 a(21).N = "Sc": a(21).M = 44.956: a(22).N = "Ti": a(22).M = 47.88: a(23).N = "V": a(23).M = 50.942: a(24).N = "Cr": a(24).M = 51.996 a(25).N = "Mn": a(25).M = 54.938: a(26).N = "Fe": a(26).M = 55.847: a(27).N = "Co": a(27).M = 58.933: a(28).N = "Ni": a(28).M = 58.69 a(29).N = "Cu": a(29).M = 63.546: a(30).N = "Zn": a(30).M = 65.39: a(31).N = "Ga": a(31).M = 69.723: a(32).N = "Ge": a(32).M = 72.61 a(33).N = "As": a(33).M = 74.922: a(34).N = "Se": a(34).M = 78.96: a(35).N = "Br": a(35).M = 79.904: a(36).N = "Kr": a(36).M = 83.8 a(37).N = "Rb": a(37).M = 85.468: a(38).N = "Sr": a(38).M = 87.62: a(39).N = "Y": a(39).M = 88.906: a(40).N = "Zr": a(40).M = 91.224 a(41).N = "Nb": a(41).M = 92.906: a(42).N = "Mo": a(42).M = 95.94: a(43).N = "Tc": a(43).M = 98: a(44).N = "Ru": a(44).M = 101.07 a(45).N = "Rh": a(45).M = 102.91: a(46).N = "Pd": a(46).M = 106.42: a(47).N = "Ag": a(47).M = 107.87: a(48).N = "Cd": a(48).M = 112.41 a(49).N = "In": a(49).M = 114.82: a(50).N = "Sn": a(50).M = 118.71: a(51).N = "Sb": a(51).M = 121.75: a(52).N = "Te": a(52).M = 127.6 a(53).N = "I": a(53).M = 126.9: a(54).N = "Xe": a(54).M = 131.29: a(55).N = "Cs": a(55).M = 132.91: a(56).N = "Ba": a(56).M = 137.33 a(57).N = "La": a(57).M = 138.9: a(58).N = "Ce": a(58).M = 140.1: a(59).N = "Pr": a(59).M = 140.9: a(60).N = "Nd": a(60).M = 144.2 a(61).N = "Pm": a(61).M = 145: a(62).N = "Sm": a(62).M = 150.4: a(63).N = "Eu": a(63).M = 152: a(64).N = "Gd": a(64).M = 157.3 a(65).N = "Tb": a(65).M = 158.9: a(66).N = "Dy": a(66).M = 162.5: a(67).N = "Ho": a(67).M = 164.9: a(68).N = "Er": a(68).M = 167.3 a(69).N = "Tm": a(69).M = 168.9: a(70).N = "Yb": a(70).M = 173: a(71).N = "Lu": a(71).M = 174.97: a(72).N = "Hf": a(72).M = 178.49 a(73).N = "Ta": a(73).M = 180.95: a(74).N = "W": a(74).M = 183.85: a(75).N = "Re": a(75).M = 186.21: a(76).N = "Os": a(76).M = 190.2 a(77).N = "Ir": a(77).M = 192.22: a(78).N = "Pt": a(78).M = 195.08: a(79).N = "Au": a(79).M = 196.97: a(80).N = "Hg": a(80).M = 200.59 a(81).N = "Tl": a(81).M = 204.38: a(82).N = "Pb": a(82).M = 207.2: a(83).N = "Bi": a(83).M = 208.98: a(84).N = "Po": a(84).M = 209 a(85).N = "At": a(85).M = 210: a(86).N = "Rn": a(86).M = 222: a(87).N = "Fr": a(87).M = 223: a(88).N = "Ra": a(88).M = 226 a(89).N = "Ac": a(89).M = 227: a(90).N = "Th": a(90).M = 232.04: a(91).N = "Pa": a(91).M = 213.04: a(92).N = "U": a(92).M = 238.03 Dim f As String, ff() As String, M As Double, i As Byte Dim msg1$, msg2$ ReDim EM(1 To UBound(a)) ' f = InputBox("Введите формулу молекулы", "Калькулятор молекулярной массы", "FeSO4.7H2O") ff = Split(f, ".") For i = 0 To UBound(ff) mas ff(i) Next i For i = 1 To UBound(a) If EM(i) Then M = M + a(i).M * EM(i) msg1 = msg1 & a(i).N & EM(i) msg2 = msg2 & a(i).N & " " & a(i).M & " x " & EM(i) & " = " & a(i).M * EM(i) & vbCrLf End If Next i MsgBox msg1 & vbCrLf & msg2 & "Молекулярная масса: " & M, , f End Sub Sub mas(ByVal f As String) Dim i As Byte, j As Byte, c1 As Byte, c2 As Byte c1 = Val(f) If c1 = 0 Then c1 = 1 Else f = VBA.Mid$(f, Len(CStr(c1)) + 1) End If While f <> "" j = 0 For i = 1 To 92 If a(i).N = VBA.Left$(f, Len(a(i).N)) Then If Len(a(j).N) < Len(a(i).N) Then j = i End If Next i If j = 0 Then MsgBox f & " - нет такого элемента!": Exit Sub f = VBA.Mid$(f, Len(a(j).N) + 1) c2 = Val(f) If c2 = 0 Then c2 = 1 Else f = VBA.Mid$(f, Len(CStr(c2)) + 1) End If EM(j) = EM(j) + c1 * c2 Wend End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д