[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/17 22:02 / Filesize : 146 KB / Number-of Response : 439
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題片付けます 143代目



1 名前:デフォルトの名無しさん [2010/11/16(火) 22:14:58 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 142代目
hibari.2ch.net/test/read.cgi/tech/1288531658/

2 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 22:16:56 ]
【◆QZaw55cn4c 隔離】C/C++の問題を片付けます
1 : ◆QZaw55cn4c :2010/11/14(日) 15:15:49
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。

3 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 22:17:53 ]
>>1
infoseekのロダは死んでいるので次のロダを使うと便利です

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
codepad.org/ ←遅い時間は重い事があります
ideone.com/

4 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 22:28:06 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
問題1 キーボードから入力した複数個の整数の、加算と積算の計算結果を表示するプログラムを作成しなさい。
ただし、このプログラムは、連続して実行される前半と後半の2部構成で作成してください。
0が入力された時点で、入力処理を終了し結果の表示を行ってください。
すなわち、前半の処理では、キーボードから入力した数値の加算合計の表示を、0が入力されるまで繰返し、後半の処理ではキーボードから入力した数値の積算値の表示を、0が入力されるまで繰返すプログラムを作成してください。
【条件】 
前半の「和を求める」繰返しは while 文、後半の「積を求める」繰返しは do-while 文を使用して作成すること。
【実行例】
=加算処理=

値:6

値:8

値:12

値:0

合計は26です。

=積算処理=

値:2

値:6

値:3

値:3

値:0

積算値は108です。
問題2 繰返し処理を用いて、m ÷ nの計算をするプログラム(商を求める)を作成しなさい。 
ただし、演算に割り算記号 / を使ってはいけません。また、mとnはキーボードから入力してください。
【ヒント】 
・割り算をするとは、mからnを何回引くことができたか?を調べることと等価です 。元の数mが正の間、nを引くことができた回数が、割り算の商となります。
この回数を、 繰返し処理を使って数えさせてください。 
・繰返し条件は、「mからnを引いた結果が正の値の間」繰り返し、商を1ずつ増やしていきます。
負の値になったら、繰返しを終了します。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月18日
[5] その他の制限: なし
よろしくお願いします。

5 名前:デフォルトの名無しさん mailto:sage [2010/11/16(火) 23:16:03 ]
1] 授業単元: 数値解析
[2] 問題文(含コード&リンク): ランダムに入力された3次元における100点の重心を求めよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 2008
 [3.3] 言語: C
[4] 期限: 11月18日
[5] その他の制限: 構造体を使う

よろしくお願いします。

6 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 01:02:43 ]
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):www.dotup.org/uploda/www.dotup.org1254228.txt.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年11月17日12:00まで(一応20:00まででも可ですができれば12:00まで)
[5] その他の制限:できればなるべく簡単な(高度ではない)書き方をしてもらえたらと思います。(できればなのであまり気にしないで良いです)

問題数が3問と少し多いのですがどうかお願いします

7 名前:デフォルトの名無しさん [2010/11/17(水) 02:15:33 ]
[1] 授業単元:プログラミング
[2] 問題文
・キーボードから入力した整数値が3の倍数かどうかを表示するプログラム
・キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
ただし、平均値を求める関数 float ave(int a,int b)
を利用すること。
・キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。
ただし、文字を大文字に変換する関数を作成し、それを利用すること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010/11/18までにお願いします
[5] その他の制限:

8 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 02:21:46 ]
>>6
codepad.org/twiOoHeS
codepad.org/AwDSSo3p
codepad.org/IukKlXXu

9 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 07:34:30 ]
>>8
ありがとうございました!

10 名前:デフォルトの名無しさん [2010/11/17(水) 12:40:56 ]
[1] 授業単元:情報通信
[2] 問題文(含コード&リンク):
サーバープログラム(英文清書サーバーの作成)
クライアントから送信された(大文字小文字が乱雑な)英文字文字列を次のように変換して送り返す。
 分の先頭の文字:大文字
 分の先頭以外の文字:小文字
 アルファベット以外:変換しない
改行、スペース、タブにより単語の区切りとする。また、文末は改行コードではなく、ピリオド"."で判定する。
ポート番号は1202番
クライアントから接続されると、[Beautify Server Ready]を送信する。
"\end"または"\END"を送信すると、[Beautify Server Closed]を送信してコネクションを切断する。

このサーバーの目的(英文の清書)の範囲内で、高機能にすること(例えば単独の"I"を大文字にする、連続した空白文字を1つのスペースにする、など)を歓迎する。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/19
[5] その他の制限:
codepad.org/w4zd0J0t
上記のプログラムを参考に作成してもよいとのことです。
大文字や小文字のプログラムまではできましたが、その後がうまくできません。
よろしくお願いします。



11 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 12:55:22 ]
>>10
INExp.hとできてるところまでのコード暮

12 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 13:55:24 ]
>>10
質問
・受信データに全角が混じる可能性は有るの?
・受信データの途中で 0x00 が出現する可能性は有るの?
・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの?
・"\END"も返信するの?
・space + tab + space の場合、space 1つに変換するの?
・1Byte 単位で read() かけても文句言われない?

13 名前:デフォルトの名無しさん [2010/11/17(水) 15:24:40 ]
>>11
codepad.org/CHFnxR5p
です。
>>12
・受信データに全角が混じる可能性は有るの?
全角はないと思います。

・受信データの途中で 0x00 が出現する可能性は有るの?
ちょっとわからないです。ごめんなさい。

・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの?
・"\END"も返信するの?
"\END"+エンターキーで終了判定です。
"\END"は送信だけで大丈夫です。

・space + tab + space の場合、space 1つに変換するの?
区切りが3つできると思います。

・1Byte 単位で read() かけても文句言われない?
ちょっとわからないです。ごめんなさい。


14 名前:デフォルトの名無しさん [2010/11/17(水) 16:47:17 ]
前スレが埋まってしまってたのでもう一度貼っておきます。
[1] 授業単元:自然言語処理
[2] 問題文(含コード&リンク):
曖昧性のないLR 表を利用して、ファイルに記述された「1
桁の数、+、*、(、)で構成される数式」を計算するプログラムを作成せよ。数式は1 行ず
つファイルに記述されているとする。
問題文↓
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep2.pdf
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:12/3
[5] その他の制限:
資料
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/nlp05.pdf
の5〜15ページ。
またよろしければよろしくお願いします。
変数の役割や処理内容なども解説してくださると有り難いです。

15 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 17:27:22 ]
>>13
『ちょっと判らない』とは質問の意味が判らないという意味かい?

『"\END" は送信だけで大丈夫』とは返信の必要は無いと言う事?

区切りが3つできると言う事はtabは文字扱いで良いんだね

>>10 で提示されたソースコードは本当に動くの?
これTCP/IPでしょ、setup_server() の戻り値は待ち受けソケットだと思うんだけどなぁ...

16 名前:デフォルトの名無しさん [2010/11/17(水) 17:32:24 ]
>>15
そうです。ちょっと質問の意味がわからないです。すみません。
"\END"は送信するとサーバー側が[Beautify Server Closed]を送信してコネクションを切断する。
ので返信はいらないです。
>>10 のプログラム単体だと動かないかもです。

17 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 18:27:56 ]
>>16
そらまぁサーバー単体では動かないわな
サーバーが動いているときにクライアントが接続して初めて通信が開始されるんだからね

まぁ動くとの前提で考えようか、バッファがグローバル変数だからマルチプロセスを考慮してないのは明らかだ
多分、setup_server() で待ち受けソケット作って→接続あったら→待ち受けソケットをクローズって流れなんだろうな
1対1の通信しか想定していないプログラムと考えるよ

18 名前:デフォルトの名無しさん [2010/11/17(水) 18:30:42 ]
>>17
それでいいと思います。
ごめんなさい、学習不足で・・・。

19 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 18:49:45 ]
yomi.mobi/read.cgi/pc11/pc11_tech_1225320579/584-
歴史は繰り返すだね

20 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 18:54:07 ]
大学の講義なんて毎年同じなのが当たり前だし



21 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:02:42 ]
>>20
解答があればだけど、その時の解答どっかにか落ちてないのかね

22 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:12:47 ]
>>4誰かお願いします

23 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:32:10 ]
>>22

#include <stdio.h>

int main(void)
{
  int input,kasan=0,seki=1;

  puts("=加算処理=");
  while(1)
  {
    printf("値:"); scanf("%d", &input);
    kasan += input;
    if(input == 0){
      printf("合計は%dです。\n", kasan);
      break;
    }
  }

  puts("=積算処理=");
  input = 1;
  do{
    seki *= input;
    printf("値:"); scanf("%d", &input);
  }while(input != 0);
  printf("積算値は%dです。\n", seki);

  return 0;
}

24 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:35:32 ]
>>22

#include <stdio.h>

int main(void)
{
  int m,n,syou=0;
  printf("m:"); scanf("%d", &m);
  printf("n:"); scanf("%d", &n);
  while(n <= m){
    m -= n;
    syou++;
  }
  printf("syou:%d\n", syou);
  return 0;
}

25 名前:デフォルトの名無しさん [2010/11/17(水) 19:36:01 ]
>>7
お願いします

26 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:36:45 ]
>>4
問題1: codepad.org/ZdNJupRP
問題2: codepad.org/t9J0CI7t

27 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 19:50:32 ]
>>25

#include <stdio.h>

int c;

float ave(int a, int b) { return ((a+b+c)/3); }

char to_upper(char c) {
  if(('a' <= c) && (c <= 'z')){ c = c - 'a' + 'A'; }
  return c;
}

int main(void) {
  int a,b,i=0;
  char str[100];
  printf("a:"); scanf("%d", &a);
  printf("b:"); scanf("%d", &b);
  printf("c:"); scanf("%d", &c);
  printf("str:"); scanf("%s", str);
  printf("aは3の倍数で%s\n", (a%3)==0 ? "す" : "ない");
  printf("bは3の倍数で%s\n", (b%3)==0 ? "す" : "ない");
  printf("cは3の倍数で%s\n", (c%3)==0 ? "す" : "ない");
  printf("a,b,cの平均値は%f\n", ave(a,b));

  while(str[i] != '\0'){ str[i] = to_upper(str[i]); i++; }
  printf("===after to_upper===\n");
  printf("str:%s", str);
  return 0;
}

28 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:27:15 ]
>>10
書いたけど部分的なテスト(beautifyString)しかしてないよ、全体的なテストはやりようが無いからね
動かして変な動作が有ったら言ってくれ

ttp://codepad.org/GxRLKH2W

29 名前:デフォルトの名無しさん [2010/11/17(水) 20:30:56 ]
書き方が悪くてすみません;
>>7は全部別々の問題です

1.キーボードから入力した整数値が3の倍数かどうかを表示するプログラム

2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
ただし、平均値を求める関数 float ave(int a,int b)
を利用すること。

3.キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。
ただし、文字を大文字に変換する関数を作成し、それを利用すること。

30 名前:28 mailto:sage [2010/11/17(水) 20:35:52 ]
>>10
codepad で見直したら誤りがあったので訂正した

ttp://codepad.org/49uvkrrJ




31 名前:デフォルトの名無しさん [2010/11/17(水) 20:40:25 ]
>>28
ありがとうございます。
ちょっと動かしてみましたが。
・・・・.・・・・・.
のように一行にピリオドが2つ以上入力したとき
・・・・.
・・・・.
のように出力されると思うのですが。
うまくできなかったです。

32 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:41:09 ]
割り算の結果が整数になっとったわ
float ave(int a, int b) { return ((a+b+c)/3); } は、
float ave(int a, int b) { return ((a+b+c)/3); } な。

33 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:41:49 ]
割り算の結果が整数になっとったわ
float ave(int a, int b) { return ((a+b+c)/3); } は、
float ave(int a, int b) { return ((a+b+c)/3.0); } な。

34 名前:デフォルトの名無しさん [2010/11/17(水) 20:46:17 ]
>>30
>>31 の追記です。
\ENDか\endの入力でサーバーが閉じないです。

35 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:46:33 ]
>>33
cはどこから来るのかな?

36 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:48:27 ]
>>31
言ってる意味がよく判らないんだけど >>28 は駄目だよ >>30 を試してくれ

37 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 20:53:53 ]
>>34
90行目
ptr = strstr( buf1, "\\end\r\n" );

ptr = strstr( buf1, "\\end" );
に直してみてくれる?
改行コードまでを終了判定に使うか迷ったんだけど "\end \r\n" みたいな入力がある事を考えると使わない方が良いかも
そのかわり、文中に "\end" が入るとそこで終わっちゃうけどね

38 名前:デフォルトの名無しさん [2010/11/17(水) 20:54:46 ]
>>36
下記が実行結果です。
[Beautify Server Ready]
It is June now. I will finish my studies in America soon,and leave for Japan next month.
It is june now. I will finish my studies in america soon,and leave for japan next month.


It is june now.
I will finish my studies in america soon,and leave for japan next month.
のようにはならないのですか?ってことです。わかりづらくてごめんなさい。

39 名前:デフォルトの名無しさん [2010/11/17(水) 20:58:56 ]
>>37
変えてみましたが
\end
\End
のようになって終わらないです。。

40 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:00:30 ]
>>38
ピリオドで改行しろって事?>>10 からはその意図を読み取れなかったんだけど、その方が良いのかな?
そっちの方が良いなら直すのは簡単だよ

>>34はOK?



41 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:02:55 ]
今は7月です。
私はすぐにアメリカの宿題を終えるでしょう。そして来月日本を発ちます。

42 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:03:26 ]
ネットワークは適当に連結されて送受信されたりするから
\end が独立してないんじゃないかな

