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


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

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



1 名前:デフォルトの名無しさん [2010/01/18(月) 23:25:55 BE:265079647-S★(508111)]
あなたが解けない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++の宿題片付けます 133代目
pc12.2ch.net/test/read.cgi/tech/1260532772/

2 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:02:05 ]
ぬるぽ

3 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 05:26:24 ]
マジかよゴキブリ湧いてきた

4 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 05:35:52 ]
痴漢はこんなとこにもわくのかよw

5 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 08:17:21 ]
★宿題をやってあげる方は仕事でやっているわけではないので
品質に文句を付けるのはやめてください(質問は構いません)
★宿題をやった方は依頼者がまだ居るか確かめてから貼るように
心がけて下さい。
★複数やってくださった方が居た場合でも依頼者は全員に貼って
もらう必要はありません。批評を書き込むことは慎みましょう

6 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 08:26:29 ]
何をどうやって確かめろと?

7 名前:前スレ999 mailto:sage [2010/01/19(火) 11:31:41 ]
>>1
乙です。

>>前スレ1000
すみません、>>984-986,990で全部です。

8 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:22:53 ]
>>7
アップローダを使ってくださいませんか。コンパイルするまでが面倒です。

9 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:33:05 ]
てかテンプレに沿った形にするのもプログラミングの練習

10 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:48:04 ]
scanf系ってあんな柔軟だっけ?



11 名前:デフォルトの名無しさん [2010/01/19(火) 13:08:40 ]
前スレにも書きましたが
お願いします
[1] 授業単元: プログラミング演習V
[2] 問題文(含コード&リンク):
Printfを作る。
%d, %c, %sのみサポートする。
既存の関数・マクロは呼んではいけない。
使えるものはputchar()のみ。

[3] 環境
 [3.1] OS: WindouwsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月21日(木)まで
[5] その他の制限: 特にありません

12 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:54:05 ]
大学のプログラミングで使っている教科書だと、

main()

{
プログラム
}


なのに対して、時々ネット上で

int main()

{
プログラム
}

と言うのを見かけます。何が違うのでしょうか?

13 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:59:00 ]
すいません。自己解決しました。

14 名前:デフォルトの名無しさん [2010/01/19(火) 15:15:08 ]
[1] 授業単元: プログラミング演習V
[2] 問題文(含コード&リンク):
終了時、xとB、まらはAとHの内積のどちらかが0のプログラム。
(xを入力→Hを設定)
AとBはそれぞれHやxの最小多項式の係数となるはず。
X1=(x1,...,xn)の転置行列;
H=(X1,...,Xt);


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月22日まで
[5] その他の制限: 特にありません


kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10386.c

なにか気づいた点でもよいのでお願いします。

15 名前:デフォルトの名無しさん [2010/01/19(火) 15:18:06 ]
14>>
授業単元は情報数学演習です。
すみません>>11

16 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 15:42:00 ]
>>11
前スレで回答が出てるわけだが、再依頼の理由は?

908 名前: デフォルトの名無しさん [sage] 投稿日: 2010/01/17(日) 22:37:55
>>894,905-907
OSもコンパイラも指定でできないわけない。
codepad.org/Ep9uoXLa


17 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:54:44 ]
>>11
pc12.2ch.net/test/read.cgi/tech/1260532772/908

18 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 18:24:02 ]
>>16
すいません
ありがとうございます

19 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:22:19 ]
[1] 授業単元:c言語
[2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10388.txt
[3] 環境
 [3.1] Windows
 
 [3.3] 言語: C
[4] 期限: 2009 1月21日
[5] その他 一応自分でも組み立てて考えたのですが強制エラーが出て,,,
  簡単かもしれませんがよろしくお願いします

20 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:54:53 ]
>>007
#include <stdio.h>
#define DATA_MAX      5  /* データの最大件数 */
#define NAME_LEN_MAX    16  /* 名前の長さ */
#define TEL_NUMBER_LEN_MAX  16  /* 電話番号の長さ */
#define YUUBINN_LEN_MAX    8  /* 郵便番号の長さ */
#define ADDRESS_DATA_MAX  64  /* 住所の長さ */
typedef struct Address_Note {
  char name[NAME_LEN_MAX];  /* 名前 */
  char tel_number[TEL_NUMBER_LEN_MAX]; /* 電話番号 */
  char zip_code[YUUBINN_LEN_MAX]; /* 郵便番号 */
  char address[ADDRESS_DATA_MAX]; /* 住所 */
} NOTE;
int g_address_data_count = 0;
int main(void) {
  int i, sts;
  NOTE data[DATA_MAX];
  NOTE *p;
  FILE *fp;

  if((fp = fopen("address_note.txt", "r"))==NULL) {
    printf("ファイルが見つかりませんでした---address_note.txt\n");
    exit(1);;
  }
  for(i=sts=0; i<DATA_MAX; i++) {
    p = &data[i]; /*データの読み込み*/
    sts = fscanf(fp,"%16s%16s%8s%64s", p->name, p->tel_number, p->zip_code, p->address);
    if(sts==EOF) break;
    g_address_data_count++;
    printf("\n名前:%s\n電話番号:%s\n郵便番号:%s\n住所:%s\n", p->name, p->tel_number, p->zip_code, p->address);
  }
}



21 名前:デフォルトの名無しさん [2010/01/19(火) 23:02:01 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10390.txt
[3] 環境
 [3.1] OS:Linux 
 [3.3] 言語:C
[4] 期限:明日まで

皆様よろしくお願いします。


22 名前:デフォルトの名無しさん [2010/01/19(火) 23:09:41 ]
↑問題訂正します

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10392.txt
[3] 環境
 [3.1] OS:Linux 
 [3.3] 言語:C
[4] 期限:明日まで

皆様よろしくお願いします。

23 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:09:59 ]
>>21
全角と半角、大文字小文字が入り混じってハイフンが一になってることから
OCR ソフトでも使ったかな?
最近のは優秀なんだねぇ

24 名前:デフォルトの名無しさん [2010/01/19(火) 23:13:16 ]
>>23はい。

もし見にくければ、もとの画像ファイルもアップしますのでよろしくお願いします。

25 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:16:10 ]
>>24
ソースコード部分だけでいいからコンパイルできるように修正してよ

26 名前:デフォルトの名無しさん [2010/01/19(火) 23:35:27 ]
>>25
修正しました。よろしくお願いいたします。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10393.txt



27 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:57:26 ]
>>19
char *resの領域が確保されていない

28 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 02:11:23 ]
★依頼してから「納品」までは最低24時間は下さい。
(ただし最低品質です)

29 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 05:04:06 ]
>>26
codepad.org/ZR6qj0XE

バグあったら教えて下さい。


30 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 05:37:43 ]
>>19
codepad.org/aELKPmc0

問題あったら教えて下さい。




31 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:06:03 ]
[1] プログラミング実習
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10397.txt
[3] 環境
 [3.1] WindowsXP
 [3.2] Visual C++
 [3.3] C言語
[4] 期限:2010年1月21日正午まで
[5] 特にないと思います

穴抜け問題となっています。ほとんど時間がありませんが
必須問題なのでみなさんよろしく願いします


32 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:26:43 ]
>>26と同じ問題でした
よく見ずに書き込んでしまい申し訳ありません
ご協力ありがとうございました

33 名前:デフォルトの名無しさん [2010/01/20(水) 22:39:30 ]
[1] プログラミング基礎実習
[2] 文字列strを逆順に格納する関数("SEC"を受け取ったら"CES"とする)
void rev_string(char str[]){ /*…*/ }
を作成せよ。
[3] 環境
[3.1]Linux
[3.2]gcc、バージョンはわかりません。
[3.3]C言語
[4]明後日まで
[5]ポインタ使えません。

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

34 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:49:20 ]
ポインタ禁止といいながら、いきなり仮引数strがポインタ…

35 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 23:00:50 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10398.txt
@insert_btを、再帰関数を使わずに繰り返し構文で書き換えよ
A指定した数字を削除する関数delete_btを作成せよ

[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VisualC++2008ExpressEdition
 [3.3] 言語:どちらでも可
[4] 期限: 2010年1月25日まで
[5] その他の制限: 習っているのはポインタ、構造体辺りまで。

よろしくお願いします。
特に@は再帰無しで2分木をつなげるヒントだけでもいただけると幸いです。

36 名前:34 mailto:sage [2010/01/20(水) 23:23:37 ]
>>33 ポインタ禁止ではなく間接/アドレス演算子使用不可ということだと判断しておく
#include <stdio.h>
#include <string.h>
void rev_string(char str[]){
    char c;
    int s = 0;
    int e = strlen(str) - 1;
    do{
        c = str[s];
        str[s] = str[e];
        str[e] = c;
    }while(++s < --e);
}
int main(){
    char str[] = "SEC";
    printf("%s\n", str);
    rev_string(str);
    printf("%s\n", str);
    return 0;
}

37 名前:34 mailto:sage [2010/01/20(水) 23:29:39 ]
>>37 ってこれだと空文字列の時にバグるか…訂正
void rev_string(char str[]){
    char c;
    int s = -1;
    int e = strlen(str);
    while(++s < --e){
        c = str[s];
        str[s] = str[e];
        str[e] = c;
    };
}

38 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 01:52:18 ]
長くなったのでうpロダお借りしました。

問題1
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10399.txt
問題2
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10400.txt

よろしくお願いします。

39 名前:19 mailto:sage [2010/01/21(木) 02:06:45 ]
>>30

解決できました.すごく丁寧なプログラムわざわざありがとうございます.


40 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 02:35:30 ]
スレ荒れの原因になるんで、期限迄十分余裕を持って
依頼して欲しいですな。期限まで15時間、しかも
時間帯を考えると実質7〜8時間しかない。
平日の昼間に他人の宿題を無償で片付けられるような
暇人が居るとでも思っているんだったらちょっと自分の
常識を疑ったほうがよいんじゃないでしょうか?



41 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 03:08:29 ]
>>40
荒れるほど難解な問題でもないっしょ
即答できない人は荒らそうとせずにスルーすればいいだけだ

42 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 03:44:23 ]
即答ラッシュになってつまらぬ喧嘩を始める
奴らが過去に居たもんで....

43 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 07:06:55 ]
>>35
codepad.org/27osWYjf
問題の元のプログラムの設計が酷いな

44 名前:デフォルトの名無しさん mailto:age [2010/01/21(木) 09:58:23 ]
C++なんですが
.datファイルがもともとありまして、
文字列(単語が1つでない場合あり)
実数
文字列(単語が1つでない場合あり)
実数
……
の順に200行まで入ってるファイルを
ifstream使用して
文字列は文字列の配列に、実数は実数の配列に入れたいのですが、
どうすればよいか分かりますか?

入力ストリームfinを文字列lineに入れるとすると
int i=0; string s[200]; double d[200];
while(getline(fin,line)){
s[i]=line;
fin>>d[i];
i++;
}

かな、と思ったんですが出力の時にうまくいかなくて
どなたか教えてください
お願いします

45 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 11:04:01 ]
>>38
期限間違ってました。
金曜日まででお願いします。
本当すいません。

>>40
申し訳ありません。

46 名前:デフォルトの名無しさん [2010/01/21(木) 11:16:52 ]
1] プログラミング演習I
[2]

[3] 環境
 [3.1] OS: WindouwsXP
 [3.2] microsoft visual stadio 2005
 [3.3] 言語: C
[4] 期限: 2010年1月21日(木)11:45まで
5 おねがいしまつ


47 名前:デフォルトの名無しさん [2010/01/21(木) 11:20:03 ]
〉〉46でつ・・・まちがました。。。
1] プログラミング演習I
[2] int型,long型,double型の三つのメンバを持つ構造体xyzを定義して各メンバに値を格納する関数 void set_xyz(struct xyz*p.int X,long y.....)」を作成

[3] 環境
 [3.1] OS: WindouwsXP
 [3.2] microsoft visual stadio 2005
 [3.3] 言語: C
[4] 期限: 2010年1月21日(木)11:45まで
5 おねがいしまつ


48 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 11:24:21 ]
>>47
#define xyz struct{¥
int int_member;¥
long long_member;¥
double double_member}

void set_xyz( xyz *p,int X,long Y,double Z){
(*p)->int_mbmer=X;
(*p)->long_mbmer=Y;
(p*)->double_membr=Z;
}

49 名前:デフォルトの名無しさん [2010/01/21(木) 11:37:59 ]
〉〉48
神!!
書いていただいた回答を見てわかりますた!!
ありがとうございました!!


50 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 11:40:58 ]
え?w



51 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 12:24:30 ]
>>43
ありがとうございます、助かりました。

それと、設計が酷いとは具体的にはどういうことでしょうか?


52 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 13:25:34 ]
>>044 質問は質問スレへ
#include <iostream>
#include <fstream>
using namespace std;
int main(){
  int   i;
  double  d[200];
  string  line[200], s;
  ifstream fin("test.txt");

  for(i=0; getline(fin, line[i], '\n') && getline(fin, s, '\n'); i++){
    d[i] = atof( s.c_str() );
    cout << i <<":"<< d[i] <<"="<< line[i] <<endl;
  }
  return 0;
}

53 名前:52 mailto:sage [2010/01/21(木) 13:41:56 ]
#include <iostream>
#include <fstream>
using namespace std;
int main(){
  int   i;
  double  d[200];
  string  line[200], s;
  ifstream fin("test.txt");

  for(i=0; getline(fin, line[i], '\n'); i++){
    fin >> d[i]; getline(fin, s, '\n');
    cout << i <<":"<< d[i] <<"="<< line[i] <<endl;
  }
  return 0;
}

54 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 14:11:39 ]
昨日から、ラウンジにアクセスしようとすると403になるんだが、俺だけか?

55 名前:yui ◆zuLLaJzEzk mailto:sage [2010/01/21(木) 15:56:47 ]
[1] 授業単元:情報処理入門
[2] 問題文(含コード&リンク):
データファイルdata.binには,数値データがバイナリ形式で保存されている
(1行に羅列).データの数は75×75=5625,データの型はshortである.
data.binのデータを,freadを用いて読み出して配列に格納し,gnuplotで3次元表示できる形式のテキスト
ファイル(data2.txt)に保存するプログラムを作成せよ.(ファイルrep2.c,data2.txt)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
Cでおねがいします。
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年1月25日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にございません。

わたしはもともと情報系の学生ではないのですが、情報処理の授業も履修しています。簡単な課題なのかもしれませんが私にとっては全く分かんないです。どなたか教えていただけたらありがたいです。よろしくお願い致します。

data.binのファイルはこちらになります。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10402.zip

56 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 17:31:40 ]
>>055 これでgnuplot出来るか確認してくれ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10403.zip

57 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 18:19:59 ]
>>55
11,250/4 割り切れないから元データが不正じゃない?

#include <stdio.h>
#pragma pack(1)
typedef struct POINT{
short x;
short y;
};
#pragma pack()
int main(){
struct POINT pt;
FILE *fin,*fout;
fin = fopen("data.bin","rb");
if(fin==NULL)return -1;
fout = fopen("out.txt","w");
if(fout==NULL)return -1;
fprintf(fout,"#X\tY\n");
while(fread(&pt,sizeof pt,1,fin)==1){
fprintf(fout,"%d\t%d\n",pt.x,pt.y);
}
fclose(fin);
fclose(fout);
return 0;
}


58 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 18:22:11 ]
11,250/2 = 75*75 いいんだよ

59 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 18:34:04 ]
うーん、3次元なのに75*75って分かんないなぁ
>>57スルーしてください

60 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 18:37:08 ]
1ブロック25ポイントで75ブロックって事なのかな



61 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 19:29:07 ]
>>055
IPOで言う、PROCESSとOUTPUT両方提出すればいい課題なのかな?
OUTPUTは決まって無いのかな?

62 名前:デフォルトの名無しさん [2010/01/21(木) 20:11:16 ]
[1] 授業単元: プログラミング演習
[2] 問題文:
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: microsoft visual stadio 2003
 [3.3] 言語: c++
[4] 期限: 2010年1月22日まで
[5] その他の制限: とくにありません

エラーが出てビルドできません
データはこちらです↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10404.cpp

63 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 20:16:59 ]
>>62
// typedef struct KAMOKU;

printf("プログラムを終了します。\nデータベースファイルは作成されていません。\n");

}
}

}

64 名前:yui ◆zuLLaJzEzk mailto:sage [2010/01/21(木) 22:42:06 ]
>>56-61 皆さん本当にありがとうございます。実はわたしも課題の内容すら分かってないみたいで、本当にすみません。

これが前回出された課題と答えなのですが、これを参考にすれば解けるみたいです。
よろしくお願いします。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10405.txt
こちらがデータになります。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10406.txt

65 名前:44 mailto:age [2010/01/21(木) 23:52:47 ]
>>52-53
ありがとうございます!!!!

66 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 01:06:47 ]
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):穴埋め問題です
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限: 2010年1月23日
[5] その他の制限: 特にありません


kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10407.txt

皆様よろしくお願いします。

67 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 02:55:42 ]
>>66
codepad.org/VbNiiuvv


68 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 03:12:32 ]
>>64
イミフだな。


69 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 07:55:39 ]
>>64
printf("%2d %2d %u\n",j,i,dat[wx0*i+j]);

70 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 10:55:01 ]
>>67
ありがとうございます、助かりました。




71 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:35:05 ]
>>59
こんなんじゃね?
ttp://www.rupan.net/uploader/download/1264127640.PNG

72 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 16:24:34 ]
>>71
なるほど。
www.rupan.net/uploader/download/1264145041.jpg
ドラえもんだね

73 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 18:51:02 ]
>>055
// data.binのデータを,freadを用いて読み出して配列に格納し,gnuplotで3次元表示できる形式のテキストファイル(data2.txt)に保存するプログラムを作成せよ.
#include <stdio.h>
#define wx0 75
#define wy0 75
main()
{
  int i,j;
  unsigned short dat[wx0*wy0];
  FILE *fp;
  fp=fopen("data.bin","rb");
  for(i=0;i<wx0*wy0;++i) fread(&dat[i],sizeof(short),1,fp);
  fclose(fp);
  fp=fopen("data2.txt","w");
  for(i=wy0-1;i>=0;--i){
    for(j=wx0/2;j<wx0;++j){
      fprintf(fp,"%2d %2d %d\n",j,i,dat[wx0*i+j]);
/*      fprintf(fp,"%d\t",dat[wx0*i+j]);*/
    }
    for(j=0;j<wx0/2;++j){
      fprintf(fp,"%2d %2d %d\n",j,i,dat[wx0*i+j]);
/*      fprintf(fp,"%d\t",dat[wx0*i+j]);*/
    }
/*    fprintf(fp,"\n");*/
  }
  fclose(fp);
}

74 名前:デフォルトの名無しさん [2010/01/22(金) 19:03:45 ]
[1] 授業単元:プロトタイプ宣言
[2] 問題文(含コード&リンク):『私は○○です』と表示する関数を作成して、main関数でそれを三回呼び出して、画面に三回出力プログラムを作成せよ。表示のための関数の名前は『display_name』とせよ
[3] 環境
 [3.1] OS:xbunt
 [3.3] 言語:C++
[4] 期限: 2010年1月23日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。

75 名前:74 [2010/01/22(金) 19:04:48 ]
xbuntuでしたすみません。

76 名前:yui ◆zuLLaJzEzk mailto:sage [2010/01/22(金) 19:23:43 ]
>>73さん、他の皆さん、本当にありがとうございました。本当に助かりました。感謝しています。

77 名前:無能 [2010/01/22(金) 21:39:27 ]
[1] 授業単元:プログラミング実習
[2] 問題文:クラスタリングk-means法
1、初期値として、クラスタ数および初期のデータ分割を与える。
 2、データ分割に基づき各分割の重心を求める。
   さらに、重心と各事例データとの距離を求める
 3、各事例を最も近いクラスタに割り当てる。
 4、上記の割り当てが前回と同じであれば終了。
   更新があれば2に戻る
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C言語
[4] 期限:2010年1月23日

できなくて本当に困ってます。お願いします。

78 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 23:50:34 ]
前スレの>>963
式を展開して左結合にするというやつ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10395.c

79 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:57:07 ]
[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10409.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010年1月25日7:00まで
[5] その他の制限:

自分で考えてみましたが、もう無理です…。
よろしくお願いします。

80 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 11:13:50 ]
>>79
あんま動作確認やってないのでよろしく
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10410.txt



81 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:41:33 ]
>>77
>>1
>・問題文は、出題されたまま全文を書いてください。

・クラスタリングするデータの型は?
・データの入力はどうするのか、ランダム生成するのか?
・クラスタリング結果はどう出力するのか?
 表示用のプログラムがあるのか、gnuplotか何かで描くのか、
 ただテキストで吐けばいいのか

82 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:46:35 ]
>>74
#include <iostream>
using namespace std;
void display_name(){
std::cout << "私は○○です。" << std::endl;
}
int main(){
display_name();
display_name();
display_name();
return 0;
}


83 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:58:48 ]
[1]プログラミング演習(大学専門過程演習授業)
[2] コマンドライン引数で与えられたテキストファイルを読み込み
空行でなければ、その行に含まれているスペース、タブを
除去したものを標準出力するプログラム。但し英数字と"_"で
構成される文字列同士の間には一つのスペースは残す。
",'で囲まれた部分に関してはスペース、タブはそのまま残す
"で囲まれた部分について最後の文字が¥であってはならない。
'で囲まれた部分について最後の文字が¥であってはならない。
(テキストファイルの空行と余計な空白/タブを除去する
プログラムでクオテーションに配慮したもの)
[3-1] Windows Vista
[3-2] Visual studio 2008
[3-3] C言語
[4] 2/7迄
[5] 使用出来る標準ライブラリはstdio.h stdlib.h string.h定
義のものだけでこれらのヘッダファイルのみインクルード可
ファイルI/O,標準出力が出来るのはmain関数内のみとする。

84 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:04:58 ]
★品質によるトラブル防止の為、片付けた宿題を貼る場合は
依頼者がまだ見ているかを確認してから貼るようにしましょう。
★依頼者は、宿題を片付けて下さる方が出てからすぐもらえる
とは考えず、一定時間のテスト、チェック時間を考慮して下さい。
★依頼者は、依頼してから次にスレをいつ見るのかも記述して
下さると助かります。(ずっと見てますというのは非現実的で
信用されません)

85 名前:83 mailto:sage [2010/01/23(土) 14:12:11 ]
今日明日は入試関連のバイトと期末試験準備が
あるんで次見るのは月曜日夜以降になると思いますが
片付けて下さる方がいらっしゃいましたら、お助け
下さい。

86 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:16:04 ]
>>84 いやがらせか
>>74
#include <iostream>
using namespace std;
void display_name(){
cout << "私は○○です。" << endl;
}
int main(){
for(i=0;i<3;i++)
display_name();
return 0;
}

87 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:47:12 ]
軽いものはすぐに出来るだろうけど時々かなり重いもの
もあるしな...(依頼者にはわかりようがないかも)
やっぱし少しでも間を取ったほうがいいよ

88 名前:無能 [2010/01/23(土) 18:52:58 ]
>>80 
77のものです。

属性数d=2
x,y
事例データ数n=5
事例No.1 x=5,y=1
事例No.2 x=4,y=2
事例No.3 x=1,y=5
事例No.4 x=5,y=4
事例No.5 x=5,y=5

クラスタ数;2

初期クラスタ{1,3},{2,4,5}

結果はテキストでお願いします。

89 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:26:46 ]
>>82>>86
>>74の授業単元にプロトタイプ宣言ってあるから
問題文に書いてなくてもプロトタイプ宣言した方が良いような。

90 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:30:00 ]
>>80
ありがとうございます。
自宅では開発環境ないので月曜の朝学校で動作確認してみます。




91 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:40:48 ]
[1] 授業単元:情報処理
[2] 問題文:

問1 キーボードから3個の実数(整数でない)値を1行に1組として計5組入力し、
ファイル(ファイル名data1.txt)に保存する。

問2
 問1で作ったファイルから実数値を読み込み、総合計と各組の実数の平均を求める。
ただし、ファイルに書かれている組の数は不明とする。

[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C言語
[4] 期限:2010年1月25日
[5] その他の制限: なし

よろしくお願いします。

92 名前:74 [2010/01/23(土) 22:45:54 ]
ありがとうございました

93 名前:デフォルトの名無しさん [2010/01/24(日) 01:09:15 ]
[1] 授業単元:プロトタイプ宣言
[2] 問題文(含コード&リンク):
次の式を以下の条件(値)に基づいて計算.表示するプログラムを作成せよ。ただし式は簡単化せずそのままプログラムすることとして、更に表示するときは計算の答えと合わせて条件(値)も表示して分かりやすくせよ。

計算する式
{(a+b)c-a(b-c)}/{(c/b)a+abc-ca}

条件1
a=3 b=4 c=2
a=3 b=4.3 c=2.5
a=32.6 b=57.82 c=2.543

この問題を、
式の分だけを関数化した場合
式と出力部分を関数化した場合
の2つの場合でプログラムを作成せよ
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月25日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。


94 名前:デフォルトの名無しさん [2010/01/24(日) 02:09:37 ]
[1] C
[2]
反復列 x_n+1=a*x_n(1-x_n),0<=a<=4,0<=x<=1
に対して、x_nが1周期(不動点)、2周期、4周期、8周期、16周期
をもつaの範囲について、プログラムを作成して確かめよ。

○周期というのはaがある値のとき、○個の解で振動するという意味です※
[3] LINUX C
[4] 1/24 18:00

95 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 03:11:24 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):www.acm-japan.org/past-icpc/domestic2008/problems/all_ja.html
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: ([2010年01月25日23:59まで]
[5] その他の制限: Problem A の問題です。
頑張ってみたのですが、わかりませんでした。
どなたか、よろしくお願いします。

96 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 03:29:40 ]
>>87
このスレで放置されるパターンの多くは
問題が難解なのではなく問題文が難解なんだ
難解というか不備だな
出題者の不備、質問者のコピペミスなどで
解答を一つに絞れず面倒なやり取りが目に見えるので
放置されちゃう
ま、重いっちゃ重いけど症状が重いという意味合いだな

