プロが教えるわが家の防犯対策術!

m÷nであまりが出た場合にあまりを均等に割り当ててn個のデーターを作ります。

例えば、
15100÷5000=3とあまり100となり、
このあまり100を5000個のデーターに均等に割り付けます。
この単純な例では、
50個ごとに1を加えるデーターができれば良いです。
3333...<--3のデーターが49個50個目が1加えられて4というような。

半端な分は無視できます。

どうかお願いいたします。

A 回答 (5件)

No1,4です。


kintouとkintou()がかぶってますね・・・・すいません。

for i=0 to 5000
kintou(i)=除算の整数部
next
kannkaku = 5000\除算の整数部
for i=kannkaku to 5000 step kannkaku
kintou(i)=kintou(i) + 1
next

又は
除算の整数部=15100\3
kannkaku=5000/除算の整数部
for i=0 to 5000
kintou(i)=除算の整数部 + (i\kannkaku)^0
next

と、ちょっと修正させてください。
    • good
    • 1
この回答へのお礼

皆様、回答ありがとうございます。
このプログラムは、サーボモーターの移動量を均等にするのに使うつもりです。
全移動量、mパルスをn回に分けて移動させます。

あまりを無視すると、移動量が短くなってしまい、均等に載せないと移動量が偏ってしまいます。
あまりの載せ方で、移動量が偏りを防ぐつもりです。

早速皆様の方法を試してみます。

お礼日時:2005/11/25 13:17

No2の方のを見てよーやく理解しました。


kintou(0) = 3
kintou(1) = 3
・・・・
kintou(49) = 3
kintou(50) = 4
kintou(51) = 3
・・・
ですか。

なら、

除算の整数部=15100\3
for i=0 to 5000
kintou(i)=除算の整数部
next
kintou = 5000\除算の整数部
for i=kintou to 5000 step kintou
kintou(i)=kintou(i) + 1
next


又は
除算の整数部=15100\3
kintou=5000/除算の整数部
for i=0 to 5000
kintou(i)=除算の整数部 + (i\kintou)^0
next

ですかね。
下のほうが毎回計算しているので実行速度は遅そうですが、ソースが短いと思います。
毎度ですが、試してないので改良が必要かと思います。
    • good
    • 0

簡単に作ってみました。



Sub kintoh()
Dim cnt As Integer
Dim answer() As Integer
Dim gokei, kosu As Long

' 割り振る元の合計値 '
gokei = 15100
' 均等割の個数 '
kosu = 5000

' 結果配列初期化 '
ReDim answer(kosu) As Integer

For cnt = 1 To kosu
' Excelシミュレート用の出力 '
answer(cnt) = Int(cnt * gokei / kosu) - Int((cnt - 1) * gokei / kosu)
' 確認用 '
Debug.Print answer(cnt)
Next cnt
End Sub
    • good
    • 0
この回答へのお礼

実際に作ってみました。
上手く説明出来ませんが

貴方の式はパーペキ(パーフェクトに完璧)でした。
どのケースに於いても完全に均等に割り振れました。

ありがとうございました。

お礼日時:2005/11/28 18:14

n番目の「位置」=15100÷5000×nを切り捨て


n番目の「データ」=n番目の「位置」-(n-1)番目の「位置」

では?

Pos(00)=0
Pos(01)=3
Pos(02)=6

Pos(49)=147
Pos(50)=151
Pos(51)=154

となりますから、

Data(01)=Pos(01)-Pos(00)=3
Data(02)=Pos(02)-Pos(01)=3

Data(50)=Pos(50)-Pos(49)=4
Data(51)=Pos(51)-Pos(50)=3

となるハズ。
    • good
    • 0

あまりを均等に分けるのは


kintou=5000\100
for i=0 to 5000 step kintou
kintou(i) = 1
next
見たいな感じじゃないですか?
あんまり考えないで作ったので修正必要と思います。大体の考え方はこれでいいと思います。

>3333...<--3のデーターが49個50個目が1加えられて4というような。
この部分意味分からなかったので、自分でどうにかしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!