43 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:06:40 ]
>>39
理由は判った、無くて7バグを体現してるなぁwww
文頭に 'Cause が有った場合は 'cause に直すべき?
答えによっては修正法が異なるので



44 名前:デフォルトの名無しさん [2010/11/17(水) 21:07:08 ]
>>40
文末をピリオドで判定するから
ピリオドで改行するのかなと、思うのですが・・・。

45 名前:デフォルトの名無しさん [2010/11/17(水) 21:09:11 ]
>>43
そこは直さなくてもいいと思います。
特に記載されてないので・・・。

46 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:09:45 ]
>>44
仕様を決めるのは君だから君がそう思うなら直すよ >>43 の答えが出たら作業を開始する


47 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:15:56 ]
>>10
2箇所しか修正箇所が無いから codepad の無駄使いかなぁ....

ttp://codepad.org/Cv02rynJ

48 名前:デフォルトの名無しさん [2010/11/17(水) 21:33:03 ]
どなたか>>29をお願いできませんか!;
急ぎなのでお願い致します!

49 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:46:28 ]
>>48
>2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
>ただし、平均値を求める関数 float ave(int a,int b)
>を利用すること。
問題文、あってる?

>float ave(int a,int b)
これは課題として記述する関数?それとも与えられた関数?


50 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 21:50:41 ]
>>48
参考までに
nojiriko.asia/prolog/c143_7_2.html



51 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:03:28 ]
全スレ999です。
15パズルをランダムに状態を遷移させて完成にまで持って行きたいのですが
15パズルには考えられる状態数が多すぎるため10000回の遷移では完成させることができません
乱数を用いて、比較的すぐにパズルを完成させるためにはどのようにすれば良いですか?


52 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:06:01 ]
完全ランダムを辞めて戦略を考えてやればいいじゃないの

53 名前:デフォルトの名無しさん [2010/11/17(水) 22:08:29 ]
>>49
課題として記述する関数だと思います;

>>50
ありがとうございます。
でもよくわからない…orz

54 名前:51 mailto:sage [2010/11/17(水) 22:14:45 ]
>>52
探索ではなく、乱数を使った戦略は何がありますか?

55 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:15:55 ]
なんで乱数にこだわるの

56 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:22:11 ]
>>54
左上が正しい位置に来たら、そのピースだけは動かさないようにする。
更にその周辺のピースが正しい位置に来たら、そのピースは動かさないようにする。
みたいに動かさなくてもすむピースを固定していったら?

57 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:31:04 ]
>>53
float ave(int a,int b,int c)の間違いじゃない?

58 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:36:54 ]
>>56
横からですまんが
それで解けると思わないんだが

59 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:40:40 ]
もしかして遺伝的アルゴリズムとかの系統を使う系?

60 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:44:50 ]
>>29
とりあえず大雑把に。入力値のチェックはしていない
問題1:

#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
puts((i%3)?"3 no baisu dehanai":"3 no baisu");
return 0;
}




61 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:46:31 ]
>>29
問題2:

#include<stdio.h>
float ave(int a,int b)
{
return (float)a/b;
}

int main()
{
int a,b,c;

scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);

printf("%f\n",ave(a+b+c,3));
return 0;
}

62 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 22:48:05 ]
>>29
問題3:

#include<stdio.h>
char conv(char c)
{
return ((c>='a')&&(c<='z'))?(c-'a'+'A'):c;
}
int main()
{
char s[256];
int i;

scanf("%s",s);
for(i=0;'\0'!=s[i];i++)
printf("%c",conv(s[i]));
printf("\n");
return 0;
}

63 名前:47 [2010/11/17(水) 22:51:36 ]
>>10
>>47 は話にならない事が飯食ってたら判ったので修正、何回目のアップだろう...orz

ttp://codepad.org/FJrFT2Ke

これで最後にしたいなぁ....

64 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:00:19 ]
>>57
多分、2項の平均値を得る関数を用いて3項の平均値を取るって所が肝なんじゃね?
ave( ave( a, b ), c );
だと重みが違っちゃうから駄目なんだろうなぁ、どうするんだろ?

65 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:08:23 ]
>>64
(ave(a,b)+ave(b,c)+ave(c,a))/3.0

こうか?w

66 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:11:32 ]
安部

67 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:18:26 ]
麻里亞

68 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:47:39 ]
こうだろ ave( ave( a, b ) * 2, c );

69 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:48:02 ]
>>65
こんな式でもOK
ave(ave(a, b) * 2, c)

70 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:52:55 ]
>>68-69
やめてやれよw



71 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:57:34 ]
>>64
難しい式だなー 俺なら直感的にこう書くわ
(ave(a,a)+ave(b,b)+ave(c,c))/3.0

72 名前:デフォルトの名無しさん mailto:sage [2010/11/17(水) 23:59:18 ]
a=1,b=2,c=1.5の時のaveは1.5になるが、>>68>>69では2.25になってしまう

73 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 00:07:51 ]
>>72
おっしゃる通りなので訂正。
((ave(a, b) * 2 + c) / 3.0

74 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 00:30:10 ]
誰か宿題の回答書いてやれよ


75 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 00:54:24 ]
>>29
 ave(a, b) = (a+b)/2
 ave(b, c) = (b+c)/2
+ ave(c, a) = (c+a)/2
----------------------
ave(a, b)+ave(b, c)+ave(c, a) = a+b+c

ave(a, b, c) = (a+b+c)/3 = {ave(a, b)+ave(b, c)+ave(c, a)}/3
これでどうよ

>>54
乱数だったら完全に運じゃん?

76 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 01:52:38 ]
3で割ったら負けかなと思ってる

77 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 02:07:13 ]
スカラー量を2等分しかできない道具を駆使して、スカラー量を3等分することって
可能なんだろうか? 昔いろいろ考えたけど、いい方法が思い浮かばなかったわ

78 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 02:22:49 ]
>>77
1/4+1/16+1/64+1/256+・・・

Σ(1/4^n)=1/3

79 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 02:26:48 ]
ほう・・・

80 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 03:20:38 ]
>>58
56とは別人だが、固定箇所を限定すればいけんじゃね?
↓こんな感じで
■□□□ ■■□□ ■■□□ ■■□□ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■
□□□□ □□□□ ■□□□ ■■□□ □□□□ ■□□□ ■■■■ ■■■■ ■■■■ ■■■■
□□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ ■■□□ ■■□□
□□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ □□□□ ■■□□



81 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 03:33:26 ]
なるほど、それならできるかも

82 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 04:13:11 ]
>>80
それって8パズルでも可能?

83 名前:デフォルトの名無しさん [2010/11/18(木) 07:52:13 ]
ポーカーゲームを作るプログラムの課題を教えてください。
[1] プログラムまとめ
[2] 課題1のストレート、フラッシュ、フルハウスをヒントを使って判定する関数を作る。

/* ヒント: この関数を使うと、 判定が簡単かも */
void distrib(struct card h[], int dist[]){
int i;
for(i = 0; i < 14; i++){
dist[i] = 0;}
for(i = 0; i < 5; i++){
dist[h[i].pips]++;}}

int is_straight(struct card h[]){
/* 課題1 */
return 0;}

int is_flush(struct card h[]){
/* 課題1 */}

int is_fullhouse(struct card h[]){
/* 課題1 */
return 0;}

[3] 環境
 [3.1] Mac
 [3.2] Xcode
 [3.3] C
[4] 期限: 2010年11月22日まで
よろしくお願いします。

84 名前:デフォルトの名無しさん [2010/11/18(木) 07:55:37 ]
83に付け足します。
card h[] は手札のカード
h[].pips は手札のカードの番号
h[].suit は手札のカードのマーク
のことです。

85 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 08:11:05 ]
ジョーカーは0?

86 名前:デフォルトの名無しさん [2010/11/18(木) 08:50:38 ]
>85
カードは全部で52枚なので、ジョーカーは無いものと考えているようです。

87 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 10:13:18 ]
dist[]のサイズが14だからジョーカーの分もあるのかと思ったら
ただ添え字と数字あわせただけか

88 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 12:57:24 ]
>>83
書いてみた、ゲームの仕様が判らないので手役の判定だけね
ランダムに10000回手札を作ってその手役を判定する
出力としては、4カード以上の手役が出来たら手札を表示
最後に出来た役の総数を出力
手役表示の優先順位は誤っているかも知れん、ロイヤルストレートって出現頻度が低いんだなぁ

ttp://ideone.com/JiPy6

89 名前:デフォルトの名無しさん [2010/11/18(木) 12:57:37 ]
>>60>>61>>62
ありがとうございました!
お礼が遅れてすみません

90 名前:デフォルトの名無しさん [2010/11/18(木) 12:58:48 ]
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
赤(0〜255)、緑(0〜255)、青(0〜255)のそれぞれの濃淡で
描かれた256色ビットマップ形式の3つの画像を読み込み、
それぞれの色を重ね合わせて一つの画像にする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
 [3.3] 言語: C/C++
[4] 期限: 2010年11月21日まで
[5] その他の制限:
↓これに近い感じでお願いします。
codepad.org/dZITrctF





91 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:11:31 ]
codepadが開けない

92 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:23:17 ]
>>83
チェックしてないけど
int is_straight(struct card h[]) {
int i, j, dist[14];
distrib(h, dist);
for(i = 1; dist[i] == 0; i++);
if(i == 1) {
for(j = 10; j <= 13; j++) if(dist[j] != 1) break;
if(j > 13) return 1; }
for(j = 0; j < 5; j++) if(dist[i + j] != 1) return 0;
reutrn 1; }

int is_flush(struct card h[]) {
int i;
for(i = 1; i < 5; i++) if(h[0].suit != h[i].suit) return 0;
return 1; }

int is_fullhouse(struct card h[]) {
int i, dist[14];
distrib(h, dist);
for(i = 1; i <= 13; i++) if(dist[i] == 1 || dist[i] == 4) return 0;
return 1;
}

93 名前:デフォルトの名無しさん [2010/11/18(木) 13:32:49 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

関数int yokin(int yen, double rishi, int year)を定義しなさい。
この関数はyen円を年利rishiの定期預金にyear年預けた後に戻ってくる金額を返す関数である。
引数はすべて0より大きいと仮定してよい。
rishiは,5%の場合には0.05となる。
利子は端数(小数点以下の値)があったとしても切り捨てられる。
端数の切り捨ては,毎年行われる。 main関数は次の処理をしなさい。
入力として,預け入れる金額を表す整数,利子を表す実数(0.0より大きく, 1.0より小さい),年数を受け付ける。
int yokin(int yen, double rishi, int year)を利用して,預け入れ後に受け取れる金額を出力せよ。

入力例1: 10000 0.05 3
入力例1に対する出力:11576
入力例2: 10000 0.05 5
入力例2に対する出力:12761
入力例3: 10000 0.035 10
入力例3に対する出力:14101

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++
[4] 期限: できればはやめに
[5] その他の制限:
とくになしです

よろしくお願いします。

94 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:47:22 ]
>>93

#include <stdio.h>

int yokin(int yen, double rishi, int year)
{
  for(; 0<year; year--, yen+=yen*rishi);
  return yen;
}

int main(void) {
  int yen; double rishi; int year;
  int counter=1;
START:
  printf("入力例%d: ", counter);
  scanf("%d %lf %d", ¥, &rishi, &year);
  printf("入力例%dに対する出力:%d\n", counter, yokin(yen, rishi, year));
  goto START;
  return 0;
}

95 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:48:31 ]
>>93
カウンターのインクリメント忘れ。

#include <stdio.h>

int yokin(int yen, double rishi, int year)
{
  for(; 0<year; year--, yen+=yen*rishi);
  return yen;
}

int main(void) {
  int yen; double rishi; int year;
  int counter=1;
START:
  printf("入力例%d: ", counter);
  scanf("%d %lf %d", ¥, &rishi, &year);
  printf("入力例%dに対する出力:%d\n", counter++, yokin(yen, rishi, year));
  goto START;
  return 0;
}

96 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:49:48 ]
yokin yen rishi と来て、最後が year かよ

97 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:56:55 ]
yen rishi と来て、最後が year かよ

98 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 13:57:26 ]
いやあそれほどでも

99 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 14:08:18 ]
>>97
関数名が見えない目の不自由な人?

100 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 14:21:24 ]
誰かパステルカラーの宿題をお願いします。



101 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:03:37 ]
>>82
8パズル(右下が空きの場合)はこのように固定すればいい(一例)。たぶんな。
■□□ ■■■ ■■■ □□■
□□□ □□□ ■□□ □□□
□□□ □□□ ■□□ ■□□
  (a)     (b)    (c)     (d)

ただし、(a)とした状況で(d)を適用は不可能(d→aも同様)。下のようになっちゃうからね。
固定の仕方(aとするかdとするかなど)により、収束の早さが変わると思うが、どういう固定の仕方がいいのかはさっぱりわからん。
■□■
□□□
■□□

あと、おそらくだが、下の場合のように遷移可能な場所が1つであるような固定の仕方は駄目だと思う。
たとえば、ブロックの座標を(行,列)で表すとして、(1,2)のブロックは(2,2)だけにしか遷移できない、のように。
たぶん、こういった"遷移可能な場所が1つである部分"がないならどんな固定の仕方でも大丈夫だと思う。
 1 2 3
1■□■
2□□□
3□□□


102 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:14:41 ]
お前らパズル引っ張りすぎ
飽きた

103 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:16:59 ]
ポーカーは面白かったな

104 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 16:29:36 ]
>>102
ごめん、引っ張ってんの俺だわw
たぶん最後のレス。

