【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21872

配列について
投稿者---スカイ(2005/07/12 17:37:21)


はじめまして、早速質問ですが、
for文などで得た計算結果を変数に格納するにはどうしたらいいのでしょうか??
具体的でなくてすみません。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列について 21874 まきじ 2005/07/12 17:59:32


No.21874

Re:配列について
投稿者---まきじ(2005/07/12 17:59:32)


>for文などで得た計算結果を変数に格納するにはどうしたらいいのでしょうか??

普通に代入すれば良いだけです。


この投稿にコメントする

削除パスワード

No.21876

Re:配列について
投稿者---YuO(2005/07/12 18:24:52)


  for( n = 2; n <= max; n++ ) {
    if(sosu(n)) 
      printf("%d\n",n);
    ary[count] = n ;
  }
  count++;
どうしてもaryにnの値が入らず、


for文中では,常にary[0]への代入になります。
# countのインクリメントがループの外だから。

  for( n = 2; n <= max; n++ ) {
    if(sosu(n)) 
      printf("%d\n",n);
    ary[count++] = n ;
  }

がやりたいことではないかな,と推測しますが……。



この投稿にコメントする

削除パスワード

No.21877

Re:配列について
投稿者---スカイ(2005/07/12 18:37:07)


>for文中では,常にary[0]への代入になります。
># countのインクリメントがループの外だから。
>
><pre> for( n = 2; n <= max; n++ ) {
if(sosu(n))
printf("%d\n",n);
ary[count++] = n ;
}
</pre>
>がやりたいことではないかな,と推測しますが……。

早速、実行してみました。
その結果、セグメントエラーが出てしまったんですけども、
なにか根本的に間違っているところがあるのでしょうか??


この投稿にコメントする

削除パスワード

No.21878

Re:配列について
投稿者---YuO(2005/07/12 18:45:22)


>その結果、セグメントエラーが出てしまったんですけども、
>なにか根本的に間違っているところがあるのでしょうか??

その原因を探すのが,デバッグという作業になるのですが。

ちなみに,167個目の素数は983です。
よって,print_sosu関数に,それ以上の値(正確に言うと,991以上)を与えた場合,
動作は未定義です。



この投稿にコメントする

削除パスワード

No.21879

Re:配列について
投稿者---スカイ(2005/07/12 18:52:25)


>>なにか根本的に間違っているところがあるのでしょうか??

>その原因を探すのが,デバッグという作業になるのですが。

すみません。
C言語初心者なのでデバックの作業がよくわからないのですが、、、

>ちなみに,167個目の素数は983です。

ありがとうございます。数え間違えていたんですね。。。
aryの数を変更しました。

>よって,print_sosu関数に,それ以上の値(正確に言うと,991以上)を与えた場合,
>動作は未定義です。

未定義になるとセグメントエラーが発生するのですか?


この投稿にコメントする

削除パスワード

No.21880

Re:配列について
投稿者---YuO(2005/07/12 19:28:26)


>C言語初心者なのでデバックの作業がよくわからないのですが、、、

基本的な方法としては,
・値を調べたいところにprintfを入れる
というものがあります。

そして,その出力が思った通りになっているかを調べるのです。


デバッガがあるのであれば,
・ブレークポイントを設置
・変数の値をウォッチしながらステップ実行
というのが基本的な方法になります。


ちなみに,デバッではなく,デバッ(debug)です。


>未定義になるとセグメントエラーが発生するのですか?

未定義の振る舞いとは,仕様もコンパイラも何が起こるかを規定しないことです。
何が起こってもおかしくない状況で,
最悪の場合にファイルシステムの破壊が起きてもおかしくない,ということです。



この投稿にコメントする

削除パスワード

No.21881

Re:配列について
投稿者---スカイ(2005/07/12 19:34:23)


>基本的な方法としては,
>・値を調べたいところにprintfを入れる
>というものがあります。
>
>そして,その出力が思った通りになっているかを調べるのです。

わかりました。なるほど。

>ちなみに,デバッではなく,デバッ(debug)です。

すみません。間違えていました。
デバッグですね。

>>未定義になるとセグメントエラーが発生するのですか?

>未定義の振る舞いとは,仕様もコンパイラも何が起こるかを規定しないことです。
>何が起こってもおかしくない状況で,
>最悪の場合にファイルシステムの破壊が起きてもおかしくない,ということです。

それはとても恐ろしいですね。
自分では気が付かないうちにファイルシステムが壊れていたりするんですか。

いろいろと教えていただきありがとうございます。

そろそろ先ほどのプログラムの間違いを探していこうと思います。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