97 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 04:30:31 ]
>>83
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10411.c

書いてみた。
使ってみて。

98 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:20:49 ]
>>83
なんか問題の定義があいまいだから適当に補完して書いた
だからかだいぶ>>97と結果が違うな
好きなほう使ってくれ
codepad.org/9VH9AxnZ


99 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:33:13 ]
>>93
式の分だけを関数化した場合
codepad.org/aD7M3Jat
式と出力部分を関数化した場合
codepad.org/mBSphWnG

100 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:28:17 ]
>>91
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10413.txt



101 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 10:31:57 ]
>>091 テンプレに空白ありだよ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10414.c

102 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 11:23:52 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10419.zip
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月25日 5:00まで
[5] その他の制限:

宜しくお願い致します。
txtがうまくうpされなかったので、ファイルはひとつですがzipにてうpしました。

103 名前: ◆NPjWSW9EXI [2010/01/24(日) 18:57:41 ]
[1] 授業単元:Cプログラミング演習2
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10420.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: [2010年1月27日18:00まで]
[5] その他の制限:
よろしくお願い致します。

104 名前:homi [2010/01/24(日) 20:19:28 ]
本当に困ってます。
このままでは留年して泣いてしまいます><



20 桁までの自然数の足し算と掛け算を浮動小数点演算を用いないで実施するプログラムlongcomp.c を
作成し、C のソースコードを提出しなさい。
実行形式をlongcomp とした動作仕様は以下です。

>./longcomp 12345678901234567890 + 12345678901234567890
>12345678901234567890 + 12345678901234567890 = 24691357802469135780
>./longcomp 1234567890 * 1234567890
>1234567890 * 1234567890 = 1524157875019052100



105 名前:homi [2010/01/24(日) 20:23:41 ]
上の人です;;


b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数
の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。こう
することで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少な
い検索で見つけることができる。
扱う二進数の集合を、たとえば
b00, b001, b0011, b00111, b1000, b11100, b0
として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプロ
グラム(tree) を作成し、C のソースコードを提出しなさい。
>./tree
>1 1 1 0 0 000 1100 0 1 b


提出期限は1/26 23:59までです;;
上も合わせてC++です;;

106 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:24:59 ]
テンプレ使ってね

107 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:28:06 ]
これができたらBPS
pc12.2ch.net/test/read.cgi/tech/1264331633/

その前にこのスレとの関係を聞きたいもんだな

108 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:30:17 ]
CなのかC++なのかくらいはっきりしろ

109 名前:homi [2010/01/24(日) 20:35:05 ]
上のヒトです;;
フォーマットに気が付きませんでした

[1] データ構造とプログラミング
[2] www.geocities.jp/t07644fb/kadai.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限


ご迷惑おかけしました;;

110 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:51:03 ]
げげ、2ちゃんに依頼するなんてどこのFランかと思ったら慶應かよ……orz



111 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:53:16 ]
>>104
> 20 桁までの自然数の足し算と掛け算を浮動小数点演算を用いないで
多倍長整数のライブラリを使えばおk

112 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:46:28 ]
>104

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10422.zip

113 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:54:58 ]
>>103
(1)と(3)だけ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10423.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10424.txt

(2)は、行列が分かる人、よろしくお願いします。

114 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:55:48 ]
>>109
課題1だけ。手元に多バイト長演算ライブラリの自作がありましたのでそれを使いました。
codepad.org/0WrPn4ib

>>84
> ★品質によるトラブル防止の為、片付けた宿題を貼る場合は
> 依頼者がまだ見ているかを確認してから貼るようにしましょう。
意味不明。依頼者がみてるかどうかと、品質とどんな関係があるのですか?
回答者はできたら貼るだけいいのでは?
生徒さんですか。最近の学校ではこんなんがはやっているのですか?

115 名前:114 ◆QZaw55cn4c mailto:sage [2010/01/24(日) 21:57:14 ]
シェルによっては * を解釈してしまうでしょうから、
./a.exe 2 '*' 3
のように入力してください。


116 名前:デフォルトの名無しさん [2010/01/24(日) 22:05:21 ]
>>99
ありがとうございました
int main()の後のvoidって、今までいらなかったんですが、今回はいるんですか?

117 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:08:22 ]
>>109
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10426.c

118 名前:homi [2010/01/24(日) 22:16:02 ]
>>114、117
助かりました!!ありがとうございます!!


119 名前:デフォルトの名無しさん mailto:saga [2010/01/24(日) 22:27:24 ]
[1] 授業単元: 画像解析
[2] 問題文(含コード&リンク)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10427.txt
[3] 環境
 [3.1] OS:Windows or Vista どちらでも可
 [3.3] 言語: C/C++ どちらでも可
[4] 期限: 2010年02月03日まで
[5] その他の制限: リンクのtxtファイルに書き込みました

120 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:30:05 ]
>>102
とりあえず問2は、こういう発想でうまく動きました(投げやり

修正は2つの関数を以下のように書き換えました。
あとは適当に修正してください。

struct node *make_clist(char *s){
struct node *head = initlist();
struct node *p = head;
int len = strlen(s);
int i;
//while (*s != '\0'){
for (i = 0; i <= len; i++) {
insert(p, *s);
p = p->next;
s++;
};
return head;
}

void print_clist(struct node *p) {
printf("[");
while (p->next) {
/* 表示する文字が\0なら終了 */
if (p->next->element == '\0') {
break;
}
printf("%c", p->next->element);
p = p->next;
}
printf("]\n");
}



121 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 22:30:11 ]
>>116
別になくてもいいよ

122 名前: ◆jPpg5.obl6 mailto:[sage] [2010/01/24(日) 23:00:05 ]
テスト

123 名前: ◆jPpg5.obl6 mailto:[sage] [2010/01/24(日) 23:00:18 ]
テスト

124 名前:デフォルトの名無しさん mailto:[sage] [2010/01/24(日) 23:11:09 ]
[1] 授業単元: Cプログラミング入門
[2] 問題文(含コード&リンク): 入力された2つの文字列(日本語その他バイト文字は不可)
を比較するプログラムを作成せよ。ただし、大文字小文字の違いは無視。単語間に連続して
スペース・タブが複数入っていても単独のスペースとしない。
[3] 環境
 [3.1] OS: vista
 [3.3] 言語: C
[4] 期限: [2010年1月26日12:00まで]
[5] その他の制限: 文字列とポインタまでやってます。

入力に関して、キーボードから1つ目の文字列を1行で入力し、改行する。
この時、入力を促す文字は一切表示しない。入力文字数は128文字まで。
出力に関して、一致すれば何も表示しない。不一致の場合は最初に不一致となる
入力1の文字と入力2の文字(1文字+スペース+1文字+改行)を表示する。
どちらかが末端の場合は代わりにスペースで埋める。

どうかよろしくお願いします。

125 名前:120 mailto:sage [2010/01/24(日) 23:20:27 ]
>>120
すいません。。。
editを修正しなくちゃいけないんですね(汗

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10428.txt

投げやりなのは仕様です。

126 名前:デフォルトの名無しさん [2010/01/24(日) 23:44:27 ]
>>121
ごめんなさい。calcoutputとかcalcというのは何か特殊な効果があったりしますか?習ってないんですが

127 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 23:54:31 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10431.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2009年1月26日まで]
[5] 特にありません お願いします。

128 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 00:05:51 ]
>>126
>>93
> この問題を、
> 式の分だけを関数化した場合
> 式と出力部分を関数化した場合
> の2つの場合でプログラムを作成せよ
って書いてあるでしょ
calcは「式の分だけを関数化した」もの、
calcoutputは「式と出力部分を関数化した」ものだよ

129 名前:128 mailto:sage [2010/01/25(月) 00:44:03 ]
>>126
言い忘れてた。
calcとかcalcoutputとかは適当に決めたものだから別の名前に変えてもいい

130 名前:デフォルトの名無しさん [2010/01/25(月) 00:59:34 ]
[1] 再帰的データ構造
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10432.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2010年1月25日17:30まで])
[5] その他の制限
よろしくお願いします。



131 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 01:06:19 ]
>>127
void quick(int a[], int left, int right) {
int p, center;

if(left != right){
p = pivot(a, left, right);
center = partition(a, left, right, a[p]);

check(a, left, right, p, center);
quick(a, left, center - 1);
quick(a, center, right);
}
}


132 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 01:09:07 ]
>>130
ダメな問題だな

133 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 01:29:25 ]
>>131
うおおお 
無限ループです

134 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 02:33:51 ]
>>127
まだいる?

135 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 03:23:22 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10408.txt
[3] 環境
 [3.1] OS: vista(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: visual studio2008
 [3.3] 言語: C
[4] 期限: 1月27日
[5] その他の制限: 特になし

よろしくお願いします。

136 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 06:02:38 ]
>>127
3箇所修正

(1) pivot関数の書き換え
return (left + right + 1) / 2;

(2)partition関数内の条件
while (a[j] > p) // 軸以下のデータを探索

(3)quick関数先頭にブロック
if (left >= right) return;

137 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 06:31:44 ]
[1] 授業単元: プログラミング概論
[2] 問題文:"in_file"という名前のファイルの中に18個の整数データが空白や改行コードで区切られて並んでいると仮定した上で、この入力ファイルの中のデータを1行に5個ずつきれいに並べて"out_file"という名前のファイルに出力するCプログラムを作成せよ。
入力ファイルの内容が
-1111111111 2222222 333333 4444 55 6 7 8 9 0 1 2 3 4
5         6           7890123
-5666
の時には、例えば次のような内容を"out_file"に書き出す
_-1111111111_____2222222______333333________4444__________55
_________________6_______________7______________8_____________9___________0
________________ 1_______________2______________3_____________4___________5
_________________6_____7890123________-5666
[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月26日まで
[5] その他の制限: とくにありません
問題文ではアンダーバーではなく半角の空白記号でしたが、見やすさを考慮して_に変えておきました
講義で構造体やファイル入出力等、基本的なことは終わっています
よろしくお願いします

138 名前:デフォルトの名無しさん [2010/01/25(月) 07:34:39 ]
[1] 再帰的データ構造
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10432.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2010年1月25日17:30まで])
[5] その他の制限:特になし

よろしくお願いします。


139 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 07:52:26 ]
>>130
codepad.org/5SmBZ1C1

これでどうでしょうか?


140 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 09:06:52 ]
>>135
問題1
codepad.org/bgcSjgxX
問題2
codepad.org/SE5EpdPz

モレの頭ではうまいソート方法が思いつかんかったよ。
バグってたらごめん。
問題2のスペース,タブの扱いがよくわからんかったので,
そっとしておいたお。
こちらの環境は Cygwin,gcc なので問題あるかも。




141 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 09:55:59 ]
[1] 授業単元:動画像の圧縮と復号
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10433.txt
[3] 環境
 [3.1] OS: Windowsvita
 [3.2] gcc バージョンはわかりません cygwinを使っています
 [3.3] 言語: C
[4] 期限: ([2010年1月25日15:00まで] 時間なくてすみません;;
[5] 特にないです

必修課題なんです
どうかお願いします

142 名前: ◆QZaw55cn4c mailto:sage [2010/01/25(月) 10:43:25 ]
>>141
期待していただいては困るのであらかじめ行っておけば、
この種のプログラミングは専門性が高いので、
経験豊かな人間にしか手をつけられません。

必修というのであれば、ココに期待しないほうがいいと思います。

143 名前:homi [2010/01/25(月) 13:38:14 ]
[1] データ構造とプログラミング
[2]
演習問題4.5 逆ポーランド記法による入力文字列(空白で区切られている)に対して、
16進数と10進数で答えを返すプログラムrpnを作りなさい。
(入力例)rpn 5 2 + 7 *
(出力例)0x31, 49(decimal)
[3] 環境
 [3.1] (Windows)
 [3.2] (gcc)
 [3.3] (C++)
[4] 期限: ([2010年1月25日23:59まで] )
[5] 特にないです


お願いします

144 名前:homi [2010/01/25(月) 13:44:30 ]
[1] データ構造とプログラミング
[2]
[1] データ構造とプログラミング
[2]
自然入力した数式を逆ポーランド記法に変換するアルゴリズムを考えなさい。アルゴリズムをPADやフローチャートで示すだけでもよい。プログラム化することができれば、ボーナスポイントです。
(入力例)./a (5+2)*7
(出力例)5 2 + 7 *[3] 環境
 [3.1] (Windows)
 [3.2] (gcc)
 [3.3] (C++)
[4] 期限: ([2010年1月25日23:59まで] )
[5] 特にないです

145 名前:homi [2010/01/25(月) 13:46:13 ]
上ちょっとフォーマット崩れました。ごめんなさい。

[1] データ構造とプログラミング
[2]
自然入力した数式を逆ポーランド記法に変換するアルゴリズムを考えなさい。アルゴリズムをPADやフローチャートで示すだけでもよい。プログラム化することができれば、ボーナスポイントです。
(入力例)./a (5+2)*7
(出力例)5 2 + 7 *
[3] 環境
 [3.1] (Windows)
 [3.2] (gcc)
 [3.3] (C++)
[4] 期限: ([2010年1月25日23:59まで] )
[5] 特にないです


よろしく願いたします

146 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:51:19 ]
>>125
いえいえ、助かります。問2について解決致しました。
規制にて書き込みできず遅れましたが、ありがとうございました。

提出期限は過ぎてしまいましたが、どなたか>>102の問3をよろしければお願いします。


147 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:55:02 ]
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
1.
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10435.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10434.txt
2.
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10439.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10436.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10437.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10438.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VS2008
 [3.3] 言語: C++
[4] 期限: 2010年01月31日まで

148 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:01:34 ]
★依頼してから「納品」までは最低6時間は下さい。それ
以下の場合は、品質が著しく低い場合があります。
★依頼してからの宿題内容の修正はやめてください。
やむをえず行う場合は3時間以内にしてください。6時間
を経過した場合は依頼自体を取り消して貼り直して下さい。
(宿題をやって下さる方も、問題の内容自体の理解も覚束ない
人間が一発で問題文を正確に転記/略述することは出来ない
ので、少なくとも3時間以内までには修正が入るかもしれないと
いう前提でお願いできないでしょうか?)
★宿題をやってあげる方は仕事でやっているわけではないので
品質に文句を付けるのはやめてください(質問は構いません)
★複数やってくださった方が居た場合でも依頼者は全員に貼って
もらう必要はありません。時間を割いて片付けてくれた人を
比較するようなことは失礼に当たります。(宿題を貼る場合は
依頼者がまだ見ているかどうか確かめてから貼るように
お願いします。)最初に貼ってくれた人の回答で満足なら
回答をお寄せ下さった方にお礼と回答を貼ることを遠慮して
もらうようにして下さい。

149 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:05:27 ]
> ★複数やってくださった方が居た場合でも依頼者は全員に貼って
> もらう必要はありません。

書いている意味がよくわからない。
複数回答が出た場合に、どこにだれが何を貼るって?

150 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:21:17 ]
依頼者はどんなにひどい回答でも、喜んで受け取り、
以降その人以外から回答は受け取らないようにしろだと?

依頼者には酷かもしれないけど正論だな。
ようするに既に回答者が出てた場合は、最初の回答者を通
す形にしてやったほうがいいかも。
但し最初の回答者になる為に意図的に糞コード貼ってる
と認識された場合は袋叩きにあうかも知れないんで
回答者も少し辛くなる。



151 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:23:36 ]
いやそれ構わなくていいから・・・

152 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:34:29 ]
>>148
が一体何を望んでいるのか、サッパリ分からない。

153 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:35:33 ]
>>152
ただ、仕切りたいだけだろ

154 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:27:07 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):www.acm-japan.org/past-icpc/domestic2008/problems/all_ja.html
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: ([2010年01月26日23:00まで]
[5] その他の制限
Problem A の問題です。
頑張ってみたのですが、わかりませんでした。
どなたか、よろしくお願いします。

155 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:24:48 ]
>>148
とりあえず赤くしておく

156 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:00:15 ]
>137
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10440.txt

・入力例に全角スペースが含まれていますが、全角スペース対応はしていません。
・出力例が意味不明だったので、独自解釈をしました。
・ファイル読み込み(fscanf)のエラーチェックとバッファーオーバーラン対策はしていません。
・ファイル書き込み(fprintf)のエラーチェックはしていません。

問題があれば具体的に指摘してください。たぶん、対応します。


157 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:01:21 ]
>>154
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10441.txt

158 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:36:12 ]
>>153
最近こんな生徒さんが多いですね。こういうのが学校ではやっているんですかね?

159 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:37:27 ]
>>154
さすがにこれに答えちゃいけないでしょう。自力でなんとかしなさい。

160 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:51:47 ]
>>136
遅くなりました
ありがとうございました



161 名前:デフォルトの名無しさん [2010/01/25(月) 20:11:44 ]
[1] 授業単元: プログラミング演習(木構造と数式処理)
[2] 問題文(含コード&リンク):

累乗の計算の逆を行うプログラムを作ってください。


x*x*xと入力されればx^3と画面に出力する。

x*x*x*aなどの場合はx^3*aと出力されればよい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月28日12:00まで


162 名前: ◆NPjWSW9EXI [2010/01/25(月) 20:28:20 ]
103です
>>113
遅くなりました
有難うございました。

どなたか2番を解いてくださいお願いします。


163 名前:デフォルトの名無しさん [2010/01/25(月) 20:46:36 ]
>>129
すみません…ありがとうございます。あと、昨日聞き忘れてしまったんですが、
意味的に同じであると思うんですが、この2つを書き方分けてる理由は何ですか?
cout << "{(a+b)c-a(b-c)}/{(c/b)a+abc-ca} = ";
cout << ((a+b)*c-a*(b-c))/((c/b)*a+a*b*c-c*a) << '\n';

164 名前:93 [2010/01/25(月) 20:51:51 ]
言い忘れてしまいました。これを考察というのをするんですが、この2つを比較でもしようかなと思うんですが、
プログラムの文章の書き方が違うとかそういう事以外で何かありますか?

165 名前:120 mailto:sage [2010/01/25(月) 22:20:29 ]
>>146
素材はそのまま生かしましたw

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10443.txt

166 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 22:24:24 ]
>>162
#include <stdio.h>

void mult_array(int a0[4][4],int a1[4][4],int result[4][4]){
int x,y,k;
for(y=0;y<4;y++){
for(x=0;x<4;x++){
for(k=0;k<4;k++){
result[y][x]+=a0[y][k]*a1[k][x];
}
}
}
}
int main(){
int a0[4][4]={0};
int a1[4][4]={0};
int result[4][4]={0};
int y;
for(y=0;y<4;y++)scanf("%d%d%d%d",&a0[y][0],&a0[y][1],&a0[y][2],&a0[y][3]);
for(y=0;y<4;y++)scanf("%d%d%d%d",&a1[y][0],&a1[y][1],&a1[y][2],&a1[y][3]);
mult_array(a0,a1,result);
for(y=0;y<4;y++)
printf("%d %d %d %d\n",result[y][0],result[y][1],result[y][2],result[y][3]);
return 0;
}


167 名前:hoge [2010/01/25(月) 23:07:26 ]
上の105ですが、もう一度質問させて頂きます。
なぜなら、課題2対しての回答がないからです。
皆様よろしくお願いします。

[1] データ構造とプログラミング
[2]b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数
の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。こう
することで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少な
い検索で見つけることができる。
扱う二進数の集合を、たとえば
b00, b001, b0011, b00111, b1000, b11100, b0
として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプロ
グラム(tree) を作成し、C のソースコードを提出しなさい。
>./tree
>1 1 1 0 0 000 1100 0 1 b
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限

168 名前: ◆QZaw55cn4c mailto:sage [2010/01/25(月) 23:15:59 ]
>>143
コマンドラインで * を入力すると、シェルが解釈していまうので、
実行後、標準入力から式を入力してください。
codepad.org/H4KWIkS9

169 名前: ◆NPjWSW9EXI [2010/01/26(火) 00:39:43 ]
>>166
助かりました
有難うございます

170 名前:homi [2010/01/26(火) 00:46:56 ]
>>168
ありがとうございます!!><



171 名前:homi [2010/01/26(火) 00:50:11 ]
前にこれを上げたものです。
課題1はすでにやってもらったのですが、
課題2がまだです。
再UPになりますが、もしできる方いらっしゃいましたらよろしくお願いします><

[1] データ構造とプログラミング
[2] www.geocities.jp/t07644fb/kadai.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限

失礼しました

172 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:56:37 ]
>>171
あなたはそのために単発スレまで建てたんだからそっちでやりなよ

173 名前:137 mailto:sage [2010/01/26(火) 01:27:20 ]
>>156
返事が遅くなってすいません
全角スペースは対応しなくても大丈夫だと思います
私の独自解釈では、おそらく"in_file"内の整数18個を5*3+3の4行に分け、最も長くなる行に揃えて出力すればいいのかと…
適当に入力した数値が綺麗に並んで出力されたので、問題ないと思います
助かりました
ありがとうございました

174 名前:デフォルトの名無しさん [2010/01/26(火) 01:30:22 ]
[1] データ構造とプログラミング
[2]
リングバッファを使って、9個のキューを作り、データを追加したり、
データを取り出すプログラムを完成させなさい。
以下の添付にあるプログラムを完成させろという課題です。
www.geocities.jp/pegasus_violet/en5-2.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限


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


175 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 02:40:07 ]
いつから質疑応答スレになったんだ?
宿題を依頼し、片付けてもらうスレだろ?

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

177 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 03:18:10 ]
気に入らない依頼やその他の質問はスルーの方向で。

178 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 05:25:11 ]
>>174
codepad.org/7ifr4yYK


179 名前:83 mailto:sage [2010/01/26(火) 07:46:44 ]
>>97,98
遅くなりましたがどうもありがとうございました。

180 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 08:27:07 ]
問題文の曖昧さと回答の多様性の擦り合わせの先に真の回答が
あるんじゃね?

ことプログラム作文に関しては
問題、回答、終了という気持ちのよいスケジュールが
立てられるとは思わないほうがいいかも
数学問題の影響受け過ぎ(てか数学が異常な学問)



181 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 09:17:28 ]
>>161
codepad.org/C6kJenpg

木構造ってあったから,2分木を使ったけど,
配列を使った方が,入力サイズは限られるが,楽だと思う。
問題文から察するにソートする必要ないし。

エラーチェックは甘いけど,バグってたりしたら,
教えて下さい。治さないかもしれないけど。


182 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 09:19:50 ]
>>180
が一体何を望んでいるのか、サッパリ分からない。

183 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 09:23:35 ]
>>161
codepad.org/hBX7Dn6H

ごめん。余分な出力が入ってたので修正した。


184 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 09:33:44 ]
>>182
>>180の望みをわかることも>>180は望んでいる
んだろう。しかしね。ここは2chでプログラミング
の宿題を片付けるスレで、いろいろと制約も多い
んで、質疑応答形式になってしまっているんだ。

185 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 09:42:30 ]
>>184
が一体何を望んでいるのか、サッパリ分からない。

186 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 09:46:52 ]
>>180にもわからないだろね

187 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 10:19:16 ]
>>180
>問題文の曖昧さと回答の多様性の擦り合わせの先に真の回答が
>ある
そうなんだろうが、誰もがそういう水準に到達出来るわけじゃ
ない。国語の作文の授業みたいに完全に自由か、
数学の入試問題のように極度に不自由かのいずれ
か一つじゃないと皆やらないだろ?

188 名前:デフォルトの名無しさん [2010/01/26(火) 10:49:19 ]
>>178
遅くなりましたが
ありがとうございました!

189 名前:デフォルトの名無しさん [2010/01/26(火) 10:52:56 ]
[1] データ構造とプログラミング
[2]
ツリーにノードを追加するプログラムを完成させなさい。またプログラム中 に使われている要素 mitsugi, emura, satou, yonemura, murai, nakamura, kwkt がツリー上でどのように配置され ているか書きなさい。
以下の添付にあるプログラムを完成させろという課題です。
www.geocities.jp/pegasus_violet/en9-5.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限


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

190 名前:デフォルトの名無しさん [2010/01/26(火) 11:00:16 ]
[1] データ構造とプログラミング
[2]
以下の添付にあるプログラムを完成させ配列のrotateを完成させろという課題です。
www.geocities.jp/pegasus_violet/en8-4.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限

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



191 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 11:43:16 ]
>>189
void AddChild(struct NODE** p, char* name){
if (!*p) {
*p = (struct NODE *)malloc(sizeof (struct NODE));
(*p)->left = (*p)->right = 0;
strcpy((*p)->name, name);
} else {
AddChild(strcmp(name, (*p)->name) < 0 ? &(*p)->left : &(*p)->right, name);
}
}

192 名前:デフォルトの名無しさん [2010/01/26(火) 13:15:50 ]
>>191
大変ありがとうございます

193 名前:デフォルトの名無しさん [2010/01/26(火) 13:23:04 ]
[1] 授業単元:プロトタイプ宣言とか引数
[2] 問題文(含コード&リンク):[3〜6]∫x^2 dx(これだと正解は63)を計算するプログラムを作成せよ。
尚、積分本体(始点と終点)と関数本体f(x)に分けること。dx=1/N N=(10,1000…10000)誤差評価を行う事。積分範囲を変更すること。x^2の関数を変更すること。
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月25日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。


194 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 14:15:37 ]
>>193
codepad.org/PqWWIDA4
積分範囲とか積分関数変えるのは適当に自分でやってくれ
(積分関数:6行目、積分範囲:20〜22行目、厳密解:27行目)

195 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 14:31:19 ]
>>193
期限後なのに1時間も経たずにやってくれた人が
居たのはラッキーだったと思うべし
つーか期限後の宿題を片付けるのはややルール違反
気味

196 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 14:33:44 ]
>>195
もういいからお前は消えろ。
二度とこのスレに来るな。