>>101に間違いあり。
一番下のどんな固定の仕方でも大丈夫と書いたけど、これ間違い。
(e)を遷移させていくと(f)になるんだが、この時点で固定すると(e)に戻せなくなる。
123 123
456 754
78  68
 (e)  (f)

まぁ、>>101の(a)→(b)→(c)と固定していくのが無難だと思われ。

105 名前:デフォルトの名無しさん [2010/11/18(木) 17:13:32 ]
>>88>>92
ありがとうございました!
助かりました^^

106 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 17:27:10 ]
>>90
コレって合成先のビットマップも256色なの?
なんかパレット数が妙なことになってるけど
それはなかったことにして24bitか32bitビットマップとしていいのか?

107 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 18:08:49 ]
>>100
>>1

108 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 18:13:12 ]
>>107
>>109

109 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 18:21:57 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):3次元上に3点をランダム発生、半径を指定し、その3点が球面上に乗る球の中心を求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:特になし
球の中心の求め方の参考 ttp://oshiete.goo.ne.jp/qa/195295.html
よろしくおねがいします。


110 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 19:11:48 ]
>>109
二次方程式の解き方を教えてください



111 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 20:02:57 ]
これ系→ >>101
取りあえず完全乱数版を作ってみた。
これから >>101 方式作って比べてみる。

112 名前:111 mailto:sage [2010/11/18(木) 20:03:39 ]
URL忘れてた
codepad.org/0ehnVXCt


113 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 20:17:58 ]
収束速くなったかな?
codepad.org/r5SGn6ge

114 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 20:47:32 ]
ついでに >>80
codepad.org/y6kYFh9r

115 名前:デフォルトの名無しさん [2010/11/18(木) 21:05:10 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、
サブルーチン内で表示するプログラムを作成せよ。(構造体を使用しないこと。)
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし

連投しますが、よろしくお願いします。


116 名前:デフォルトの名無しさん [2010/11/18(木) 21:09:36 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、
サブルーチン内で表示するプログラムを構造体を用いて作成せよ。ただし、
構造体のメンバに値を代入する際には変数実体を操作する。
すなわちドット演算子を用いること。
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし

連投しますが、よろしくお願いします。

117 名前:デフォルトの名無しさん [2010/11/18(木) 21:11:24 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):>>116において、構造体のメンバに値を
代入する際にポインタを用いて代入するプログラムを作成せよ。
すなわちアロー演算子を用いること

 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし


118 名前:デフォルトの名無しさん [2010/11/18(木) 21:14:54 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):学年、学科、番号、を表示する
プログラムを作成せよ。ただし、構造体を使用し、構造体のメンバとして
構造体を含むようにすること。

 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし


119 名前:デフォルトの名無しさん [2010/11/18(木) 21:18:24 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):メンバとしてchar型変数chとint型変数をi、
double型変数dを持つ共用体を用意する。
iに16進数値を代入した後ch,i,dそれぞれを表示する
プログラムを作成せよ。なお、表示する際に、全ての変数を%xで表示すること。

 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし

以上よろしくお願いします。

120 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 21:33:43 ]
>>115~
なんかすごいな...
やり方教えたほうがいいのかな...



121 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 22:25:25 ]
>>116 と >>117 なんて A[i].B と (A+i)->B の違いだけだしなぁ
C言語を覚えたての奴が独習として回答するんじゃないのか?

122 名前:デフォルトの名無しさん [2010/11/18(木) 22:57:20 ]
[1] 授業単元:プログラミング
[2] 問題文
コンストラクタでrow,columnを指定して、動的に確保
デストラクタを解放
これで足し算メソット add(matrix Y)を作ってください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010/11/20
[5] その他の制限:あまり難しくしすぎないでください。
あと、出力→coutで、入力はcinでお願いします。


123 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:03:52 ]
>>122
問題文を日本語で頼む

124 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:36:13 ]
>>123
お前日本語読めないの?

125 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:41:33 ]
news.www.infoseek.co.jp/topics/comp/n_game__20101118_6/story/gadget_85662/

126 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:45:14 ]
あずにゃん

127 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:48:22 ]
いまや低脳日本人だらけだからね
高脳なら低脳の意味不明な文章でも問題なく理解できるが、でも低脳は不可能
低脳は高脳が低脳にあわせて解りやすく言うことしか理解できない
ついでに、低脳同士のコミュニケーションは不可能


128 名前:デフォルトの名無しさん mailto:sage [2010/11/18(木) 23:50:55 ]
確かに、高脳なら普通に理解できるものを低脳は理解できない、しようとしない。

129 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 00:00:09 ]
>>122
望んでるのはこんなんか?入力部分はコメントアウトしてある

ttp://codepad.org/bG4bQkai

130 名前:122 [2010/11/19(金) 00:55:47 ]
>>129
出来たら、coutの部分を日本語でいれていただきたいんですが…
あと、(void)って()の中のvoidは必要ですか?



131 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 01:39:08 ]
>>130
このようなことまで注文するのは
回答者(2ch?)の著作権を尊重しての
ことなのでしょうね。

132 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 01:40:51 ]
ISO、ANSI準拠の標準スタイルではC++ではmain関数への引数が無い場合はvoidが無くてもおk
int main() { } でどうぞ。return 0;も省略可。

133 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 02:07:32 ]
>>130
日本語に直すぐらいは自分でやれ、エディターを使った事が無いなら別だけど

引数の void は引数が無いことを明示的に表現しているだけなので省略しても良い
しかし、明示的に表示する事によるデメリットは何も無いので、俺は必ず付ける

134 名前:デフォルトの名無しさん [2010/11/19(金) 14:24:49 ]
>>14
分かる方いましたらよろしくお願いします。

135 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 15:41:57 ]


136 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:27:09 ]
>>129
newしたものを初期化してほしければ
m_Mat[i] = new int[m_column]();
じゃないか?

137 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:33:26 ]
>>136
() 付けないとコンストラクタは呼ばれないんだっけ?
忘れてることって多いな....

138 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:46:21 ]
>>136
コンパイルエラー

139 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:48:06 ]
>>136
やってみたら E2243 new で確保した配列には初期化子が使えない (C++) が出るな

#include <iostream>
class foo {
public: int x;  foo( void ) { x = 1; }
};
int main( void ) {
  foo* p; int* x; int i;
  p = new foo[10]; x = new int[10];
  for(  i = 0; i < 10; i++ )
    std::cout << p[i].x << ", " << x[i] << std::endl;
  return 0;
}
試しにこんなコードを書いてみたら、p[].x は全て1に初期化されていたけど、x[] は未初期化状態だ
int はディフォルトコンストラクタを持たないって事かな?

140 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:50:11 ]
>>139
int()は単独では使えるけど、配列newには使えないだけ



141 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 16:53:11 ]
規格のバージョンとか、独自拡張とかなのかな?
codepadとVC++2010じゃコンパイル出来た。

142 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:00:26 ]
§5.3.4 New
15 A new-expression that creates an object of type T initializes that object as follows:
? If the new-initializer is omitted:
? If T is a (possibly cv-qualified) non-POD class type (or array thereof), the object is defaultinitialized
(8.5). If T is a const-qualified type, the underlying class type shall have a user-declared
default constructor.
? Otherwise, the object created has indeterminate value. If T is a const-qualified type, or a (possibly
cv-qualified) POD class type (or array thereof) containing (directly or indirectly) a member of
const-qualified type, the program is ill-formed;

という事だそうです

143 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:15:43 ]
>>140
それは foo に関しても同じ、 foo の配列 new ではディフォルトコンストラクタが呼ばれて x が 1 に初期化されたけど、
int は 0 に初期化されなかったので int にはディフォルトコンストラクタが用意されてないのかという話

144 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:17:05 ]
>>141>>143
それはC++0xではいいが
C++ではだめ

POD class type (or array thereof) containing (directly or indirectly) a member of
const-qualified type, the program is ill-formed;

これの意味が分かれば分かるはず


145 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:18:02 ]
Otherwise, the object created has indeterminate value.

ああこれも含めてな

146 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:37:50 ]
英語弱いから日本語で書いてくれ


147 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 17:40:41 ]
よし in English

148 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 18:24:28 ]
C++03では配列newの場合非PODではデフォルトコンストラクタが呼ばれ、
PODの場合は不定値となるという事

もし new int[constant]() と書くと文法エラー(C++0xではOK)

149 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 18:32:38 ]
>>148
じゃ >>143 は正しい解釈じゃないの?
要は plain old data にはディフォルトコンストラクタが無いことに起因してるんだから

150 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 18:44:44 ]
デフォルトコンストラクタはある

int i() とやると iは0に初期化される

しかし配列newの場合はPOD型はデフォルトコンストラクタは呼ばれなくて
不定値になるとちゃんと書いてあるじゃん



151 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:04:55 ]
PODのディフォルトコンストラクタは配列 new 時にはコールされないって解釈なら正しいのか?

152 名前:mery [2010/11/19(金) 19:10:58 ]
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は10等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語:C
[4] 期限:11月21日
[5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです
よろしくお願いします!

153 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:15:02 ]
>>152
その度数分布だと5等分なんじゃ?

154 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:44:05 ]
>>151
規格を解釈するとそうなる

155 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:48:48 ]
#include <stdio.h>
#include <stdlib.h>
double ave,var;
double heikin(double *array,int n)
{
int i;
double sum=0;
srand(10);
for(i=0;i<n;i++){
array[i] = (double)(rand())/RAND_MAX;
sum+=array[i];
printf("%lf\n",array[i]);
}
return sum;
}

156 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:50:46 ]
int main(void)
{
int d=0;
double *h,r;

printf("乱数の数:");
scanf("%d",d);

h=(double*)malloc(d*sizeof(int));
r= heikin(h,d);
printf("合計:%lf",r);
return 0;
}

乱数の合計値を求めるプログラムなんですが、エラーが発生します。
どこが原因なんでしょうか?

157 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:54:03 ]
>>156
sizeof(int)

158 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 19:56:05 ]
>>157
sizeof(int)をどうすれば良いのですか?

159 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:12:30 ]
double *h,r; hはdouble型のポイントで

h=(double*)malloc(d*sizeof(int)); int型のサイズで確保してどーすんだと

160 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:13:20 ]
ポイントってなんだ、ポインタやん orz



161 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:20:25 ]
>>156
scanf("%d",d);

scanf("%d",&d);

162 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 20:30:04 ]
>>159-161
ありがとうございます。
初歩的なミスでした。

実を言うと、もう一つ質問があります。
この合計から「分散」を計算したいのですが、どうすれば良いですか?


163 名前:mery [2010/11/19(金) 20:57:47 ]
>153さん
すいません、5等分でした。
正しい問題は、
「無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 」です。


164 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:23:30 ]
>>152
#include <stdio.h>

int main(void)
{
int count[5]={0};
int i, j, x=0;
i=0;
while(1)
{
if(i>=10) break;
scanf("%d", &x);
count[(x-1)/10]++;
i++;
}
i=0;
while(1)
{
if(i>=5) break;
printf("%2d〜%2d : ", i*10+1, (i+1)*10);
j=0;
while(1)
{
if(j>=count[i]) break;
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}

165 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:36:07 ]
よし、マイナスの値を入力して結果を見てみようか。

166 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:37:57 ]
範囲外の値を入力したらエラーで落ちた orz

167 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:41:39 ]
こういうのを勇み足といいます

168 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:49:20 ]
入力された値をもとに配列の添え字を指定するのは思いついたが
範囲外の対処が甘かったか。

169 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:49:34 ]
>>162の者ですが、「分散」のプログラムはこれで合ってますか?

ave=sum/n;
for(i=0;i<n;i++){
gokei+=(sum*((array[i]-heikin)*(array[i]-heikin)));
}
var=gokei/(n-1);

170 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:50:58 ]
>>169
いいえ



171 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 21:56:25 ]
>>169
どこが違うのか教えてください

172 名前:デフォルトの名無しさん mailto:sage [2010/11/19(金) 22:45:54 ]
>>169ですが、書き直しました。

ave=sum/N;
for(i=0;i<N;i++){
sum2+=((array[i]-ave)*(array[i]-ave));
}
var=sum2/(N-1);
return var;
}

これで合ってますか?間違っているのなら指摘をお願いします。

173 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 00:05:58 ]
>>172
sum2=0;
をforの前に入れればOK

174 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 00:07:40 ]
安部

175 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 00:09:48 ]
分散は、
(二乗の平均) - (平均の二乗)
に等しい、という公式がありますので(ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3
平均を求めるときに二乗の平均もあわせて計算すると、1 pass ですみます。参考までに。

176 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 01:35:23 ]
>>173>>175
ありがとうございます!

177 名前:デフォルトの名無しさん [2010/11/20(土) 01:46:27 ]
[1] 授業単元:プログラミング
[2] 問題文
imepita.jp/20101120/039760
図の左のプログラム(○つけてある方です)の30行目〜32行目を消して、デストラクタを作って31行目の処理を実装して動作確認をしてください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010/11/22


178 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 01:51:07 ]
>>177
読みづらい
それにSeiseki.hはどこにあるの?
面倒でもcodepadかどこかに上げてくれ

179 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 01:53:29 ]
>>177
そのページを打ち込んだテキストファイルをアップする
それが最低限のマナーだと思うぞ


180 名前:デフォルトの名無しさん [2010/11/20(土) 01:53:42 ]
>>132
これって、printfはcoutにする事は不可能でしょうか



181 名前:177 [2010/11/20(土) 02:02:03 ]
imepita.jp/20101120/070540
ごめんなさい。全体を貼ったほうがいいですね…

182 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:05:13 ]
だからimepitaはやめろっつーに
それもデジカメじゃなくて携帯で撮ったろ
ボケて読めない
テキストで打ち込め

