C言語関係掲示板

過去ログ

No.1198 1 3 5 7 5 3 と表示するプログラム

[戻る] [ホームページ]
No.15681

絶対値
投稿者---nana(2004/07/20 11:30:14)


1
3
5
7
5
3
1

と表示するプログラムを作りたいのですが、絶対値を使うということ以外全然分かりません。
ヒントでも構わないので教えて下さい。お願いします。


No.15682

Re:絶対値
投稿者---monkey(2004/07/20 11:44:12)


絶対値を使うということはどうして分かったのですか.
絶対値を使ったときの方法を文章で整理してみてください.
そうすると,どういうプログラムにすべきかも見えてくると思います.


No.15688

Re:絶対値
投稿者---monkey(2004/07/20 13:22:52)


ヒント:値iの絶対値を|i|で表すならば,与えられた数列は次の計算で求められる.

1 = 7 - |-6|
3 = 7 - |-4|
5 = 7 - |-2|
7 = 7 - | 0|
5 = 7 - |+2|
3 = 7 - |+4|
1 = 7 - |+6|

ここで,数列{-6,-4,-2,0,+2,+4,+6}は,公差2の等差数列である.
よって,-6≦i≦+6の範囲で,iを2ずつ増やしながら,

  7 - |i| 

の計算をすることにより,{1,3,5,7,5,3,1}が得られる.



No.15683

Re:絶対値
投稿者---nop(2004/07/20 12:03:51)


>1
>3
>5
>7
>5
>3
>1
>
>と表示するプログラムを作りたいのですが、

どんな方法でも構わないのでしたら

puts( "1\n3\n5\n7\n5\n3\n1" );

で表示されます。


No.15691

Re:絶対値
投稿者---かずま(2004/07/20 15:26:19)


絶対値を使わない方法を考えてみました。グラフが 7つの点
(-3,1), (-2,3), (-1,5), (0,7), (1,5), (2,3), (3,1)
を通る 6次関数はすぐ作れますよね。

    for (i = -3; i <= 3; i++) {
        n = i * i;
        printf("%d\n", 7-((n-15)*n+74)*n/30);
    }