197 名前:よろしくお願いします(m_m) mailto:sage [2010/01/26(火) 14:55:29 ]
[1] 計算機概論
[2] 8bit整数が8つ与えられている。これをunsigned char配列と
みなしa[]と名付ける。
unsigned char 整数のor,not演算だけを用いて1<=n<=8からa[n]を
計算するC計算式を出力するプログラム
例:a[]={1,2,3,4,5,6,7,8}; 出力 return n;
a[]={1,0,1,0,1,0,1,0}; 出力 return !(!n or 11111110b);
[3.1] OS:Mac OS-X
[3.2] XCode 3.0(gcc 4.0)
[3.3] C言語
[4] 1/25 正午(厳守)
[5] 出来るだけ短いコードを出力するプログラムを書く事

198 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 16:41:15 ]
仕切り男が不快だから、次のスレのテンプレから期限を外そうじゃないか。

199 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:15:36 ]
気に入らない質問やその他の発言はスルーの方向で。

200 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:29:34 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
A組、B組、C組にそれぞれn人の生徒がいて、
A組の生徒が一列に並んでいる。
このとき、B組の生徒をA組の生徒の隣に並ばせたいが
なるべく隣同士で身長に差がないようにしたい。
どうやって計算すればいいでしょう?
加えて、C組の生徒もB組の隣に並ばせたい場合はどうすれば?
(身長の配列) double height_a[n], height_b[n], height_c[n];
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2010年1月28日(木)16:00
[5] その他の制限: 特にありません

B組だけを考える場合はn!、C組も考える場合はn!×n!の並び方を生成して、
身長差の合計を計算して最小ならその並び方を保存って感じでいいと思うんだけど
そのやり方が思いつかない・・・

B組のみの場合
(B組をn!通り並ばせるループ){
diff = sum(n人の身長差の合計);
if(diffが最小){
B組の並び順を保存
}
}

こんな感じになると思うんだけど・・・
お助けください。



201 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:30:10 ]
>>197
意味不明だな・・・


202 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:34:13 ]
>>201
a[n-1] と等価となる  NOT, AND, OR の連結で得られる式を作るプログラムを作れ
だと思うが… 俺には難しい。 a[n] が 0〜255 を取り得るからなぁ

203 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:36:59 ]
>>200
A<Bの時
A:1 2 3 4 5 6
B:1 2 3 4
こういう並びはアリですか?
ナシならA=Bの時と同じで
Bがどのように並んでも身長差の合計は同じですよね


204 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:41:09 ]
★期限の過ぎた問題を依頼してはいけません

205 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:48:42 ]
>>202
オレは加算演算子や添え字を使わずに
a[n],*(a+n)をnot,orのみで表現しろと言う事か
添え字が1からなので減算も必要だしめんどくさそうだね

206 名前:200 mailto:sage [2010/01/26(火) 17:54:01 ]
>>203
すいませんA<Bっていうのがよくわかりません
B組のほうが平均身長が高いという意味でしょうか?
身長の値については定まったものではなく任意です。

A,B,C組で人数は同じn人です。n=6だとすると下のようになります。
A:1 2 3 4 5 6 は固定で隣同士の身長差の和が最小となる
B:5 1 6 2 4 3 みたいな並び方をn!で総当りで調べる・・・

B組の並び順をint narabi_b[n]として、
narabi_b[n]にn!通りの1〜nの数字を入れる?
うーん・・・

207 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:02:27 ]
>>206
人数の事ね。
不等号が逆だったごめん。

A,B,C組で人数は同じn人で
身長差の和が最小となる
という条件ならどう並んでも同じだよ。

(A1-B1)+(A2-B2)+(A3-B3)=(A1+A2+A3)-(B1+B2+B3)

208 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:04:18 ]
>>207
絶対値を取る可能性もあるぞ

209 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:05:09 ]
>>202
添字n(1,2,3,4,5,6,7,8)から対応するa[n](これは任意の0~255
となり得る)をor とnotからなる式で表す。nと定数は
使っても良い。
(n or (! n or 11110011b) ) or !( !n or 10110111b) ....
という式のn=1,2,3,4,...,8 に対する値が指定したものに
なるように式を選ぶプログラムを作れ
って意味じゃないかなと思うが、これは多分不可能じゃないかと...
a[n] = n >> 1 とかの場合はどーすんだ?
ネタじゃないかとは思ってはいるが...

210 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:05:42 ]
>>208
あぁ、それなら納得



211 名前:200 mailto:sage [2010/01/26(火) 18:07:01 ]
>>207
確かにその通りです。
ちょっと私の書き方がよくなかったです。
身長差の絶対値の和というべきでした。
すいません。

212 名前:デフォルトの名無しさん [2010/01/26(火) 18:52:01 ]
よろしくお願いします。
[1] 授業単元: Cプログラミング入門演習U
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10445.txt
[3] 環境
 [3.1] OS: WindouwsVista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月28日(木)
[5] その他の制限: 特にありません

213 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:57:51 ]
[1] 授業単元: プログラミングとコンパイラ
[2] 問題文:kadai.cを単項演算子の+-、剰余演算子%に対応するように改造せよ
  サイトkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htmのC/C++の宿題片付けます132代目の10446.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年1月29日まで
[5] その他の制限:パーサがどのようにして解析コード生成されていくかの説明も添付

214 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:37:47 ]
>>212
#include <stdio.h>
#include <stdlib.h>
int average(int *nums, int size) {
int i, sum = 0;
for (i = 0; i < size; i++) sum += nums[i];
return size ? sum / size : -1;
}
static int min_distance_target;
int min_distance_cmp(const int *a, const int *b) {
int diff = abs(min_distance_target - *a) - abs(min_distance_target - *b);
return diff ? diff : (*a - *b);
}
void min_distance_sort(int *nums, int size, int target) {
min_distance_target = target;
qsort(nums, size, sizeof (int), (int (*)(const void*, const void*))min_distance_cmp);
}
void scan(int *nums, int size) {
int i, tmp;
for (i = 0; i < size; i++) {
scanf("%d", &tmp);
nums[i] = tmp;
}
}


215 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:39:49 ]
>>212つづき
void print(int *nums, int size) {
int i;
for (i = 0; i < size; i++) printf("%s%d", i ? " " : "", nums[i]);
puts("");
}
int main() {
int size, nums[100];
scanf("%d", &size);
if (100 < size) size = 100; // (最大で100とする)
scan(nums, size);
min_distance_sort(nums, size, average(nums, size));
print(nums, size);
return 0;
}


注:肝心のソートが手抜き(qsort頼り)だから先生によっては怒られるかも。
やむをえずstatic int min_distance_target; というグローバル変数も使ってしまってる。

216 名前:備忘録 mailto:sage [2010/01/26(火) 20:49:27 ]
★関連スレ

大学のプログラミング演習の課題を添削するスレ
pc12.2ch.net/test/read.cgi/tech/1188501699/

217 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:33:02 ]
C++でOpenGLの勉強してます。OpenGLなんですが、言語はC++なのでこちらで質問していいのかな?


218 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:40:03 ]
OpenGLに限らずそういう専門的なものはあんまり期待しない方が良いよ。
ダメとは言わないけど

219 名前:誘導 mailto:sage [2010/01/26(火) 21:46:59 ]
OpenGLスレ Part14
pc12.2ch.net/test/read.cgi/tech/1263901596/
でどーぞ

220 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:47:03 ]
[1] 再帰リスト構造
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10447.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: (1月29日0時まで)
[5] その他の制限: (特になし)
上のソースでプログラムは実行しますが、
name、emailに2文字以下だと大丈夫なのですが、3文字以上入力すると
出力のテンプレートが崩れてしまいます。
どこがおかしいかお願いします。



221 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:58:12 ]
>>212
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10449.txt



222 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:03:21 ]
>>220
age2 = (char*)malloc(sizeof(char));
これでは、char一文字分しか確保されない。
文字数nの文字列の場合、
age2 = (char*)malloc(sizeof(char) * n + 1);
と書く。+1は終端文字'/0'のために準備。

getline(age2, sizeof(age2));
これでは、int nとして渡すには不十分。
sizeof (char *)の意味になる。
文字数nの文字列の場合、
getline(age2, n);
と書く。getlineが実際にどう動くかは想像しかしてないけど。

223 名前:212 mailto:sage [2010/01/26(火) 22:13:29 ]
>>214-215
素早い回答感謝します

224 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:16:39 ]
やはりここでOpenGLの質問は、あまりよくないようですねorz

>>219様の誘導先は質問スレではないのでダメかな?
って思ってやめておいたのですが、そちらのスレに質問を書かせていただきました。

もしOpenGLのことも分かる方が居ましたらOpenGLの掲示板に書かせていただきましたので
ご回答していただけるとすごく嬉しいです><


225 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 23:00:20 ]
[1] 授業単元:情報科学U
[2] 問題文(含コード&リンク):www.f.csce.kyushu-u.ac.jp/~ogi/kougi/11.pdf
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月27日23:59まで
[5] その他の制限:特にありません

どうしてもわかりません。すみませんがよろしくお願いします。

226 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 23:15:18 ]
>>225
void DspArray(int *p,int n){
while(n--){
printf("%d ",*(p++));
}
printf("\n");
}

こう言う事?

227 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 23:15:23 ]
[1] 授業単元:(大学専門課程某講座)
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10450.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:Visual studio .NET
 [3.3] 言語: C
[4] 期限: 2010年1月31日まで
[5] その他の制限:特にありません

228 名前:226 mailto:sage [2010/01/26(火) 23:19:42 ]
>>225
よく読んでなかった。
void DspArray(int array[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",array[i]);
}
printf("\n");
}


229 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 00:19:45 ]
>>222
ありがとうございます。

230 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 01:00:28 ]
>>213
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10451.zip




231 名前:デフォルトの名無しさん [2010/01/27(水) 01:17:34 ]
>>194
ありがとうございました。

232 名前:デフォルトの名無しさん [2010/01/27(水) 01:27:49 ]
[1] 授業単元:プロトタイプ宣言とか引数
[2] 問題文(含コード&リンク): 得点を入力して以下のルールに従った成績を返す関数を実装せよ。
90点以上 S
80点以上 A
60点以上 B
それ未満 C
()の中に何か入るらしいです () score(int sc) {
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月28日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。


233 名前:デフォルトの名無しさん [2010/01/27(水) 01:29:01 ]
[1] 授業単元:プロトタイプ宣言とか引数
[2] 問題文(含コード&リンク): 入力された数字が偶数なら、trueを返す関数。それ以外ならfalse
()の中に何か入るらしいです () even(int sc) {
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月28日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。

234 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:29:00 ]
>>227
codepad.org/hRbZ2Z1N
左端の数字は元の行数。修正した行には/*修正*/
修正内容は
・後半のソートの呼び出しの引数が逆になっていたのを修正(26行目)
・ & を && に変更(42行目)
・ ++p などを p++ に変更(11,42-45行目)

N=10000だと表示がアレなんだがN=100くらいだとちゃんと表示される

235 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:30:50 ]
>>232
char score(int sc){
if(sc>=90) return 'S';
if(sc>=80) return 'A';
if(sc>=60) return 'B';
return 'C';
}

236 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:31:52 ]
>>233
bool even(int sc){
return (sc%2 == 0);
}

237 名前:デフォルトの名無しさん [2010/01/27(水) 03:28:16 ]
>>235
実行してみたんですが、できないんですが、どうしてでしょうか

238 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 04:37:48 ]
>>237
「できないんです」 は禁句
何を期待したか、どんな操作をしたか、そしてどんな結果になったかの 3 点を書かないと
何が問題なのか見た人には分からない

239 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:51:08 ]
>>230
ありがとうございました!

240 名前:227 mailto:sage [2010/01/27(水) 12:07:55 ]
>>234
ありがとうございます。大変面倒な課題のほうたった2時間余りで
迅速にやって頂けて試験前なので助かりました。
(1月31日位になるかと思ってました)
実はもっと長いもの(数値計算関連で長さ約300行)も出てい
るので(そちらのほうは必須ではないですが試験が出来なかっ
た場合に提出していれば不可になる確率がずっと低くなるそうで)
そちらもやって頂けると非常に嬉しいのですがよろしいでしょうか?



241 名前:147 mailto:sage [2010/01/27(水) 13:09:03 ]
147をどなたかお願いできないでしょうか?
よろしくお願いします。

242 名前:デフォルトの名無しさん [2010/01/27(水) 13:37:16 ]
>>232
#include <iostream>
using namespace std;
char score(int sc){
if(sc>=90) return 'S';
if(sc>=80) return 'A';
if(sc>=60) return 'B';
return 'C';
}
fatal error LNK1120: 外部参照 1 が未解決です。
未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
とでるんですが…


243 名前:デフォルトの名無しさん [2010/01/27(水) 13:38:14 ]
>>238でしたすみません。

244 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 14:22:57 ]
>>147
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10452.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10453.txt

245 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:23:10 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
キーボードから正の整数nを入力し、n!を計算して画面表示するプログラムを
作成せよ。ただし、階乗を計算する関数のプロトタイプを「void kaiyo(int , int *)」
とし、第1引数にnを、第2引数に計算結果を格納する変数のポインタを指定すること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2010年1月28日木
[5] その他の制限: よろしくお願いします

246 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:32:11 ]
>>245
#include <iostream>
void kaiyo(int , int *);
int main() {
int n, ret;
std::cin >> n;
kaiyo(n, &ret);
std::cout << ret;
}
void kaiyo(int n, int *ret) {
*ret = 1;
for (int i = 1; i <= n; i++) {
*ret = *ret * i;
}
}

247 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:47:37 ]
>>246
ありがとうございます!

248 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:55:11 ]
>>234
よくこんな糞問題に手を出すなぁw

show()が2つあるのはソート前後の比較用でしょ
ソート途中を示すものじゃないと思うよ
N=10000でもエディタの設定で折り返しなしにすれば
見れないことは無いけど1行8000バイトだからひどいもんだ

249 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 18:02:03 ]
>>242
main() を書きましたか?

250 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 20:23:38 ]
[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク):
次のプログラムで作成される縞パターンを縦にした画像を作成するプログラムを作成せよ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10454.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年1月29日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にないです

よろしくお願いします。



251 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:09:22 ]
>>250
txtでうpしてるのに何でインデント潰すの?
必要なスペースまで潰すのは嫌がらせ?

//if(i>=75 && i<=125){
if(j>=150 && j<=250){ //元々の数字がマジックナンバーなので好きに替えてくれ

252 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:11:05 ]
sin のマクローリン展開とコンピュータ定義のsinとの誤差を求めよとの問題なのですが
エントリーポイントを定義しなければならないとエラーが出ているのですが解決方法がわかりません
#include <stdio.h>
#include <math.h>
#define gosa 0.00001
double sa(double x){
double d,dt;
int k;
k=1;
d=0;
dt=x;
d=d+dt;
while(1){
if(fabs(sa(x)-cos(x))<gosa)break;
}
dt=dt*(-1)/((k+1)*(k+2))*x*x;
k=k+2;
return fabs(sa(x)-cos(x));
}
int main(){
double x;
x=0.00;
while(1){
printf("x=%3f cosの差=%12f\n",x,sa(x));
x=x+0.01;
if(x<=1.00)break;
}
}
どうかよろしくお願いします
計算式が間違ってる・・・とかはスルーして貰って結構です
[3] 環境 [3.1]windows vista[3.2] visual C++ 2008[3.3] C++[4] [無期限]

253 名前: ◆QZaw55cn4c mailto:sage [2010/01/27(水) 21:21:49 ]
>>145
codepad.org/01OEgrMz
期限切れでしたか。残念です。

254 名前:デフォルトの名無しさん [2010/01/27(水) 21:34:44 ]
>>249
#include <iostream>
using namespace std;
char score(int sc){
if(sc>=90) return 'S';
if(sc>=80) return 'A';
if(sc>=60) return 'B';
return 'C';
}
mainをどこに入れるんですか?

255 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:35:57 ]
依頼者が見てるか確認してから貼るのがマナーだよん
見てるかどうか確かめても返事がない場合や、見てそうにも
ない場合で、世間を騒がせたまま逃げ出した依頼者の尻拭い
をしたいという気持ち(大抵の場合は杞憂)でコードを貼る
場合はアンカーは>>1にしようぜ

256 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:43:16 ]
>>252
スレタイ嫁
hello worldからやり直して貼り付けろカス

257 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:44:21 ]
>>254
codepad.org/L4M6uCey
問題自体は関数を実装せよ、ということでしたから、回答者は関数 score() だけを回答した(と思います)のですが、
実際に score() の動作を確かめたいというのであれば、こんな感じで main() から書かないといけないでしょうね。

>>255
> 依頼者が見てるか確認してから貼るのがマナーだよん
そんなマナーがあるのですか?そんなマナーにどんな意味があるのですか?

258 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:49:36 ]
>>252
エラーは要約しないで、丸ごとコピペしろ。


259 名前:デフォルトの名無しさん [2010/01/27(水) 22:05:15 ]
>>257
プログラムを作成せよじゃないから多分そうですね。一応、>>236はどうすると実行ができますか?

260 名前:デフォルトの名無しさん [2010/01/27(水) 22:23:44 ]
>>253
いえいえ!ありがとうございます!!



261 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:33:34 ]
>>200
順列を生成するクラスだけで十分そうなので、後はご自分でどうぞ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10455.txt

262 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:38:52 ]
>>261
next_permutation使えば?
C限定ならまだ分かるけど。

263 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:48:15 ]
>>262
それは>>200の人に言ってあげてください。

264 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:49:39 ]
>>263
>[3.3] 言語: C++
>[5] その他の制限: 特にありません
え?

265 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:50:58 ]
>>264
だから>>200の人に言ってあげてください。

266 名前:200 mailto:sage [2010/01/27(水) 22:54:07 ]
>>261
うおおーありがとうございます!
Cの最低限しか学んでないんで
C++っぽいclassとかの使い方の勉強にもなります。

>>262
ぐぐるとそれ使えばいけそうですね。ありがとうございます!

いやーそうか、やりたいことのキーワードで検索すれば
ライブラリであったりするんだな。
今回は順列でpermutationか。
そういった意味でも勉強になりました。ありがとうございました!

267 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:58:38 ]
>>252
これで動くと思うけど問題の意味を取り違えてるような
あとなぜかcosが出てきたけどsinに書き換えといた。
#include <stdio.h>
#include <math.h>
#define gosa 0.00001
double sa(double x){
double d,dt;
int k;
k=1;
d=0;
dt=x;
d=d+dt;
while(1){
if(fabs(d-sin(x))<gosa)break;
dt=dt*(-1)/((k+1)*(k+2))*x*x;
d=d+dt;
k=k+2;
}
return fabs(d-sin(x));
}
int main(){
double x;
x=0.00;
while(1){
printf("x=%3f sinの差=%12f\n",x,sa(x));
x=x+0.01;
if(x>1.01)break;
}
}

268 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 22:58:43 ]
>>265
え?理由は?

269 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 23:40:40 ]
>>268
理由は、必要としているのは私ではないから。
便利な道具があることを教えるのもいいことだと思います。
個人的には、(テーマが「宿題」ということもあり)ブラックボックスのままよりは、
多少勉強のネタになる状態で提供するのも、悪くはないかなという意見ですが。

270 名前:200 mailto:sage [2010/01/27(水) 23:52:51 ]
わたし非常に勉強になりましたのでいいじゃないですか!



271 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 00:15:16 ]
>>269
えと、あなたのレスに疑問を抱いたのに
質問者にあれこれ問い質しても意味不明ですよね?
自分が学生時代のころは
特に明記の無い限り標準関数の車輪は減点対象でしたので。


272 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 01:07:12 ]
>>270
私もちょっと困惑気味…

>>271
「next_permutation使えば?」と言われましたが、使う機会の無い私に言われるのも
意味不明ですから、質問者へのアドバイスとして言われればよいと判断したまでです。
また、何が減点対象で何が加点対象かは、時代背景も無いとはいいませんが、主には
講義や目的や教授の方針に依るよるでしょうから、質問者が適切に判断されれば良いと
思いますけれど。車輪を自分で発明をするのも勉強のうちですし。

273 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 01:12:27 ]
「講義や目的や」は「講義の目的や」の間違いです。すみません。

274 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 01:24:25 ]
基本的にここ、質疑応答スレじゃないんで。
知力、実力共に実態が質問者と教授回答者
であっても、形式的かつ論理的かつ法的には
依頼者と作業実行者の関係になります。

275 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 01:32:55 ]
要するに宿題代行を依頼する人もコード記述を代行する人も
かかる行為が世に100%賛同されているとは
言い切れないという認識は常に頭の片隅にでも...

276 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 02:09:45 ]
>>272
明らかな糞ソースを張って突っ込みが入ったとしても
苦情は質問者に言ってくれ!ってことね。おkw

277 名前:デフォルトの名無しさん [2010/01/28(木) 02:10:52 ]
誰か>>259を教えてください

278 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 02:18:28 ]
依頼者が代行者のコードに苦情を言うのはマナー違反
だが程度問題

偶然の別代行者が代行者のコードを見てあれこれ
アドバイスするのは美徳でないとは言い切れない。

別の代行者からコードを受け取ったことがわかって
いる時点でコードを渡すのは美徳とは言い切れない。

複数の代行者が同調していたとしても
依頼者の依頼の仕方が悪いと決めつけられ
るかは状況依存

279 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 02:33:20 ]
>>278
不毛だな
宿題スレ代行者のレスを添削するスレ
とか出来そうだ

280 名前:233 [2010/01/28(木) 03:01:29 ]
>>236で回答もらったんですがboolってやつを習ってないんですよね…double.int.charとかは習ったんですが…しかしそれ以外だと出来ないとするとそれが正解ですよね



281 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 07:41:59 ]
>>280
bool を int に置き換えればOK

282 名前:デフォルトの名無しさん [2010/01/28(木) 16:20:52 ]
>>281
それをintに変えたんですが>>257で書いてもらった感じで実行もするんですよね…

283 名前:257 mailto:sage [2010/01/28(木) 18:04:29 ]
>>282
ん、そうです。自力でかけば力がつくことでしょう。

284 名前:デフォルトの名無しさん [2010/01/28(木) 18:16:16 ]
>>283
これじゃダメなんですよね…

#include <iostream>
using namespace std;
int even(int num) {
if(0 == sc%2) {
return true;
}
return false;
}


285 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:25:57 ]
>>284
int main() から実行されますから、int main() を書かなくてはいけません。>>257 をちょっと変えればいいです。がむばってください。

286 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:26:41 ]
>>284
じれったいw
boolをintに書きかえれ、と教えてもらってるでしょうに。
booをintに。
bool even(int sc){
return (sc%2 == 0);
}

int even(int sc){
return (sc%2 == 0);
}
に。

287 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:26:56 ]
>>284
//int even(int num) {
int even(int sc) {
にしましょう

true/falseで返すなら
bool even(int sc) {
にしたほうがいいと思います。

int even(int sc) {
ならば
return 1;
return 0;
としたほうがいいと思います。


288 名前:286 mailto:sage [2010/01/28(木) 18:30:39 ]
あ、失礼。
元々、
>>233
> [2] 問題文(含コード&リンク): 入力された数字が偶数なら、trueを返す関数。それ以外ならfalse
>  [3.3] 言語:C++

なのか。だったら
bool even(int sc){
return (sc%2 == 0);
}
か。

289 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:33:01 ]
>>288
return に括弧はいらない。

290 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:41:19 ]
自分で書いて使うだけなら括弧はいらないが、
省略する癖はつけないほうが良い



291 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:43:15 ]
だからといって
return (0)とか
return (1.0)とか
return ("aho-desuka?")
とかはやり過ぎ
式には括弧を付ける癖をつけましょう

失礼しました

292 名前:デフォルトの名無しさん [2010/01/28(木) 18:50:37 ]
#include <iostream>
using namespace std;
int even(int sc){
return (sc%2 == 0);
}
int main() {
int num;
cout << "> ";
cin >>num;
cout << even(num);
return 0; }

これじゃダメなんですよね…boolっていうの使えないからもう滅茶苦茶ですよね

293 名前:デフォルトの名無しさん [2010/01/28(木) 18:52:44 ]
return 0とかreturn 1とかは何か習ったみたいですがboolとかどこにもないんですよね

294 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:14:32 ]
>>292
#include <iostream>
using namespace std;
bool even(int sc){
return sc%2==0;
}
int main(){
int num;
cout << ">";
cin >> num;
cout << boolalpha << even(num) << endl;
return 0;
}

習っていようがいまいが、true/falseで返せってのはboolを使えと言う事だから使うしかない。

295 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:55:20 ]
1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10458.txt
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限:2010年1月29日16:00まで
[5] その他の制限: 特にありません
よろしくお願いします。

296 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:57:42 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
10個の要素を持つ動的な整数配列を作るプログラムを作成しなさい。
動的な配列へのポインタを整数ポインタに代入しなさい。
次に、ポインタ算術または配列の添字を使って、1から10までの値を配列を構成する整数に代入しなさい。
最後に、代入した値を表示し、メモリを解放しなさい。
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限:2010年1月29日16:00まで
[5] その他の制限: 特にありません
よろしくお願いします。

297 名前:デフォルトの名無しさん [2010/01/28(木) 20:01:53 ]
>>294
三行目に書いたところは、scじゃなくてnumでした。すみません。boolalphaってなんですか?

298 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 20:04:45 ]
>>296
#include <iostream>
int main() {
int *p = new int[10]; // 動的な配列へのポインタを整数ポインタに代入
for (int i = 0; i < 10; i++) {
p[i] = 1 + i; // ポインタ算術または配列の添字を使って、1から10までの値を配列を構成する整数に代入
}
for (int i = 0; i < 10; i++) {
std::cout << p[i] << std::endl; // 代入した値を表示し
}
delete p; // メモリを解放
return 0;
}