183 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:20:24 ]
なんでわざわざ紙に印刷した上にデジカメで撮影した画像をアップするんだよw
もとのテキストをアップすりゃ済むことだろw

184 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:26:49 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):平均値:μ,分散:σ^2の分布がn個与えられているとする。
この分布が何であろうと、nの数が多きなるにつれてこの分布の合計は平均:nμ,分散:nσ^2の正規分布に近づくとされる。
要素数n個をもつx個の乱数系列を発生させるプログラムを作れ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010
 [3.3] 言語: C++
[4] 期限:2010年11月22日
[5] その他の制限:@キーボードから入力すること
A乱数は配列で保存すること
B#include <stdio.h>#include <stdlib.h>にしてはじめること


185 名前:177 [2010/11/20(土) 02:27:17 ]
>>183
紙に印刷したんじゃなくて配布のプリントなんです…

186 名前:デフォルトの名無しさん [2010/11/20(土) 02:28:16 ]
宿題をくれているのに生意気なこと言うなよ
とっとと宿題をやれ

187 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:42:25 ]
野良猫にえさを与えないで下さい

188 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:44:02 ]
>>185
だから、それを一字一句間違いなく打ち込んでアップするのが出題者の最低限のマナーだ
コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう

189 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:47:11 ]
にゃおおおおー、にゃおーーーー

 ヾヽヽ
 (,, ・∀・)チュンチュン
  ミ_ノ
  ″″

190 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 02:48:51 ]
>>188
>コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
これどうやるんですか?



191 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:14:56 ]
まさかパソコン持ってないとか言うなよ・・・・

192 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:26:10 ]
>>190
君に言うべき言葉が見つからない、ゴメン

193 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:30:47 ]
いや、あるよ
>>190
君はこのスレに来る前にしなければならない事が山ほどある

194 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:35:42 ]
PCなくてもネカフェ行けばいいんでないの

195 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:40:16 ]
いまの学生は携帯は持っているけど、PCは持ってないの多そうだな
宿題の解答は学校のPCでダウソかな
時代は携帯中心になり、モビリティのないPCはおっさん時代の中心ねだろうな

196 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:45:36 ]
だが、PCが一人1台すらない詐欺学校で
全て机上のペーパープログラミング授業だとしたらどうだろう?

197 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 03:45:56 ]
>>177
よく分からないんだけど、これでいいの?
Seiseki.h codepad.org/pD9ELv8a
Seiseki.cpp codepad.org/eHbTlLw3
main.cpp codepad.org/EosY2r9A

198 名前:90 [2010/11/20(土) 03:50:57 ]
>>106
亀レスでごめんなさい。
256色で出力しようと思ってたのですが。
求める画像ができるならどの形式でも問題ありません。

codepad重いみたいなのでおかしいと思ったところを書き直して貼ってみます。
どなたか>>90をお願いします。


#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
FILE *fp = NULL;

int inwidth,inheight,insize;


RGBQUAD eq[256];
for(a=0; a<256; a++)
{
eq[a].rgbBlue = a;
eq[a].rgbGreen = a;
eq[a].rgbRed = a;
eq[a].rgbReserved = 0;
}



199 名前:デフォルトの名無しさん [2010/11/20(土) 03:52:02 ]
fopen_s(&fp, "赤rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
inwidth = bmih.biWidth;
inheight = bmih.biHeight;
insize = inwidth * inheight;
unsigned char* red;
red = new unsigned char[insize];
fread( &eq , sizeof(RGBQUAD)*256, 1 , fp );
fread(red, insize, 1, fp);
fclose(fp);

fopen_s(&fp, "緑rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
unsigned char* green;
green = new unsigned char[insize];
fread( &g , sizeof(RGBQUAD)*256, 1 , fp );
fread(green, insize, 1, fp);
fclose(fp);


200 名前:デフォルトの名無しさん [2010/11/20(土) 03:52:44 ]
fopen_s(&fp, "青rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
unsigned char* blue;
blue = new unsigned char[insize];
fread( &eq , sizeof(RGBQUAD)*256, 1 , fp );
fread(blue, insize, 1, fp);
fclose(fp);


unsigned char* rgbrec;
rgbrec = new unsigned char[insize];
RGBQUAD rgb[256*128];
for (a=0; a<insize; a++)
{
rgb[a].rgbBlue = blue[a];
rgb[a].rgbGreen = green[a];
rgb[a].rgbRed = red[a];
rgb[a].rgbReserved = 0;

rgbrec[a] = a;
}





201 名前:デフォルトの名無しさん [2010/11/20(土) 03:53:25 ]

bmfh.bfType = 0x4D42;
bmfh.bfSize = 54+insize+(4*256*128);
bmfh.bfReserved1 = 0;
bmfh.bfReserved2 = 0;
bmfh.bfOffBits = 54+4*256*128;

bmih.biSize = 40;
bmih.biWidth = inwidth;
bmih.biHeight = inheight;
bmih.biPlanes = 1;
bmih.biBitCount = 8;
bmih.biCompression = 0;
bmih.biSizeImage = insize;
bmih.biXPelsPerMeter = 0;
bmih.biYPelsPerMeter = 0;
bmih.biClrUsed = 256;
bmih.biClrImportant = 0;

fopen_s(&fp, "rec「RGB」.bmp" , "wb" );
fwrite( &bmfh , sizeof(BITMAPFILEHEADER) , 1 , fp );
fwrite( &bmih , sizeof(BITMAPINFOHEADER) , 1 , fp );
fwrite( &rgb , sizeof(RGBQUAD)*256*128 , 1 , fp );
fwrite( rgbrec , 1 , insize , fp );
fclose( fp );

return 0;
}

202 名前:デフォルトの名無しさん [2010/11/20(土) 03:54:05 ]
長々と失礼しました。

203 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 04:25:28 ]
>>181
君がアンカーをミスらなければもっと早く答えたんだけどね

void Matrix::disp( void )
{
    if( m_Mat ) {
        int i, j;
        for( i = 0; i < m_row; i++ ) {
            cout << "|\t";
            for( j = 0; j < m_column; j++ )
                cout << m_Mat[i][j] << "\t";
            cout << "|" << endl;
        }
    }
}
これの話だと思う、別にC++だからprintf() を使ってはいけない理由は無いと思うんだけどな


204 名前:203 mailto:sage [2010/11/20(土) 04:27:58 ]
× >>181
○ >>180

そして俺がアンカーをミスるのは何故だ....

205 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 05:38:00 ]
>>90
全部書き直したいくらいのソースだけど
一応可能な限り残して修正
てか、これ色々エラー処理入れたほうがいいんじゃないか?

吐き出しフォーマットは24bitビットマップ

codepad.org/9jTAUdhP

206 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 10:27:17 ]
>>184
codepad.org/VbJwxmH3

C標準関数rand()の質が悪いのでもっと良いrand()を使えば
いい結果が得られると思う

207 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 10:31:37 ]
>>184
ごめん乱数は配列に保存すると題意にあったのでarray[]に保存している
表示はしていない

codepad.org/Piz4GErK

208 名前:デフォルトの名無しさん [2010/11/20(土) 12:53:14 ]
>>203
ごめんなさい。これを>>129のプログラムのprintfの所に代わりに入れてあげればいいんですか?


209 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:10:20 ]
>>184ですが、書き間違えていました。

正しくは、

A乱数は配列で保存すること → A乱数は「動的確保された」配列に保存すること

ごめんなさい。

210 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:21:25 ]
>>209の続きです。

C乱数係数xはキーボードから入力するようにプログラムすること

を追加してください。



211 名前:デフォルトの名無しさん [2010/11/20(土) 14:33:26 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):赤い領域と白い領域が隣り合っているところを抽出せよ。
[3] 環境
 [3.1] OS:Windows、visual studio2005
 [3.3] 言語:どちらでも可。
[4] 期限:今日か明日には完成させたいです。
[5] その他の制限:できるだけわかりやすいと嬉しいです。

とりあえず赤い領域は抽出できたのですが隣り合う白い領域を抽出するのができないです。
ラスタスキャンし、赤い画素を見つけたら4近傍を探索し、白い画素だったら抽出…という方向で組んでいるのですが
白い画素を見つけたとき、その白い画素の4近傍もまた探索しないといけないのでここでつまづいています。
よろしくお願いします。

212 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:36:19 ]
>>209>>210
乱数は動的確保された配列に保存されています

乱数係数xの意味がよくわかりません
具体的に説明をお願いします
もしかしてsrand()に与える値ですか?

213 名前:211 [2010/11/20(土) 14:43:00 ]
// (1)画素値(R,G,B)を順次取得し,変更する
// 赤色領域の4近傍を探索し、白色であった場合抽出する
for (y = 0; y < hsvImage->height; y++) {
for (x = 0; x < hsvImage->width; x++) {
cnt++;
p[0] = hsvImage->imageData[hsvImage->widthStep * y + x * 3]; //座標(x,y)のH(色相)値を取得
p[1] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1]; //座標(x,y)のS(彩度)値を取得
p[2] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2]; //座標(x,y)のV(輝度)値を取

//赤い画素を見つけたら
if(((p[0] >= THRESH_BOTTOM1) && (p[0] <= THRESH_TOP1)) || ((p[0] >= THRESH_BOTTOM2) && (p[0] <= THRESH_TOP2))){
if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){

//// 4近傍を探索し、白色の画素があれば抽出(とりあえず左だけ)
x = x - 1;
if((p[2] >= THRESH_BOTTOM3) && (p[2] <= THRESH_TOP3)){
p[0] = cvRound(255);
p[1] = cvRound(255);
p[2] = cvRound(255);
flag=1;
}x=x+1;

214 名前:211 [2010/11/20(土) 14:44:08 ]
}
}
if((p[0] >= THRESH_BOTTOM1 && p[0] <= THRESH_TOP1) || p[0] >= THRESH_BOTTOM2 && p[0] <= THRESH_TOP2){
if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(255);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(255);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(255);
}
}else if((p[0] == THRESHOLD_MAX_VALUE) && (p[1] == THRESHOLD_MAX_VALUE) && (p[2] == THRESHOLD_MAX_VALUE)){
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(100);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(100);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(100);

}else{
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(0);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(0);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(0);
}
//printf("flag:%d\n",y);
if(flag==1){
y = y -1;
flag=0;
}
}
}
今のところこんな感じです。
赤い画素をH,S,V全てに255をセットし、みつけた白い画素をH,S,V全てに100をセットしています

215 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:44:18 ]
>>211
サンプル画像も貼らずに質問とな?
説明の意味が分からんのだが、赤い領域と白い領域の境界を見るのなら
「白い画素の4近傍もまた探索」は必要ないのではないか?
とりあえず赤い領域と白い領域が何をさしてるのかちゃんと説明してくれ

216 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 14:52:32 ]
>>209
>>210
奇特な >>129 がせっかく書いてくれてるのに、
理解する能力もなければ(ホントに全くないよね)、
理解する気持ちもない。
君は単位落とすべきでは?

217 名前:211 [2010/11/20(土) 14:55:50 ]
>>215
www1.axfc.net/uploader/Img/link.pl?dr=4588966666&file=Img_100662.jpg
画像用意しました。
この中からエビの部分だけを抽出したいんです。


218 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:08:51 ]
jpegかよ

219 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:12:39 ]
>>212

乱数係数ではなく「乱数系列」でした。

220 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:13:40 ]
>>217
CDC MemDC1,MemDC2;を用意し、
MemDC1は白い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC2は赤い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC1とMemDC2のCOLORREF≠0の部分を縦横4ドットずつ広げる。
MemDC1とMemDC2のandを取る。

こんな感じでだめか?





221 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:15:16 ]
>>216
>>122は私が書いたのものではないのですが…

222 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:17:52 ]
>>14
codepad.org/Z4Tdf8rM

223 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 16:56:39 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):双方向リストを使って、複数行を読み込み、読み込んだ行をそのままの順に出力するプログラムを完成させなさい。
[3] 環境
 [3.1] OS: Windows7(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0
 [3.3] 言語:_C
[4] 期限:今日中
[5] その他の制限: 特になし


224 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:06:52 ]
IT会社の経営者なんて、自社製品を何も持たず技術者をよその会社にぶちこんでピンはねで利益を上げてるだけだぞ?
従業員のやりがいとか成長とか全く興味がないからな。ビジネスモデルがピンはねなんだからやつらの考えることは
如何に従業員をこき使うかしか考えてない。それでしか利益を上げられないんだから。
普通会社の存在理由って、世の中に新しい価値を提供したいとかそういうことじゃん?
でもITの経営者のやることは技術者を売ってピンはねで金儲けすることだけだから。
技術者の命より金の方が優先度が高い世界だぞ?そりゃ精神病んで自殺に追い込まれるよ。

225 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:20:49 ]
[1] 授業単元:集合知プログラミング
[2] 問題文(含コード&リンク):hibari.2ch.net/test/read.cgi/tech/1289913298/224 はどこか
のスレからの誤爆である。このスレを探し、何に対するレスであるか示すプログラムを書きなさい。
[3] 環境
 [3.1] OS: Windows7(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0
 [3.3] 言語:_C
[4] 期限:今日中
[5] その他の制限: 特になし

226 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:43:07 ]
>>217
画像ファイルの扱いは不慣れなので、変なところがあるかもしれませんが、
取りあえずエビっぽいのが抽出できたんで。
www1.axfc.net/uploader/Sc/so/175292.zip

227 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:46:04 ]
>>222
すごいシンプルだな、参考にさせてもらうよ
俺もがんばって解いたが発狂しそうになった
codepad.org/BsfWdhLl

