Что нового

[Данные, строки] Разделить слово по буквам, задав каждой букве численное значение.

uppdrag

Новичок
Сообщения
22
Репутация
0
Помогите пожалуйста.
Слово(фраза) вводит в поле Input1. После нажатия кнопки "Пуск" слово из Input1 должно быть разделено по буквам, задав каждой букве числовое значение....
Затем сложить заданные значения букв, и сумму вывести в Input2
Не понимаю как разделить слово....
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
$Form1 = GUICreate("Число имени", 258, 105, 192, 124)
$Input1 = GUICtrlCreateInput("", 16, 24, 185, 21)
$Input2 = GUICtrlCreateInput("", 16, 64, 49, 21)
$Button1 = GUICtrlCreateButton("Пуск", 208, 24, 35, 25)
$Button2 = GUICtrlCreateButton("Выход", 168, 64, 75, 25)
GUISetState(@SW_SHOW)
While 2
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		 Case $Button1
			$text = GUICtrlRead($Input1)
			$text11 = StringStripWS($text, 8 )
			
			....

		 Case $Button2
			Exit
	EndSwitch
WEnd
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Вот, готовое решение:
Код:
#include <GUIConstantsEx.au3>
#include <Array.au3>

Global $Latters = 'а|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я'
Global $sum = 0

$Form1 = GUICreate("Число имени", 258, 105, 192, 124)
$Input1 = GUICtrlCreateInput("", 16, 24, 185, 21)
$Input2 = GUICtrlCreateInput("", 16, 64, 49, 21)
$Button1 = GUICtrlCreateButton("Пуск", 208, 24, 35, 25)
$Button2 = GUICtrlCreateButton("Выход", 168, 64, 75, 25)
GUISetState(@SW_SHOW)

While 2
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
         Case $Button1
            $text = GUICtrlRead($Input1)
			$text11 = StringSplit($text, '')
			For $i = 1 To $text11[0]
				$SplitLat = StringSplit($Latters, '|')
				$Search = _ArraySearch($SplitLat, $text11[$i])
				$sum = $sum + $Search
			Next
			GUICtrlSetData($Input2, $sum)
         Case $Button2
            Exit
    EndSwitch
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
uppdrag,
Код:
#include <Array.au3>

$sText = 'После нажатия кнопки "Пуск" слово из Input1 должно быть разделено по буквам, задав каждой букве числовое значение....'
$iNum = 0
$aRes = StringSplit($sText, '')
For $i = 1 To $aRes[0]
	$iNum += Asc($aRes[$i])
Next
_ArrayDisplay($aRes, 'Sum: ' & $iNum)
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#Include <Array.au3>

$sText = 'слово из Input1 должно быть разделено по буквам, задав каждой букве числовое значение....'
Local $myArray = StringToASCIIArray($sText,0,StringLen($sText),1)

$n = UBound($myArray)
$Summa = 0
For $i=0 To $n - 1
 $Summa += $myArray[$i]
Next

_ArrayDisplay($myArray)
msgbox(0, "", 'Summa = ' & $Summa)


Прикольно вышло с кодировкой :rofl:
Пришлось долполнить вызов StringToASCIIArray аж до 4-го параметра
 
Автор
U

uppdrag

Новичок
Сообщения
22
Репутация
0
спасибо всем. Точто и нужно было. :beer:
Zaramot а как сделать так чтобы полученную сумму разбивало на числа, чтоб затем сумировать их до единочного числа.
Пример:
Пар = 17+1+18 = 36
Затем 36 -> 3+6 = 9 (9 - конечный результат :whistle:smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
uppdrag [?]
как сделать так чтобы полученную сумму разбивало на числа, чтоб затем сумировать их до единочного числа.
Попробуйте так.
Код:
$iNum = 989898989898989
$iSum = 0
$iTemp = $iNum
While $iTemp > 9
	ConsoleWrite($iTemp & @LF)
	$iSum = 0
	$iLen = StringLen($iTemp)
	For $i = 1 To $iLen
		$iSum += StringMid($iTemp, $i, 1)
	Next
	$iTemp = $iSum
WEnd
MsgBox(64, 'Info', $iSum)
 
Верх