299 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 20:28:30 ]
[1] 授業単元:コンピュータリテラシー
[2] 問題文(含コード&リンク):
あるファイルの名簿を呼びだし、名前もしくは名字で検索しその結果を新しいファイルに保存する。あるファイルの名簿は特に決められていない。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10456.txt
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:BCC Developer Borland C++ 5.5.1
[3.3] 言語:C++
[4] 期限:2010年1月29日12:00まで]
[5] その他の制限: 上記のプログラミングの他に fp while float else puts gets
strlen strcpy strcat  以外は使用しないでください。授業で習っていないので…
よろしくおねがいしまつ。
PC規制で携帯からですみません…

300 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 20:38:42 ]
>>295
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10458.txt




301 名前:デフォルトの名無しさん [2010/01/28(木) 20:40:23 ]
>>193
今更なんですが、『厳密解』って所に『double exact=63』ってあるんですが、これを計算するプログラムを作るんじゃないんですか?これをプログラムに書いてもいいんですかね?

302 名前:301 [2010/01/28(木) 20:42:52 ]
でも
//厳密解 の部分は出力される結果は同じですね。入れるとどう違うんですか

303 名前:298 mailto:sage [2010/01/28(木) 20:43:48 ]
て、訂正! >>296さん気をつけて。

×delete p; // メモリを解放
○delete[] p; // メモリを解放


304 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 20:44:22 ]
>>301
大丈夫?中学校からやり直す?

305 名前:デフォルトの名無しさん [2010/01/28(木) 20:52:41 ]
>>304


306 名前:デフォルトの名無しさん [2010/01/28(木) 20:56:54 ]
ごめんなさい。納得しました

307 名前:デフォルトの名無しさん [2010/01/28(木) 20:57:01 ]
[1] Cプログラミング入門:
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10460.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc(すいませんバージョンがわかりません)
 [3.3] 言語:C
[4] 期限: 2010年1月31日23:59まで
[5] その他の制限: 特にないです。

お願いします。

308 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:10:31 ]
>>299
> fp while float else puts gets
>strlen strcpy strcat  以外は使用しないでください。
その条件じゃオレには無理。

//(前略)
fin=fopen(filename1,"r");//fout=fopen(filename1,"r");
fout=fopen("kojin.txt","w");//fin=fopen("kojin.txt","w");

for(i=0;i<100;i++)
if(fscanf(fin,"%s%s%s%s",&date[i].myouji,&date[i].name,&date[i].jusho,&date[i].denwa)==EOF)break;

fclose(fin);//fclose(fout);
printf("名前もしくは名字=");
scanf("%s",&ss);
for(i=1; i<=5; i++){
if(strcmp(ss,date[i].myouji)==0){
//printf("%s %s %d %d\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
fprintf(fout,"%s %s %d %d\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
k=k+1;
}

if(strcmp(ss,date[i].name)==0){
//printf("%s %s %s %s\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
fprintf(fout,"%s %s %s %s\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
k=k+1;
}
}
fclose(fout);//fclose(fin);
}


309 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:21:00 ]
[1] C言語プログラミング演習(大学任意科目)
[2] コマンドラインで指定された各テキストファイルに対して個別に以下の処理を行うCプログラムを作成
☆テキストファイルを通読し、各行のインデント深度の最大値を求める(それをNとおく)
☆テキストファイルの先頭から再度読み出し、それぞれの行についてインデント深度がnなら
ば、インデント深度をN-nに変更したものを標準出力する。
☆新しいテキストファイルのNが判明した時点で、その改行とファイル名、改行を標準出力する。
ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合
深度=nとする。
[3]
[3-1] Windows XP Professional Edition
[3-2] Visual-C++ 6.0 SP6
[3-3] C言語
[4] 2/1迄
[5] stdio.hを使用可 (他は暗黙的にNG)

310 名前:309 mailto:sage [2010/01/28(木) 21:24:53 ]
すみません。転記ミスです
×
☆新しいテキストファイルのNが判明した時点で、その改行とファイル名、改行を標準出力する。
ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合
深度=nとする。


☆新しいテキストファイルのNが判明した時点で、改行とそのファイル名、改行を標準出力する。
ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでタブがn回(n>=0)現れた場合
深度=nとする。



311 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:32:45 ]
>>308
わざわざご返答ありがとうございます。そうですか…無茶振りすいません。
一応引き続き、>>299お答え出来る方いらっしゃいましたら厚かましいですが宜しくお願い致します…

312 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:40:54 ]
>>310
スペースがいくら続こうともタブが一つも無ければ深度=0ですか?



313 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 21:50:33 ]
>>311
freopenもダメなんでしょ?

314 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:02:09 ]
>>313
すみません。習ってないのでわからないです…

315 名前:デフォルトの名無しさん [2010/01/28(木) 22:03:34 ]
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10461.txt[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual studio 2003
 [3.3] 言語:C
[4] 期限:2010年2月2日正午まで
[5] その他の制限: 特にありません

よろしくお願いします。

316 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:04:06 ]
>>307
ttp://codepad.org/c7Hr0Iqm

ヒントがひどいよ(´;ω;`)
一応ヒントに沿う形で書いたけどいろいろ酷い…。
こちらの環境では動いてるけど、そちらの環境で動くかどうか不明。
codepadでOutput: 1 Segmentation faultとか出ちゃってるから。



317 名前:デフォルトの名無しさん [2010/01/28(木) 22:06:10 ]
>>315
問題文URLでミスしました。再投稿します。

[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10461.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual studio 2003
 [3.3] 言語:C
[4] 期限:2010年2月2日正午まで
[5] その他の制限: 特にありません

今度こそ、よろしくお願いします。


318 名前:316 mailto:sage [2010/01/28(木) 22:08:10 ]
あ、Resultsの中の
for (i = 0; i < N; i++) printf("%d:%d\n", i, COM[i]);
for (i = 0; i < n; i++) printf("%d:%d\n", i, MAN[i]);
printf("count = %d\n", count);
この三行はデバッグ用なので不要です。消しておいてください。

319 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:26:00 ]
>>311
その条件で問題を解くのは不可能だから、
あきらめるか、条件を見直すしかないね。


320 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:39:27 ]
>311
あ、コマンドラインパラメタとパイプ・リダイレクトを使えばいけるな。

type 入力ファイル | 宿題.EXE 検索語句 > 出力ファイル

こんな起動方法はあり?



321 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:43:19 ]
>>307
どうぞ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10462.txt

322 名前:デフォルトの名無しさん [2010/01/28(木) 22:44:06 ]
>>316 >>318
どうもありがとうございます。一人ではどうにもなりませんでした。


323 名前:デフォルトの名無しさん [2010/01/28(木) 22:49:08 ]
>>321
ありがとうございます!
なんとかのりきれそうですm(_ _)m

324 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:52:05 ]
>>320
あの…
名簿の人数が大体5人と考えてみても無理でしょうか?
その中から一人検索するので…
条件が習ってる範囲なので変えることができないのですが。


325 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:03:15 ]
>324
データ数は関係ない。
その条件だとファイルの読み書きができない。
使用可能関数に記述もれは無いのか?
fで始まる名前の関数を習って無いのか?


326 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:07:18 ]
>>299
> fp while float else puts gets
>strlen strcpy strcat 以外は使用しないでください。
これだけだと、ファイルに入出力できない。

>>320 タソが言ってる方法もあるが・・・

> 名簿の人数が大体5人と考えてみても無理でしょうか?
人数は関係ないかと。
というか、名簿のフォーマットは決められていないですか?

ファイルの入出力関数について何も習ってないならば、
この問題は解けないと思います。

とりあえず、講義資料とかノートとか読み返して、
fgetsとかfputsとかを習っていないか確認してください。


327 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:15:56 ]
>>324
>上記のプログラミングの他に fp while float else puts gets
>strlen strcpy strcat  以外は使用しないでください。授業で習っていないので…
それ、あなたが勝手に付けた条件だよね?
上記に記載されていない
fopen,fclose,scanf,printf,struct等使ってるけど
それはいいの?
fopenやfcloseは使ってるのに
fprintf,fgets,fputs等のファイル入出力関数は使っちゃダメなの?


・問題文は、出題されたまま全文を書いてください。


328 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:16:59 ]
翻弄された回答者が(´・ω・)カワイソス

329 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:17:22 ]
>>320
>>326
すみません!!見直したところfscanf、fprintf、fputsとfgetsも使ってました。
不注意でご迷惑お掛けしました…



330 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:18:53 ]
>>329
なら308でいいよね?



331 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:29:58 ]
>>330
それがEOFとbreakがつかえないもので…すみません。


332 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:45:17 ]
連投すみません。これ以上書くと私物化も甚だしいので控えます。
頂いたヒントで頑張ります。情報不足でご迷惑お掛けしました。
本当にありがとうございました。


333 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 04:07:06 ]
下痢便飲みたいのかそうか

334 名前:デフォルトの名無しさん [2010/01/29(金) 16:23:54 ]
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10465.txt
[3]環境
 [3.1] OS:WindouwsXP
 [3.2] コンパイラ名とバージョン:Microsoft VisualC++2008 Express Edition
 [3.3] 言語:C
[4] 期限: (2010年1月31日17:00まで
[5] その他の制限:特になし

ファイルの入出力について理解したいので、
すみませんが、よろしくお願いします。

335 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 17:43:11 ]
>>334
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *fp,*fin;
char s[256]="gomibako";
char fname[256], buff[256];
long pos;
printf("出力するファイル名を入力せよ。\n");
fgets(fname,256,stdin); //スペース入りファイル名なので
fname[strlen(fname)-1]='\0'; //\n → \0
strcat(fname, ".txt");
fp = fopen(fname, "a"); fin = fopen("word.txt","r");//fpは"a"追記モード
if ((fp == NULL)||(fin == NULL)) {
printf("ファイルオープン失敗。\n");
exit(EXIT_FAILURE);
}
fseek(fp,0,SEEK_END); //ファイル名出力は最初の1回目のみのようなので
pos=ftell(fp);
if(pos==0)
fprintf(fp,"%s\n",fname);
while(fscanf(fin,"%s",buff)!=EOF)
if(strcmp(buff,s)!=0)
fprintf(fp,"%s\n",buff);
fclose(fin);
fclose(fp);
printf("読み込み完了/書き込み完了。\n\n");
return 0;
}

336 名前:デフォルトの名無しさん [2010/01/29(金) 20:20:50 ]
[1] 授業単元: 情報処理B
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] Cygwin
 [3.3] 言語: C
[4] 期限:2月9日まで
[5] その他の制限: とりあえずstrcpyは習っています。

課題5以外はプログラム中の省略を補っていただきたいです。多いですがよろしくお願い致します。


337 名前:200 mailto:sage [2010/01/29(金) 22:56:13 ]
>>200ですがおかげさまでプログラムを完成させられました。
do{
}while(next_permutation(intary.begin(), intary.end()));
を使いました。

ところで>>200ではn!もしくはn!×n!の組み合わせを計算することになりますが
nが10だとn!×n!は1.31681894 × 10^13もの組み合わせになります。
この辺をうまいことごまかす方法ってないものでしょうか。
厳密な解でなくともそこそこの解を短時間で計算できる、みたいな・・・。

338 名前:デフォルトの名無しさん [2010/01/29(金) 23:26:09 ]
>>335さん。
詳しい解説助かります。本当にありがとうございました。

339 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 01:16:49 ]
>>337
「B組の隣にA組を並ばせる」「身長差を最小にする」
の2つを同時に満たす解があるとは限らないので、よくあるのは重みWを利用して
  点数=(1-W)×(Bの隣にAがいるか?)+W×(身長差が最小か?)
で並びを評価する。2つの条件のどちらを重視するかでWの値を調節する。
あとは色々とアルゴリズムあると思うけど、ランダム山登り探索でもすればいいんじゃないかね
 @今の並びの点数を計算
 Aランダムに2つ選んで交換してみる
 B交換したあとの点数を計算
 C点数が高くなっていたら交換を採用、低くなっていたら元に戻す
を繰り返していって、何回か連続で失敗したら終了。

340 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 03:04:51 ]
>>336
課題1 codepad.org/pk2M6ihf
課題2 codepad.org/RfxMRbKe
課題3 codepad.org/tV9c41B9



341 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 09:16:33 ]
>>339
これは組み合わせ最適化ってカテゴリになるんですかね?
う〜ん、なかなか手の込んだことしないといけないっぽいなぁ。

342 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:14:15 ]
>>337

計算途中で、過去の最小を超えたら中止したらいいんじゃね?
少しはラクになるはずw

343 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:19:52 ]
身長順にソートして、
隣の組の子と手を繋がせて、
A組の子を元の順に並べる。

これじゃダメなの?


344 名前:342 mailto:sage [2010/01/30(土) 11:33:03 ]
あ、中止つうのは、端折って次へ、という意味。

345 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:09:33 ]
>>341
宿題のレベル超えるから最適化アルゴリズムでも調べてくれ
>>342
それをやったとしても計算量のオーダーには寄与しないよ
テクニックとしては重要だが。
>>343
そのやり方だと「AとBが隣り合う」という条件を完全に満たして、
「身長差が小さい」についてはそこそこ、という解が得られる。
そういう解が欲しいときにはその手の方法がベストだと思う。
>>200の問題文を見る限り、その解釈でいいと思う。

346 名前:デフォルトの名無しさん [2010/01/30(土) 13:21:56 ]
Microsoft社 Visual Studio C++のソフトウェアを用いて
チャットアプリケーションを作れと言われたのですが、
当方C言語系がとても苦手で困っています;;

システムの仕様は
・1対1の環境でのみ動作。
・サーバ側はポート番号を指定して、クライアントからの接続を待つ。
・クライアント側はサーバのIPアドレスとポート番号を指定して、サーバに接続する。
・この時の通信はTCPで行う。
・クライアントが通信をやめたい場合は"endc"
・サーバ側がやめたい場合は"ends"と入力。
・WinSockを使用してWindowsのコンソールプログラムとして基本的な簡易なチャット

以上の条件でプログラミングしていただけると幸いです。
よろしくお願いします m__)m

347 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 13:38:34 ]
>>346
>>1

348 名前:200 mailto:sage [2010/01/30(土) 14:21:39 ]
身長順にソートできれば確かに楽になりそうですね。
ただ>>200の問題はもっと複雑なものの一部分を抜き出したもので、
本当は身長順というよりも2次元平面上で距離が近いもの同士って感じなんです。
そうなると・・・ちょっと安易にはソートできないかな?

なんにしても宿題としては提出してしまっているので自分が気になってるだけです。
最適化アルゴリズムでいろいろ見てみようと思います。

349 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 14:45:58 ]
Cマガのプログラミング研究会を思い出した。

350 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 15:26:06 ]
>>345
343じゃないけど、>>343のやり方で、
身長差が最小とならない場合って、どんな場合?
計算してみたら、常に最小になりそうなんだが。

それとも「そこそこ」ってのは
「最小にならない場合がある」って意味ではない?



351 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 15:29:09 ]
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク):
□1□2□3□4□5□6□7□8□9
の□に四則の演算子(+,−)や空白を入れて100なるような
小町算の全ての解を求めるプログラムを作成すること

例えば
12 + 3 - 4 + 5 + 67 + 8 + 9 = 100
123 - 45 - 67 + 89 = 100
[3] 環境
 [3.1] OS: Windows
 [3.2] VC3.5SP1
 [3.3] 言語: C++
[4] 期限: 本日4時まで
[5] その他の制限: 特にないです

かなり切羽詰まってるのでお願いします…

352 名前:350 mailto:sage [2010/01/30(土) 15:42:36 ]
と、思ったけど、AとBが隣り合わない場合を考慮すると、
343のやり方では、身長差が最小とならない場合がある、
という意味だったのね。
失礼、読み違えてました。

353 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:14:36 ]
[1] 授業単元:コンピュータグラフィック
[2] 問題文(含コード&リンク):10468.txt
モノクロ画像を読み込み,(319,239) の画素値を 0 とする
画像を関数を使用して読み込み,それを 2 次元配列に格納する関数を作成する.
指定した画素の画素値をセットする.
2 次元配列に格納していた画像を 1 次元配列に再度格納し,関数を使用して画像ファイルとして書き戻す.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] VC 05
 [3.3] 言語:C
[4] 期限: ([2010年2月1日01:00まで]
[5] その他の:
前スレで24日辺りに回答を頂いた問題なのですが、差し戻されました
自分なりに分かる部分を書き直してみましたが、一向に解決しないので回答をいただけないでしょうか?

354 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:16:35 ]
>>351
31分でコードを作ってもらおうという考えは非常識

355 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 17:51:17 ]
>>351
前にIPAの試験に出てたので、そのまま作ってみたよ
codepad.org/2eIcdrm7

356 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 18:07:34 ]
[1]情報科学特論 (大学院講義レポート課題)
[2]kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10469.txt
[3] OS:Solaris GNU-C-compiler 4.0 C言語
[4] 2/11迄
[5] 面倒なのでよろしく

357 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 18:28:17 ]
[1] 授業単元:計算機自論
[2] 問題文(含コード&リンク):
LISPはCと同じで関数型言語ではないということを200文字以内で表現してください
[3] 環境
 [3.1] OS: すべて
 [3.2] コンパイラ名とバージョン: すべて
 [3.3] 言語: 日本語
[4] 期限: 無期限

358 名前:デフォルトの名無しさん [2010/01/30(土) 19:15:44 ]
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10471.txt
[3] 環境
 [3.1] OS:WindouwsXP
 [3.2] コンパイラ名とバージョン:VisualC++2008 Express Edition
 [3.3] 言語:C
[4] 期限:2010年2月2日15:00まで
[5] その他の制限:特になし

なんとか途中まで頑張りましたが、今の自分ではこれが限界でした・・・。
問題文リンク先の≪問題と条件≫の全てを満たすソースを、お教え下さい。
お手数かけますが、よろしくお願いします。

359 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:21:19 ]
>>351
なんか変数いっぱい散らかしてもっちゃりしてるけど。
処理もなんかぐねぐねぐねぐねとしてるし。駄目だな。
ttp://codepad.org/E2NpBjB2

>>355さんのを見て勉強しなおしてきます。

360 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:44:31 ]
>>358
#include <stdio.h>
int main(int argc,char *argv[]){
FILE *fp1=NULL,*fp2=NULL;
char buf;
int i=1;
int result=0;
if(argc!=3){
printf("引数が不正\n");
result=-1;
goto EXIT;
}
fp1 = fopen(argv[1],"rb");
fp2 = fopen(argv[2],"w");
if(fp1==NULL || fp2==NULL){
printf("file open error\n");
result=-1;
goto EXIT;
}
while(fread(&buf,1,1,fp1)){
fprintf(fp2,"%02X ",buf);
if(i%16==0)
fprintf(fp2,"\n");
i++;
}
EXIT:
if(fp1) fclose(fp1);
if(fp2) fclose(fp2);
return result;
}




361 名前:デフォルトの名無しさん [2010/01/30(土) 20:26:12 ]
360さん。回答ありがとうございます。
早速、このソースでコンパイルしたところ問題なくビルドは出来ました。
しかし、その後の「デバックなし」で実行してみましたが、
「引数が不正」と表示されてしまい、上手く出来ません。
これは何故でしょうか?しょぼい質問ですいません・・・。

362 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:38:24 ]
>>361
≪問題と条件≫
第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、
ファイルの内容を16進数で示したものを第2引数に指定したファイルに書き込むプログラムを作成せよ。ただし、16バイトごとに改行を入れること。
(実行)
>free1.exe test.txt test2.txt

でしょ?

363 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:41:50 ]
>>361
横からだけど、
今の場合引数っていうのは、プログラム実行時にプログラム名の後に続けて書くもの

>free1.exe test.txt test2.txt
この場合はtest.txtが第1引数で、test2.txtが第2引数

例えばここを
>free1.exe hoge.txt fuga.txt
にしても、ちゃんとhoge.txtから読み込んでfuta.txtに出力するような
プログラムを作れっていうのが、この課題なんじゃないかな

364 名前:デフォルトの名無しさん [2010/01/30(土) 20:45:52 ]
>>362
はい、そうです。

365 名前:デフォルトの名無しさん [2010/01/30(土) 20:51:31 ]
>>363
はい、test.txtとhoge.txtは、あらかじめ作成している状態です。

366 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:57:08 ]
分かってねー

367 名前:363 mailto:sage [2010/01/30(土) 20:59:19 ]
>>365
だったら実行時に指定しないと。
VC++でどうやって指定するか分かんないけど

368 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 21:11:35 ]
>>365
コマンドライン引数というものが分かってないので
ttp://www9.plala.or.jp/sgwr-t/c/sec11-4.html
ttp://www.geocities.jp/ky_webid/c/045.html
この辺読みましょう


369 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 22:28:36 ]
[1] 授業単元: プログラム演習U
[2] 問題文(含コード&リンク):
3次元空間において線分が平面を通過しているか判定するプログラムを作りなさい
(線分の座標(x1,y1,z1) (x2,y2,z2)と平面の四隅の座標は入力する)
平面を通過していても平面の四隅の中に交点がない場合は通過していないものとする
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語: C
[4] 期限:2010/2/8

お願いします

370 名前:デフォルトの名無しさん [2010/01/30(土) 22:43:05 ]
>>358です。
稚拙ですが、質問をURLにまとめたので、よろしくお願いします。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10472.txt



371 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 22:46:23 ]
>>370
>>368を読め。

372 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 22:58:55 ]
>>370
Cドライブ直下にfreeフォルダを作成します。
C:\free です。

>>360のソースを free1.c などとしコンパイルして free1.exe を作成します。
作成された free1.exe を C:\free フォルダ内にコピーします
C:\free\free1.exe です。

作成済みのデータ test.txt も同様に C:\free フォルダ内にコピーします
C:\free\test.txt です。

C:\free フォルダの中には free1.exe test.txt 2つのファイルがあります。

コマンドプロンプトを起動します。
スタート>ファイル名を指定して実行>cmd.exe OKボタン

コマンドプロンプトが立ち上がりました。
C:\............... >_ (_は点滅状態)
となります。

カレントディレクトリを C:\free に移動します。
C:\............... >cd c:\free
です。

C:\free>_ (_は点滅状態)
になりました。

この状態で
C:\free>free1.exe test.txt test2.txt
を実行します。

C:\freeフォルダの中に test2.txt が作成されました。おしまい。

373 名前:デフォルトの名無しさん [2010/01/30(土) 23:03:50 ]
>>340

ありがとうございます!助かりました!

課題4、5については引き続きどなたかよろしくお願い致します。。

374 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:30:33 ]
>>353
ファイルの入出力はファイルポインタを用いたものに変更してます。
(インデントが変な所はタブをスペース4つに換えて下さい)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10473.txt

375 名前:デフォルトの名無しさん [2010/01/31(日) 00:04:17 ]
372さん。回答ありがとうございます。
アドバイス通りにしてみて、実行したのですが、
「Lhaplus slef extractor」というのが
表示されます。展開先のフォルダはC:\free を選べるのですが、
展開されるファイルが何故かfree1.cしか選べません・・・。
何度も見直して実行したのですが、結果は一緒です。
これは、なにか他に原因があるのでしょうか?

376 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 01:53:57 ]
>>356
には手だすな。
>>357>>369
やんないほうがいい

377 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 02:16:46 ]
>>375
それ以上の質問はスレ違いどころか板違い。

378 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 02:35:35 ]
乱数は言語学習レベルの人がうかつに手を出すべきものじゃない。
補助的に使うのならともかく
高度に依存するプログラムの生成には高度な専門知識が必要で
専門家”集団”レベルで扱うべきもの。
みだりに使う癖だけは付けないほうが良い

以上自戒を込めて

379 名前:378 mailto:sage [2010/01/31(日) 02:37:05 ]
誤爆につき謝罪

380 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 07:42:21 ]
around >>372
www.geocities.jp/ky_webid/c/image/commandline.png



381 名前:デフォルトの名無しさん [2010/01/31(日) 07:47:50 ]
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク): 入出力とデータファイルへの保存とその間の処理あるプログラムを作成する
               kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10475.txt 
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2010年2月4日まで
[5] その他の制限:特にありません

自分では手のつけようがなく、非常に困っています。
どなたかよろしくお願いします。


382 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 14:33:52 ]
漠然としすぎ

383 名前:357 mailto:sage [2010/01/31(日) 15:40:24 ]
ほとほと困っています。どなたか回答お願いします。

384 名前: ◆QZaw55cn4c [2010/01/31(日) 15:41:15 ]
[1] 自主課題:前スレ pc12.2ch.net/test/read.cgi/tech/1260532772/776 関連
[2] パイプ機能(prog1|prog2|prog3) を有するシェルを作成せよ。
[3.1] WindowsXP/cygwin または Linux(Vine linux 4.2)
[3.2] gcc3
[3.3] C
[4] 特になし

前スレ pc12.2ch.net/test/read.cgi/tech/1260532772/776 を解こうとして挫折しました。
なにとぞ、お手本のプログラムを示していただきたく、お願いいたします。

私のほうでは、
まず、pipe() -> fork() ->read()/write()またはgetchar()/printf() の流れでチャイルドプロセスの鎖の間をパイプでつなごうとしましたがうまくいきません。

プログラムは 
codepad.org/lkCrVtuo です。

#define LOWLEVEL ではパイプが頭からお尻までつながって、 read()/write() 低水準入出力てデータが渡り、最後にプロンプトが表示されます。
ところが、
/* #define LOWLEVEL */ とコメントアウトした場合、FILE stdin, stdout でデータの読み書きを行うのですが、EOF を検出できず
チャイルドプロセスがロックしてしまいます。
ヒントでもかまいませんので、この種のプログラムのやりかたをどうか教えていただきたくよろしくお願いいたします。

385 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 16:06:44 ]
>>384
> EOF を検出できず
EOFではなく0x0Aを検出したらどうでしょ

386 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 19:35:06 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10480.txt
どうぞ。

387 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 19:43:07 ]

息抜きにって下さい。
自分は分からないっす

お客様に「今後の夏のセールには、必ず連絡してほしい」といわれた時

お客様に「もらいもので気に入らないので他の商品と取り替えて欲しい」といわれた時

販売員の正しい行動を。


388 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 20:49:08 ]
上司に聞け

389 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 22:26:49 ]
>>384
できたよ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10481.c

390 名前:384 mailto:sage [2010/01/31(日) 23:00:10 ]
>>389
提示されたコードを読ませていただき、私のコードがうまくいかなかった原因がわかりました。
int fd[2];

pipe(fd);
dup2(fd[0], 0);
close(fd[0]);

のあとに、

close(fd[1]);

が必要でした。
その他、いろいろと示唆にとむコードを掲示していただき、ありがとうございました。



391 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 00:47:15 ]
すいませんが規制されてるので携帯から簡単に
問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10482.txt
環境:XP、gcc、C言語
期限:今日の午前中
その他制限:なし

構造体とfwrite関数とコマンドライン引数等を使うらしいのですがよく分かりません
よろしくおねがいします

392 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 00:50:31 ]
>>391
追加ですいません
バイナリファイルです

393 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 01:44:49 ]
>>391
名前〜年齢間のタブ数が一定ではないけどそのルールはどうなってるの?

394 名前:デフォルトの名無しさん [2010/02/01(月) 05:48:48 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 住所録の機能を実現するプログラムを作成せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2月3日 17時まで
[5] その他の制限: 特になし

395 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 08:23:12 ]
>>384,390
EOFの検出はfeof()でできるよ。

396 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 09:15:16 ]
>>393
タブ数は共通して一回です

397 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 10:27:05 ]
>>391
codepad.org/YWsKOWtO

これじゃダメ?


398 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 10:28:21 ]
>>391
連投スマソ。
構造体も,fwrite() も使ってなかったorz
忘れて下さい。


399 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 10:32:02 ]
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):

●自由にクラスを設計する
設計図を提出 : クラスのデータメンバ、メンバ関数、仕様、
使い方等を詳しく説明したドキュメント 形式自由
(ただし電子化されたものに限る)


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VisualStudio2008
 [3.3] 言語: C++
[4] 期限: 2010年2月7日まで

プログラム作成ではないのですが、よろしければよろしくお願いします。


400 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 11:11:23 ]
設計図て。図まで書けと申すか。



401 名前:デフォルトの名無しさん [2010/02/01(月) 11:32:51 ]
規制中なので携帯から失礼します
[1] 授業単元:プログラミングI
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10477.txt
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C++
[4] 期限:2010年02月5日まで
[5] その他の制限:特になし

自分では全然作れませんでした・・・
よろしくお願いします

402 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 12:47:47 ]
配列の使い方がイヤすぎるw

403 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 12:48:02 ]
schaffleって英語じゃないよな?何語?

404 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 12:51:07 ]
シャッフルしてランダムな結果を返すならシャッフル関数は2つもいらない気がする

405 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 12:55:25 ]
schaffle1(int n, int a[]) {
while(n > 1) {
int i = rand() / (RAND_MAX + 1.0) * n + 1;
int temp = a[n];
a[n--] = a[i];
a[i] = temp;
}}

schaffle2(int n, int a[]) {
int i, j, temp;
for(i=1; i<=n; i++) {
j = rand() / (RAND_MAX + 1.0) * i + 1;
temp = a[j];
a[j] = a[i];
a[i] = temp;
}}

406 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 14:48:08 ]
[1] 授業単元:プログラミング応用演習
[2] 問題文(含コード&リンク): ttp://mikilab.doshisha.ac.jp/dia/research/report/2008/1118/002/report20081118002.html
[3] 環境
 [3.1] OS: Windows
 [3.2] )
 [3.3] 言語:C++
[4] 期限: 2010/2/2or3
[5] その他の制限: ライブラリは使わず。問題文のリンク先のプログラム(DIRECT)を組む。

よろしくお願いします。できれば解説を付けてくださると助かります。

407 名前:390 mailto:sage [2010/02/01(月) 18:25:32 ]
>>395
C 言語というより UNIX/POSIX システムコールの問題でした。
パイプを pipe() で作成した後適切に処理しなければ、パイプが閉じたことにならず、EOF が検出できずに getchar()やread() がブロックされたのでした。
これは fcntl() で NONBLOCK 属性をつけてもうまくいきませんでした。

codepad.org/WiYTFttG

408 名前:395 mailto:sage [2010/02/01(月) 19:13:22 ]
>>407
オレの言いたかったのはget_line()の方。
これじゃコマンドを入力するときのEOFを検出できないと言いたかったの。

409 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 19:26:11 ]
[1] C言語演習
[2]
int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
が与えられている。
値x[0]*y[0]+2*x[1]*y[1]+3*x[2]*y[2]+4*x[3]*y[3]+5*x[4]*y[4]+6*x[5]*y[5]
が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
[3] Windows XP/Borland C++ 5.0/C言語
[4] 2/18迄
[5] 特に無し

410 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 20:27:14 ]
>>408
拙作のgetline() のほうでしたら、fgets() が NULL を返すのをみて、一行入力の終わりがきたことを検知できます。特に問題はありません。



411 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 20:36:37 ]
>>410
EOF入力してみた?

412 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 20:37:07 ]
>>409
6以降はどうすんの?

413 名前:410 mailto:sage [2010/02/01(月) 20:41:12 ]
>>411
わざわざ Ctrl-Dを入力しなくとも、一行の終わりは検知できていますが、何か?

414 名前:409 mailto:sage [2010/02/01(月) 20:43:57 ]
すみません。誤りがありましたので訂正させて下さい。
[1] C言語演習
[2]
int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
が与えられている。
値x[0]*y[0] - 2*x[1]*y[1]+3*x[2]*y[2]- 4*x[3]*y[3]+5*x[4]*y[4]-6*x[5]*y[5]
+7*x[6]*y[6]-8*x[7}*y[7]+9*x[8]}*y[8]-10*x[9]*x[9]
が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
最大/最小になる時のx[],y[]とその値を出力すること

[3] Windows XP/Borland C++ 5.0/C言語
[4] 2/18迄
[5] 特に無し

415 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 20:51:49 ]
>>413
入力してみ。

416 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:05:14 ]
>>415
特になにもおこりません。というか fgets() で一行入力できているのですが。
どんな振る舞いが発生して、どうおかしいのか教えていただけないでしょうか?

417 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:21:57 ]
>>416
> >
cannot found
がずっとでたけど。
EOFになったら綺麗に終了したほうがいいよ。

418 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:34:01 ]
[1] C言語プログラミング演習(大学専門課程選択教科期末課題)
[2]kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10483.txt
[3]
[3-1] Windows Vista
[3-2] Visual C++ 2005
[3-3] C/C++どちらでも可(なるべくC言語)
[4] 2/11迄
[5]SQLがイマイチ理解できないので、指針だけでも
よろしくお願いします


419 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:36:53 ]
>>417
なるほど、bash でも Ctrl-D できれいに終了しますね。
これは改良の余地がありました。アドバイスありがとうございます。
コード中のgetline() (とmain())を書き直しました。
codepad.org/5NsN385B

420 名前:デフォルトの名無しさん [2010/02/02(火) 00:56:53 ]
[1] 授業単元:プログラミング実践
[2] 問題文
アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして90°回転した結果を出力せよ。
(図)affin.txt
00000
00000
11111
00000
00000

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名: gcc
 [3.3] 言語:C++
[4] 期限:2010年2月4日まで
[5] その他の制限:特にありません

色々試しましたが、うまくいきませんでした。
よろしくお願いします。



421 名前:409 mailto:sage [2010/02/02(火) 00:59:25 ]
すみません。
>>414の問題なんですがこちらの写し間違いみたいですので
結構です。取り敢えず今回はお願いを取り消させてください。
もういちど確かめてお願いするかもしれません。

422 名前:418 mailto:sage [2010/02/02(火) 14:40:57 ]
>>418
の宿題のほう一部SQLが間違ったようですので
修正しました。まだ間違いがあるかもしれませんが。
注意事項も入れ忘れてましたので、いれました.
改めて依頼させて頂きます。

[1] C言語プログラミング演習(大学専門課程選択教科期末課題)
[2]kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10484.txt
[3]
[3-1] Windows Vista
[3-2] Visual C++ 2005
[3-3] C/C++どちらでも可(なるべくC言語)
[4] 2/11迄
[5]SQLがイマイチ理解できてないので、指針だけでも
よろしくお願いします

423 名前:デフォルトの名無しさん [2010/02/02(火) 15:56:42 ]
[1] 授業単元:DirectX研究
[2] 問題文(含コード&リンク):
サイコロを転がして目を決める。
 ・テーブルとサイコロを作成する。
 ・キー操作でサイコロを投げ下ろすように振る。
 ・落下してきて,1つの目を上にして止まる。
 ・何度でも遊べる

 ◎テーブルにサイコロの影がある
 ◎回転しながら落下してくる
 ◎自由な方向から見ることができる
 ◎テーブルの上でサイコロは跳ね,転がる。
 ◎サイコロとして正しい

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: 2月10日まで
[5] よろしくお願いいたします。

424 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 16:51:53 ]
>>420
どのように試したの?
>>421
素朴だが10!x10!の組み合わせ最適化問題
この手には一般論は無いだろから、奇麗なCプロ
グラム一つに纏めるという発想が頭にあると困難かと.
(いろいろ「補助手段」を開発しているうちに
別の手段で偶然、解けてしまって目的自体が大
きく喪失してしまう危険性がこの手の問題に
はつきまとう)
てか宿題としてC言語限定というのは不適当
>>422
SQLをわかる奴は少ないとオモ

425 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 16:59:09 ]
SQL文はわかるが、プログラムに組み込めといわれると・・・

426 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:06:40 ]
>>422
RDBMSには何を使うの?
コネクションを張ってSQL文を投げるのには何のライブラリ使うの?自作するの?

427 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:09:14 ]
SQL文を組み込むんじゃなくて、SQLで書かれた
抽象的な処理仕様に基づいて実装しろってことじゃ?
SQL鯖とかが出てなかった昔は結構この手の奴あった
常識的にこの手の奴ではテーブル配列自体は勝手に
ソート出来なかったり項目を拡張してはならなかったり
とか色々とウルサイし、処理速度向上の為に細かい
最適化が要求されてメンドイんで俺はパス

428 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:15:17 ]
>>427
そういう意味か。それは面倒だ。

429 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:21:16 ]
>>427
問題文の kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10484.txt
前半: 固定項で項目の拡張無しの配列

後半:
 解釈1) 題中のSQL文を与えたとして得られるであろう結果 と 同じ結果が得られるような関数を実装せよ
   (→ 関数実装時 SQL構文を解釈する必要は全く無い。 同じ結果を求めるコードを直接記述してね)

 解釈2) 題中のSQL文を渡して結果が得られるような 関数を実装せよ
   (→ 関数実装時 SQL構文を解釈する必要が出てくる) ((題中に出てこない SQL文に関してはスルーの方向で))

こう読み取れるっぽいけど… …俺 SQL文わからんのでパス

430 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:40:19 ]
>>429
どこの大学か知らんが、宿題として汎用SQLパーサーを
作れって奴出す教師も、それを真に受ける奴もちょっと
って感じ。
てか市販のRDBMSのSQLパーサーの性能は相当に
高くなってきてるけど、ちょっと大きなデータ+複雑なSQLに
なると手動で作ったCPG+CSVデータにパフォーマンスで
大敗することも多い。
酷いSQLだったり酷い構造のテーブルが多いってことも
多いけど



431 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:57:49 ]
>>429
とても動きそうにないコードだけど、これは 解釈1)の方だね。
pc12.2ch.net/test/read.cgi/tech/1261443439/569


432 名前:429 mailto:sage [2010/02/02(火) 18:09:32 ]
>>430
俺はそこらへんの事情を全く知らないんで勘弁して。
問題文の意図が分からなかったんで >>429 と…

433 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 19:50:16 ]
あんだけgroup byがネストしてたらやる気失う。

434 名前:429 mailto:sage [2010/02/03(水) 00:28:45 ]
>>431
とりあえずありがとうございます。
がprologではなくあくまでもCの宿題なので、
参考のみにさせて頂きます。
ちなみにそのスレに私は書き込んでいません。
もし誰かが転記したのをやって頂いてここに貼りなおして
下さったというのであれば結果的に相当無駄なお手数を
おかけしたことになります。
構造体をほぼSQLのまま定義しその構造体の配列にデータ
が詰め込まれた状態でlist関数が呼び出されるという前提で、
SQLが記述しているセレクト処理で得られるレコードを
そのままコンソール出力すれば良いと
同輩が言ってたのですがやっぱり皆様が御指摘の
通りめんどうなコードになるんでしょうか?
(ちなみにSQL自体が何をする処理なのか
今ひとつつかめてません。おわかりの方が
いらしゃいましたら教えて頂けると嬉しいです)
DB板というのがあるそうでそちらのほうでも
聞いてみます。

435 名前:デフォルトの名無しさん [2010/02/03(水) 00:29:10 ]
どなたか317を作ってもらえませんか?
私の力では手におえません。。。
 

436 名前:418 mailto:sage [2010/02/03(水) 00:30:16 ]
レス番号のほう間違えました。
>>418=>>422=>>434でした。

437 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:42:08 ]
配列 int out[3]={1,5,3};
の配列の各要素の大小関係を比べるプログラムをfor文で作りたんですけど
どうすればいいですか?


438 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:42:52 ]
質問は「俺に聞け」スレで

439 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:49:00 ]
>>434
>>431じゃないけどSQLは多少わかる
「テーブルSEISEKIHYOUから、
より人数が多いクラスの5科目平均点
以上の5科目成績の生徒で、より人数が
多いクラスの国語平均点の最高よりは
下の国語成績で、数学が最も成績が
高かった生徒について、その担当教師
と氏名、数学成績、国語成績を
リストする。」

440 名前:デフォルトの名無しさん [2010/02/03(水) 00:58:45 ]
420のものです。

ファイル読み込みまではいけたのですが、回転はさっぱりでした。

ご教授ねがいます。



441 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:09:31 ]
>>440
公式を当てがうだけのつまらない問題だね
出来ないのは言語によるものじゃなくて
アフィン変換がどういうものか分かってないだけ。

442 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:13:22 ]
00000
00000
11111
00000
00000
を90度

回転させると

00100
00100
00100
00100
00100

これじゃ駄目?

443 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:14:55 ]
>>435
書こうと思ったけどエラー処理がめんどくさいんだよな


444 名前:デフォルトの名無しさん [2010/02/03(水) 17:13:38 ]
>>442

まさにその通りなんですが、それをプログラムでかくことができなかったです・・・

445 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:28:27 ]
自分用のメモ
>>317


446 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:47:37 ]
>>420,440,441,442,444
簡単、簡単、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10485.c

447 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:25:39 ]
>>420
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10486.c
tp://www.geocities.co.jp/SiliconValley-Bay/4543/Rubic/Mathematics/Mathematics-2.html

448 名前:434 mailto:sage [2010/02/03(水) 19:33:42 ]
DB板で相談したところすんなりとコードを
書いて頂けました。
もちろん許可をとってないのでお見せする
わけにはいかないのですが合計250行にも
なる立派なコードでした。

449 名前:デフォルトの名無しさん [2010/02/03(水) 19:43:01 ]
>>446
ご回答ありがとうございます。
試してみたんですが、コンパイルはうまくいきましたが何も表示されませんでした。
何か打ち込まなくては、いけないのですか?

質問ばっかですいません。。。

450 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:54:22 ]
>>448
「立派なコード」を「すんなり」ですか



451 名前:yui ◆zuLLaJzEzk mailto:sage [2010/02/03(水) 20:26:20 ]
[1] 授業単元:情報処理入門
[2] 問題文(含コード&リンク):
rep1.ppmとrep2.ppmの2つの画像を加算するプログラムを作成せよ.
プログラム中で加算したデータは,コントラスト強調を行った上で
PPM画像ファイル(h12r.ppm)として保存するようにすること.
Cのソースファイルh12r.cおよび実行することにより作成
される画像ファイルを提出すること.rep1.ppmとrep2.ppmの
サイズはいずれも横124×縦124画素である.h12r.ppmのサイズも同じとする.

rep1.ppm
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10487.zip
rep2.ppm
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10488.zip


[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
Cでおねがいします。
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年2月8日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません。


前回は皆さんに本当にお世話になりました。あらためてお礼を言いたいです。本当にありがとうございました。
今回が最終レポートになるのですがどうか助けていただけないでしょうか?
よろしくお願い致します。

452 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:15:14 ]
>>451
#include <stdio.h>
#define W 124
#define H 124
int main(){
double d,cl = -10.0;
unsigned char data1[H*W*3],data2[H*W*3],data3[H*W*3];
char buff[128];
FILE *fin1,*fin2,*fout;
int i;
if((fin1=fopen("rep1.ppm","rb"))==NULL)goto EXIT;
if((fin2=fopen("rep2.ppm","rb"))==NULL)goto EXIT;
if((fout=fopen("h12r.ppm","wb"))==NULL)goto EXIT;
for(i=0;i<3;i++)fgets(buff,128,fin1);
for(i=0;i<3;i++)fgets(buff,126,fin2);
fread(data1,1,sizeof(data1),fin1);
fread(data2,1,sizeof(data2),fin2);
for(i=0;i<H*W*3;i++){
d=data1[i]+data2[i];
d=d+cl*(d-127.5);
if(d>255)data3[i]=255;
else if(d<0)data3[i]=0;
else data3[i]=(unsigned char)d;
}
fprintf(fout,"P6\n124 124\n255\n");
fwrite(data3,1,H*W*3,fout);
EXIT:
if(fin1)fclose(fin1);
if(fin2)fclose(fin2);
if(fout)fclose(fout);
return 0;
}

453 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:25:30 ]
>>447
ひえーこの場合はこれで正解なのか
偶然だな

454 名前:デフォルトの名無しさん [2010/02/03(水) 22:51:55 ]
>>447
ご回答ありがとうございます。

その処理を
00000
00000
11111
00000
00000

でしたいんですが、どうしたらいいですか?

455 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:31:12 ]
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):課題2−2と2−3です。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: [2010年02月07日23:59まで]
[5] その他の制限:
よろしくお願いします。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10490.zip

456 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:59:33 ]
[1] 授業単元: データ演習
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C言語
[4] 期限: [2010年02月08日20:00まで]
[5] その他の制限:
努力はするも此方も断念 何方か宜しくお願い致す。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10491.zip


457 名前:447 mailto:sage [2010/02/04(木) 01:19:54 ]
>>454
// 入力
for(i=0; i<MAX; ++i)
  for(j=0; j<MAX; ++j)
    a[i][j] = (i==MAX/2)?1:0;

458 名前:デフォルトの名無しさん [2010/02/04(木) 01:28:05 ]
>>457
ありがとうございます。
ちゃんと表示されました。

459 名前:デフォルトの名無しさん [2010/02/04(木) 01:35:10 ]
[1] 授業単元:プログラミング実践
[2] 問題文
アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして60°回転した結果を出力せよ。
(図)affin.txt
000000000
000010000
000010000
000010000
011111110
000010000
000010000
000010000
000000000

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名: gcc
 [3.3] 言語:C++
[4] 期限:2010年2月5日まで
[5] その他の制限:特にありません

420のものです。
度々申し訳ありませんが、よろしくお願いします。

460 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:03:01 ]
>>459
・問題文は、出題されたまま全文を書いてください。

もしそのまま出題されているとするなら糞問題です
添削スレで晒しちゃいましょう



461 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:29:39 ]
良問自作テキスト:熱心な先生だ
悪問自作テキスト:着服しただろこいつ

462 名前:447 mailto:sage [2010/02/04(木) 02:45:18 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10492.c
数学なら左回転でいいのでした。

463 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 03:51:41 ]
>459
アンチエイリアシング

464 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 05:56:57 ]
>>460
なぜ糞問題と思ったのでしょうか、そこをひとつ。

465 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 07:29:06 ]
[2] CIP法での1次元の移流計算
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名:Microsoft Visual Studio 2008  
[3.3] 言語:C++
自分で以下のプログラムを作ったところ。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10493.txt

tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。
自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。

466 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:26:07 ]
>>459
これでいいのかな?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10494.c

467 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:40:53 ]
>>466
オレなら
if(x>=-4 && x<=4 && y>=-4 && y<=4)
mat2[i][j] = mat1[4 + x][4 + y];
こうするな
はみ出たらカット

468 名前:447 mailto:sage [2010/02/04(木) 12:23:47 ]
>>462 間違い sqrt(3)/2 だった。
x = i - MAX/2;
y = j - MAX/2;
m = x/2.0 - y*SQRT3/2;
n = x*SQRT3/2 + y/2.0;
x = m + MAX/2;
y = n + MAX/2;
if(x<0 || x>=MAX) continue;
if(y<0 || y>=MAX) continue;
// 左回転
if(b[x][y]==0)
  b[x][y] = a[i][j];

469 名前:デフォルトの名無しさん [2010/02/04(木) 20:21:37 ]
>>462
>>466

ありがとうございました。
手つかずだったので、ほんと助かりました。。

470 名前:466 mailto:sage [2010/02/05(金) 16:32:53 ]
要素の計算方法が逆だったのかな?と今考えてるけど。
変換先位置から変換元の要素を求めたんだけど、
画像の変換の問題じゃないんだから、逆の方が良かったかな?



471 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 19:17:12 ]
>>470
90度回転なら、どちらの方法でも、隙間ができない。
60度回転では、・・・

ってことがポイントになる問題だったのでは?
画像かどうかは関係ないでしょ。


472 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 15:42:11 ]
>>455
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10496.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10497.c
どうぞ。

473 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 16:15:20 ]
どなたか406お願い出来ないでしょうか?

474 名前:っっ [2010/02/06(土) 16:26:33 ]
このプログラミングの前まではうまくいっているのですが、この部分がうまくいきません。助けてくださいm(_ _)m

printf("A/Sの式\n");
for(j=1;j<=12;j++){
a[i][j]/s[j];
printf("%3.1f\n",a[i][j]);
}

475 名前:っっ [2010/02/06(土) 16:32:18 ]
                          _. - ._             _
                      /. -−- \             l `i   __
                         //      ヽ          } ´ ̄ ´ '´ う
                     |{      /\  ____  j     /
      ( ヽ              '.l.   ___/    ヽ´  ー-=ニ.¨`7     r '
   r──’ `ヽ            .ゞ ' ´         '.       `丶、  /
 (´_ ̄       ヽ         /             |       \  \/
 ‘ー⊂.         \      /  ,    l  |    |、        ヽ‐-,ヽ
      ̄ ̄\     \.     /  /     !  ∧   ||ヽ__|     ∨ `
          \     \  /  /     | / '   ||'´ヽ l      l. ',     オワタ
            \     \l  '    |  ,ィ´′ ∨ ハ. |   Nヽ.   |、 i
              \     \l.    |  /|/     / /       ',   |、ヽ!
                \     ヽ、.  | i       ∨    三三 ハ.  ! \
                  \.   /\ | | xィ彡        ・{ l. ∧ /
                /\ /   }'ヽ! "´       ,、_,   l |∨ ∨
                  / /   /   \     ‘7´  )   .ノ |     l
               {      /    ',\    、__,. ' ,/  |    /
                 \   /      ', ヽ----r ' ´ |   |  ./
                 | ー ´         ',  ',   ヽ    |   |  /

提出期限過ぎてしまった

476 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 19:00:28 ]
>474
s/\//\/=/

477 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:55:03 ]
>>406

478 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:56:51 ]
>>474
a[i][j]/s[j];
の結果をどうしたいのですか?どこに保存するのですか?

479 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 23:49:03 ]
>>475
小学校の国語から始めるべきです
C言語はその後で良いでしょう

480 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:25:57 ]
[2] プログラム
環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc  
[3.3] 言語:C++
以下の実行結果はどうなるか


#include<stdio.h>
#define N10
int main(){
int i,wa=0;
for(i=1;i<N;i++){
if((i%2) == 0) continue;
wa+=i;}
printf("%d\n",wa);
return 0;}


よろしくお願いします。



481 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:31:24 ]
>>480
Nが未定義という類のエラーが出るでしょう

482 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:40:50 ]
>>480
codepad.org/721ieWJG

483 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 03:45:18 ]
[1] C言語プログラミング初歩(専門学校)
[2] int型の配列変数A[64][32]をB[32][64]に代入する.
次の対応があるようにすること
A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31]
B[0][0] -> B[0][1]-> B[0][31] -> B[0][32]->....->B[31][63]
(上の段と下の段が一致)
A[m][n]には値 (m+n) % 31が入っているものとする。
[3] Windows Vista /Visual studio 2008/C言語
[4] 2/15迄
[5] 1月開講です。ポインタはまだ習ってません

484 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 05:03:38 ]
>>483
こんな感じ?

#include<stdio.h>
int main()
{
  static int A[64][32], B[32][64];
  int m,n;

  for(m=0;m<64;m++)
    for(n=0;n<32;n++)
      A[m][n]=(m+n)%31;

  for(m=0;m<32;m++)
    for(n=0;n<64;n++)
      B[m][n]=A[2*m+n/32][n%32];

  return(0);
}

485 名前:冷やかしです mailto:sage [2010/02/07(日) 05:41:31 ]
return(0)はかっこ良すぎ(カッコ付け過ぎ)
return 0;で十分w
てか関数呼び出しと見間違えやすいので付けないほうが吉

486 名前:温めます mailto:sage [2010/02/07(日) 09:35:40 ]
int *a = &A[0][0], *b = &B[0][0];

for(m=0;m<32;m++)
  for(n=0;n<64;n++)
    *b++ = *a++;

487 名前:前スレ639 mailto:sage [2010/02/07(日) 11:46:40 ]
宿題でなく質問させてもらいます。
pc12.2ch.net/test/read.cgi/tech/1260532772/652
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10348.txt
上のプログラムについて聞きたいのですが

このプログラムはfor文を2回まわしているので数列の長さをLとしたとき計算量は2LなのでO(L)と言えるのでしょうか?
それと、ソースの下の方にある ? はifの省略記法なのでしょうか?

初心者でよくわからなかったのでお教えください

488 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:08:15 ]
>>487
O(n^2) 実際に適当な値入れて何回実行されるか考えたらいいと思う。

そういう捉え方もできなくもないが別物。
三項演算子とかでググったらいいと思う。

489 名前:前スレ639 mailto:sage [2010/02/07(日) 12:22:19 ]
>>488
このプログラムを作ったくれた作者さんのレスを載せると

>数列のn[i]について毎回「n[i]の前後にn[i]よりも大きい数と小さい数があるか」を調べる場合、
>計算量は数列の長さをLとして O(L^2)かかる。
>一方、>>646のように、n[i]までの最大値と最小値を先に計算してしまうと計算量はO(L)で済む。

と書いてあり、
自分で考えてみてもl-1回計算するfor文が2個あるので2l-2なので、やはりO(L)といえる気もしますが・・・よくわかりません。


?は条件演算子ですね。分かりました。ありがとうございました。

490 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:23:36 ]
>>487
>計算量は2LなのでO(L)と言えるのでしょうか?
YES。入れ子になってれば積になってO(L^2)だけど、
別々になっているので全体の計算量は多い方(今回は同じ)になる。

?は "c ? a : b" という三項演算子の一部。詳細はぐぐれば分かる。
基本的にはifとは別物だが、非常に限定された場面では代わりに使うこともできる。



491 名前:488 mailto:sage [2010/02/07(日) 12:30:26 ]
最初の奴はよく見てなかった。

492 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:31:17 ]
しかも、今度は途中送信スマン

493 名前:前スレ639 mailto:sage [2010/02/07(日) 12:38:12 ]
それでは計算量は作者のとおりO(L)ということで正しいのですね?
ありがとうございます!勉強になりました!

494 名前:デフォルトの名無しさん [2010/02/07(日) 13:14:34 ]
【質問テンプレ】
[1] 授業単元:C言語入門
[2] 問題文:
キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する。ただし、入力を終了するときはCtrl+Zを押すものとする。(vowel.c)
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2月8日
[5] その他の制限:特にありません。

よろしくお願いします。

495 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 14:55:13 ]
>>494
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10499.c
こんな感じでしょうか。

496 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:55:53 ]
>>495
ありがとうございます!
ですがコンパイル出来ませんでした;
制御構造の単元なのですが、While文などを使ってもう少し簡単にしていただくことはできるでしょうか?;

497 名前:495 mailto:sage [2010/02/07(日) 16:46:58 ]
>>496
エラーメッセージを全部コピペしてもらえます?

498 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:18:05 ]
>>497
vowel.c:
エラー E2140 vowel.c 31: ここでは宣言はできない(関数 countVowel )
エラー E2141 vowel.c 32: 宣言の構文エラー(関数 countVowel )
エラー E2139 vowel.c 70: 宣言に ; がない(関数 countVowel )
エラー E2134 vowel.c 70: 複合文に } がない(関数 countVowel )
*** 4 errors in Compile ***
です。


499 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:24:13 ]
>>497
すみません。
こちら側のミスでエラではなく警告のみでした。
vowel.c:
警告 W8057 vowel.c 68: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 vowel.c 68: パラメータ 'argv' は一度も使用されない(関数 main )

500 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:35:10 ]
>>499
int main (int argc, char* argv[])



int main ()

もしくは

int main(void)

に書き換えてみてください。



501 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:58:32 ]
>>500
int main()に書き換えたらコンパイル出来ました!
for文苦手なので本当に助かりました。
ありがとうございました!!

502 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:16:02 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  入力された2つの文字列str1,str2を比較し、str1にstr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す関数、strcmpを作成せよ。
int strcmp( char *str1, char *str2);
ex. str1=”abaabab” , str2=”aab” 1
ex. str1=”abaabab” , str2=”abb” -1
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 出来れば今日中に。急ぎで申し訳ありません。
#include<stdio.h>
#include<string.h>
#define LENGTH 10

int strcmp(char *sp1,char *sp2);
int main(){
char str1[LENGTH+1];
char str2[LENGTH+1];

printf("aとbを使って10文字入力してください。\n");
scanf("%s",str1);
printf("aとbを使って2文字入力してください。\n");
scanf("%s",str2);

printf(結果)

strcmp(&str1[0],&str2[0]);

ここまで作ったのですが(中途半端ですみません)関数に行き詰まり、ネットで調べたところ本来のstrcmpの使い方とこの課題で求められているstrcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。
この後、関数strcmpを使い、str1とstr2を比較して・・・をどうのようにすれば良いでしょうか?


503 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:23:30 ]
>>502
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10500.c
これでいいかな。
「strcmp」という名前で関数を定義できなかたので、別名をつけています。

> ネットで調べたところ本来のstrcmpの使い方とこの課題で求められている
> strcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。

その通り。
標準関数のstrcmpは、二つの文字列が一致しているか判定する関数。
課題の出し方が悪いと思う。
(あるいは学生をあえて混乱させようとしているのか・・・)

504 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:47:32 ]
strstrだよね

505 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:54:35 ]
strstrでググったら実装がすぐ見つかっちゃうからじゃないの
strcmpと被せたのは<string.h>使わせないためとか

506 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:00:09 ]
それ以前に今日中という期限設定は常識を疑いたいもの

507 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:02:59 ]
#include<string.h>をはずして関数名strcmpにしてなんとか形になりました。
>>503さん、本当にありがとうございました。
またこのスレにお世話になってしまうかもしれませんが宜しくお願いします。

508 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:20:25 ]
1] 授業単元:プログラミング演習
[2] 問題文:次のプログラムを改造し、定積分の面積を求めるプログラムにせよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:無期限
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10501.txt

お願いします

509 名前: ◆QZaw55cn4c mailto:sage [2010/02/07(日) 21:49:54 ]
>>456
ちょっと皆さんにご意見をお聞きしたいところです。
二分木で番兵(sentinel) をおく意義がわからない、どんなsentinel をおけばいいかわからないのですが、
どうすればいいのでしょうか。
sentinel をおくことで if 文が減らなければならない、と考えているのですが。

510 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:50:58 ]
ameblo.jp/ruhuraro/image-10357111023-10267569832.html
ここで解説出てるよ



511 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:02:39 ]
>>510
真に受けた俺が悪うございました。

512 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:32:58 ]
>>509
[1] 授業単元:プログラミングコミュニケーション演習
[2] 問題文:>>456の正解を皆さんに”必ず”知らせてください。
[3] 環境
 [3.1] OS:2ch
 [3.2] コンパイラ名とバージョン:jd等
 [3.3] 言語:無制限
[4] 期限:無期限

513 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 01:34:32 ]
>>508
単純な台形則による定積分で、関数F(X)のXY座標を、X座標の小さい順に
V[][0], v[][1] に入力と解釈するなら

#include <stdio.h>
double daikei(double xa, double ya, double xb, double yb){
return(ya+yb)*(xb-xa)/2;
}

int main(void){
 int n;
 int i;
 double V[1000][2];
 double S,D;

 scanf("%d",&n);
 for(i=0;i<n;i++){
  scanf("%lf",&V[i][0]);
  scanf("%lf",&V[i][1]);
 }

 S=0.0;
 for(i=0;i<n-1;i++)
  S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]);

 printf("\n面積:%f\n",S);
 return 0;
}

とか?

514 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:11:53 ]
>>509
NODE sentinel;
NODE *root = &sentinel;
以降、全ての NULL を &sentinel に置き換える。
(malloc の戻り値チェックの NULL はそのまま)

元々 NULL が番兵の役割を果たしていたので、簡単な変更で済む。
NULL が番兵ではないと誤認識させる糞問題でした。


515 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:49:23 ]
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文:
input.ppm というPPMフォーマットのファイルを読み込み, ヘッダをつけて縦横をそれぞれ 1/2(面積にして1/4) にして出力するプログラムを書きなさい.
input.ppm のサイズは 410x307 である.
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/8

よろしくお願いします。

516 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:56:54 ]
>515
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10502.zip

517 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 09:07:12 ]
>>516
丁寧にありがとうございます
ですが難しくてよく分からないです
たぶんもっとシンプルで(いい加減で)良い課題なので、それを参考にもう少し頑張ります

518 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:09:37 ]
>517
論理ミスしていた
diff main.c main.c.bk
75,76c75,76
< rl.x = (x == 0 ? 1 : x*2);
< rl.y = (y == 0 ? 1 : y*2);
---
> rl.x = x*2;
> rl.y = y*2;

縦横1/2の間引きだから、単純に縮小先の画素から見た縮小元の2x2の画素の平均値を新しい画素値にすればいいけど、
1/2の線形補間はになるためあまりきれいに縮小できない
以下疑似コード
x, yは、整数, imageは元画像, new_imageは縮小画像を表す
array(u, v)は、imageの縦u, 横vの値を表す
height, widthは、それぞれ元画像の縦幅と横幅を表す
for y in 0 <= y < height/2
 for x in 0 <= x < width/2
  new_value <- image(y*2, x*2) + image(y*2, x*2+1) + image(y*2+1, x*2) + image(y*2+1, x*2+1)
  new_value <- new_value / 4
  new_image(y, x) <- new_value
 end
end
実際のコードでは、RGBの値をそれぞれ計算しないといけないけど

519 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:15:31 ]
>518
diff恥ずかしいなぁ、寝不足はいかんね

520 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 14:01:32 ]
>>515-517
mkr_allocate_3d_array()で行のポインタがheightを一つ越えて
初期化されてしまってますね。バグバグバグ。



521 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 17:59:07 ]
>>513
台形規則のプログラムではなくて
画像の関数の始点Aから終点Bで囲まれた赤色の面積を求めるような
プログラムが欲しいです・・・
www1.axfc.net/uploader/Sc/so/80859

文章の記述不足すみません

522 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:02:02 ]
台形近似でも面積を求めることに変わりはないと思うんだが・・・

523 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:25:02 ]
>>521
それを求める公式の一つが台形則。
希望があるならそれを明記しないと伝わらんぞ。

524 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:45:13 ]
すみません;;
教科書読んだら台刑則のプログラムで面積を求めることが出来ると書いてありました…

あとプログラムについて質問なのですが
S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]);
の部分の+=という演算子はどのような働きがあるのかと
コンパイルしたあとは始点(xa,ya)終点(xb,yb)だけを打ち込めばいいのかわかりません
そこについてもよろしくお願いします

525 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:50:14 ]
a+=bはa=a+bと同義

526 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 19:43:34 ]
>>524
(1)最初に関数F(x)上の点の数nを入力
(2)F(x)上の点(x,y)を、x座標の小さい順にn回入力。

下図を良〜く見れば、そのうち分かってくるはず
upload.wikimedia.org/wikipedia/commons/thumb/4/42/Composite_trapezoidal_rule_illustration.png/180px-Composite_trapezoidal_rule_illustration.png

527 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:35:10 ]
>520
ありがとうございます
潜在的なバグの原因になり兼ねますね

有効なアドレスを参照しているからメモリチェッカでは検出できていませんでした
修正は簡単だけど、エレガントなコードが浮かばない
もう、ppm.c自体の完成度が低すぎて笑える、即席の使いまわしの接ぎ木

528 名前:至急お願いします。 [2010/02/09(火) 03:50:53 ]
[1] 授業単元:C言語
[2] 問題文: ガウス分布における数値積分 I=∫f(x)dx,←xmin〜xmax f(x)=1/√(2*π*σ)*exp(a)  a=-(x-μ)*(x-μ)/(2*σ*σ)
積分区間は[xmin,xmax]=[myuu-2siguma,myuu+2siguma]として計算すること。なおμ=0,σ=1とした場合、I=0.95449と
  なるので確認すること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/9 正午まで 出来ればすぐにお願いします。


529 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:59:06 ]
>>528
確認しました。

で提出すりゃいいよ。

530 名前:至急お願いします。 [2010/02/09(火) 04:09:11 ]
追記 528>>関数を使ってください。



531 名前:至急お願いします。 [2010/02/09(火) 04:10:07 ]
529>>どういうことですか?


532 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 04:26:05 ]
計算すること
確認すること

参考書のページ数稼ぎによくあるパターンだな

533 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:39:00 ]
>>528
多少誤差があるけど

#include <stdio.h>
#include <math.h>

double f(double sigma, double mu, double x)
{
return 1/sqrt(2*M_PI*sigma) * exp(-(x-mu)*(x-mu)/(2*sigma*sigma));
}

int main(int argc, char *argv[])
{
int i, n = 10000000;
double sigma=1, mu=0;
double xmin = mu-2*sigma, xmax=mu+2*sigma;
double a = f(sigma, mu, xmin), b;
double sum = 0.0;

for(i = 0; i < n; i++){
b = f(sigma, mu, xmin+(xmax-xmin)/n*i);
sum += (a+b)*(xmax-xmin)/n/2;
a = b;
}

printf("%f\n", sum);

return 0;
}


534 名前:デフォルトの名無しさん [2010/02/09(火) 07:18:38 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
配列に
Institute of Technology
という文字列を代入し、ポインタを利用して
・各文字が格納されているアドレス
・そのアドレスに格納されている文字
を表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月9日まで]
[5] その他の制限:
お願いします。

535 名前:デフォルトの名無しさん [2010/02/09(火) 07:33:03 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
まず次の内容のテキストファイルを準備せよ。
(メモ帳で作成し、test02.txtという名前で保存すること)

abc
123
def
456
ghi
789
jkl
000

次に、作成したテキストファイルから内容を読み出し、
各行の先頭に 01 02 03 というように番号を付加して
画面に出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:


536 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:23:35 ]
>>534
#include <stdio.h>

int main(void)
{
char *pstr,str[30]="Institute of Technology";
pstr = str;
for(;*pstr!='\0';++pstr)
printf("%08x: %c\n",&*pstr,*pstr);
}


537 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:26:13 ]
>>535
#include <stdio.h>

int main(void){
int i=0;
char text[200];
FILE *ifp;
ifp = fopen("test02.txt", "r");
if(!ifp) return 1;
while(fgets(text,200,ifp) != NULL)
printf("%02d %s", ++i, text);
fclose(ifp);
}

538 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 11:34:00 ]
>>535
#include <stdio.h>
int main(void){
FILE *f;
f=fopen("test02.txt","r");
if(f==NULL) return 0;
fclose(f);
printf("01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n");
return 0;
}
センセーが期待した解答とは異なるだろうがよ

539 名前:至急お願いします。 [2010/02/09(火) 14:07:26 ]
534>>ありがとうございます。argvの後はなんてかいてあるのですか?

540 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:37:13 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
codepad.org/9ra3PWuv
上のコードが正しく動かないんです・・・
input.txtとして
1
2
3
4
5
の内容を保存して実行ファイルから読み込ませる
./a input.txt
[3] 環境
 [3.1] OS:ubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[出来れば今日中で]
[5] その他の制限:



541 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:17:43 ]
>>540
自分が作ったプログラムを理解出来ていないようだ。(笑)
input.txtとして↓を与える。
5
1
2
3
4
5

542 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:32:17 ]
うわ、そんな安易な間違いでしたか・・・
ずっとプログラム睨んでました。
ありがとうございます。

543 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:07:04 ]
バカもん。
> ずっとプログラム睨んでました。

プログラム睨んでたら普通気が付くだろ。

544 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:32:55 ]
コードは鏡、自分自身が見えます。

545 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:36:53 ]
自分で書いてないのがバレバレだなw

546 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:17:21 ]
>>538
死ね

547 名前:デフォルトの名無しさん [2010/02/09(火) 22:17:58 ]
[1] 情報処理応用
[2] Fortranで,


階乗 n! を計算する関数を作成し,

順列
n個の異なるものからr個取り出して並べる。
このときの順列の総数をnPrとあらわす。
nPr=n(n-1)(n-2)・・・(n-r+1)
を計算する関数を作成し,

組み合わせ
異なるn個からr個取り出して組を作る。
このときの組合せの総数をnCrとあらわす。
nCr = nPr/r!
を計算するプログラムを作成してください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:fortran
[4] 期限: 明日まで。急ぎですみません。
[5] その他の制限: 特にないですが、板を間違えていたらすみません。


548 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 22:18:01 ]
[1]C言語課題
[2] コマンドラインに与えられた文字列が単数で自然数を表しているとい
下の例ように出力されるプログラムを作れ
入力==>3
132
231
入力==>5
1304
2552
4031
入力==>10
136107
259084
480952
710631
入力==>20
13610150016
25914201711
48131918127
71218191384
11172014952
16001510631
[3] [3-1]Linux [3-2]GNU C++ [3-3]C言語
[4] 2/22日正午迄 それ以降は不可
[5]stdio.h string.h stdlib.hを使用可能

549 名前:デフォルトの名無しさん [2010/02/09(火) 22:39:57 ]
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
球の体積をもとめよ。またこの問題は間違っているのでそれを書き換えよ
#include<stdio.h>

int main(void)
{
double r,v;


printf("直径を入力して下さい\n");

scanf("%1f",&r);
v=4.0/3.0*3.14159*(r/2.0)*(r/2.0)*(r/2.0);
printf("直径%fの球の体積は%fです。\n",r, v);


}
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:


550 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 22:40:50 ]
>>547
とりあえずスレタイをn!回声に出して読んでみようか



551 名前:デフォルトの名無しさん [2010/02/09(火) 22:47:32 ]
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
二つの数列の和を表示したい。またこの問題は間違っているのでそれを書き換えよ
#include<stdio.h>
main()
{
int suretu1[]={2,4,6,8,10,12,14,16,18,20};
int suretu2[]={1,2,4,8,16,32,64,128,258,512};
int kotae;
int count;

for (count = 0; count <=10; count++ )
printf("%d,", suretu1[count]+suretu2[count]);
{
suretu1[count] = 2 * count +2;
suretu2[count] = count* count;
kotae= suretu1[count] + suretu2[count];
printf("二つのの整列の和によってできる数列は,\n");
printf("%d\t",kotae);
}
}
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:


552 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:00:56 ]
[1] プログラミング基礎
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10503.txt
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:2月10日 18時まで
[5] その他の制限: 説明は詳しく書いてくれるととてもありがたいです。

現在とても困っています。皆さんよろしくお願いします。

553 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:15:56 ]
>>548
入力==>15
136101511
259141127
481311384
712114952
111510631
入力==>11
1361011
2590007
4800084
7000952
1110631
入力==>9
13607
25984
48952
70631
入力==>8
1367
2584
4852
7631
入力==>6
1364
2552
4631
入力==>4
134
202
431

554 名前:デフォルトの名無しさん [2010/02/09(火) 23:19:47 ]
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
/*************************
ある二つの文字列str1,str2 の編集距離はつぎの3つの操作を行うことによりstr1 をstr2 に変換するのに要する操作の最低回数である
・ 1文字挿入する
・ 1文字削除する
・ 1文字を他の1文字に置き換える
たとえば str1="sport" はstr2="sort" に, 文字 'p' を削除することによりstr2 に変換できるため編集距離は 1 である

str_n を文字列str の頭からn 番目までの部分列としm(i,j)をstr i とstr j の編集距離を表すものとする.m(i,j)とm(i+1,j),m(i,j+1),m(i+1,j+1)の間に成り立つ再帰式を記述しなさい

この再帰式に基づき効率良く編集距離を計算するプログラムを2次元配列を利用して作成しなさい.ただし,関数m(i,j)はint型の編集距離を返り値とする.
******************************/
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:


555 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:20:08 ]
[1]C言語とプログラミング
[2] キーボードから3つの整数を受け取り大きさの小さい順に出力するプログラムを作りなさい。
但しmain関数内ではint変数一つだけが使えるものとします。またmain関数の再帰呼び出しも
出来ません。(main関数の引数、argc,argvをint変数として使用することも勿論禁止します)
main関数のみで構成されるプログラムとして下さい。
入力される数は1から10までの範囲にあることを常にチェックし、それ以外の入力の場合は
再入力を促して下さい。
[3]
[3-1]Windows XP HomeEdition
[3-2]Visual Studio 2008
[3-3]C言語
[4] 2/11迄
[5] 特に無し

556 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:28:36 ]
まぁどれも期日まで時間があるからゆっくりやるべきだ
最近の学生は甘え過ぎ
粘って苦しめてやれというのはウソにせよ
期日ぎりぎりに催促されたら貼ってやる
って感じで

557 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:30:40 ]
>>549
scanf("%1f",&r); の %1f を %lf に修正。※lは小文字のL
main関数が値を返して無いので、最後に return 0; 等を追加。

558 名前:デフォルトの名無しさん [2010/02/09(火) 23:32:55 ]
>>556
余計なこと書くなよw
日付変えてくるだろうが

559 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:45:48 ]
>>551
問題の題意がイマイチよく分からんので、適当に解釈
#include<stdio.h>
main()
{
int suretu1[]={2,4,6,8,10,12,14,16,18,20};
int suretu2[]={1,2,4,8,16,32,64,128,258,512};
int kotae=0;
int count;

printf("二つの整列の和によってできる数列は\n");
for (count = 0; count <10; count++ )
{
printf("%d ", suretu1[count]+suretu2[count]);
kotae += suretu1[count] + suretu2[count];
}
printf("\n数列の和は %d\n",kotae);
return 0;
}

560 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:47:16 ]
>>535
#include <stdio.h>
#include <string.h>
int main(void){
#define CONTENTS "01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n"
FILE *f;
int i=0;
char Fgets[256],Strcat[256],Sprintf[256];
f=fopen("test02.txt","r");
if(f==NULL) return 0;
Strcat[0]=0;
for(;;){
if(NULL==fgets(Fgets,256,f))break;
sprintf(Sprintf,"%02d%s",++i,Fgets);
strcat(Strcat,Sprintf);
}
fclose(f);
if(0==strcmp(Strcat,CONTENTS))printf("%s",CONTENTS);
return 0;
}




561 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:01:18 ]
>>552
1.Swapの引数が値渡しなので、Swap関数内で値を変更しても
関数呼び出し元の変数には影響を与えないから。

2.Swap関数内のbuf変数がポインタで定義されていて、その初期化されていないポインタの
示す先を一時保存場所として使用している為、正しく値が交換されない。

3.

void Swap(int *p1, int *p2)
{
int buf;
buf = *p1;
*p1 = *p2;
*p2 = buf;
}

562 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:39:59 ]
>>561
素早い回答ありがとうございます。助かりました。


563 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:57:05 ]
[1] 授業単元: DirectX研究2
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10504.txt
[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン:visual stdio 2008
 [3.3] 言語: C++
[4] 期限: ([2010年2月10日17:00まで]
[5] その他の制限:

564 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:26:05 ]
>>547
スレ違いだけどFortran77で
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10505.txt

565 名前:564 mailto:sage [2010/02/10(水) 02:17:10 ]
スレ違いのまま失礼… 訂正版
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10506.txt


566 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:19:37 ]
>>548
思ったより難しかった

567 名前:566 mailto:sage [2010/02/10(水) 02:38:49 ]
入力==>200
1361015212836455566789110512013615317119000000000191
2591420273544546577901041191351521701890000000192172
4813192634435364768910311813415116918800000193173154
7121825334252637588102117133150168187000194174155137
1117243241516274871011161321491671860195175156138121
1623314050617386100115131148166185196176157139122106
2230394960728599114130147165184019717715814012310792
2938485971849811312914616418301981781591411241089379
3747587083971121281451631820199179160142125109948067
4657698296111127144162181020018016114312611095816856
5668819511012614316118020001811621441271119682695746
6780941091251421601791990182163145128112978370584737
7993108124141159178198018316414612911398847159483829
9210712314015817719701841651471301149985726049393022
1061221391571761961851661481311151008673615040312316
1211381561751950186167149132116101877462514132241711
1371551741940001871681501331171028875635242332518127
1541731930000018816915113411810389766453433426191384
1721920000000189170152135119104907765544435272014952
1910000000019017115313612010591786655453628211510631

568 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:42:04 ]
[1]数値計算演習
[2] 極座標で表される曲線 r(t)=sin^2(πt) θ(t)=α sin(πt^2) (0<=t<=1)でαを指定した時
の曲線の長さと囲む面積の近似値を求め、π/4<=α<=πまで変化させる時、
面積/曲線の長さが最大になるαを推定する
曲線上の代表点をとり隣接する点の間の距離の和で曲線の長さを近似。
面積は隣接する代表点と原点が作る三角形の面積の和で近似する。
[3]
[3-1] Mac-OS-X panther
[3-2] XCode
[3-3] C/C++どちらでも可能
[4] 2/18迄
[5] 特に無し

569 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:50:49 ]
>>555
ビット演算の問題と解釈
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10507.txt

570 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:48:14 ]
>>555
タイプミスに苦闘したが5分で打ち込めた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10509.zip



571 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 04:05:07 ]
>>568
答えがπになってしまった。間違ってたらごめんね
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10510.txt

572 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 05:31:38 ]
>>555
好奇心で書いてみた
めちゃ読みづらいけど勘弁
testhp.ddo.jp/prog.c

573 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:39:07 ]
>>555
入力数を何でも対応できるように
むりやりキャストしてポインター使ってみた
codepad.org/xjtWz8N3

574 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:47:33 ]
大きい順と小さい順を勘違いしてた
codepad.org/Z5aQHsCW

575 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:53:50 ]
おまえら必死だな

576 名前:553 mailto:sage [2010/02/10(水) 09:05:02 ]
>>575
入力==>200
13610152128364555667891105120136153171190
259142027354454657790104119135152170189
48131926344353647689103118134151169188
7121825334252637588102117133150168187
111724324151627487101116132149167186
1623314050617386100115131148166185
2230394960728599114130147165184
29384859718498113129146164183
374758708397112128145163182
4657698296111127144162181
56688195110126143161180200
678094109125142160179199
7993108124141159178198
92107123140158177197
106122139157176196
121138156175195
137155174194
154173193
172192
191

1)文字列を繋いで、1〜nまでの三角形を作る(上の図参照)
2)それを1文字ずつに分解して、上下反転、左右反転する
3)1と2で出来た物を左右に並べて、隙間がなくなるまで近づける
4)空いた隙間には0を詰める

577 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:10:09 ]
>>575
問題が魅力的だったからみんなやったんだろうな

578 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:38:11 ]
>>576
数値自身は左右反転じゃないぞ

579 名前:553 mailto:sage [2010/02/10(水) 12:56:23 ]
#define MAXL 100
main(){
  int num, i, j, k, len, maxlen;
  char wrk[4], mat1[MAXL][MAXL*2], mat2[MAXL][MAXL*2], tmp[MAXL];
  printf("入力==>"); scanf("%d", &num);
  for(i=0;i<MAXL;i++) mat1[i][0] = mat2[i][0] = (char)0;
  i=1, j=0, k=0;
  while(i<=num){
    if(k<0) {
      k = ++j;
      if(j >= MAXL) {puts("ERR"); return 1;} // てきとう
    }
    sprintf(wrk, "%d", i++);
    strcat(mat1[k--], wrk); /* LEFT */
    strcpy(tmp, mat2[k+1]); /* RIGHT */
    sprintf(mat2[k+1], "%d", i-1);
    strcat(mat2[k+1], tmp);
  }
  maxlen = k = 0;
  for(i=0;i<=j;i++){
    len = strlen(mat1[i]) + strlen(mat2[j-i]);
    if(len > maxlen) maxlen = len, k=i;
  }
  for(i=0;i<=j;i++){
    len = strlen(mat1[i]) + strlen(mat2[j-i]);
    for(k=maxlen-len-1;k>=0;k--)
      strcat(mat1[i], "0"); // めんどう
    strcat(mat1[i], mat2[j-i]);
  }
  for(i=0;i<=j;i++) puts(mat1[i]);
}

580 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:00:22 ]
>>548
codepad.org/nCjDliKG



581 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:12:52 ]
>>548
デバッグ用のprintfがあるので見づらいが、>>580では
 1) 上半分の三角形(>>576のような)の各行の長さを求める
 2) 出力される配列の長さを決める( (i行目の長さ + (h-1-i)行目の長さ)の最大値 )
 3) 出力
という流れ。三角形の(i,j)の位置のにある数字は簡単に計算できるので
メモリには各行の長さだけ記憶すれば十分。

582 名前:デフォルトの名無しさん [2010/02/10(水) 13:13:57 ]
[1] 授業単元:なし
[2] 問題文(含コード&リンク):MSPAINTの色の選択(カラーダイヤログ)を表示して、選択した色(RGB)を文字列として取得する秀丸用のDLLを作成してください
[3] 環境
 [3.1] OS:Windows XP or Vista
 [3.2] コンパイラ名とバージョン: なんでも
 [3.3] 言語: CかC++どちらでも可
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: とくになし
DLLの使用などはこちらを参照してください
ttp://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html

583 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:19:45 ]
>>582
それ、宿題じゃねーだろ。

584 名前:570 mailto:sage [2010/02/10(水) 13:32:22 ]
>>555
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10512.zip
多くの部分に間違いがあった。
さすがに700行/分の入力ではミスが起こるわなw

585 名前:570 mailto:sage [2010/02/10(水) 13:46:27 ]
スマン
まだ一カ所ミスが...
入力チェックをミスってる
#define INPUT()で
でwhileロジックを
while ( (m<1)||(m>10) )
に修正して

586 名前:デフォルトの名無しさん [2010/02/10(水) 13:51:16 ]
>>336
課題4と課題5どなたかよろしくお願いします。期日すぎても提出できるので、なんとかならないか必死です。

587 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 17:24:00 ]
>>586
5番のグラフって何グラフ?

588 名前:デフォルトの名無しさん [2010/02/10(水) 17:40:46 ]
入力データの例
1.2 3.7
2.1 4.2
2.9 1.3
4.0 2.5
x,y軸を-や+で表現して、それぞれ座標の点(4つ)を*でプロットする感じです。

589 名前:555 mailto:sage [2010/02/10(水) 19:03:12 ]
>>572
>>573
>>570
どうもありがとうございました。
>>570さんのコードは非常にわかりやすいです。
3600行を5分で入力とは凄いですね。
タッチタイピング速度はどの位でそれくらいに
なるんでしょうか?自分は1分間に賞味150文字が
精一杯です。(IME変換時間を含む)
他の皆様もいろいろと工夫をされておられ特にビット
操作とかポインタ操作とか裏技的な技法は非常に参考
になると思います。

590 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:45:14 ]
>>570
ひらいてみた。ちょwwww



591 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:52:14 ]
世間では一昔前はコード1行1万が
相場だった時代もあったね。
>>570のコードだといくらになるんだかw

**確認事項**
ここで答えてやっても事後を含め
一切依頼者に報酬を請求出来ない

592 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:54:41 ]
>>591
ここで答えるようなのって単体じゃどうせ金にならなくないか?

593 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:55:23 ]
>>570
>>584
クソワロタ

594 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:15:31 ]
ここで解かれている問題とその回答を
応用してもいいけど事後問題になる可
能性もあるんで(2ちゃんねるから
引用ってw格式ある組織ではそれだけ
で処分対象w)

595 名前:570 mailto:sage [2010/02/10(水) 22:38:17 ]
>>555
いえいえ。
タッチタイピングの上達のコツは
このスレの他の回答者に聞いてくれ
企業秘密なんで。
この業界では毎分400文字〜500文字
(IME入力変換時間を含む)の入力が
生き残りの最低条件なんでw
今回は実にのんびりしたテンポで入力
したよ。

>>590
>>593
何かおもしろいところあるのかい?

596 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:50:17 ]
いやここまで冗長なプログラムは初めて見たもんで
一行いくらならこういう方法でガツガツ稼げるなw

597 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:16:03 ]
冗長?
見た目だろ。
ロジックそのものはこれほど直接的なものはない
コードは常に短く書けばいいというもんでもないと
目から鱗が落ちたような気分
コードを(最初から)短く書くのが偉いとかそういう
奇妙な信仰はかなり弊害もあるんじゃないかと
もっとも一つのint変数しか使えない状況での
プログラミングもかなりナンセンスだと思うが

598 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:16:59 ]
回路に例えるとワイヤードロジックな
普通のプログラムがマイクロプログラムに例える事が出来るかも

599 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:21:30 ]
>>555って__asmでスタックとレジスタ使えばint変数一つでも楽勝なんじゃないのw

600 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 02:07:11 ]
>>555
逃避したくなったので書いてみた。
codepad.org/HcRNGiZZ



601 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 11:03:25 ]
勉強になるなぁ。hhdかー。

602 名前:デフォルトの名無しさん [2010/02/11(木) 13:05:19 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void){
int a=0,k;
for (k=0;k<100;k++){a++;
if(a%5==0&&a%9==0)printf("A\n");
else if(a%5==0)printf("B\n");
else if(a%9==0)printf("C\n");
else printf("%d\n",a);
}return 0;}
この処理のプログラムをスペース、改行を含み140字以内で書き直したい。
[3] 環境
 [3.1] OS:Windows XP Pro
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語:C
[4] 期限:
[5] その他の制限:特になし

よろしくお願いします。

603 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 13:29:10 ]
>>602
#include <stdio.h>
int main(){
int k;
for (k=1;k<=100;k++){
printf(k%5==0&&k%9==0?"A\n":k%5==0?"B\n":k%9==0?"C\n":"%d\n",k);
}}

604 名前: ◆/91kCCQXBo mailto:sage [2010/02/11(木) 13:54:38 ]
#include <stdio.h>
int main(void){
  int a;
  for(a=1;a<=100;a++)
    printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);
  return 0;
}

605 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 14:04:38 ]
>>602
変な問題ですが無理なのでは166byte

606 名前:デフォルトの名無しさん [2010/02/11(木) 14:05:22 ]
602です。
<<603
<<604
の方ありがとうございます。 助かりました。

607 名前:605 mailto:sage [2010/02/11(木) 14:05:28 ]
失礼3項演算子があったのね


608 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 14:11:20 ]
>>555
きっと反則技なんだろうけど。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10517.c

609 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:34:45 ]
>>602 code golfするの?
a;main(){for(;++a<101;)printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);}

610 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:11:13 ]
>>555
int a;
scanf("%ld %ld %ld%*c", (long *)&a, (long *)&argc, (long *)&argv);
じゃだめか
Windows XP HomeEditionって64bitないよね



611 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:54:33 ]
>>610
たった3行の制約条件を見逃すようじゃ、お前マの適性ない。
転職を勧める。

612 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:00:07 ]
>>555
もう需要ないかと思うが、面白そうなのでやってみた。
バブルソートのありがたみを出すため、かつ、4bit余ったため、入力する値を4つに勝手に変更。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10519.txt

613 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:03:56 ]
>>612
1〜10だよ。

614 名前:612 mailto:sage [2010/02/12(金) 01:26:00 ]
>>613
1〜10にしてますよー。

615 名前:デフォルトの名無しさん [2010/02/12(金) 01:32:57 ]
[1] 授業単元:計算機実習
[2] 問題文(含コード&リンク):
hermes.esys.tsukuba.ac.jp/~sano/NumCompEx/project2.pdf
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:VisualStudio2008
 [3.3] 言語:C
[4] 期限: 3/5
[5] その他の制限:特になし

よろしくお願いします。


616 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 02:49:14 ]
>>611
その前に就職をしないと

617 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:43:57 ]
>>615
問題文が理解できません! orz


618 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:44:18 ]
このスレの人ってちょっと考えると皆精神病院予備軍だな
>>585とか
>>548を解いて喜ぶ人とかw

619 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:49:19 ]
>>618
パズルを解く感覚だよ

620 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:50:35 ]
さすが現役精神病の方は言うことが違うね



621 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:21:53 ]
トルヒーヨのハルディンはここですか?

622 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:30:20 ]
>>555
n番煎かしれんがオラも参加!
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10521.c

623 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:31:59 ]
>>622
それは突っ込み待ちか?

624 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:33:42 ]
>>622
キレイに書くねー。

625 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 20:21:21 ]
>>555
n+1番煎じしてみた。
どこにも「同じ数字が複数回入力された場合、まとめてはならない」なんて書いてないよね。
ttp://codepad.org/C0n9Shhq

626 名前:625 mailto:sage [2010/02/12(金) 20:26:28 ]
ミスった…
× #define PSHORT_A(x) (((uint16_t*)&x)+2)
○ #define PSHORT_A(x) (((uint16_t*)&x)+1)
SHORT_Aも同様。

627 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:48:01 ]
>>555の問題って、入力がintの範囲内であることは暗黙の了解としても、[0, 10]の範囲にあることの確認は不可能だよね?
charの範囲内としたら、(たとえintが規格的に最小な16bitでも)できそうだが。

628 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:07:59 ]
>>627
お前は何を言っているんだ。

629 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:01:56 ]
答えが多すぎて、このパターンだけでいいか。出席を取ります。
@intをポインタとして実際使うメモリはintの配列
Aintを分解して4バイトとして4個の数字を使う
B1個の数字しか使わない

pc12.2ch.net/test/read.cgi/tech/1255277760/l2

630 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:58:19 ]
>>628
「半角文字以外に「あ」とか「阿」のような全角文字が入力される場合まで考えると、正しい結果が得られなくなる場合があるのでは?」
って言ってるんだと俺は推測する。
JISとかユニとかの知識が乏しいので、俺には実際どうなのかはわからんが。



631 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 04:33:14 ]
誰も>>585のコード見て苛つかないの?
同レベルだとみなされかねないし...
常連回答者だったら清書したくならないか?

632 名前:622 mailto:sage [2010/02/13(土) 05:17:54 ]
んじゃ、マクロを大文字に修正
#n
s/v(\(.\))/V(\1)/g
s/swap/SWAP/g
s/w\([^h]\)/W\1/g
p

633 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:50:31 ]
しかしこういうビット演算は今までまったくやったことが無いので、
回答者のみんながホントスゲーんだなと分かる。
>>625さんのようなバケットソートぽいのを自分でも書こうと思ったが、
まったく書けなかったのが辛いところ。

634 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:54:49 ]
>>633
まずは愚直なコードからでもいいから一歩を踏み出す事が大事。

635 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:42:25 ]
>>555 たぶんできてるはず。570のインスパイヤ

#include <stdio.h>
#include <stdlib.h>
int compareInt(int * left, int * right) { return *left - *right; }
FILE * OUT; int length = 3, * ans, * vals;
void createSwitch(int current, int * vals) {
int i;
if (current == length) {
for (i = 0; i < length; i++) ans[i] = vals[i];
qsort(ans, length, sizeof(int), (int(*)(const void*, const void*)) compareInt);
fprintf(OUT, "printf(\"");
for (i = 0; i < length; i++) { if (i != 0) fprintf(OUT, " "); fprintf(OUT, "%%d"); } fprintf(OUT, "\\n\", ");
for (i = 0; i < length; i++) { if (i != 0) fprintf(OUT, ", "); fprintf(OUT, "%d", ans[i]); } fprintf(OUT, ");\n");
return;
}
fprintf(OUT, "val = getchar() - '0';\ngetchar();\nswitch (val) {\n");
for (i = 0; i < 10; i++) {
vals[current] = i;
fprintf(OUT, "case "); fprintf(OUT, "%d", i); fprintf(OUT, ":\n");
createSwitch(current + 1, vals);
fprintf(OUT, "break;\n");
}
fprintf(OUT, "default:\nputs(\"input error\");\nreturn 1;\n}\n");
}
int main(void) {
OUT = fopen("shukudai555.c", "w"); vals = (int *) malloc(sizeof(int) * length); ans = (int *) malloc(sizeof(int) * length);
fprintf(OUT, "#include <stdio.h>\nint main(void) {\nint val;\n");
createSwitch(0, vals);
fprintf(OUT, "return 0;\n}");
return 0;
}

636 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:44:07 ]
C言語の宿題と聞いて飛んできました。

637 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 20:28:20 ]
>>629
@Aは、環境が書いてあるから、intを4bytesとして扱ったりポインタとして扱ったりの環境依存コードがかけるという解釈なんだろうか。

638 名前:568 mailto:sage [2010/02/13(土) 20:45:46 ]
>>571
ありがとうございました。自分今のところFORTRANしか
組めないんでFORTRANに移植するのやってみます。

639 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:33:20 ]
>>635
すげ〜
といいたいところだが>>584と同レベルかそれ以下である
ということを示していない気がしないでもない

640 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:40:48 ]
>>555
>>570 をマクロで見やすくしてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10525.c



641 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:14:51 ]
うむ。
マクロを使うとここまで短く出来るんだな。
行数で稼いでいるプログラマは犯罪的だ
という教条の根拠か...
しかしこれは逆に言えば、マクロを使うことが
禁止された時、それを読む人が地獄の責め苦
を受けることをまた意味しているとも言えるなw

642 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:42:56 ]
>>612を改良した。

・入力する値を5つに勝手に変更。この方法だと6つ以上は俺には無理だな・・・
・マクロの使用で見やすくした。
・範囲外(全角文字も含む)が入力されても、問題なく再入力を促すのを確認。(01や09は範囲外としている)

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10526.txt

643 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:50:52 ]
>>641
コードのアセンブリ(実行最小単位)に対する圧密
度はC言語の出身地であるシステム記述の分野
では非常に重要な評価ポイントらしいね
その世界ではコードは圧密に書けば良いというもので
もなく逆に極端に希薄に書けば良いというものでも
なく結構奥深いらしい。
それにしても>>584>>640の例は同じ記述が書き
方によって極端に変わる良い例なんだろな

644 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 01:32:40 ]
>>640
おみごと

645 名前: ◆/91kCCQXBo mailto:sage [2010/02/14(日) 12:09:11 ]
555 たぶんできてるはず。570のインスパイヤ >>639 >>635のを借りて見た目I/Oを改良
#include <stdio.h>
#include <stdlib.h>
FILE *OUT; int length = 3, *ans, *vals;
int compareInt(int *left, int *right) { return *left - *right; }
void createSwitch(int current, int *vals) {
  int i;
  if (current == length) {
    for (i = 0; i < length; i++) ans[i] = vals[i];
    qsort(ans, length, sizeof(int), (int(*)(const void*, const void*)) compareInt);
    fprintf(OUT, "puts(\"");
    for (i = 0; i < length; i++) { if (i != 0) fprintf(OUT, " "); fprintf(OUT, "%d", ans[i]); }
    fprintf(OUT, "\");");
    return;
  }
  fprintf(OUT, "while((val=1, printf(\">\"), scanf(\"%%d%%*c\", &val)) != 1 || val<1 || val>10) {\n"
  "\t\t\t\t\tprintf(\"ERROR\\n\"); if(val==1) scanf(\"%%*s\");}\n\tswitch (val) {\n");
  for (i = 0; i < 10; i++) {
    vals[current] = i + 1;
    fprintf(OUT, "\t\tcase "); fprintf(OUT, "%d", i + 1); fprintf(OUT, ": ");
    createSwitch(current + 1, vals);
    fprintf(OUT, " break;\n");
  }
  fprintf(OUT, "\t}\n\t\t\t");
}
int main(void) {
  OUT = fopen("shukudai555.c", "w");
  vals = (int *) malloc(sizeof(int) * length); ans = (int *) malloc(sizeof(int) * length);
  fprintf(OUT, "#include <stdio.h>\nint main(void) {\n\tint val;\n\t\t\t\t");
  createSwitch(0, vals);
  fprintf(OUT, "return 0;\n}\n");
/*  return 0; */}

646 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 12:45:49 ]
あのー。誰も突っ込まないので俺が言う。

>>555
> 但しmain関数内ではint変数一つだけが使えるものとします。
> またmain関数の再帰呼び出しも出来ません。
> (main関数の引数、argc,argvをint変数として使用することも勿論禁止します)
> main関数のみで構成されるプログラムとして下さい。

お前一人だけどうあがいても落第だよw

647 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:36:52 ]
ソースを生成するんだろうけど、出てくるのはつまらなそうだね。
これなら、秀丸のマクロでいいんじゃね。

648 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:47:49 ]
>>555
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10527.c

649 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:57:40 ]
なんか、問題自体が不毛だよなぁ。


650 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:00:58 ]
とんち合戦の様相を呈してきたな。



651 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:06:28 ]
いやむしろIOCCC2ch版というべきか

652 名前:633 mailto:sage [2010/02/14(日) 16:09:58 ]
あ、思いついちゃった。
>>648さんの方法で、データを0-9で保存して1-10と表示させると、
INT_MAX.to_s.sizeの個数の数を扱えそう。
けどソートはどうするんだろうw

653 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:53:38 ]
てか依頼者が消えた問題にいつまでも拘泥するのは
宿題スレのマナー違反

654 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:25:56 ]
【質問テンプレ】
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
生徒数1000人分の学力テスト(五教科)の得点データが有る。ここで、任意の生徒Aと
得点の傾向が一番近い生徒の番号を高速で抽出できるようデータ構造を組みなさい。
(合計点が近い、ではなく、各教科の得点の傾向が大事のようです。)

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC++
 [3.3] 言語: どちらでも可
[4] 期限: 無期限
[5] その他の制限: 無し


生徒のデータはstruct seito{int tensuu[5];};こんな感じです。
単に全部検索して得点差を計算したのを提出したらダメと言われました。
こういう問題を解く定石のようなものがあるのでしょうか・・・
先輩方、よろしくお願いします。

655 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:34:10 ]
>>654
簡単に考えれば、
0-20をE
21-40をD
41-60をC
61-80をB
81-100をA
みたいに評価をつけて、同じものを抽出すればいい気がする。
もうちょっと細かくランク分けしたほうがいいかな

656 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 12:33:42 ]
>>654
プログラムを組む以前の問題として、どうゆう回答をすれば先生が満足するのか
そこがイマイチ不明だ・・・。

傾向が似ているかどうか、というだけなら、各教科の得点を偏差値に変換して、
5次元空間上にプロットした時に、任意の生徒Aとのユークリッド距離が
最も近い生徒を選べばいい気がする・・・。

仮にそれでいいとして、高速抽出するためのデータ構造を組め、ってなると
要は任意の生徒Aに最も近い得点の傾向の生徒Bを予め計算しておいて
AとBを対で持たせておけばいいとか、そうゆうことかな?

657 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 12:44:28 ]
モデル化してそれに最適なデータ構造考えろと言ってるんだろ。
モデル化の部分はこれまで授業で触れられていると思う。

658 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 13:54:43 ]
>>654
皆全員0点だった場合は誰を選べばいい?

659 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 14:14:59 ]
誰でもいいんじゃね? みんな一緒だし。

660 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 14:16:28 ]
656 のやり方で、データを読み込むとき予めソートしておくというのはどう?



661 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 14:17:26 ]
日本語おかしいな。
データを読み込むときソートした状態にスレばいいんじゃないか?

662 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 14:19:12 ]
>>654
極端な例の場合
ある生徒の得点分布が(50,51,52,53,54)
の場合(52,52,52,52,52)よりも(95,96,97,98,99)
の人のほうを選出したほうがいいの?

663 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:04:57 ]
(0,20,40,60,100)のほうが近いとオモ

664 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:42:32 ]
単に差を出したらダメって言ってるんだから、{52,52,52,52,52}だろうよ

665 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 17:17:46 ]
>>654
「傾向が近い」というのは、例えば
A (70,63,77)
B (70,70,70)
C (90,81,99)
だと、A≒B じゃなくて A≒C、という解釈
・・・でいいのか?


666 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 17:32:36 ]
1) 合計の偏差値を取り、Aに近い10%を抽出候補を絞る
2) 五科目点数の総当たりの大小比較を行い、Aと共通なら1異なったら0として
その合計が最大のBを選出。
3) Bが複数出たらさてどうするか。

667 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:21:10 ]
取り敢えずまだまだC言語で純正に一気に解決終了!
って出来る問題じゃなさそうだな
数学の複素多様体の知識とかデータベースの知識も要りそう
な問題で他のシステム(殆どが固有の言語を持つ)との
連携も要るような..

668 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:23:34 ]
[4] 期限: 無期限
てのも何かコエーよw

669 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:29:58 ]
foreach(生徒 in 生徒たち) {
 if(指定生徒 == 生徒) continue;

  match_average = 0;
 for(科目番号 = 0; 科目番号 < 5; 科目番号++) {
   diff = 生徒の得点[科目番号] - 指定生徒の得点[科目番号];
   match_average += diff * diff;
 }
 
 if(best_match_average > match_average) {
   best_match_average = match_average
傾向が似ている生徒 = 生徒
 }
}

考え方は、これでいいのかな?
match_average は、ユークリッド距離とか平均二乗偏差を意味する数値だけど、
あえて平方根をとらないことが高速化になってるしw
 

670 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:34:10 ]
>>667
問題によっては複数の支援ツールからなるソリューションパッケージは
あっても単独ソルバーアプリにまではとても出来てない問題って沢山あ
るからな



671 名前:669 mailto:sage [2010/02/15(月) 18:56:34 ]
>>654
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10528.zip
うpしてみる


672 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:22:00 ]
俺だったら「極座標」を使い、生徒の得点を中心からの距離と
緯度、経度とかの角度で表す。
「成績球」を半径方向と角度方向の非合同領域に分割し
生徒がどこに所属しているかで似ているかどうかを決める。
データ入力の段階で所属を決めるから、検索はデータの1回の
通読だけで至って単純。
だが領域の取り方が相当恣意的になりデータの分布が事前に
分かっていたら結果のコントロールもかなり出来るんで
敢えて書くべきコードじゃないと思うんでパス
(実際の問題では球の中に決して一様に分布しないんで
この方法は不適)

673 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 20:02:38 ]
>672
出だしと、まとめが矛盾してるぞ?
まあ、つべこべ言わずにコードを書いてみろ。
言ってることが難しすぎて俺にはトンと理解できねえ、
どんなコードになるのか興味あるわ。
書いてください、お願いします。

674 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 20:12:17 ]
>>670
CとかC++とかJavaがソリューション系では好かれない理由は
書くべきプログラムは音楽みたいにmainで始まりトップダウ
ンに一気に終了ってパターンであるという固定観念を印象づ
けるからじゃね?ソリューション系ではどっちかというと
「絵」とか「図」を書くに近いんで。
多くのC/C++ Javaプログラムの実際はそうではないことは
ベテランにはわかってるんだが、教育プロセスにおいて
OJTで新人に教える時にコード字面から植え付けられる先入観が
結構邪魔してると認識されることが多いんじゃないかと

675 名前:671 mailto:sage [2010/02/15(月) 20:25:39 ]
>651
問題をよく読んでいなかった、データ構造を組まなきゃいけないのね。
0点だわwww


676 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 22:13:02 ]
>>654
類似度は得点を正規化して内積を取ったものとしている
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10529.c

677 名前:676 mailto:sage [2010/02/15(月) 23:03:19 ]
>>676
一番近いものだけ分かればいいから qsort じゃなくてもよかった

678 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:25:17 ]
依頼者(今回は質問者かな?)のレベルに追いついたことはわかったw

679 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 01:41:40 ]
>>615
問題を解説してくれたまへ
ここまでで挫けた

ステップ1
double v(double x){
return 4*(pow(x, -12)-pow(x, -6));
}
v(x)==εn (但しεn=-0.75) となる二つの x を二分法で求めよ


ステップ2
ステップ1 で求めた xin xout を用いて次の積分を計算せよ
s(εn)=2*γ*∫sqrt(εn-v(x))dx


ステップ3
ステップ2 の結果を用いて n を求めよ


ステップ4
???

ステップ1〜4 を使って γ の値を変化させ…頑張れ

680 名前:デフォルトの名無しさん [2010/02/16(火) 01:59:58 ]
ちょっと関係ないかもしれないんだが、今の時期って大学とか休みだから、今ある質問って何の宿題?
長期休暇とかの?それとも高校のか?



681 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 03:16:24 ]
大学院の専門分野での研究課題や入試問題を貼ってて、その後何も反応が
無い依頼は釣りだと思って、スルーしてたんだけど(´・ω・`) チガウノカナ?

682 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 04:12:58 ]
>>681


683 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 05:08:42 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10530.zip
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] Visual C++ 2008
 [3.3] 言語: C++
[4] 期限: 2月17日まで
[5] その他の制限: 特になし

よろしくお願いします。

684 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:39:27 ]
>>681
研究室レベルのものはあったが(>>615) 入試はみかけない。

685 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:02:15 ]
実際に解く内容は簡単だけど
問題を理解するのが難しいw

686 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:57:46 ]
>>684
例えば >>554 とか、プログラム作成を除けば、東京大学大学院の
入試問題↓とほとんど同じだったりするからさ。
www.i.u-tokyo.ac.jp/edu/course/ci/pdf/2005_8_ci_istmajor_all.pdf

普通の回答依頼かとも思ったんだが、真面目に答えて後釣り宣言されるのも
アレだから、微妙に情報系を逸脱する宿題はスルーして様子を見てることにしてる

687 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 09:58:04 ]
>>684
>>615 は、基礎的な数値計算だろ。学部1年生レベル。

688 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 10:04:02 ]
数式こそ長くて複雑だが、やってることは方程式の解を求めることや数値積分だ。
2分法、セカント法、シンプソン公式を使えばいい。

689 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:48:36 ]
>>676
これは>654の求めてるものと違うんじゃないかな?
『使いまわしの効かない検索用情報』の収集を
フルスキャンで行っているので、力まかせの探索にしかなってないよね。


690 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 16:36:07 ]
>>689
一応正規化した段階の情報だけは使いまわせる



691 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:40:44 ]
>>654
>>676 の改造版
先に全ての生徒間の類似度を計算してみた

予め O(N^2) のコストがかかっているので、検索回数が N に比べて十分に多いときだけ有効
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10531.c

692 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:45:15 ]
データ数が増えた時のパフォーマンスの低下率
条件付きUPDATE処理に置ける実更新率
こういった観点からデータ構造に見直しが入る
やりかたは一つじゃなく、データの分布に
前提条件を置くことによって、相当のパフォーマンス
改善になるが、汎用性と信頼性は犠牲になる

693 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 19:02:05 ]
k-dimension tree の出番ですか。

694 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 20:36:27 ]
>>693
ある範囲内をすべて列挙するのは簡単そうだけど
ある場所の近所だけを調べるってのは簡単なの?

695 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 02:44:01 ]
C言語固有の問題では無さそう。
データベース板か数学板で聞いてからの
ほうが良さげ。てか依頼者はもう見てないのか?

696 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 03:38:52 ]
>>654
傾向の近さの指標として相関係数を使用。gccを使用しているので、VC++では改変が必要かも。
また高速化の余地は十分あると思います。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10532.zip

697 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 05:59:24 ]
こういう問題は、「相関度」は外部関数としてブラックボックス
として扱うんじゃね?

698 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 06:09:13 ]
相関度に最適なデータ構造の設計も課題なのだが。
そうだ、これもブラックボックスにしよう。

699 名前:デフォルトの名無しさん [2010/02/17(水) 06:34:49 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10533.txt

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (VC8)
 [3.3] 言語: (C++)
[4] 期限: ([2010年2月17日12:00まで]

非常に短い期間を設定していますがあくまで希望納期です


700 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 10:01:02 ]
>>699
無料デバッガ募集でつか?(・∀・)ニヤニヤ



701 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 10:04:06 ]
無料デバッグしてやるでつよ(・∀・)ニヤニヤ

m_SumList.AddTail((void*)&List1);

m_SumList.AddTailに渡すのは(void *)(CStringList **)&List1で本当にいいんでつか?

702 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 11:34:42 ]
>699
いくらでも生じる可能性はある

それにしてもC++で(void *)とか何考えているんだ

703 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:03:40 ]
funkてw

704 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:52:59 ]
>>697
そうだね。だが難しい。相関度に適当な仮定を入れないと
無理だろ
>>698は回答として完全にナンセンスだが、それ以前に
問題も曖昧過ぎかもね。

705 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:09:00 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10535.c
[3] 環境
 [3.1] OS: 問わず
 [3.2] Cがコンパイルできれば・・・
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限:左側の要素をしきい値としたクイックソートです.閾値と等しい場合は右側へ
お願いします

706 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:00:48 ]
>>697
この問題の場合は高速で処理できることも重視されてるようだから、
ブラックボックス化しても処理速度が同等以上ならそのほうが良いけれど、
そうでなければ、どちらがいいかは一概には言えないよ。

707 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:32:12 ]
>>705
今日迄というのはいくら何でも んG

708 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 16:28:57 ]
[1] 授業単元:
期末レポート
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10536.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
FreeBSD バージョンは知りません
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc バージョンは知りません
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2月末日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
C言語どころか、UNIXマシンの操作もおぼつきません。急ぎませんので
片付けて頂ければうれしいです

709 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 17:06:42 ]
>>708
int binarycopy(FILE *, FILE *);
int main(int argc, char **argv){
FILE *src, *dest;
if (argc != 3) return -1;
src = fopen(argv[1], "rb");
if(src == NULL) {
fprintf(stderr, "%s が開けない\n", argv[1]);
return -1;
}
dest = fopen(argv[2], "wb");
if (dest == NULL) {
fprintf(stderr, "%s が作成できない\n", argv[2]);
return -1;
}
if(!binarycopy(src, dest)) {
remove(argv[2]);
fprintf(stderr, "複製に失敗\n");
return -1;
}
fclose(src);fclose(dest);
return 0;
}

710 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 17:07:25 ]
>>708 続き。
int binarycopy(FILE *s, FILE *d) {
#define BUFFSIZE 256
char buff[BUFFSIZE], size = sizeof (char);
size_t n = 0, total = 0, buffsize = BUFFSIZE;
#undef BUFFSIZE
for (;;) {
n = fread(buff, size, buffsize, s);
n = fwrite(buff, size, n, d);
total += n;
// エラーが生じた場合や、end-of-file(ファイルの最後)に達した場合、
// 返り値は指定した個数よりも小さい値(またはゼロ)となる。
if (n == 0 || n < buffsize) break;
}
return total;
}



711 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:35:42 ]
>>699
いf(pぃst2){
POSITION pos2 = plist1->GetHeadPositon();
CString str = plist1->GetNext(pos2);


712 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:37:02 ]
>>711
pぃst2じゃねーや1だ

713 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:26:05 ]
HPはどのページも3クリック以内でたどり着けるのが良いとされています。
さて問題です。どのページからも、すべてのページへこの条件を満たすようにするには
各ページにリンクはいくつ必要でしょうか。
link(n)をページnのリンク数としたとき min { link(n) } を決定するという問題です。

714 名前:713 mailto:sage [2010/02/19(金) 15:27:42 ]
ページ数は、1000から1万の任意の値が与えられる物とします。

715 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:38:17 ]
min(Σlink(n))じゃなくて?
インデックスページを作り、
他のページはインデックスページへ1つのリンクを持てば
どのページへも2クリックで行けるから
min(link(n))はインデック以外のページすべて=1

716 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:43:44 ]
∩★テンプレに即していないんで★雑談扱いとさせて頂きます★∩

717 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:53:55 ]
min(max(link(n)))

718 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:59:21 ]
ページのリンクの最大数を、最も小さくするようにするってことでした。

719 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:03:43 ]
面白いけど奥深すぎ

720 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 17:16:00 ]
>>654
クラスタリング k-meansでググれ



721 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 01:10:58 ]
>>713
ページ数Nに対して 2√N くらいじゃないかね

戦略:
・全部のページを同じ大きさのm個のグループに分ける(各グループには N/m ページある)
・各グループにインデックスページを作り、
 グループ内の他の全てのページと相互リンクする
・各グループのインデックスページを全て相互リンクする
・任意の2ページ間は多くても
  自グループのインデックス→目標グループのインデックス→目標ページ
 の3クリックで移動できる

一番リンクの数が多いのは各グループのインデックスページで、
 max(link(n)) = (インデックス間の全結合) + (グループ内のリンク) ≒ m + N/m
これが最小になるのは m=√N のときで min(max(link(n))) ≒ 2√N

722 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 01:29:14 ]
>>721を書いてから半分にできることに気づいた

戦略:
・全部のページを同じ大きさのm個のグループに分ける
・グループ内のページは全て相互リンクする
・グループ内の(m-1)個のページにそれぞれ担当のグループを割り当て、
 グループ間の担当のページ同士を相互リンクする
・任意の2ページ間は多くても
  自グループの担当ページ→目標グループの担当ページ→目標ページ
 の3クリックで移動できる

このとき、リンクの数が一番多いのはグループ間を繋ぐ担当のページで、
 max(link(n)) = (グループ内の全結合) + (担当グループへのリンク) = N/m-1 + 1
最も効率が良くなるのは、グループ内の全てのページが他のグループの担当ページになるとき、
つまり N/m = m のときで、そのときm = √Nであって、 min(max(link(n))) = √N。

723 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 01:41:52 ]
独り言を書くのは俺も含めて勝手だが...
>一番リンクの数が多いのは...
と勝手に決めて、それが最小になるのは...
とする論法は頂けませんなw
希望的見積もりというのなら分かるが...

このスレで常連回答者やってる人どんな質問にも
答えがあって、答えなければいけないんだと
思い込む空気が醸成されておりそれに毒されてしまっ
てるかもしれないことに常に気をつけなければならないね。
プログラミングの場合は、数学の問題と違って
必ずしも正解があるとは限らない対象も扱わざるを得ない
場合が多くて大変だからこそ...

724 名前:722 mailto:sage [2010/02/20(土) 01:51:03 ]
>>723
>>一番リンクの数が多いのは...
>と勝手に決めて、それが最小になるのは...
>とする論法は頂けませんなw
ごめんなさいごめんなさい。>>721の勢いで適当なこと書きました。
ちゃんと計算したら max(link(n)) ≒ N/m + m/(N/m) で、
min(max(link(n)) ≒ 1.89*(N)^(1/3) くらいでしたorz

というかC/C++の宿題じゃないな、その点についても謝る

725 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 01:56:24 ]
論点がずれてた件…
「この戦略のもと」ってちゃんと書かないといけないな
採った戦略が厳密に最適かは分からんが、
それでも準最適な戦略を考え出すのがプログラムに必要な能力

726 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 02:03:49 ]
>>713
最適解かどうかは不明だけど、実現可能な解
#include<stdio.h>
#include<stdlib.h>

int max_min(long n)
{
long i, j;

if(n==1) return 0;
if(n<=4) return 1;
for(i=0;;i++)
{
for(j=1;j<=i;j++)
{
if(j*(i-j+1)*(i+1)+j>=n) return i;
}
}
return -1;
}

int main(int argc, char *argv[])
{
int n=1000;

if(argc==2) n=atoi(argv[1]);
printf("%d\n", max_min(n));

return 0;
}

727 名前:726 mailto:sage [2010/02/20(土) 02:32:46 ]
>>726
間違ってたorz

728 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 02:53:03 ]
頭の中のハイパーリンクも含めたらそうなるなw

729 名前:726 mailto:sage [2010/02/20(土) 03:03:20 ]
>>713
これで実現可能になった…はず
#include<stdio.h>
#include<stdlib.h>

int max_min(long n){
long i, j;

if(n==1) return 0;
if(n<=4) return 1;
if(n<=7) return 2;
for(i=2;;i++){
for(j=2;j<=i;j++){
if(j*(i-j+1)*(i-j+1)+j>=n){
return i;
}
}
}
return -1;
}

int main(int argc, char *argv[]){
int n=1000;

if(argc==2) n=atoi(argv[1]);
printf("%d\n", max_min(n));

return 0;
}

730 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 03:23:33 ]
正解と汚解ってかW
>>555に対する>>570とかの解答とかな



731 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 04:06:13 ]
>>615
codepad.org/R1c1NLXp
γ=100を計算するところまで。解析解との比較は面倒だからやってない。
x_in、x_outが単調に増減してるからそんなに間違ってないはず。
γ変えて議論するのは自分でやってくれ。γは128行目

732 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 04:54:56 ]
スレ違いだけど解きたくなっちゃうのは仕方ないよな

733 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 05:01:57 ]
解くべきはまずはその問題の出所。というよりも問題意識に共感できること。
そして実は対象に問題はなく真の問題は解きたいと思う汝自身に発している
かも知れないということも考えると間違いは少ない。

以上チラ裏

734 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 06:13:09 ]
>>713
pc12.2ch.net/test/read.cgi/tech/1261443439/740

735 名前: ◆/91kCCQXBo mailto:sage [2010/02/20(土) 10:52:17 ]
pc12.2ch.net/test/read.cgi/tech/1261443439/739

#include<stdio.h>
int main(void){
  int n,m,i,j;
  float ans;
  /* 解答 */
  printf("ページ数:");
  scanf("%d%*c", &n); m=n;
  ans = (n+1)/3.0;
  if((n=ans) != n) n++;
  printf("\n%d[page] %d[link/page]", m, n);
  /* 結果 */
  for(i=1;i<=m;i++){
    printf("\n%d:",i);
    for(j=0;j<n;j++){
      printf("%d ", (i + j*(n-1))%m+1 );
    }
  }
  puts(""); return 0;
}

736 名前: ◆/91kCCQXBo mailto:sage [2010/02/20(土) 11:05:35 ]
なんか、今見たら違ってる。

737 名前: ◆/91kCCQXBo mailto:sage [2010/02/20(土) 13:18:05 ]
もっと減らせそう
#include<stdio.h>
int main(void){
  int n,m,i,j;
  float ans;
  /* 解答 */
  printf("ページ数:");
  scanf("%d%*c", &n); m=n;
  ans = (n+1)/3.0;
  if((n=ans) != n) n++;
  printf("\n%d[page] %d[link/page]", m, n);
  /* 結果 */
  for(i=1;i<=m;i++){
    printf("\n%d:",i);
    for(j=0;j<n;j++){
      printf("%d ", (i + j*3)%m+1 );
    }
  }
  puts(""); return 0;
}

738 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 14:17:55 ]
>>737
>>722 のアルゴリズムの場合
ページ数 20 のときリンクの最大数は 4
これより減ることはあっても増えるのは無しだろう
1 : 2 3 4 5
2 : 1 6 7 8
3 : 1 2 9 10
4 : 1 2 11 12
5 : 1 2 13 14
6 : 1 2 15 16
7 : 1 2 17 18
8 : 1 2 19 20
9 : 1 2
10 : 1 2
11 : 1 2
12 : 1 2
13 : 1 2
14 : 1 2
15 : 1 2
16 : 1 2
17 : 1 2
18 : 1 2
19 : 1 2
20 : 1 2

739 名前:738 mailto:sage [2010/02/20(土) 14:50:48 ]
>>722 のアルゴリズムじゃねーw

740 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:27:37 ]
実際にリンク組んで確かめるプログラムはないんですか。



741 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:30:28 ]
ていうか、あってるかどうか確認するプログラムって、オーダはどうなる?
ページ数をN、最大クリック数をCとしたら、NCでできるのか?

742 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 00:10:35 ]
U個のユニットに分け、ユニットをそれぞれG個のグループに分ける。
各々のグループにはn枚目のページがあるとする。
また、n >= Uという条件をつける。

このとき、総ページ数N = U*G*n

まず、グループ内のn枚のページで、相互リンクを貼る。
相互リンクの数は (n-1)個

次に、グループ内のm枚目のページにm番目のユニットの各々のグループ内のページ(どれでもいい)各1枚へのリンクを貼る。
グループ外リンクの数は、G個

こうすると、(ユニット, グループ, ページ) = (u1, g1, p1)から(u2, g2, p2)へ行くのに、最大でも
(u1, g1, p1) -> (u1, g1, u2) -> (u2, g2, ??) -> (u2, g2, p2)の3クリックで行ける。

また、このとき合計リンク数はG + (n-1)個

G + (n-1)が最小となり、N = U*G*n, n >= Uを満たす数字を考えると
・まず、Uを増やして数を稼ぎたいので、U=n
・よって、N=G*n^2を満たし、G+(n-1)が最小となるn, Gを求める
・計算の結果、それはn^3=2N, G=n/2のとき

743 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 00:19:18 ]
例えば、64ページあるとき、
Unit 0{
 Group 0{ Page 0 = [(0,0,1), (0,0,2),(0,0,3),(0,1,0)], Page 1 = [(0,0,1), (0,0,2),(0,0,3),(1,0,0),(1,1,0)], ...}
 Group 1{ Page 0 = [(0,1,1), (0,1,2),(0,1,3),(0,0,0)], Page 1 = [(0,1,1), (0,1,2),(0,1,3),(1,0,0),(1,1,0)], ...}
}
Unit 1{
 Group 0{ Page 0 = [(1,0,1), (1,0,2),(1,0,3),(0,0,0),(0,1,0)], Page 1 = [(1,0,1), (1,0,2),(1,0,3),(1,1,0)], ...}
 Group 1{ Page 0 = [(1,1,1), (1,1,2),(1,1,3),(0,0,0),(0,1,0)], Page 1 = [(1,1,1), (1,1,2),(1,1,3),(1,0,0)], ...}
}
...
になって、グループ数=2, ユニット数=ページ数=4で、最大リンク数は5


744 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 00:57:26 ]
ヒューリスティックアプローチを探したいものだが
C/C++言語ではやめたほうがいいかも
VM上で実行できる処理系でないと
カーネルコードが書ける処理系ではお勧め出来ない

745 名前:738 mailto:sage [2010/02/21(日) 02:02:28 ]
>>738 のアルゴリズムで解いた結果は
総ページ数 1000 のとき、最大リンク数 18
総ページ数 10000 のとき、最大リンク数 40
合ってるかどうか未確認

詳細内容 50kB
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10538.lzh

746 名前:デフォルトの名無しさん [2010/02/21(日) 08:46:43 ]
[1] 授業単元:
UNIX C Programming
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10541.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Mac OSX 10.5.8
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 4.0.1
 [3.3] 言語: どちらでも可
[4] 期限: 2010年2月24日夜7時まで
[5] その他の制限:
可能であれば強引な方法でも構いません。
上記リンクはCで書いてありますが、C++でも構いません。
何卒よろしくお願いします。

747 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 15:06:11 ]
>>713です。みなさんサンクスです。動かして確認してみます。


748 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:08:02 ]
>>745
1000個のほうはあってたよ。
10000個のほうは、おれの作った糞ツールでは、検証不能w
よかったらソースうpしてくれないか?

ちなみに>747とは別人です。


749 名前:738 mailto:sage [2010/02/22(月) 00:03:29 ]
>>713
>>748
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10543.c

6割近く何も指してないのが気に入らない

750 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 09:03:49 ]
>749
ありがと。

ここにあがってる回答はどれも不正解だった。
自分も正解はわからないけど、手計算で次の最適解を発見した。

ページ数 8 の答えは 2
ページ数 12 の答えは 3

ページ数 8 の最適解の例
1: 2 3
2: 4 5
3: 6 7
4: 8 1
5: 2 3
6: 4 5
7: 6 7
8: 8 1




751 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:46:32 ]
floor(n^(1/3))でいけそうなものだけどだめなのかね

752 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:48:17 ]
ceilだねごめん。

753 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:59:14 ]
リンク3、リンク4で賄える最大ページ数を求める方が良いと思う。
それが決まればその表引きで求まる。

754 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:17:41 ]
どの2点とっても、3つ以内の矢印でつながってるってことだろ。
総当たりやると矢印生成でかなり時間かかるな。
それを全ての2点でつながるかチェック。このチェックは時間かからないが、塵も積もれば山となる。

755 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:24:23 ]
同じ場所へ複数リンクが付くと無駄なので、最大リンク3なら
初めの方はリンクがかぶらないように配置していいはずだな。
リンク3なら、総数が3*3*3=27より上には出来ないから、この範囲で増減しながらしらみつぶしでやるか。

1: 2 3 4
2: 5 6 7
3: 8 9 10
4: 11 12 13


756 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:39:56 ]
このスレでちょくちょく出る宿題のテーマの道具
使えば最適解とは違うかも知れないがそれに肉薄
するのは簡単に出せるだろ?
但しヒューリスティックス系はC/C++では
書かないほうがいい。個人でやるのは止められないが
ネット公開するのはやめたほうがいい。今時。

757 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:42:47 ]
1000は18で出来るらしいが17以下の解見つけた人

758 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:25:32 ]
>>746
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10545.txt
汚くなってしまいましたが、どうぞ。

759 名前:548 mailto:sage [2010/02/22(月) 16:53:39 ]
>>579
>>580
無事提出できました。
ありがとうございました。最初は
どちらのほうを参考にさせてもらえ
ばよいのか悩みましたが、結局
友達と相談しながらやったらみなさんと
同じ結果が出るようになったので
そちらをだしました。

760 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:13:50 ]
>>757
1: 1 2 3 4 5 6 7 8 9 10
2: 11 12 13 14 15 16 17 18 19 20
以下略

金太郎飴方式恐るべし



761 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:36:20 ]
金太郎飴方式 yowa

762 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:38:26 ]
>>760
どこが金太郎飴かわからんけど、その調子でもう少し書いてみようか

763 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:46:01 ]
金太郎飴方式 towa?

764 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:49:27 ]
ろだで10539で質問した者ですが、また質問です。入門書などによくある*印でピラミッドを造るプログラムを作ったのですが、10行目と11行目の部分は削除しても同じように動作しました。
なぜでしょうか?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10546.c

765 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:54:01 ]
>>764
バイナリが更新されていないからじゃないかな

766 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:57:07 ]
>>765
どういう意味なのでしょうか?

767 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:57:42 ]
>>762
問題によっては最適解近辺は金太郎飴の断面みたい
な状況であることを原理とした探索法のことではな
いかと想像

768 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:03:46 ]
>>766
修正前の実行ファイルを動かしたまま ソース修正
→ コンパイル
→ リンク (で、実行ファイルが上書きできなくて エラー)
→ 再実行 →あれ? 古いままの挙動じゃん
→ 実行ファイルのタイムスタンプ確認 アチャー

769 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:06:04 ]
>>768
試してみましたが、それはないと思います。実際自分が作ったものは10.11行があっても動きますが、実際本に書いてあるのは
それの10,11行目がないものが書いてありました。

770 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:08:33 ]
>>768
申し訳ありません。もう一度試してみたらうまくいきました。どうやらその行をctrl+xで切り取ったあと再び貼り付けてしまったようでした。
本当に申し訳ありませんでした。



771 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:09:20 ]
俺試してみたけど削除したらピラミッドなんて出てこんよ

772 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:12:09 ]
>>764
こちらで試したところでは、10行目、11行目を省くとピラミッドにはなりませんでした。

段数を入力してください。(0から40まで)
5
*
*
*
*
*


773 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:17:30 ]
>>770
>うまくいきましたというのは768さんのいう通りということです。
すいません。

774 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:22:32 ]
つまり?

775 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:24:16 ]
>>774
?

776 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:24:51 ]
>763
どこを切り取ってみても、数字がおなじ規則で並んでいる。

>760 の 1 の例だと

1 クリック目   9 種類のページにアクセス可能
2 クリック目   9 * 10 種類のページにアクセス可能
3 クリック目   9 * 10 * 10 種類のページにアクセス可能

もともといたページを含めて、ちょうど千種類のページにアクセスできる。

これは、どこを切り取ってみても、同じように数字が並んでいるので、
1 以外の数字についてもあてはまる。
規則的にならんでいるので、検証するにしても、
1 だけ検証できれば全部OKみたいな感じ。
1クリック目の選択肢が 9 種類しかなくて、n^3 の爆発力をかなり損しているけど
ぎりぎり届いてた。n^3 の爆発力が重要な問題だった。



777 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:25:41 ]
数学的なことはわからんけど、こんな法則をみつけた。

a = pow(N, 1/3)    /* ページ数の3乗根をとる */
min = floor(a)      /* 天井とそこをとる */
max = ceil(a)
min = pow(min, 3)    /* 3乗して元に戻す */
max = pow(max, 3)
if(min < N && N <= max) {  /* レンジに収まってれば */
printf("答えは %f だよ", ceil(a))
}
else {
printf("答えは %f だよ", floor(a))
}



778 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:37:05 ]
>>750のように一つずつずらしていけば、3クリック以内で到達できるようにできるってことか。

779 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:44:05 ]
1000なら10個でいいってこと?
1000から999へいけるか。
1000 -> 1(2-11) -> 11(102-110) -> 110で最大到達地点は110では。

780 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:46:45 ]
間違えた。一手目が1だけではない。再考する。



781 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:56:59 ]
1から初めて全部いけそうだな。他の数字も純粋しているだけだから同様ってことか。

1 2- 
2 12-
3 22-
・・・・
10 92-
11 102-
12 112-
・・・・
100 992- 
・・・・
998 972-
999 982-
1000 992-


782 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:59:44 ]
>>776
9通りがよくわからなかったが今わかった。1は自分自身に向かわせてるからね。
2から初めて他所で自分自身に向かわなければこっちの方が効率良いはず。

783 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:02:36 ]
一番重要なことは、金太郎飴方式だと、
リンク先のユニーク性を簡単に確保できることだね。

N^3 + N^2 + N + 1 >= N

この付近が最適解だってのはわかってたけど、
ユニーク性の確保が悩みの種だったし。
1クリック目のとび先と、2クリック目の飛び先がかぶってたら
大きなロスになるし。


784 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:52:22 ]
max(links(n)) * Σlinks(n)
これで評価してみれば?

785 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:16:13 ]
N=8の時の金太郎飴状態なリンク例
1:4 7
2:1 7
3:1 6
4:7
5:1 6
6:1 8
7:5 8
8:2 3






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

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

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