228 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:53:22 ]
>>227
問題読んですらないけど51-98行の圧迫感にワロタw
力作おつです。

229 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 17:58:13 ]
>>219
出掛けていて遅くなった

codepad.org/3mIpUOYz

これでいいのかな
ちなみにcodepadには上げてないけど、自前のもっと質の良い乱数発生
ルーチンを使ったら発生個数を上げると平均、分散ともに桁数の一致が
良くなりました

でも宿題用ならこれで十分でしょう

230 名前:226 mailto:sage [2010/11/20(土) 18:01:15 ]
>>226
ごめん。↓ここがおかしいわ。
gAnd[y][x] = 0;
int xx,yy;
for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) {
for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) {
if (gW[y][x] && gR[y][x]) {
gAnd[y][x] = 1;
}
}}

正しくは、というより俺がイメージしたのは↓。
/* "3ドット広げて、W,Rともドットがあったら"って処理のつもり */
gAnd[y][x] = 0;
int xx,yy;
int flag = 0;
for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) {
for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) {
if (gW[y][x]) flag |= 1;
if (gR[y][x]) flag |= 2;
if (flag==3) gAnd[y][x] = 1;
}}



231 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:19:43 ]
>>229
ありがとうございます。
ところで、このプログラムは、#include <math.h>と#include <time.h>を使わずにつくれますか?
できればなしのプログラムも欲しいんです。
何度も注文つけてしまってすいません。

232 名前:211 [2010/11/20(土) 18:21:31 ]
>>230
ありがとうございます!
キレイに抽出できてますね…
ソースが難しいので頑張って解読してみます。

233 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:39:43 ]
>>231
できるけどsinとかcosとかを自分で作らないといけないよ?
もともとあるものを自分で作るのは全く無意味だし
問題の本質ではないからこのままでいいんじゃない?
math.hとtime.hを使いたくない理由が分からないけど
もし習ってないとか言うバカげた理由なら考えを改めたほうがいいよ


234 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:39:46 ]
>>232
スケルトンから変えたのはほぼ View の40〜120行目あたりだけ。
ソースがみずらくてすまんが、やってることは大したことない。
 1.白と赤の部分だけを取り出す。gW , gR
 2.白と赤のORを作る。gOr
 3.白と赤を3ドット広げて、重なり部分を取り出す。gAnd
 4.gOrの島の中から,gAndが含まれる部分を抽出する。gMsk
おそらく君にとって、Fillだけがキモだと思うが、
gOr && gAnd を見つけたら gMsk を1にし、
その上下左右にgOrが続いていたら、xy座標を更新してFillを再起する。
最初の基点からジワーッとgOrをあぶりだしていく感じ。

235 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:40:32 ]
>>231
あ、>>229は<time.h>はもう不要なので取り忘れました
<math.h>はlog()とsqrt()とsin()とcos()を呼び出すのに必要なので、
やるとすれば疑似的な発生法しかありません

それで作ってみます

236 名前:211 [2010/11/20(土) 18:49:05 ]
>>234
スケルトンをまず知らないのでww
c言語でお願いすればよかったと後悔してます\(^o^)/

237 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 18:54:45 ]
>>231
codepad.org/Z7lv5P4I

floor()もsqort()も使えなくなったので、分散を求める事が出来ないので
発生した正規分布の乱数を表示するようにしました

238 名前:デフォルトの名無しさん [2010/11/20(土) 19:52:14 ]
糞スレ

239 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 20:21:00 ]
>>237
無理なお願いを聞いて頂きありがとうございます。

240 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:09:33 ]
>>205
ありがとうございます。
RGBTRIPLEなんて構造体があったのですね。



241 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:13:01 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
問題1
1から10までの整数の表示をするプログラムを、 do-while 文とを使用して作成しなさい。
< 実行例 >
1 2 3 4 5 6 7 8 9 10
問題2
10から1までの整数の表示をするプログラムを、 while 文を使用して作成しなさい。
< 実行例 > 
10 9 8 7 6 5 4 3 2 1
問題3
キーボードから 読み込ん だ整数が1〜9の範囲内の場合は 繰返し、それ以外の場合は終了するプログラムを作成しなさ い。
< 実行例 >

整数: 8
範囲内です

整数: 3

範囲内です

整数: 11

範囲外です。

終了します。
  [3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月21日
[5] その他の制限: なし
よろしくお願いします。

242 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:43:31 ]
>>241
codepad.org/DE6gfYRT

243 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:45:35 ]
>>223
hibari.2ch.net/test/read.cgi/tech/1289715349/80

244 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:46:58 ]
>>243
おいおい問題があるスレに誘導するなよ
今運営に報告してきた所だぞ

245 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:55:53 ]
>>244
報告先の URL を教えてください。
回答がありしだい、誘導を停止します。

246 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 21:57:50 ]
>>245
その前にどうして誘導するのかその理由を聞かせてくれないか?
ここが宿題スレだろうに
誘導するのなら確固とした理由が必要だろ

247 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:03:49 ]
◆QZaw55cn4c本人でしょ
いいかげん他スレにちょっかい出すのやめればいいのに
自分が立てたスレに責任が持てないなら削除依頼だしてこいよ

248 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:05:32 ]
と言う事で◆QZaw55cn4cは自分のスレに書き込まれた問題のみに解答しろ
このスレから誘導すんな
このスレの意味が無くなる

249 名前:226 mailto:sage [2010/11/20(土) 22:19:01 ]
あまり落とす人もいないでしょうが・・・
ちょっといじるとスタックオーバーフロー起こすので消しました。>>226
一応スタックオーバーフローの暫定対策版を↓に置いときます。
www1.axfc.net/uploader/Sc/so/175392.zip

250 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:21:48 ]
サーバ用途じゃないツールだったら、
思う存分落とせばいいじゃん。



251 名前:デフォルトの名無しさん mailto:sage [2010/11/20(土) 22:23:10 ]
あ、サーバ用途ってのは、それ自身が動き続けることが使命になってるプログラムのことね。
ツールってのは、コマンドとして実行させて、終了とともに結果を得るもの、ってつもり。

252 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 00:34:14 ]
言わんとするところは伝わるような気がするが、
ツールだから落ちてもいいという根拠は何も出ていない。

253 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 02:32:40 ]
作った本人が私的に使うツールなら分かるが、
そうでなければ、あまりにも無責任

254 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 03:09:35 ]
ソースあるんだから文句があるなら自分で直せばいいだけなのに

255 名前:デフォルトの名無しさん [2010/11/21(日) 09:51:24 ]
プログラミング演習の問題で
入力した名前(アルファベット)を昇順に並び変える
sort_by_nameという関数を作りたいです。
2文字目ぐらいまで判定できればいいです。
数字の昇順ならできるのでヒントだけでもください。
codepad.org/6vjN9ld1

256 名前:デフォルトの名無しさん [2010/11/21(日) 10:20:54 ]
[1] 授業単元:情報処理概論T
[2] 問題文(含コード&リンク):
つると亀が合わせてn匹います。足の数は合わせてmです。
nとmを入力して、つると亀がそれぞれ何匹いるのか求めるプログラムを作りなさい。
もし解がない場合は、その旨を出力するようプログラムすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限:if、while、for、配列、多重ループ、関数まで習いました。

よろしくお願いします。

257 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 10:30:42 ]
>>255
strncmp

258 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 10:37:01 ]
>>255
codepad.org/rvBnDcMH

259 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 11:01:00 ]
>>256
codepad.org/jxPppob9

260 名前:255 [2010/11/21(日) 11:11:06 ]
>>257>>258
ありがとうございました!
解決しました



261 名前:デフォルトの名無しさん [2010/11/21(日) 14:30:29 ]
[1] 授業単元: プログラミング
[2] 問題文: 4つの整数s,m,l,xlを小さい順に並べ替えるプログラムを作成しなさい。
      ただし、並び替えをする部分はユーザ定義関数化し、
      並び替え後の結果をmain関数で出力するようにすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:11月23日まで

よろしくお願いしますm(__)m



262 名前:デフォルトの名無しさん [2010/11/21(日) 14:46:04 ]
[1] 授業単元;プログラミング演習
[2] 問題文(含コード&リンク): ・ランダムな整数列を生成し,挿入ソート・シェルソートにより
並べ替えるプログラムを作れ
・実行時間を計測せよ

[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C/C++/どちらでも可
[4] 期限:11月24日
[5] その他の制限: unixのrand()とtimeコマンドを使用すること
         mainの中もお願いします。

263 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 14:46:17 ]
>>261
#include <stdio.h>

void swap(int *a, int *b){int temp=*a; *a=*b; *b=temp;}

void sort(int *s, int *m, int *l, int *xl){
if(*s>*m) swap(s,m); if(*s>*l) swap(s,l); if(*s>*xl)swap(s,xl);
if(*m>*l) swap(m,l); if(*m>*xl)swap(m,xl);
if(*l>*xl)swap(l,xl);
}

int main(){
int s = 4, m = -33, l = 232, xl= 83;
sort(&s, &m, &l, &xl);

printf("s = %d, m = %d, l = %d, xl = %d",s, m, l, xl);
return 0;
}

264 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 16:27:49 ]
>>262
hibari.2ch.net/test/read.cgi/tech/1289715349/83

265 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 16:29:54 ]
[1] 授業単元: 情報工学
[2] 問題文: www.dotup.org/uploda/www.dotup.org1261761.txt.html
[3] 環境
 [3.1] OS: Cygwin on Windows
 [3.2] コンパイラ名とバージョン: gcc 4.3.4
 [3.3] 言語: C
[4] 期限:11月22日まで

どうか宜しくお願いします。


266 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 16:35:16 ]
>>264
◆QZaw55cn4cの出張ウザイです

267 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:08:46 ]
>>265
入力してテストってのは面倒だからやってない、入力するには5行目の #define TEST をコメントアウトしてくれ
コードの問題で化けると嫌なので出力は英語になってるので気に喰わなければ勝手に直してくれ

ttp://codepad.org/jfDB88t9

268 名前:デフォルトの名無しさん [2010/11/21(日) 19:15:22 ]
>>222 >>227
どうもありがとうございます。
御二方のコードを参考に自分でもう一度作ってみようと思います。

269 名前:デフォルトの名無しさん [2010/11/21(日) 19:19:16 ]
c言語の宿題の一部なのですが
コマンドプロンプトのmoreの役割をするプログラムを作るのはどうすればいいのでしょうか?
既に出来ているテキストファイルをコマンド上に表示するだけなのですが
出来ればソースをお願いします

270 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:24:28 ]
ncursesを使う



271 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:38:42 ]
解決しました
ありがとうございます

272 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 19:48:22 ]
>>267
助かりました。
これからがんばって読みます。
ありがとうございました。

273 名前:デフォルトの名無しさん [2010/11/21(日) 21:40:07 ]
[1] 授業単元:プログラミング
[2] 問題文
問題1.文字列を入力し、入力された文字列について、次の1~6のすべてを表示するプログラムを作
成しなさい。
1 全文字の合計文字数
2 数字の文字数
3 英大文字の文字数
4 英小文字の文字数
5 空白の文字数
6 その他の文字の文字数
ただし、
・ 下記の実行結果のように、それらの数値を表示しなさい。
・ データの読み込みは getchar 関数を使うこと。

問題2.12 個の整数を入力し、それらの 3 倍の数値を表示するプログラムを作成しなさい。
ただし、
・入力した整数は、4 行 3 列の 2 次元配列に格納しなさい。
・配列の作成と表示にはループ制御を使用すること。
・下記の実行結果になるようにしなさい。
Column1 Column2 Column3
------------------------------------
Row1 : 3 6 9
Row2 : 300 600 900
Row3 : 3000 6000 9000
Row4 : 30000 60000 90000
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010/11/20
[5] その他の制限: あまり難しくないようにお願いします。
繰り返しと条件判断と配列と簡単な関数までぐらいしか授業はやっていません。

274 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 21:50:02 ]
>>269
hibari.2ch.net/test/read.cgi/tech/1289715349/87

275 名前:デフォルトの名無しさん mailto:sage [2010/11/21(日) 21:55:21 ]
うぜー

276 名前:デフォルトの名無しさん [2010/11/21(日) 23:10:03 ]
>>259
ありがとうございました!とても助かりました!

277 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 07:46:51 ]
>>273
問題2だけ。
codepad.org/vx9De2AX

278 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 08:32:07 ]
>>273
問題1もやってみた。
C++でgetcharってこういうことかな?
codepad.org/7LG4EKWZ

279 名前:デフォルトの名無しさん [2010/11/22(月) 12:53:40 ]
>>273ですが言語はCでした;

>>277
>>278
折角やっていただいたのにすみません!;
実行してみましたができませんでした。
普通にgetchar関数を使えと言われたんですが・・・。


280 名前:デフォルトの名無しさん [2010/11/22(月) 13:08:02 ]
1] 授業単元: プログラミング
[2] 問題文
#include <stdio.h>
#include <string.h> /*strlenのため */

void
main( void )
{
char mojis[16]; /* 文字列を入れるための配列 */
int i;
int n; /* 'e'の数 */

printf("文字列:");
scanf("%15s", mojis );
mojis[15] = '\0';


for( i=0, n=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */
{
if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */
{
n++;
}
}
printf( "文字数 %d のうち'e'は %d個", strlen(mojis ), n );
return; }
このプログラミングを改造
1.strlenを使わずに文字数をカウントする。
[3] 環境
 [3.1] OS:Windows、visual studio2005
 [3.3] 言語:C
[4] 期限:11月22日



281 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:16:54 ]
>>280
#include <stdio.h>

