|
|
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! В разработке алгоритма обработки (модуль VBA) столкнулся с вот какой задачей - есть два числовых поля формата Long в одной таблице. Необходимо узнать следующее - сколько в разнице этих двух полей содержится целых десятков, единиц до первого десятка и единиц от последнего десятка. Из всего этого удалось решить только проблему целых десятков, а вот все остальное... :-( В общем, если кто сталкивался с чем-то подобным или имеет какие-то идеи, пожалуйста, не оставайтесь в стороне. Заранее благодарен всем за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 11:49 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
Все достигается операциями \ и mod. Напишу подробнее, если пойму, что такое единиц до первого десятка и единиц от последнего десятка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 12:00 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Владимир Саныч! Спасибо за ответ и сразу вопрос - что такое операции "\ и mod"? И отвечаю на Ваш вопрос: к примеру, у нас есть два числа - 322 и 346. Число целых десятков между этими числами 2, единиц до первого десятка - 2, единиц от последнего десятка - 6. И проблема у меня именно в том, что эти единицы никак из разницы этих чисел не вытащить! Все оставшиеся единицы сваливаются в одну кучу и в результате получается совсем не то, что нужно. :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 13:15 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
Я бы попытался перевести в строку и выбирать функциями left Mid ходя можно и моd употребить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 13:24 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
не очень понял... >единиц до первого десятка и единиц от последнего десятка может на примере покажешь, что должно получиться... Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 13:55 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
что это за задача? шифрование что-ли? вычитай , определи сколько у тебя десятков( подели на 10) и посмотри остаток если нужно выяснить кол-во единиц -отнимай от десяти кол-во единиц из разницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 14:02 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
согласен с vist Int(Left(Right(Str(346),2),1)) = 4 - Int(Left(Right(Str(322),2),1)) = 2 =2 - целых десятков Int(Right(Str(346),1)) = 6 - единиц от последнего десятка Int(Right(Str(322),1)) = 2 - единиц до первого десятка Если конечно задач правильно понял :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 14:04 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
> единиц до первого десятка - 2, единиц от последнего десятка - 6 То есть это число единиц в первом числе и число единиц во втором числе? Что такое: до первого десятка? от первого десятка? до последнего десятка? от последнего десятка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 14:13 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за ответы. Но, пока с вами общался, придумал другое решение, не требующее перевода числа в строку и обратно (ведь обрабатываю я в дальнейшем именно ЧИСЛО). Но тут возникла новая бага - когда я пытаюсь запустить модуль, Access ругается, что употреблен End If без блока If. Хотя, по тексту вроде все правильно. Единственное, в чем у меня сомнение, так это в количестве вложений друг в друга конструкций If... Then... Else, у меня одна вложена в другую. Может, из-за этого и плющилово? :-( В общем, привожу листинг модуля: Private Sub xxx Dim a As Long Dim b As Long Dim c As Long Dim d As Long Dim e As Long Dim f As Long Dim i As Long Set rs = CurrentDb.OpenRecordset("Table1") 'открытие таблицы Do Until rs.EOF() 'цикл до конца таблицы последовательным перебором записей a = rs![Chislo1] 'присваивает значения переменным b = rs![Chislo2] c = b - a 'находит разницу If c <> 0 Then 'если разница не равна нулю, то циклически выполняет запросы с параметрами на вставку If c <= 9 Then 'если разница между значениями не более 9 (вложенный If) CurrentDb.Execute ("[Query1]=") & a DoEvents For i = 1 To c 'цикл на присвоение последовательных значений CurrentDb.Execute ("[Query2]=") & a DoEvents Next i Else: d = Round(c / 10) 'находим число десятков e = a - Round(a / 10) 'находим число единиц до первого десятка f = b - Round(b / 10) 'находим число единиц от последнего десятка For i1 = 1 To e 'выполняем запросы на вставку значений CurrentDb.Execute ("[Query3]=") & a 'вставка значений с единицами до первого десятка DoEvents Next i1 For i2 = 1 To d CurrentDb.Execute ("[Query4]=") & Round(a / 10) 'вставка значений с десятками без единиц DoEvents Next i2 For i3 = 1 To f CurrentDb.Execute ("[Query5]=") & a 'вставка значений с единицами после последнего десятка DoEvents End If ' - вот на этот оператор ругается Else: 'если равна, то запрос на вставку без цикла CurrentDb.Execute ("[Query6]=") & a DoEvents End If rs.MoveNext Loop 'конец цикла End Sub Заранее всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 14:38 |
|
||
|
Вот такая задача! :-(( (разность двух чисел)
|
|||
|---|---|---|---|
|
#18+
> For i3 = 1 To f > CurrentDb.Execute ("[Query5]=") & a 'вставка значений с единицами после последнего десятка > DoEvents > End If ' - вот на этот оператор ругается А что это за конструкция - For ... End If? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 14:43 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32313573&tid=1678495]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 357ms |

| 0 / 0 |