int main( void )
{
char mojis[16]; /* 文字列を入れるための配列 */
int i;
int n; /* 'e'の数 */
int len; /* 文字の数 */

printf("文字列:");
scanf("%15s", mojis );
mojis[15] = '\0';


for( i=0, n=0, len=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */
{
len++ ;
if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */
{
n++;
}
}
printf( "文字数 %d のうち'e'は %d個", len, n );
return 0 ;
}

282 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:34:32 ]
iでいいだろうよw

283 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:40:41 ]
>>279
書いてくれてるプログラムはC++だけど
入出力以外はCと同じだから
#include <iostream>は#include <stdio.h>
std::getchar()はgetchar()
std::cout〜の行はprintf()
std::cin〜の行はscanf()に置き換えれば動くと思うよ

284 名前:mery [2010/11/22(月) 13:42:18 ]
以前152で
1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月21日
[5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです
で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
なぜでしょうか?

285 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:47:00 ]
>>282
iだと1引かないといけないのがなんか気持ち悪い

286 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:48:32 ]
>>285
え?w

287 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:06:22 ]
>>284
>>164 でうまくいきますよ。「実行結果がでませんでした」というのは、どういう状態か、もう少し詳しく教えてください。

288 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:09:00 ]
一瞬で終了してるとかってオチか?

289 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:11:48 ]
>>288
入力はできてるところをみると可能性はありそう

290 名前:デフォルトの名無しさん [2010/11/22(月) 15:04:40 ]
>>281
ありがとうございました。参考にします。



291 名前: ◆/91kCCQXBo mailto:sage [2010/11/22(月) 15:04:57 ]
>>273
jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/42-43

292 名前:デフォルトの名無しさん [2010/11/22(月) 15:58:58 ]
>>283
わかりました。間違えてすみません;
ありがとうございます!

>>291
わざわざありがとうございます!


293 名前:ごばくすみません mailto:sage [2010/11/22(月) 16:00:49 ]
>>284
>以前152
>で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
>なぜでしょうか?

7行目>>164
i=0; を
i=0; puts("数値を入力>"); に変えてみようか?

294 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 16:47:17 ]
[1] 授業単元: プログラミング
[2] 問題文:
変数iに100が入っています、

iとは別に、50,75,55,60というように、ランダムな数字の配列があり、
次にくる数字が前の数字(ここでは60)より、5%大きかったら、
iに1を加算するプログラムを作成。

-5%なら-1で、10%なら+2するといった感じです。5%未満なら加算しません。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:特に無し

よろしくお願いいたします。

295 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:07:41 ]
100%なら+20?

296 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:11:47 ]
>>294
ランダムな数字の配列に負数とかゼロが出現する可能性はあるのかな?

297 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:12:03 ]
>>295
そうです。私の頭じゃさっぱりで・・・if文の乱立しか思い浮かびません。

298 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:13:35 ]
>>296
負数やゼロはなしでお願いします。
問題にはありませんが、1〜100あたりの乱数が入ると思っていただければ。

299 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:19:56 ]
>>294
#include <stdio.h>

int main(void)
{
int i, j;
int data[]={50, 75, 55, 60, 0};

i=100;
for(j=1;data[j]>0;j++)
{
i+=(data[j]-data[j-1])*20/data[j-1];
}
printf("i=%d\n", i);

return 0;
}

300 名前:299 mailto:sage [2010/11/22(月) 17:54:23 ]
>>294
>>299 の修正
負数の割り算は気持ち悪いので
#include <stdio.h>

int main(void)
{
int i, j;
int data[]={50, 75, 55, 60, 0};

i=100;
for(j=1;data[j]>0;j++)
{
if(data[j]>data[j-1])
i+=(data[j]-data[j-1])*20/data[j-1];
else
i-=(data[j-1]-data[j])*20/data[j-1];
}
printf("i=%d\n", i);

return 0;
}



301 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 18:42:03 ]
>>300
ありがとうございます!
こういう式がさっと出てこないんですよね・・・頭悪いのが嫌になる・・・

302 名前:デフォルトの名無しさん [2010/11/23(火) 08:07:57 ]
[1] 授業単元:プログラミングC言語
[2] 問題文:診断メーカー風のプログラムを作成しなさい。
      名前を入力し、その名前に基づき何かしらの情報を出力。
      .txtファイルを読み込み出力できるものにする事。
      (オプション)日替わりで表示結果を変更。複数の組み合わせなど。
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C++
[4] 期限:2010年11月23日12:00まで

自分の頭では何をどうしていいのかさっぱりわかりません。
ヒントだけでも良いので、どうかよろしくお願いします。

303 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 08:24:05 ]
>>302
テキストファイルの中に名前が書かれているの?

304 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:19:39 ]
>>302
codepad.org/wdclLmtI

305 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:29:08 ]
>>302
codepad.org/sgXIaOtZ

306 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:31:48 ]
>>302
脳内メーカーみたいな物を作れって事かな?
ならば、先ずは仕様を決めることが必要だ
例えば名前の文字列を1Byteづつ評価し、0〜15なら毒、16〜31なら薬、32〜47なら愛.....等々の評価を与える
最後に全文字が何の評価を与えたかを集計すれば、毒:M%、愛:M%、薬:O%みたいな出力を出せるだろ
txtファイルを読むというのは引数にテキストファイル名が指定された場合にはそのファイルに書かれている
名前を標準入力の変わりに使えと言う事だと思う

参考になれば幸いだ

307 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:44:29 ]
>>302
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
unsigned str2number(std::string str){
unsigned ret=7743; // 必要ならここに日付を数値化したものを足す time(NULL)/(60*60*24) みたいに
for(unsigned i=0;i<str.length();i++) ret=ret*37+str[i];
return ret;
}
int main(void){
std::string name, buf;
std::ifstream ifs("data.txt");

std::cout << "名前を入力してください : ";
getline(std::cin, name);
srand(str2number(name));
std::cout << name << " さんの" << std::endl;
while(getline(ifs, buf)){
if(buf[0]=='#'){
std::string theme, result;
theme=buf.substr(1);
for(int i=1;getline(ifs, buf);i++){
if(buf=="") break;
if(rand()%i==0) result=buf;
}
std::cout << theme << " は " << result << " です"<< std::endl;
}
}
return 0;
}

308 名前:307 mailto:sage [2010/11/23(火) 09:45:47 ]
>>307 で使用する data.txt の中身

#運勢
大吉



#ラッキーアイテム
トイレットペーパー
栓抜き
生卵
ブルーアイズホワイトドラゴン

#ラッキーカラー
透明
シルバー


309 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:51:16 ]
>>305
argcのチェックを入れるべき。

310 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 14:27:43 ]
[1]プログラミング演習
[2] 問題文:codepad.org/Duo48tj4
[3] 環境
 [3.1] windows
 [3.2] visual studio2010
 [3.3] C言語
[4] 2010/11/26まで
[5]配列、関数、文字列、関数形式マクロ、再帰は習っています。
構造体、ポインタ等は習っていません。
問題文が長く改行が多すぎて書き込めなかったのでcodepaに問題文も書きましたが
問題があったら言ってください。
お願いいたします。



311 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 14:45:14 ]
コードパッドに本文を入れるとは斬新w

312 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 15:44:22 ]
>>310
codepad.org/XoOdAJHA

313 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 15:59:54 ]
>>310です。
>>312
御回答ありがとうございます。
無事できました。有難うございます。
>>311
あ…やっぱり文章を入れる物ではなかったですか…。


314 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 17:34:14 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
2分法により2の平方根を計算して表示するプログラムを作れ。
解の存在範囲|xb-xa|が矛め決めた値より小さくなったら計算を停止(収束判定)するようにせよ。
*注意
(1)f(xa)とf(xb)の符号が反対であるか否かの判定法を考えよ。
(2)f(xa)とf(xb)が共に同符号になるようなxa,xbが入力された場合に対処すること。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月24日
[5] その他の制限: なし
よろしくお願いします。

315 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 20:04:09 ]
>>314
hibari.2ch.net/test/read.cgi/tech/1289715349/118

316 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 20:40:27 ]
>>314
codepad.org/OKPlr6yi

317 名前:デフォルトの名無しさん [2010/11/23(火) 21:13:54 ]
配列とファイルの読み込みです。

たとえば、100個の数字が用意されたファイルを用意します。
そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。
ファイル名は適当で良いです。

平均値を求める計算は関数部分でお願いします。

318 名前:デフォルトの名無しさん [2010/11/23(火) 21:20:32 ]
>>317
をPerlでお願いします。

319 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 21:42:51 ]
int main(void) {
system("cat temp.txt | perl -e \"while(<>){$i+=$_} print $i/100\"");
return 0;
}


320 名前:デフォルトの名無しさん [2010/11/24(水) 00:37:03 ]
[1] 授業単元: プログラミング基礎
[2] 問題文: n 個の整数型データ配列a[i]を、一つの関数に渡して、
      その一つの関数内で平均値と分散値を求め、main関数内で
      平均値と分散値を参照できるプログラムを作成せよ。
      ただし、配列の受渡し、結果の受け渡しにはポインタを利用すること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:11月25日まで
[5] その他の制限:なし
宜しくお願いします。



321 名前:デフォルトの名無しさん [2010/11/24(水) 00:57:35 ]
>>320
#include <stdio.h>
void func( int n, int* arr, double* heikin, double* bunsan ) {
int i, sum = 0, sum2 = 0;
for( i = 0;i < n; i++ ) {
sum += arr[i];
sum2 += ( arr[i] * arr[i] );
}
*heikin = (double)sum / (double)n;
*bunsan = (double)sum2 / (double)n - *heikin;
}
int main( void ) {
int arr[] = {1,2,3,4,5};
double h, b;
func( 5, arr, &h, &b );
printf( "heikin = %lf, bunsan = %lf\n", h, b );
return 0;
}


322 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:03:21 ]
>>321
*bunsanの式の右辺第二項は*heikinの二乗

323 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:07:57 ]
[1] 授業単元: 数学
[2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の素数を決定的に因数分解する
   プログラムを作成せよ     
[3] 環境
 [3.1] OS:Windows、Mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:1月25日まで
[5] その他の制限:しらみつぶしに因数分解するプログラムは不可
宜しくお願いします。

324 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:08:52 ]
>>322
そうだった
*bunsan = (double)sum2 / (double)n - *heikin * *heikin;
に修正、*が並ぶと気持ち悪いな

325 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:08:59 ]
>>323
おいww

326 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:12:23 ]
>>323
素数を決定的に因数分解するって?

327 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:13:36 ]
>>326
俺もそれ気になってた
素因数分解って言ってないから実数でもいいのか?だとしたら無数に存在するけど


328 名前:320 [2010/11/24(水) 01:16:09 ]
>>321>>322>>324
ありがとうございます!

329 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:29:50 ]
そもそも10^100桁の数値なんてどうやって扱えばいいのか分からない
情報量として (10^100)/2.41 byte分なんてしらみつぶししようとも思わないw

330 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:36:40 ]
始めたばかりで何が何だかわかりません…

[1] 授業単元:メディア基礎
[2] 問題文(含コード&リンク):数式X=[{16/(k*π)^2}^2]がある。
kが整数1〜30の時のXの値をそれぞれ出力するプログラムをCで書きなさい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日午前十時まで
[5] その他の制限: 特に無いと思います。

よろしくお願いしますorz



331 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:39:43 ]
素因数分解って素数に対してはそれ自身が素因数分解された結果だよな
だとしたら与えられた素数をそのまま出力するだけで終了じゃね?

332 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:47:23 ]
[1] 授業単元: 数学
[2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の合成数を決定的に因数分解する
   プログラムを作成せよ     
[3] 環境
 [3.1] OS:Windows、Mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:1月25日まで
[5] その他の制限:しらみつぶしに因数分解するプログラムは不可
宜しくお願いします。

333 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:56:14 ]
サラリーマンの人、やってみようか?

334 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:59:44 ]
>>330

#include <stdio.h>

int main(void)
{
int i, k;
double PI = 3.14159265358979323846;

for(k = 1; k <= 30; k++) {
double t = 4 / (PI * k);
for(i = 0; i < 2; i++) t *= t;
printf("k = %d X = %f\n", k, t);
}

return 0;
}

335 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:01:19 ]
>>330
codepad.org/9BCsk9I2

336 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:05:09 ]
>>332
codepad.org/Lg7TVQgT

337 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:06:41 ]
リーマン予想なんて解明されていないのに、もう解いたのか。
ノーベル科学賞でも受賞できんじゃね?w

338 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:10:26 ]
アンカー見て、誰も返信なかったから貼ったけど。
俺がアンカーミスってたとは・・・

339 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:12:22 ]
>>337
数学にノーベル賞は無い

340 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:13:26 ]
2^100ならいいけど10^100はちょっとやる気しないなぁ



341 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:21:44 ]
>>334
ありがとうございます!
ほんとうに助かりました!

342 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:27:07 ]
>>339
数学が無いことくらい知っているから敢えて 科学 の面で言ってみたんだが・・・

343 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:29:04 ]
科学も 化学 を文字ってネタで言ったまでw

344 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:30:42 ]
>>335
ありがとうございます!
あわせて参考にさせていただきます!

345 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:33:21 ]
数学にノーベル賞は無いっておかしくね?

346 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:51:54 ]
>>345
ノーベルが数学が苦手だったからだと
代わりにフィールズ賞がある

347 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 04:03:19 ]
リーマン予想には賞金もかかってるよ

348 名前:デフォルトの名無しさん [2010/11/24(水) 18:55:55 ]
[1] 授業単元: プログラミング
[2] 問題文:たとえば、100個の数字が用意されたファイルを用意します。
そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。
ファイル名は適当で良いです。

平均値を求める計算は関数部分でお願いします。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:11月27日まで
[5] その他の制限:なし
お願いします。


349 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:13:55 ]
>>348
hibari.2ch.net/test/read.cgi/tech/1289715349/120

350 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:21:06 ]
簡単な問題に必死だな
巣にこもってろ出てくるなよ、ゴミが



351 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:33:53 ]
>>349
◆QZaw55cn4c
>たとえば、100個の数字が用意された
たとえば付くから、これは例を言っている(可能性ある)から数字の個数の100個は変化する可能性ある
と読み取れない?

352 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:06:55 ]
>>351
1) #define N 100 と#define で記述して、コンパイル時に簡単に変えることができるようにしています。
2) 個数が仮に N より少ないデータだったとしても、正常に動くようにしています。
すなわち #define N 100 とした場合に対して、実際にはデータの個数が 5 であってもOKです。

100 を無視することも可能ではありましたが、平均を求める関数を準備する、という点を優先し、
一次近似として「データ数が100」を尊重いたしました。

>>348
問題があればコメントを下さい。随時変更いたします。

353 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:08:27 ]
いいから出てくるなって

354 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:17:34 ]
こんな入門レベルのものはやりたくないみたいなこと言ってたのになw

355 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:21:13 ]
>>352 ◆QZaw55cn4c
いや、ここのスレでやり取りするなよ、自分のスレでやれ
スレチガイならともかく他所のスレのを無理やり横取りするなよ
お前、道徳的に最低ことしていると認識ないだろ



356 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:32:06 ]
>>355
にちゃんねるで「道徳的」といわれても。

357 名前: ◆EkRIf9bJPo [2010/11/24(水) 20:32:07 ]

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
-------------------
/*hogehoge*/
int main(){/*ggg*/
printf("xxxxxx");
}
int a=c;
-------------------
上記のソース総ステップ数5ステップ、実ステップ数3ステップ、
コメント率40%が求められるステップカウンターを作製せよ。
また、以下の条件を提示する。
1.ディレクトリ単位で読み込めるようにする。
2.Cファイルのみのステップ数を求めるようにする。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 4.3.4
 [3.3] 言語: C
[4] 期限: 2010年11月25日9:00
[5] その他の制限: なし
よろしくお願いします。



358 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:37:13 ]
◆QZaw55cn4c
当然、>>357も横取りするんだろ

359 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:42:46 ]
>>358
お客様としてお待ちしようかと。
でも期限が厳しいですね。

360 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:11:48 ]
>>357
ディレクトリ指定も可能って事はサブディレクトリも再帰的に捜査するんだよね
まぁ500円くらいなら払う価値は有る問題だと思うよ

総ステップは行数だと思うけど実ステップってのは?
if( x ) {
  i = a + b
    + c + d;
}
これは何ステップ?
コメント率は ( "/*", "*/",  "//" を含むコメント文字数 ) / (総文字数) の事?
その場合は改行コードは計算に入れるの?
この辺は詰める必要があるね



361 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:21:56 ]
>>357
カンマ演算子の扱いとか、do while とかどうする?

362 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:28:43 ]
>>357
実ステップは4行になりそうだけど。

363 名前: ◆EkRIf9bJPo [2010/11/24(水) 21:40:11 ]
>>360

そうです。サブディレクトリを読み込みます。
実ステップは、コメントのみの行、行区切りだけの行をはずした行数です。
なので、例に出されたソースの実ステップは、3ステップになります。

コメント率に関しては、特に条件が記載されてないです…
コメントが記載されている行/全行のことだと解釈しています。
改行コードについても記載がないので、計算には入れることは、考えてないです。

364 名前: ◆EkRIf9bJPo [2010/11/24(水) 21:48:48 ]
>>361

すみません。どうするってどういう意味ですか?

>>362

問題文がそうだったので…

365 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 22:57:27 ]
>>356
2chを楯に自分の糞さから逃げてないか?

366 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:06:24 ]
>>363
判定条件はこうかな
コメント外部にアルファベット、数字、記号({}を除く)が出現したら実ステップ行(*1)
コメントが入っている業はコメント行(*2)
当然、*1 でかつ *2 の行も存在する

例えば#if 0 〜 #endif の間は無効な行だけどこれも実ステップ行扱いで良いんだろうな、さもないと判定が難しすぎる

367 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:07:06 ]
反論してる人もこっちでやってくれんかな。
hibari.2ch.net/test/read.cgi/tech/1289715349/
◆QZaw55cn4cもこのスレでそういう論議しなければ俺はかまわん。
このスレのそういうレスは双方無視の方向で。

368 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:18:41 ]
>>364
たとえば
a++,b++;
は1ステップか、それとも2ステップか
式は一つだから1ステップでいいとはおもうけど

do{
func();
}while();
は2ステップなのか3ステップなのか
doがなんかするわけじゃないから2ステップでいいのか?

あと、;だけの行はステップとして数えるのか?

369 名前: ◆QZaw55cn4c mailto:sage [2010/11/24(水) 23:31:10 ]
>>357
>>363
途中ですが、コードを示します。使い方は、
./a.out Cプログラムファイル
です。

>>357 に例示されたコード例が指定どおりの数字を出す、という点だけで仕様を勝手にきめました。
大方は、>>366 にしたがっています。
これにいろいろ食わせてみて問題があるようであれば指摘ください。
途中ゆえデバッグコードを多数含みますことご容赦を。
codepad.org/ah8s28nT

xmalloc() -> malloc()
xfree() -> free()
xrealloc() -> realloc()
に読み替えてください。

370 名前: ◆1reJfOTbE. [2010/11/24(水) 23:35:18 ]
www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/
[1] 授業単元:プログラミング実験
[2] ttp://www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/
  ここの第2回の課題です。
[3] 環境
 [3.1] OS:WindowsXPでコマンドプロンプトやMeadowなどを使っています。
 [3.2] gcc
 [3.3] C
[4] 期限:11/26の18:00
[5] その他の制限:特にないと思います。
第1回に比べて急に難しくなったように思え、困っています。
とりあえず課題が何をどうすればよいかわかりません。
手順を教えていただきたいです。よろしくお願いします。



371 名前: ◆EkRIf9bJPo [2010/11/24(水) 23:36:00 ]
>>363

その判定条件で大丈夫です。
#if0〜#endifも実ステップ行扱いで良いと思います。

>>368

特にカンマ演算子と、do whileについて何も条件が出されてないので、>>663さんが提示した判断条件でお願いします。


372 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:40:32 ]
>>369
printf("xxx/*nocomment*/xxx");

373 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:54:48 ]
>>357
>>372
codepad.org/UuSFtHdy
これ以上複雑になれば、今のコードは捨てて状態遷移(オートマトン)で書き直すことを検討します。限界です。

374 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:58:24 ]
>>373
問題が結構いい加減だから、都合のいいように解釈すればよいと思う。

375 名前: ◆EkRIf9bJPo [2010/11/24(水) 23:58:29 ]
>>369

ありがとうございます!
早速、デバッグを行なったところ、以下のエラーが表示されました。

1.c:8: error: conflicting types for ‘getline’
/usr/include/sys/stdio.h:37: error: previous declaration of ‘getline’ was here
よろしくお願いします。

376 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:00:43 ]
getlineって◆QZaw55cn4cじゃないかw

377 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:08:00 ]
>>373
/* "A" */

今のロジックだと /* と " のどちらかを優先しなければならないから限界みたいだね

378 名前: ◆QZaw55cn4c mailto:sage [2010/11/25(木) 00:08:29 ]
>>357
>>375
codepad.org/fGj6gfV5

>>376
じゃあトリップつけときますか。

379 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:09:38 ]
つけなくていいよ

380 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:14:07 ]
>>377
そのようですね。
このコード>>378 は捨てましょう。

>>375
このロジックでよければ、ディレクトリを掘るコードをつけます、といっても明日があるので今日はおしまい。
期限を見直してください。あと >>2 をよろしく。



381 名前:377 mailto:sage [2010/11/25(木) 00:15:40 ]
>>373
間違えた、駄目なのはこんなケース

printf( "/* a */" );
/* "a */
printf( "/* a */" );

改行で終わらない行は無視してるみたいだけどそんな必要有るのかな

382 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:24:35 ]
ありゃ、テレビ見てたら盛り上がってるな。
乗り遅れたし、明日早いし。寝るくぁ。

383 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:07:35 ]
>>370
非常に丁寧な教材ですね。
難しいところを素直に先生に聞いてみるのはいかが?

このスレは回答を提示することで若い芽を摘み取る非情な場所であることをお忘れなく。

384 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:12:23 ]
>>383
ワロスw
確かにその通りかもw

385 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:48:20 ]
>>370
dequeだけ作っといた
フィルタは気が向いたらやるかも
codepad.org/o9fmgNBz

386 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:52:12 ]
>>370の講義資料より引用
『インターネット上に匿名で書かれた情報は信じるな!!』

387 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 01:56:29 ]
信じるな!とは言い過ぎだが利用は自己責任で、って位が落としどころかな

388 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 02:21:45 ]
>>370
多分デジタルディレイの実装ではないかと思われる
queue.c はFifoリングバッファだろう
Fir_p.c のメインループ内では以下を行うんだろうな

for( ディレイ時間分ループ )
 enqueue( 0 );

while(入力ファイルから short 一つを x に読み込む) {
  enqueue( x );
 y = dequeue()
 x に y を重み付き加算
 出力ファイルに x を書き込む
}

これでシングルディレイが付加された音声データ(wavファイル)が作成できるだろう
Fifo リングバッファをマルチインスタンスに修正し複数のリングバッファを使用すれば多段ディレイも作成できる
また enqueue( x ); の位置を加算後に持っていけば減衰率によっては自然な残響を得られるかも知れない


389 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 03:32:08 ]
>>385
修正
codepad.org/uKnnFD1v


390 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 05:03:09 ]
話が繋がっていかない課題やレポートはつまらないけど
各論へのイントロになってる課題は面白いと思う



391 名前:デフォルトの名無しさん [2010/11/25(木) 11:59:14 ]
[1] 授業単元:プログラミング実験
[2]1~30の整数の範囲で、3辺a, b, c(cを斜辺)の三角形のうち、直角三角形が成立する場合のa,b,c辺をすべて見つけて配列
に入れる。その後、配列をもとにプログラムを作成しなさい。
ただし、a, b, c辺を見つけて配列に入れる機能は関数にすること。
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] C
[4] 期限:11/25
[5] その他の制限:
よろしくお願いします。

392 名前:デフォルトの名無しさん [2010/11/25(木) 12:01:44 ]
>>391ですが、このプログラムをもとにして作っていただけますか

#include<stdio.h>
#define N 30
int main(void)
{
int a,b,c;
int p[N][3];
int n;
n = 0;
for(a=1;a<=N;a++){
for(b=a;b<=N;b++){
for(c=b;c<=N;c++){
if(a*a + b*b == c*c){
p[n][0] = a;
p[n][1] = b;
p[n][2] = c;
n = n + 1;
}
}
}


393 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 12:33:21 ]
>>391
問題読むと直角三角形が成立する辺を配列に入れた後何かするようだけど
配列に入れて表示するプログラム?

394 名前:デフォルトの名無しさん [2010/11/25(木) 13:13:35 ]
>>393
多分そうだと思います

395 名前:デフォルトの名無しさん [2010/11/25(木) 13:18:29 ]
すみません>>391の問題文に追加です;

a <= b <= cを仮定してください。

396 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:26:39 ]
for(a=1;a<=N;a++){
for(b=a;b<=N;b++){
for(c=b;c<=N;c++){
の時点でa <= b <= cを満たしてるはずなのに更に仮定するの?

397 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:31:59 ]
>>396
その部分をいじるなってことだろ

398 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:36:13 ]
>>391
#include <stdio.h>

#define N 30

int f(int p[][3], int size) {

int a, b, c, n = 0;

for(a = 1; a <= size; a++) {
for(b = a; b <= size; b++) {
for(c = b; c <= size; c++) {
if(a * a + b * b == c * c) {
p[n][0] = a;
p[n][1] = b;
p[n][2] = c;
n = n + 1;
}}}}
return n;
}

int main(void)
{
int p[N][3], i, n;

n = f(p, N);

for(i = 0; i < n; i++) printf("%d %d %d\n", p[i][0], p[i][1], p[i][2]);

return 0;
}

399 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:36:48 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):整数型1次元配列に対して平均値を計算する関数を書き、
{1, 4, 2, 8, 1, 5} の平均値 3.5 を求めよ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C++
[4] 期限:2010 11/27
[5] その他の制限:int型からdouble型に書き換えるとのこと、すいません。ここからしてあまり理解できていません。

400 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 13:45:06 ]
>>399
codepad.org/58K6ytHA



401 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 14:06:24 ]
>>399
こんなんしたらさすがに怒られるかな?

#include <iostream>
#include <numeric>

int main()
{
int a[] = {1, 4, 2, 8, 1, 5};
size_t SIZE = sizeof(a) / sizeof(a[0]);

double ave = std::accumulate(a, a + SIZE, 0.0) / SIZE;

std::cout << ave << std::endl;
}

402 名前:370 ◆1reJfOTbE. [2010/11/25(木) 16:05:56 ]
>>385-389
課題3−1ですが、作っていただいたコードで、コマンドプロンプトで
gcc -Wall -c queue.c
とやって、queue.oが作られました。
この課題は後、
gcc -Wall -o FIR_P FIR_P.c queue.o
とやれば完了でよいのでしょうか?

そして>>388の中身がわかる方いませんか?

分割コンパイルというものは理解できたと思うのですが、
最初の式の説明のところからやっていることがまだ理解できていなく、
どうすればいいかわかりません。

それと関連プログラム4種類をダウンロードと書いてありますが、
Makefileに関しては講義資料22ページの説明が出てきますが、
ダウンロードができません。コピーしてテキストファイルとして
保存ということでしょうか?

403 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 16:30:35 ]
Makefileは拡張子の部分消して
関連ファイルと同じところに保存して
% makeかな?でまとめてコンパイルしてくれる
追加したファイルもMakefileに追加すればそれもコンパイルできる

404 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 16:43:08 ]
>>402 が解らないのは
C言語
実験のデジタルフィルタ
の両方なの? 
デジタルフィルタは理解できるがC言語は駄目とか?

405 名前: ◆L.eSCJEwZk [2010/11/25(木) 16:48:34 ]
>>404
デジタルフィルタは、講義資料を見ていますがまだ理解できていません。
C言語はできるつもりでしたが、>>388の日本語で書いた部分をやろうと
思ったのですがどうすればよいかわかりませんでした。
基礎はできると思うのですが、ファイルのオープンなどでてくると
危ないです。

406 名前: ◆1reJfOTbE. [2010/11/25(木) 16:49:17 ]
↑トリップ間違いました、自分で間違いないです。

407 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 17:28:53 ]
1回目の課題もファイル操作でてるけど
そっちがわかったならこっちもたぶんコードわかると思うんだけど
>>388の日本語で書いてある部分のどこがわからないのかな?

408 名前:388 mailto:sage [2010/11/25(木) 18:09:56 ]
>>405
変数名を直して一部加筆

short int y;
for( ディレイ時間分ループ )  ←*1
 enqueue( 0 ); 
while(入力ファイルから short 一つを data に読み込む) {  ←現行のソースに有る
  enqueue( data );
 y = dequeue() 
 data に y を重み付き加算 ← *2
 出力ファイルに data を書き込む ←現行のソースに有る 

つまり君が書くべきは *1 と *2 だけなんだけどな

ディレイ時間は argv[1] で与えられる delay だ、これがどんな単位で与えられるか又、サンプリングレートが幾らか不明なので
必要なループ回数が判らない
例えば delay の単位がmsecでサンプリングレートが20msec なら必要なループ回数はdelay / 20 という事になる

重みは argv[2] で与えられる weight だ、これも%で与えられるのか小数で与えられるのか判らないけど小数で与えられるなら *2 は
data += (short int)( (double)y * weight );
となる

>>383 が書いた様に、若い芽を摘み取りたくなかったので抽象的な表現を行ったのだけど伝わらないなら仕方がないだろう


409 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 18:25:20 ]
[1] 授業単元: プログラミングおよび演習
[2] 問題文(含コード&リンク):
1.解答例のカレンダー(下にリンクはってます)について、dayofweek()を再帰で書き直せ。
 ◦ある月の1日の曜日は、前の月の日数と1日の曜日から計算できる
◦ある年の1月1日の曜日は、前の年の日数と前の年の1月1日の曜日から、あるいは、その年の日数と次の年の1月1日の曜日から計算できる
◦2000年1月1日は土曜日である

2.このプログラムについて、任意の年月についてdayofweek() の呼び出し回数が何回になるかを理論的に考察せよ。また、呼び出し回数を計測し、結果が実際に理論と合致しているかを確認せよ。
2.ヒント:呼出し回数を数えるためにグローバル変数を使用する

[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4][2010年12月1日08:45まで]
[5]現在再起を習ったばかりで複雑なものは習っていません。

解答例のカレンダー↓
codepad.org/4rnf6hRf


410 名前:389 mailto:sage [2010/11/25(木) 19:02:18 ]
>>405
ファイルのオープンなんかより生ポインタのが千倍危ないんだけどね
codepad.org/E3nlvpXW



411 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 19:48:02 ]
>>410
元データを weight 分減少させる必要は無いと思うよ


412 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:46:57 ]
>>409
再帰?謎過ぎる問題だな

413 名前: ◆EkRIf9bJPo [2010/11/25(木) 20:47:26 ]
>>375です。

期限直しました。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
-------------------
/*hogehoge*/
int main(){/*ggg*/
printf("xxxxxx");
}
int a=c;
-------------------
上記のソース総ステップ数5ステップ、実ステップ数3ステップ、
コメント率40%が求められるステップカウンターを作製せよ。
また、以下の条件を提示する。
1.ディレクトリ単位で読み込めるようにする。
2.Cファイルのみのステップ数を求めるようにする。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 4.3.4
 [3.3] 言語: C
[4] 期限: 2010年11月27日9:00
[5] その他の制限: なし


414 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:49:02 ]
>>408

波形データ a[123]={〜〜〜〜〜〜〜〜〜〜〜};
波形データ b[123];

今が、1から123の間、くりかえし

    b[今] =
        a[今] ・ 係数今用 +
        a[1こ過去] ・ 係数過去用1 +
        a[2こ過去] ・ 係数過去用2 +
        a[3こ過去] ・ 係数過去用3 +
        .
        .
        .
    
    今++;


ってやると、できあがる波形データ b が、
もんもんした音になったり、キラキラした音になったり、シャリシャリした音になったり、音質が変わっておもしろい。ってことじゃないかしら? ようするに。 はて?

すごい単純だけど、たとえば単純に
b[今] = a[今] + a[1こ過去]
ってやるだけでも、波形が、こもった感じの音に変化したりして、おもしろいですよね。ふしぎ〜♪


415 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:52:33 ]
>>414
そう。単に過去のデータを足しこむだけで、いろんな特性を持つ回路(フィルタなど)になるのです。
z 変換またはラプラス変換でググッてくだしゃあ。

416 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:59:12 ]
>>409
何か汚いけど・・まあいいや
codepad.org/ldxwLKBl
www5a.biglobe.ne.jp/~accent/kazeno/calendar/1873.htm

417 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 21:00:50 ]
>>416
表示直した
codepad.org/g9j514Dw

418 名前: ◆EkRIf9bJPo [2010/11/25(木) 21:02:30 ]
>>380

大変申し訳ないのですが、読んでもロジックがわからなかったので自分で作りました。

codepad.org/JhtCuYqO


www.play21.jp/board/formz.cgi?action=res&resno=43608&page=&lognum=136&id=dixq&rln=44494

上記のサイトを参考にしました。

方法3 コメントを削除したファイルを中間ファイルとして保存し、再度読み込み、行数を数える方法を行いました。

残っている課題が二つあります。

・ディレクトリ指定してCファイルを求める。
・コメント率を算出する。


大変、勝手なことだと思いますがこのソースをベースに作製お願いします。

419 名前:409 mailto:sage [2010/11/25(木) 21:15:23 ]
>>412
なんかしたに張り付けてあるリンクのものを再起を使用して書き直すみたいです。
もうすこしコンパクトになるとか・・・
課題2はよくわかりません。

>>416
>>417
すみません。
再起はどこでどういう風に使用したらいいのでしょう?


420 名前:409 mailto:sage [2010/11/25(木) 21:18:32 ]
>>409
for のところを再起にやればいいとかなんたら・・・・。



421 名前:416 mailto:sage [2010/11/25(木) 21:36:54 ]
>>409
自分の定義に自分と同じ構造を持つ構造は再帰的に定義できる

さっきの例なら、ある月の一日の曜日は前の月の一日の曜日で求められる
前の月の一日はそのまた前の一日の曜日で
そのまた前も・・・ってな感じでずっと続く
ある状況で特殊化すればそこで再帰は終了する
さっきのなら2000年の1月で特殊化した

422 名前:416 mailto:sage [2010/11/25(木) 21:42:00 ]
>>409
ついでにちょっと整理しといた
codepad.org/Q7wmR5Wy

423 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 22:04:51 ]
カレンダー(カレンダー)C言語のソースが
2ちゃんのスレに書き込まれるぅ〜♪

カレンダー(カレンダー)過ぎ行く時の中で
俺はソースを書いて彷徨うんだろう♪

424 名前:409 mailto:sage [2010/11/25(木) 22:12:19 ]
みなさんありがとうございます。
recurse
みたいなコード?は使わないのでしょうか?
あと漸か式を考えたりなど・・・
よくわからない質問をしてしまってばっかりですみません><

425 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 22:35:14 ]
recurse って再び呪うのか?

426 名前:370 ◆1reJfOTbE. [2010/11/25(木) 22:54:27 ]
ご解答いただいている方、本当にありがとうございます。

今日学校でレポートをすこしずつ進めていたのですが、
学校のパソコンや携帯では書き込みができなく、自宅のパソコンでは
環境が整っていなく実験ができないので、今のうちにやることを
把握しておいて明日学校に行ったらレポートを一気にやりたいと思って
います。なので、残りやるべきことを把握したいと思います。

課題3−1は、FIR_P.cとqueue.cを作っていただいたのでおkですが、
課題3−1(続)に、queue.c, FIR_P.c, FIR_N.c, IIR_P.c, IIR_N.cを実装せよ
とのことですが、これは3−1で作ったので終わりではないということですよね。
それに、FIR_N, IIR_P, IIR_Nという名前は初めて出てきたのですが、
これはFIR_P.cを書き換えてそれぞれの名前で保存しろということでしょうか?

プラスMakefileの修正ができれば、課題3−2以降はその作ったプログラムを
使って実行→聞いてみて考察〜などでできると思いますので
よろしくお願いします。

427 名前:デフォルトの名無しさん [2010/11/25(木) 23:14:03 ]
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):入力された2分木を中央順で走査するプログラムを
              再帰を使わずに書け。
自分で書いたプログラム
main.c  codepad.org/GafORTG4
STACK1.c codepad.org/9JwtZ1J7
STACK2.c codepad.org/jwPHSuzG
Item1.h codepad.org/32bgVncE
Item2.h codepad.org/rk12GKcF
STACK1.h codepad.org/CI43AnzH
STACK2.h codepad.org/XJ1fy5MY   
上三つをコンパイルして実行します。
コンパイルは通りますが、実行でsegmentation fault がでてしまいます。
main.cの最後のwhile文のところを修正していただけないでしょうか。
お願いします。
[3] 環境
 [3.1] OS: macosX
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 明日の午後一時まで。
[5] その他の制限:とくになし。

428 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:15:49 ]
>>426
FIRが遅延時間前の入力信号を加算するのに対し、IIRは遅延時間前の出力信号を加算するものの様だ
ならば、FIRの encueue() するタイミングを加算後に移動させれば IIR になるのではと思う
PとNはポジとネガの意味かな?ならばNは重み付け加算を重み付け減算にすれば良いのだろうか?

429 名前: ◆QZaw55cn4c mailto:sage [2010/11/25(木) 23:17:17 ]
>>357
>>413
とりあえず動くものをあげときます。
codepad.org/o1GYCrrO

430 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:29:39 ]
>>418
字句解析は作った人以外には理解が極めて困難、という面があります。
>>378>>429 も人に理解していただくような努力を微塵もしなかったことは申し訳ない。
本当に正確なものを作るのなら(そして人に理解していただくようにするのなら)、全然別のアプローチ(たとえば状態遷移でとらえるなど)をとらなければならないことは自覚しておりましたが、手が先に動いてしまいました。
(なお、>>429>>378 よりもちょっとだけ精度がよくなっております。)

というわけで >>418 を追いかける余裕がありません。すみません。





431 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:42:02 ]
>>427
嫌がらせみたいに汚いコードだな、無意味な typedef とか控えろよ

問題なのは while() 内で1回pop()、3回push() を行っている事にあるんじゃないかな
必然的にスタックは2つづつ増えるから最初に確保した領域をはみ出して segmentation fault となる
そもそも push() には確保した領域をはみ出さないかのチェックが必要だが実装されていないし
何をしたいのか不明なコードだけど、毎ループで pop() されるのは head と 1 で head と 1 が3回push() される
当然、無限ループとなり segmentation fault で終わるプログラムだな

432 名前:デフォルトの名無しさん [2010/11/25(木) 23:59:54 ]
[1] 授業単元: 情報処理概論T
[2] 問題文(含コード&リンク):
大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。
ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限: if、while、for、配列、多重ループ、関数まで既習です。

よろしくお願いします!


433 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:07:30 ]
>>432
さいころは6面でいい?
負数の扱いは?

434 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:09:08 ]
こまけぇこたぁ〜良いんだよ、それなりのものが出来れば

435 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:16:21 ]
>>431
適切なアドバイスどうもありがとうございます。
間違っていいたところも直せ、理解も深まりました。
ほんとうにありがとうございますm(_ _)m


436 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:18:52 ]
>>432
#include<stdio.h>

#define MAX(a, b) ((a)>(b)?(a):(b))
#define MIN(a, b) ((a)<(b)?(a):(b))

int main(void)
{
int i_min, i_max, j_min, j_max, i, j, k;
int m=0;

printf("m を入力してください : ");
scanf("%d", &m);

i_min=MAX(1, m-12);
i_max=MIN(6, m-2);
for(i=i_min;i<=i_max;i++)
{
j_min=MAX(1, m-i-6);
j_max=MIN(6, m-i-1);
for(j=j_min;j<=j_max;j++)
{
k=m-i-j;
printf("大:%d 中:%d 小:%d\n", i, j, k);
}
}

return 0;
}

437 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 01:11:03 ]
>>432
>表示を工夫して見やすい出力にすること。
ということで>>436みたいな効率化は図っていない
ideone.com/ojVVa


438 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 02:05:41 ]
>>432
codepad.org/j6ll07Ay

いちまん回さいころふって、なにがでるかしらべてみて、しらべる☆ ためしてガッテンたいぷ♪
たまにまちがえちゃうけど、気にスンナ!






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<146KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef