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


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

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



1 名前:デフォルトの名無しさん [2008/10/01(水) 07:28:51 BE:151474728-PLT(18888)]
あなたが解けない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++の宿題を片付けます 115代目
pc11.2ch.net/test/read.cgi/tech/1217741118/

401 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:50:56 ]
include <stdio.h>
int main()
{
int n, sum = 0;
for (n = 1; 4973 / (1 << (n - 1)) != 1; ++n) {
sum += 4973 / (1 << (n - 1));
}
sum += 1;
printf("%d : %d", n, sum);
return 0;
}


402 名前:401 mailto:sage [2008/10/17(金) 01:51:44 ]
すいません間違えました

403 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:54:33 ]
そんなすっきりなプログラムが!!

ありがとうございます!!

404 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:56:50 ]
>>402
ぇ?答えの4956もでましたけど・・・

405 名前:404 mailto:sage [2008/10/17(金) 01:58:31 ]
あ、>>400の方と>>401の方を読み間違えた自分が恥ずかしい…

406 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 03:26:13 ]
>>392
if( tmp * (a * small_x[i] - small_y[i]) <= 0.0 )

if( (tmp *= (a * small_x[i] - small_y[i])) <= 0.0 )
な気がする

407 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 04:04:02 ]
>>380

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7794.txt

全BMPフォーマット対応は面倒だから、条件付き、
良く読んで理解して使用のこと

408 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 04:51:51 ]
>>407 ん〜〜〜

409 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 07:23:29 ]
[1]授業 c
[2] 問題: 1単語を入力し、その単語のスペルを判定する。その判定を Ctrl-D を入力するまで続ける。判定は、ファイル ``eng.txt'' にその単語が存在する場合に限り、スペルが正しいと判定する。
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限 10/19 16:00

関数は何を使ってもいいです。
何日も考えたのですがぜんぜんわかりませんでした。
どなたかお願いします



410 名前:395 mailto:sage [2008/10/17(金) 07:26:17 ]
すみません
問題文2問あるといっておいて4問ありました
B1とB2のみで構いません

多少遅れても大丈夫なので引き続きよろしくお願いいたします

411 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 07:40:04 ]
>>395
UDPサーバ:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7797.txt
UDPクライアント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7798.txt

412 名前:410 mailto:sage [2008/10/17(金) 07:48:20 ]
>>410ちょっと訂正
UDPサーバ:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7799.txt
UDPクライアント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7798.txt

413 名前:396 mailto:sage [2008/10/17(金) 07:59:31 ]
>>397
ありがとうございました

414 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 08:29:04 ]
400と401の両方とも、条件部とループ内部で同じ計算をしてるのが無駄

415 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 10:31:23 ]
>>412
ありがとうございました

416 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 11:13:35 ]
>>411
そんなの最適化されるんじゃないの?

417 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 11:15:12 ]
>>411じゃなくて>>414

418 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 15:40:59 ]
>>409
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7801.c

419 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 15:51:15 ]
[1]C言語実習
[2]問題文

以下のコードは、2つのプログラム(同一動作)のコードを
まとめたものです。(各ソースにおいて、行の順番は変えていません)
このコードを2つのプログラムに分解して、それぞれコンパイルが
通り、同一の動作をするようにして下さい。
また処理内容についても簡単にコメントして下さい。
コード
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7802.c[3] Linux/Gnu-C4.0/C
[4]無制限だそうです。難問だそうです。よろしくお願い致します。



420 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 15:55:13 ]
>>416
よく知らないんだが、どのコンパイラでどのオプションつけるとこれが最適化されるの?

421 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 16:14:39 ]
>>419
#include <stdio.h>
int is_prime(int p){
int i;
if(p<=1)
return 0;
if((p==2)||(p==3))
return 1;
if((p%2==0)||(p%3==0))
return 0;
for(i=3;i*i<=p;i+=2)
if(p % i==0)
return 0;
return 1;
}
int main(void){
int i,c=0;
for(i=1;i<=1000000;i++){
if(is_prime(i))
c++;
if(i%100==0)
printf("%d %d\n",i,c);
}
return 0;
}
素数の個数を求めるプログラム
残りはエラトステネスの篩だな


422 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 17:57:37 ]
>>420
僕もよく知らない、ってかよく知らないのに突っ込まないでください><
基本的に、共通部分式の削除が行われるんじゃないですか?

423 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 18:25:25 ]
418さんありがとうございました
感謝です

424 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:01:06 ]
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク): BMI値を判定するプログラムを作成する
               入力:身長t(m),体重w(kg)
出力:判定結果{やせ,標準,肥満}
               身長をt(m),体重をw(kg)としたとき,
               BMI=w/tの二乗
               
               BMI値が18.5未満⇒やせ
               BMI値が18.5以上かつ25.0未満⇒標準
               BMI値が25.0以上⇒肥満

               #include <stdio.h>
int main(void) {
float t, w;
printf("t = "); scanf("%f", &t);
printf("w = "); scanf("%f", &w);
????????????????????????????????←この部分が解りません。
               }
[3] 環境 Visual C++
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
 [3.3] 言語: C言語
[4] 期限: 2008年10月20日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数,条件分岐(if文,if-else文)は習いました。
  お願い致します。

425 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:06:21 ]
int main(void) {
    float t, w, bmi;
    printf("t = "); scanf("%f", &t);
    printf("w = "); scanf("%f", &w);
    bmi = w / t / t;
    if (bmi < 18.5) printf("やせ\n");
    else if (bmi < 25.0) printf("標準\n");
    else printf("肥満\n");
    return 0;
}

426 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:55:26 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7788.txt

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 10/18

すいません。なかなかうまくいきませんよろしくお願いします

427 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:03:49 ]
いくつかレスをもらっても何も進歩してないことにがっかりした

428 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:29:19 ]
>>426
ちゃんとみてないけど、
if(*(s+i)==' '){
の行を
if(*(s+i)==' ' || *(s+i)=='?' || *(s+i)=='!' …){
ってやっていけばいいんじゃね

429 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:52:12 ]
ということを>>336-337が。



430 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 22:13:26 ]
>>426
#include<stdio.h>
#include<string.h>
#define MAX 256
int main(void){
int len=0, max=0, moji;
char s[MAX+1], l[MAX+1]="";
while((moji=getchar())!=EOF){
if(strchr(" \t\n?!.,()", moji) || len>=MAX){
if(len>max){
strcpy(l, s);
max=len;
}
len=0;
}else{
s[len++]=moji;
s[len]='\0';
}
}
printf("The longest word is \"%s\"\n", l);
return 0;
}

431 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 23:41:45 ]
個人的にはif elseよりswitchの方が好きだ。

432 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 00:09:20 ]
個人的にはふさわしい方を使うのが好きだ。

433 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 00:15:54 ]
>>390
二分木の方だけやってみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7805.txt

434 名前:デフォルトの名無しさん [2008/10/18(土) 10:37:12 ]


[1] 授業単元:先輩の課題
[2] 問題文(含コード&リンク):
5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7



みたいなtxtファイルがあるとします。

これを行ごとに呼んで double data[4]に順番にいれて、関数にわたす。
そして次の行をまた同じ配列data[4]にいれて、関数に渡すっていう処理するプログラムを書け

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限: なし

435 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:18:31 ]
>>434
意味不明
文章を見直せ

436 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:25:05 ]
[1] 授業単元:先輩の課題
[2] 問題文(含コード&リンク):
5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7



みたいなtxtファイルがあるとします。

これを行ごとに呼んで double data[4]に順番にいれて、関数にわたす。
そして次の行をまた同じ配列data[4]にいれて、関数に渡すっていう処理を
ファイルの終わりまで繰り返すプログラムを書け

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限: なし

これでわかりますかね。すいません

437 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:33:08 ]
>>436
#include <stdlib.h>
#include <stdio.h>
void f(double *d)
{
}
int main(int argc, char *argv[])
{
FILE *fp;
double data[4];
if (argc != 2) return 1;
if (!(fp = fopen(argv[1], "r"))) {
return 1;
}

while (fscanf(fp, " %lf %lf %lf %lf",
&data[0], &data[1], &data[2], &data[3]) == 4) {
f(data);
}
return 0;
}


438 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:34:52 ]
>>437
ありがとうございます。
列が100ぐらいあるときは%lfを百個打つのはめんどくさいんですが・・・
なんとかなりませんか?

439 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:44:10 ]
>>438
Ctrl+Vを99回押すだけだろ



440 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:44:49 ]
>>439
そうなんですが・・・ソースが汚いのかなぁとおもいまして・・・

441 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:45:04 ]
9回コピーして10個まとめたのをあと9回コピー

442 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:51:09 ]
>>440
見た目の問題かい
ループで回したらいいじゃん
while (!feof(fp))
{
for (i = 0; i < 100; i++)
{
if (fscanf(fp, "%lf", &data[i]) != 1)
{
printf("error");
return 0;
}
}
f(data);
}


443 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:58:08 ]
>>442
どうもありがとうございました

444 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 13:01:02 ]
もうひとつ質問させていただきます。

入力ファイルの途中に

5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7

52.3 121.1 123.0 56.8
45.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7

改行で空いてる行があったとしても正常に動きますか?ためしたところ問題ないようにみえましたが・・・

445 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 13:02:07 ]
>>444
正常の定義は?
エラーを出して止まるのが正常なのか
書式を無視するのが正常なのか

446 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 13:07:44 ]
>>445
空白の行を無視して次の行から配列に代入する処理というのが正常です

447 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 19:03:24 ]
[1]授業 c言語
[2] 問題:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7807.txt
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限 10/20

448 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 19:56:05 ]
&s[i].id
s[i].name
&s[i].score[j]

449 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:10:12 ]
[1] 授業単元:プログラミング基礎
[2] 問題文
体重と身長をキーボードから入力し、BMIを計算して出力するプログラムを書け。
BMIの計算はユーザ定義の関数を用いて行い、データの型にはdoubleを用いよ。
ただし、BMIの計算式は以下の通り。
BMI=体重(kg)/身長(m)^2   例:65kg/(1.70m * 1.70m) =22.49

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月21日まで
[5] その他の制限: かなり初歩の段階みたいです。

よろしくお願いします。



450 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:27:55 ]
>>449
>>424-425

451 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:31:24 ]
>>449
#include<stdio.h>
double bmi(double weight, double height)
{
return weight / (height * height);
}
int main()
{
double weight, height;
printf("体重(kg)?");
scanf("%lf", &weight);
printf("身長(m)?");
scanf("%lf", &height);
printf("BMI=%g\n", bmi(weight, height));
return 0;
}

452 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:56:20 ]
>>450>>451
すいません。説明不足でしたがelseやifなんかはまだ習ってないくらい初歩なので
>>424-425はよくわからないんです。
お早いレスで助かりました。ありがとうございます。

453 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 02:08:14 ]
>>425
こんなに早くやって下さり、本当に有難う御座いました。
助かりました。

454 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 05:04:55 ]
>>453
elseやifについてどう思うかを>>452に伝えてやってくれまいか

455 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 13:54:08 ]
[1] 授業単元:プログラミング
[2] 問題文:
"A>B"と入力すると"AはBより大きい"のように、不等式を文章に変換するプログラムを作成せよ。また、入力データと実行結果は以下の通りとし、変換された文章をテキストファイルに順番に出力すること。

実行結果
データ1:A>B
データ2:B<C
データ3:A<C
○○○.txtに出力しました

○○○.txt
AはBより大きい
BはCより小さい
AはCより小さい

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/21
[5] その他の制限:可能な限り初歩的なものでお願いします

456 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 14:38:08 ]
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fpr, *fpw;
char s1[1000], s2[1000], c;
if (argc != 3) { fprintf(stderr, "引数にこでたのむ\n"); return 1; }
if (!(fpr = fopen(argv[1], "r"))) {fprintf(stderr, "ファイルが\n"); return 1; }
if (!(fpw = fopen(argv[2], "w"))) {fprintf(stderr, "ファイルが\n"); return 1; }
while (fscanf(fpr, " %[^<> ] %c%s", s1, &c, s2) == 3) {
switch (c) {
case '<':
fprintf(fpw,"%sは%sより小さい\n", s1, s2);
break;
case '>':
fprintf(fpw,"%sは%sより大きい\n", s1, s2);
break;
default:
fprintf(stderr, "なかみが\n"); return 1;
}
}
fclose(fpr);
fclose(fpw);
return 0;
}


457 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 15:42:56 ]
[1]授業 c言語
[2] 問題:
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7807.txt
[3] 環境
 3.1 OS:linux
 3.2 gcc
 3.3 言語:C
[4] 期限 10/20
 
  すいません、よろしくお願いします。

458 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 15:48:02 ]
>>447
>>448


459 名前:デフォルトの名無しさん [2008/10/19(日) 16:04:58 ]
>>457
まず、リスト@はmain関数の外で定義な。中でもいいけど、個人的には外の方が分かりやすい。
 
で、○○○は上から順に
&s[i].id
s[i].name
&s[i].score[j]

あんまり偉そうなこといいたくないが、これって構造体の基本問題だろ??
できるだけ自分で解けるようにしないと後々、辛い目にあうぞ。



460 名前:457 mailto:sage [2008/10/19(日) 17:07:53 ]
>>459
ウザいです。
偉そうな口を聞いて欲しくないです。

461 名前:デフォルトの名無しさん [2008/10/19(日) 17:20:54 ]
>>460
本当のことだろーが
構造体の基礎の基礎も出来てないやつが喚くな餓鬼め

462 名前:457 mailto:sage [2008/10/19(日) 17:23:18 ]
>>461
スレ違いです。出て行ってください。

463 名前:457 mailto:sage [2008/10/19(日) 17:25:13 ]
そういうのは止めてください
>>458
どうもすいませんでした
>>459
ありがとうございます


464 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 18:22:51 ]
>>457
>>1
> なりすましを防ぐため、トリップを使ってください。

465 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 19:44:19 ]
ワロタ

466 名前: ◆iTaRIJflUs mailto:sage [2008/10/20(月) 00:09:33 ]
[1] 授業単元:C言語プログラミング
[2] 問題文
<その1>
以下のようなプログラムを作成しなさい.

2×10の2次元配列を定義し、1行目の配列([0][0〜9])に1から10までの数字を格
納し、2行目の配列([1][0〜9])に2の倍数を2から20まで格納し、配列に格納した
数字を画面出力するプログラム。


<その2>
以下のようなプログラムを作りなさい

10人の学生の成績が以下のようになっている。
int score[]={90,28,35,80,72,55,76,90,96,42}
このとき、0から9までの学生の偏差値を計算せよ。

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月21日朝9時まで
[5] その他の制限: まだまだ初歩の段階です。

どなたかお願いします。

467 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 01:52:12 ]
>>466
int num[2][10];
int i, j;
for( i = 0; i < 2; i++ ) {
 for( j = 0; j < 10; j++ ) {
  num[i][j] = (j + 1) * (i + 1); /* (1〜10) × ( 1 or 2) */
  printf( "%2d ", num[i][j]);
 }
 printf("\n");
}


468 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 02:14:52 ]
>>466 その2
#include <stdio.h>
#include <math.h>

int main(void)
{
int score[]={90, 28, 35, 80, 72, 55, 76, 90, 96, 42};
int i, n = sizeof(score) / sizeof(score[0]);
double sum = 0., sqsum = 0., mean;

for (i = 0; i < n; i++) {
sum += score[i];
sqsum += score[i] * score[i];
}
mean = sum / n;

printf("標準偏差 = %f\n", sqrt(fabs(sqsum / n - mean * mean)));

return 0;
}

469 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 08:39:37 ]
[1] 授業単元:プログラミング
[2] 問題文:x=1y=2 が関数swapをもちいてx=2、y=1となる。関数swapを呼び出す前後のx,yのアドレスを表示し、アドレスが渡されていることをしめせ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:visual2005 c
 [3.3] 言語:C
[4] 期限:10/23
お願いします





470 名前:デフォルトの名無しさん [2008/10/20(月) 08:44:26 ]
【質問テンプレ】
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
前もって用意された暗号化された文のテキストファイルと暗号化されていない文のテキストファイルがあります。
暗号化されたテキストファイルの始めの3文字はXXXとなっています。
プログラムは最初の3文字をよんで、XXXだったらそのファイルを解読して新たなファイルに保存、
XXXじゃなかったらそのファイルを暗号化して新たなファイルに保存しなさい。
尚、テキストファイルが1000文字以上だったらexitすること。
(暗号はa→c,b→dのようなshift2です。)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: Dev-C++
 [3.3] 言語: C++
[4] 期限: 今日中
どうやってファイルの最初の3文字を判断するのかがまず分かりません..。
どなたか教えて下さい。

471 名前:デフォルトの名無しさん [2008/10/20(月) 11:33:38 ]
[1] 授業単元:プログラミングC++
[2] 問題文:学籍番号、名前、姓、が記入されたリストを入力し、これを名前、姓、学籍番号の順に出力するC++ プログラムを書き、正しく動くことを確かめよ。
動作確認のためには、「実行ファイル < データリスト」のようにデータファイルを作り、コマンドラインでリダイレクションによりデータ入力せよ。
s10000001 Taro Aizu
s10000002 Jiro Aizu
s10000003 Nuri Aizu
s10000004 Taro Kin
s10000005 Atami Bandai
s10000006 Kogen Bandai
s10000007 Choucreme Hirota
s10000008 Kitakata Ramen
s10000009 Beko Aka
s10000010 Jo Tsuruga
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語:C++
[4] 期限: 2008年10月23日00:00まで
[5] その他の制限:特になし

472 名前:デフォルトの名無しさん [2008/10/20(月) 12:15:46 ]
>>471の補足ですが、ループを使うのが条件です

473 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 14:10:40 ]
>>470
1000文字未満だったらfreadでchar[1000]に読み込んではじめの三文字見ればよくね?

474 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 18:10:38 ]
授業単元: C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7810.txt 
条件は関数 void sort3 の引数は3つの int 型の値であるが,これをポインタ変数を受け取る関数に書き換える.交換の作業はすべて関数内で処理し,main 関数では交換作業を行わないものとする

[3] 環境
 [3.1] OS: Windows/Linux
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2008年10月23日まで




475 名前:デフォルトの名無しさん [2008/10/20(月) 18:33:20 ]
[1] 授業単元:プログラミング
[2] 問題文:
Newton--Raphson法を用いて
X*X*X-7X*X+16X-10=0
の解を求めよ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/24
[5] その他の制限:初心者です。なるべく基本的な構造でお願いします。

476 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 18:48:16 ]
>>474
void sort3(int *x, int *y, int *z)
{
int tmp;

if (*y < *x) { tmp = *x; *x = *y; *y = tmp; }
if (*z < *y) { tmp = *y; *y = *z; *z = tmp; }
if (*y < *x) { tmp = *x; *x = *y; *y = tmp; }
}

477 名前:デフォルトの名無しさん [2008/10/20(月) 19:07:40 ]
#define GOSA 0.00001
#define F(X) (X*X*X-7*X*X+16*X-10)
#define dF(X) (3*X*X-14*X+16)

int main(){
double x=10,y;

while(1){
printf("計算経過 %f\n",x);
y=F(x);
if(y>-GOSA)if(y<GOSA)break;
x -= y/dF(x); }
}

478 名前:デフォルトの名無しさん [2008/10/20(月) 19:22:25 ]
#define GOSA 0.00001
#define F(X) (X*X*X-7*X*X+16*X-10)
#define dF(X) (3*X*X-14*X+16)

int main(){
double x=10,y;
do{
x -= y/dF(x);
printf("計算経過 %f\n",x);
y=F(x);
}while(y<-GOSA || y>GOSA);
}

479 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 23:25:55 ]
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7806.txt
[3] 環境
 [3.1] OS: Windows)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:関数・配列は習いましたが、ポインタは知りません。

自分で書いてみたのですが、例えば15を打つと
「素数ではありません」「素数ではありません」「素数です」とでてしまいます。



480 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 23:36:28 ]
else{
for(i=3;i<=no;i+=2){
if ((no%i)==0){
puts("素数ではありません");
break;
}
else{
puts("素数です");
break;
}
}
}


481 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 23:57:28 ]
>>479

int main(){
unsigned long int i ;
unsigned long no = 0;
printf("1から%luまで入力可能です\n", ULONG_MAX);
do {
printf("正の整数:");
scanf("%lu", &no);
if (no <= 0) {
puts("0以外、正の整数を入力してください") ;
} while(no <= 0) ;

if (no == 2) {
puts("素数です");
}
else if (no == 1 || no%2 == 0) {
puts("素数ではありません");
}
else {
for ( i = 3; i * i <= no; i += 2) {
if (no % i == 0) {
puts("素数ではありません");
return 0;
}
}
puts("素数です");
}
return 0;
}


482 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 00:06:50 ]
>>480 481
ありがとうございます!


483 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 02:39:36 ]
>>469
エスパーするとこうかな?関数swapを自分で書いて、呼び出す側とその関数内それぞれでアドレスを表示。

#include <stdio.h>
/* aの指すデータとbの指すデータを交換する */
void swap( int *a, int *b) {
int temp = *a;

printf( "swap() : &a = %p, &b = %p\n", a, b);

*a = *b;
*b = temp;
}

int main(void) {
int x = 1, y = 2;

printf( "main() : x = %d, y = %d, &x = %p, &y = %p\n", x, y, &x, &y);
swap( &x, &y);
printf( "main() : x = %d, y = %d, &x = %p, &y = %p\n", x, y, &x, &y);

return 0;
}


484 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 08:16:08 ]
>>483
俺は
int* temp = a;
a = b;
b = temp;
かと思った


485 名前:デフォルトの名無しさん [2008/10/21(火) 12:43:13 ]
>>473
ありがとうございました。調べてみます。

486 名前:デフォルトの名無しさん [2008/10/21(火) 12:53:22 ]
>>476
それでコンパイルすると3つ目の整数を入力してから入力した整数が小さい順に出力されるようにしたいんだけどそれだとエラー起きてしまうのですが・・・

487 名前: ◆3VUXqvbfSY mailto:sage [2008/10/21(火) 13:04:05 ]
【質問テンプレ】
[1] 授業単元:計算機プログラミングII
[2] 問題文(含コード&リンク):
  単精度実数型配列(float)を宣言する。その配列にn個のデータを入力する。その配
  列名をポインタとして用いて,入力したn個のデータの最大値と最小値を求め,その
  結果とそれら値が何番目に入力されたかを出力するプログラムを作成せよ。
  ただし,複数回の異なる場合について実行してみること。データ入力の際,値が昇順
  または降順にならないようにすること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
    (注) gcc -Wall -ansi -std=c89 -pedantic ファイル名.c のようにしてコンパイル
 [3.3] 言語:C
[4] 期限:2008年10月23日10:30まで
[5] その他の制限:ポインタを習い始めたばかり,for文やif文,関数,配列,文字列の基礎は学習済み

おねがいします。

488 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 14:14:37 ]
>>486
関数のプロトタイプ宣言
void sort3(int *x, int *y, int *z);

呼び出し
sort3(&n1, &n2, &n3);

489 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 17:19:27 ]
>>487
どうやって入力するのかわからなかったけど、
とりあえず標準入力から一行ずつ float の値を一つ読み込こんでいくようにしておいた

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



490 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 18:11:11 ]
簡単なゲームを作っているのですが、今まで使っていたアイコンは32×32だったので、それを16×16のサイズにしようと思い、そのサイズの画像を取り込んだら、32×32のサイズに拡大されて表示されてしまうのですがどうしたらよいのでしょう?
アイコンファイルってサイズ指定するとこないですよね?

491 名前: ◆3VUXqvbfSY mailto:sage [2008/10/21(火) 18:30:43 ]
【質問テンプレ】
[1] 授業単元:計算機プログラミングII
  対象:学部2年次
[2] 問題文(含コード&リンク):問題2( /2問)
  次に示す手順により,入力されたデータのデータの総和を求めるプログラムを作成せよ。
  (1) 適当な要素数の倍精度実数型配列(double)を宣言する。
  (2) 上記(1)で宣言された配列の先頭アドレスをポインタ変数に代入する。ポインタ
    変数を利用して上記(1)で宣言した配列に対して,キーボードから実数データを
    入力する。ただし,Ctrl-Dが入力されたら,データの入力を終了する。
  (3) ポインタ変数を利用して,参照アドレスを移動しながら入力されたデータの
    総和を計算する。
  (4) 入力したデータおよびそれらの総和を表形式で出力せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
    (注) gcc -Wall -ansi -std=c89 -pedantic ファイル名.c のようにしてコンパイル
 [3.3] 言語:C
[4] 期限:2008年10月23日10:30まで
[5] その他の制限:ポインタを習い始めたばかり,for文やif文,関数,配列,文字列の基礎は学習済み

お願いします。

492 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:03:53 ]
>>491
いいオプションがついてるな。
ってことはいい先生って事だ。たぶん。

493 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:13:49 ]
2枚の画像を読み込んで、それを引き算をして、その引き算した画像を出力するプログラムをお願いします。

494 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:35:27 ]
[1] 授業単元:データー構造とアルゴリズム設計
[2] 入力された文字を,リストを用いて順次格納する.’−’が入力された時に文字の入力を終
了し,それまでに格納された全ての文字を表示するプログラム
(例)
a ←入力
b ←入力
c ←入力
− ←入力
c ←出力
b ←出力
a ←出力

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


495 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:38:47 ]
もう1つ
[1] 授業単元:データー構造とアルゴリズム設計
[2] 入力された小文字のアルファベットを,リストを用いて順次格納する.’−’が入力された
時に文字の入力を終了し,それまでに格納された全ての文字を表示するプログラムを作成
せよ.ただし,リストに格納する際,リストの最後に追加するようにせよ.
(例)
a ←入力
b ←入力
c ←入力
− ←入力
a ←出力
b ←出力
c ←出力

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



496 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:39:23 ]
お願いします。

497 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 20:56:21 ]
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
 @ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
 また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
 この作業をファイルの最後の2097152個目の値までやりなさい。

 ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
 ヒント:malloc関数

 ※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 kissho4.xii.jp/50/src/5yoshi7327.txt.html
 DLKey:data


 A 求めた最大値を2次元配列でpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を出力させ、2行目からは次の1024個中から求めた最大値を出力させなさい。
 同様に3行目、4行目、・・・と順次最大値を出力させなさい。
   例:peak.txt
     472 234 800 578 ・・・・
     677 347 554 532 ・・・・
     843 637 347 551 ・・・・
     ・
     ・
     ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: LSI−86
 [3.3] 言語: C
[4] 期限: 2008年10月23日午後3時
[5] その他の制限: 特になし

よろしくお願いします。

498 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:04:04 ]
よくわからないけど平均値どこ行ったの?

499 名前:358 mailto:sage [2008/10/21(火) 23:39:49 ]
>>494,495
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7813.zip
参考程度にしてくれ

>>497
ロダ死亡
LSIのは、むかし試食版とか使ったことあるけど、もうしらねぇ。
www1.axfc.net/uploader/Ne/so/34790.zip
参考程度にしてくれ
DLkey : foo



500 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 00:02:22 ]
ちょっと修正、勘違いしていた、気がしないでもない。
ついでに、全ソースもつけといたので、環境に合わせてコンパイルとリンクしてくれ
ロダ生きてたみたい
kissho1.xii.jp/7/src/7jyou16166.zip.html
DLkey : foo
ってか、358ってなんだ、前のがそのまんまだった。

501 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 01:44:49 ]
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):カレンダー風の出力
 下に示すようなカレンダー風の出力を行うプログラムをwhile文を使って作成してください。
              ・1〜31までの範囲とします。
              ・printf関数で表示幅をそろえます。(右揃え)
                  
              1  2  3  4  5  6  7
              8  9 10 11 12 13 14
             15 16 17 18 19 20 21
             22 23 24 25 26 27 28
             29 30 31
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年10月23日(木)までお願いします。
[5] その他の制限: 逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)は習いました。
お願いします。

502 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 02:23:57 ]
>>498
平均値は最大値を求めるだけに使うので、出力とかはしなくていいんです。
↓(手書きで申し訳ないですけど・・・)イメージ的には↓
kissho.xii.jp/1/src/1jyou52627.bmp.html
DLkey:foo

>>499
>>500
ありがとうございます。早速、明日学校でコンパイルしてみます。
本当に助かりました。 

503 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 03:55:43 ]
>>502
圧縮するという事を学ぼう。
テキストはzipに、bmpは形式を変更。

504 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 06:21:16 ]
>>501

#include <stdio.h>
int main(void)
{
int i=1;
while(i!=32){
printf("%2d ",i);
if(!(i%7))
printf("\n");
i++;
}
return 0;
}

505 名前::デフォルトの名無しさん [2008/10/22(水) 11:35:56 ]
>>501
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7816.txt

506 名前:デフォルトの名無しさん [2008/10/22(水) 11:47:05 ]
オブジェクト形式マクロを用いたNUMBER人の点数を配列tensuに
読込み,秀(90〜100点),優(80〜89点),良(70〜79点),可(60
〜69点),不可(0〜59点),判定不能(0未満あるいは100点より
上)の人数を,それぞれ変数a,b,c,d,e,fに格納・表示し,更に最高
点,最低点,合計点,平均点を表示するプログラムを作成せよ.た
だし,最高点,最低点,合計点,平均点の計算において,判定不能
の点数は除外すること.
なおNUMBERの値は10とし,平均点は小数点以下第2位まで表示
すること.
という問題誰か教えてください。

507 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 11:48:05 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):

5.6 29.2 ・・・・25.2
2.7 ・・・



-1.0 mozi
6.7 ・・・・
という様に数値データが書かれたファイルを読み込む。各行に100個の正の実数が書かれている。
これを1次元配列data[100]に順番に入れて、表示する。

これをファイルの終わりまで行う。

-1.0から始まる行があるが、その行は読み飛ばし、次の行から処理を行うようにすること



[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C
[4] 期限:今日
[5] その他の制限: なし

508 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 11:55:37 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):文字列を入力すると,英小文字を大文字に変換して出力するプログラムをポイン
タを用いてつくりなさい。但し,ライブラリ関数toupper を用いないこと。また,文字
列の入力には,ライブラリ関数であるgets 関数を用いること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:08年10月23日23:00まで

よろしくお願いします。

509 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 12:47:36 ]
[2]
・dx/dt = t という式についてx(t=0)=0として,x(t) をt=0 から1 まで求めるEuler法のプログラムを作れ.
時間刻み(h)をどの程度小さくすると,真値(解析解:x=0.5*t*t)にどの程度近づくかを調べよ.
・FitzHugh-Nagumo方程式の解軌跡を求めるプログラムを作成せよ.
・作成したプログラムを使って、興奮性を示すx,yの初期値を一組探しグラフで結果を示せ.
初期値も自由に設定して良いが、うまくパラメータが見つからない場合は、a=0.7, b=0.8, c=20, z=1.0 を使用すること.
dx/dt=c(x-x^3)/(3+y+z)
dy/dt=(a-x-by)/c


[3] 環境
 [3.1] Windows
 [3.2] コマンドプロンプト
 [3.3] C
[4] 明日17時
[5] わからないのを3つ載せましたが、1つでも構わないのでなんとかお願いします。



510 名前::デフォルトの名無しさん [2008/10/22(水) 13:08:58 ]
>>508
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7817.txt

511 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 13:52:57 ]
>>510

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

512 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 14:32:51 ]
わざわざ文字列の長さを求めなくてもAllCharactersToUpperのfor文の条件をstr[i]!='\0'にすればいいと思う。

513 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 14:50:28 ]
>>509
Cじゃないけどエクセルで作ってみたw
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7818.zip

514 名前::デフォルトの名無しさん [2008/10/22(水) 15:14:32 ]
>>507
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7819.txt

515 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 15:41:27 ]
2つの画像を読み込んで、1つ目の画像から2つ目の画像を引き算をした画像を作りたいんですが
どのような感じで作ればいいでしょう?

516 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 15:55:18 ]
2つの画像を読み込んで、1つ目の画像から2つ目の画像を引き算するような感じで
作ればいいと思います

517 名前::デフォルトの名無しさん [2008/10/22(水) 16:21:40 ]
>>507
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7820.txt

518 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:25:34 ]
>>514
最初の1行しか読まれないんですが・・・

519 名前::デフォルトの名無しさん [2008/10/22(水) 16:30:51 ]
>>518
>>517で試してみて



520 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:32:18 ]
>>519
3つめでしょうか?

521 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:36:01 ]
>>518
プログラムざっとみたけど1行目しか読んでない

522 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:42:31 ]
>>519
3つめでやったら、コンパイルは通るんですが、バッファーオーバーランでとまります・・・

523 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:50:24 ]
do-while間のi初期化忘れてるな

524 名前:523 mailto:sage [2008/10/22(水) 16:53:21 ]
投稿者が見てるか分からんが

i=0;          ←追加
do{
(略)
}while(dp = strtok(NULL,gDlim));

これで動くように一見見える

525 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 16:54:36 ]
>>524
動きました。がやはり1行目しか読まれないみたいです

526 名前:523 mailto:sage [2008/10/22(水) 17:01:18 ]
char *dp,*p,*gDlim = " \n\r";

char *dp,*p,*gDlim = " ";

これもミスっぽいな

527 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:17:20 ]
>>504-505
お二人とも本当に有難う御座いました。
助かりました。

528 名前::デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:25:24 ]
>>525
読み込むファイルアップしてみ

529 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:29:51 ]
fgets後にstrtokで" \r\n"渡してるからじゃん?
これだと行頭しか処理されないよ。



530 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:31:44 ]
strtokとか使う必要あんの?普通にfscanfのほうがよくね?とか無責任に言ってみる

531 名前:517 mailto:sage [2008/10/22(水) 17:39:35 ]
行頭に-1.0がある行は無視するという条件だから
行中に-1.0があっても読み込むためにstrtokを使った
ちなみにfscanfつかったソースは#if 0〜#endif
の間に残してある

532 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:42:21 ]
>>529
そうなんですか?やはり1行目しか読まれません

533 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:47:15 ]
あと1行1列が2回表示されます・・・

534 名前:デフォルトの名無しさん [2008/10/22(水) 17:53:07 ]
>>533
だから読み込むファイルアップしてみ




535 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:57:21 ]
>>534
見落としてました。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7821.txt
これです。横に100個って書いたんですが、12個のファイルしかなかったです。
先ほど頂いたソースは100のところを12に書き換えました。

536 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 17:59:29 ]
>>534
俺も適当にddata.txt作ってみたけど1列目が2回出たなあ

537 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:03:30 ]
実数が100個並ぶのにバッファは512かあ。

538 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:15:03 ]
>>535
なんかこれでいいかわかんないけどつくってみた

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
FILE* fp;
char buf[1024],*cp;
double data[100];
int i,cnt;
if((fp = fopen("in.txt","r")) == NULL) return 1;
while(fgets(buf,sizeof(buf),fp) != NULL){
if(strnicmp("-1.0",buf,strlen("-1.0")) == 0) continue;
cp = buf; cnt = 0;
while((cp = strtok(cp," \t\r\n")) != NULL){
data[cnt++] = atof(cp); cp = NULL;
}
for(i=0;i<cnt;i++) printf("%f\n",data[i]);
}
fclose(fp);
}

539 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:19:14 ]
return 0;
わすれちゃった。



540 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:42:16 ]
>>538
うまくうごきました。ありがとうございます。

541 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:01:36 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7823.txt
問1.このプログラムではxの零乗が3x{0}と表示されるため3と出力されるようにする
問2.このプログラムでは入力の逆順に単項式が出力されるためそれを入力した順番に単項式が出力するようにする
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: お任せ
 [3.3] 言語: C
[4] 期限: 2008年10月24日hh:mmまで



542 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:25:10 ]
画像を読み込み、引き算したプログラムを自分なりに作ったんですが

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define XL 900
#define YL 900

int main(int argc, char**argv)
{
FILE *fp1, *fp2, *fp3;
int i;
float opx, px1, px2;

fp1 = open("argv[1]", "rb");
fp2 = open("argv[2]", "rb");
fp3 = open("argv[3]", "wb");

for(i=0; i<XL*YL; i++){

fread(&px1,sizeof(float),1,fp1);
fread(&px2.sizeof(float),1,fp2);
opx = px1-px2;
write(&opx,sizeof(float),1,fp3);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
コンパイルが通らず、エラーがでてしまいます;
アドバイスを頂けるとうれしいです

543 名前:デフォルトの名無しさん [2008/10/22(水) 19:26:15 ]
380
>>407
遅くなりましたが、回答ありがとうございました!!
もっと自分で学習せないかんですね・・・

544 名前:デフォルトの名無しさん [2008/10/22(水) 19:27:58 ]
fread(&px1,sizeof(float),1,fp1);
fread(&px2.sizeof(float),1,fp2);
write(&opx,sizeof(float),1,fp3);
&いるっけ?

545 名前:デフォルトの名無しさん [2008/10/22(水) 19:28:47 ]
ごめん、いるわw
勘違いでした

546 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:47:51 ]
×fp1 = open("argv[1]", "rb");
○fp1 = open(argv[1], "rb");

×fread(&px2.sizeof(float),1,fp2);
○fread(&px2.sizeof(float),1,fp2);
        ^

547 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:48:27 ]
ああ、まちがえた。
×fread(&px2.sizeof(float),1,fp2);
○fread(&px2,sizeof(float),1,fp2);
        ^

548 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:11:32 ]
483 484 お二人ともありがとうございました。質問の内容がわかりにくくてすいません。
ありがとうございました

549 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:26:48 ]
>>541
問1
最後のfor内を次のようにする

printf("%+d", pwork->coef);
if(pwork->degree_of_x)
printf("x^{%d}", pwork->degree_of_x);

問2
printf("Input the coefficient: ");の前にpmx->next = poly;を入れる
poly = pmx;の後ろのpmx->next = poly;を消す



550 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:22:28 ]
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
 @ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
 また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
 この作業をファイルの最後の2097152個目の値までやりなさい。
 ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
 ヒント:malloc関数

 ※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data
 
 A 求めた最大値を2次元配列でpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を出力させ、2行目からは次の1024個中から求めた最大値を出力させなさい。
 同様に3行目、4行目、・・・と順次最大値を出力させなさい。
 例:peak.txt →  472 234 800 578 ・・・・
           677 347 554 532 ・・・・
           843 637 347 551 ・・・・
           ・
           ・
           ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: LSI−86
 [3.3] 言語: C
[4] 期限: 2008年10月23日午後3時
[5] その他の制限: 特になし

>>500 gccでコンパイルしてみたんですが、うまくいきませんでした。
エラー表示 → main.c:56: undefined reference to`_nao_DList_t_ctor'

よろしくお願いします。


551 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:25:05 ]
>>497>>550 問題文修正しました
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
 @ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
 また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
 この作業をファイルの最後の2097152個目の値までやりなさい。
 ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
 ヒント:malloc関数

 ※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data
 
 A 求めた最大値を2次元配列でpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を出力させ、2行目からは次の1024個中から求めた最大値を出力させなさい。
 同様に3行目、4行目、・・・と順次最大値を出力させなさい。
 例:peak.txt →  472 234 800 578 ・・・・
           677 347 554 532 ・・・・
           843 637 347 551 ・・・・
           ・
           ・
           ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc または LSI−86
 [3.3] 言語: C
[4] 期限: 2008年10月23日午後3時
[5] その他の制限: 特になし

>>500 gccでコンパイルしてみたんですが、うまくいきませんでした。
エラー表示 → main.c:56: undefined reference to`_nao_DList_t_ctor'

よろしくお願いします。

552 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:31:09 ]
[1] 授業単元: C++
[2] 問題文(含コード&リンク):

標準入力から山の名前とその標高を入力し、標高の高い順にソートして、山の名前を表示するプログラムを作れ。

STLのpairを使うこと。 


[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 明日
[5] その他の制限: 特になし


553 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:44:28 ]
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):

void desc_array(int n, int *array)
{
int i;
for (i = n-1; i >= 0; i--)
array[i] = i;
}

降順にソートされた配列を作成したいが、上の関数では昇順に配列が作成されてしまうので誤りである。
そこで上の関数を正しい形に修正し、ディスプレイに表示し実際に降順となっていることを確かめられるプログラムを作れ。
(降順というのはたとえば、a[0] = 0, a[1] = -1, a[2]= -2, ..., a[n-1] = -(n-1)となっていればいい。)

[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月23日
[5] その他の制限:無し

お願いします。


554 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:56:59 ]
>>551
あれ、だめだったのか。
Terminalから、makeするだけでいいはずなんだけどconfigure作ってなかったからかもしれないなぁ。
READMEファイルでも読んで、ダメだったらどうしよう。
kissho1.xii.jp/7/src/7jyou16183.zip.html
DLkey : foo
処理の効率化とかヘッダファイルに使いかたとか書いといたので、うまくいかなかったらソース自体変更してみてね。

555 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:17:30 ]
>>553
array[i] = i;

array[i] = -i;

556 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:20:37 ]
>>554
:set backupdir=/tmp
とでもするといいよ。ってemacsでも~作るんだったらそっちはわかんね><

557 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:29:17 ]
>>552
こんなん?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7824.txt

558 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:49:48 ]
>>556
ありがたく追加させていただきました。
基本viを使っています。たまにvimになったり、geditになったりもしますが、emacsは使いません。
でも、S式っていいよね、とか言ってみるてst。

559 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 23:22:08 ]
>>551
これでいい?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7827.txt



560 名前:デフォルトの名無しさん [2008/10/22(水) 23:31:34 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):x^3-7x^2+16x-10=0 の解をニュートン法を用いて求めるプログラムを作りなさい。
[3] 環境 OS: Windows
[4] 期限: 2008.10.24

お願いします。


561 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 23:47:43 ]
>>560
はい。
#include<stdio.h>
#include<math.h>
#define EPS 0.0001
//x^3-7x^2+16x-10
double f(double x){ return x*(x*(x-7)+16)-10; }
//3x^2-14x+16
double df(double x){ return x*(3*x-14)+16; }

int main(){
double x,next=0;
do{
x=next;
next = x - f(x)/df(x);
}while(fabs(next-x) > EPS*fabs(x));
printf("%f\n",next);
}

562 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 23:51:22 ]
[1] 授業単元: C
[2] 問題文(含コード&リンク):
プログラムの冒頭で
#define YEAR 2005
#define MONTH 12
#define DATE 24
#define HOUR 00
#define MIN 00
#define SEC 00
#define STEP 20
と定義して、STEP秒毎の西暦、月、日、時、分、秒を99STEP分出力する関数を作成せよ。
「出力例」
01:2005/12/24/00:00:00
02:2005/12/24/00:00:20
03:2005/12/24/00:00:40
04:2005/12/24/00:01:00
    ・
    ・
    ・
99:
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: borland c++5.5
 [3.3] 言語: C
[4] 期限: ([2008年10月24日まで]
[5] その他の制限: なし

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

563 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:04:47 ]
>>555
ありがとう。作成した配列をディスプレイに表示する所が分からないのですが、
printf内にどうやってdesc_arrayで作成したarray[i] = iの部分を書けばいいのでしょうか?

564 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:06:39 ]
printf("array[%d] = %d,i,srray[i])

565 名前:デフォルトの名無しさん [2008/10/23(木) 00:11:11 ]
>>561
ありがとうございます。

566 名前:デフォルトの名無しさん [2008/10/23(木) 00:19:41 ]
すいません>>560ですが
コンパイルしようとすると
bccは内部コマンド、外部コマンド
操作可能なプログラムコマンドまたはバッチファイルとして認識しません。
と出るんですが、どうすればいいのですか??

567 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:25:41 ]
bcc32じゃないの? つーかそもそもコンパイラはいってるの?

568 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:26:32 ]
宿題以前だろ…

569 名前:デフォルトの名無しさん [2008/10/23(木) 00:38:00 ]
>>567>>568
すいませんでした・・・
解決しました。



570 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:40:20 ]
>>562
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7829.c

571 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:42:54 ]
>>562
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define YEAR 2005
#define MONTH 12
#define DATE 24
#define HOUR 00
#define MIN 00
#define SEC 00
#define STEP 160000
int main(){
int i;
char buf[1024];
struct tm date;
time_t now;
date.tm_year = YEAR - 1900;
date.tm_mon = MONTH - 1;
date.tm_mday = DATE;
date.tm_hour = HOUR;
date.tm_min = MIN;
date.tm_sec = SEC;
for(i=1;i<=99;i++){
if((now = mktime(&date)) == -1) return 1;
strftime(buf,sizeof(buf),"%Y/%m/%d/%X",&date);
printf("%02d:%s\n",i,buf);
date.tm_sec += STEP;
}
}

572 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 01:17:36 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):3つの整数を入力し,それらを比較して,大,中,小を判定しなさい.
3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも
正確に判定ができるように対応すること.
全ての条件を場合分けするプログラムは不可とする.
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 10月30日13:00
[5] その他の制限: 特になし

お願いします

573 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 01:18:46 ]
下記のように出力するプログラムをprintf,getsを用いて作成せよ.

./a.exe

学籍番号は? XXXXXXXXX
名前は? AAAA BBBB

学籍番号: XXXXXXXXX
名前 :AAAA BBBB

574 名前:573 mailto:sage [2008/10/23(木) 01:21:05 ]
>>573の続き
↓じゃ出力のAAAAが出ないのですがどうしたらいいですか?

#include<stdio.h>

int main()
{
char st1[80];
char st2[80];

printf("学籍番号は?");
scanf("%s",st1);

gets(st2);

printf("名前は?");
scanf("%s",st2);

gets(st2);

printf("学籍番号:%s\n",st1);
printf(" 名前 :%s\n",st2);
}

575 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 01:23:25 ]
>>574
scanfいらない

576 名前:573 mailto:sage [2008/10/23(木) 01:25:35 ]
>>573の補足

学籍番号は? XXXXXXXXX      補足→ XXXXXXXXXはキーボードで打ちます
名前は? AAAA BBBB        補足→ AAAA BBBBはキーボードで打ちます

577 名前:573 mailto:sage [2008/10/23(木) 01:27:02 ]
>>575
即レスありです。

両方ともいらないですか?

578 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 01:35:17 ]
>>577
両方いらないです。

579 名前:573 mailto:sage [2008/10/23(木) 01:41:48 ]
名前はちゃんと出ましたが学籍番号がちゃんと出ません><



580 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 02:02:51 ]
>>579
記載ミスだと思ってスルーしてましたが
1つめのgetsの引数は st1 にしていますよね?

581 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 02:03:35 ]
>>574
#include<stdio.h>

int main()
{
char st1[80];
char st2[80];

printf("学籍番号は?");
gets(st1);

printf("名前は?");
gets(st2);

printf("学籍番号:%s\n",st1);
printf(" 名前 :%s\n",st2);

return 0;
}


582 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 04:59:48 ]
>>572
#include<stdio.h>
int main(void){
int a, b, c, flag = 0;
printf("Input Number (a,b,c) : ");
scanf("%d,%d,%d", &a, &b, &c);
if(a >= b) flag |= 0x01;
if(b >= c) flag |= 0x02;
if(c >= a) flag |= 0x04;
printf("大中小\n");
switch(flag){
case 0x01: printf("%2d%2d%2d\n", a, c, b); break;
case 0x02: printf("%2d%2d%2d\n", b, a, c); break;
case 0x03: printf("%2d%2d%2d\n", a, b, c); break;
case 0x04: printf("%2d%2d%2d\n", c, b, a); break;
case 0x05: printf("%2d%2d%2d\n", c, a, b); break;
default: printf("%2d%2d%2d\n", b, c, a);
}
return 0;
}

583 名前:573 mailto:sage [2008/10/23(木) 08:21:48 ]
>>581
ありがとうございます。

584 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 09:54:51 ]
>>564
#include<stdio.h>

void desc_array(int n, int *array)
{
int i;
for (i = n-1; i >= 0; i--)
array[i] = -i;

}

int main()
{
int n,i;
int *array;
n =8;
desc_array(n,array);

printf("array[%d] = %d",i,array[i]);
return 0;
}

mainの中のどこが違うんでしょうか?セグメントエラーを吐きます。

585 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:00:08 ]
>>554
>>556
ありがとうございました。うまくコンパイルすることができました。
本当に助かりました。m(__)m

>>559
シンプルでわかりやすいプログラムありがとございます。
まだちゃんと解読してないんですけど、peak.txtの出力した最大値が
1024個中5個だけってことなんでしょうか? 一応、求めた平均値より突飛して高い値(最大値とする)
をpeak.txtに出力したいんですけど・・・最大値の数は特に指定はないです。

586 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:11:17 ]
>>584
main() 無効なアドレスをさしている変数 array
たぶんやりたいのは、
#include <stdlib.h>を、#include <stdio.h>のしたあたりに追加。
n = 8;の後に、array = (int *)malloc(sizeof(int) * n);
if ( array == NULL ) {
fprintf(stderr, "Error : Bad alloc !\n");
exit(8);
}
その後、desc_array(n, array);
で、arrayを使わなくなったら、free(array);

587 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:17:06 ]
MCIでデータ1データ2データ3を同時に鳴らした時、
コールバックでどのデータが終了したか
どうやって判断したらいいですか?

588 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:47:44 ]
[1] 授業単元: 情報工学演習
[2] 問題文(含コード&リンク):
数独のような問題を解くプログラムと、ポーカーでの強さを判定するプログラム
詳細は下のテキストファイルに書いてあります
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7830.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月24日13時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
main関数は必ずテキストファイルに書いてあるもののままにしてください。
それ以外の部分もなるべくそのままでお願いします。
また、なるべく理解したうえで少し自分なりに手直したいので、
どんな手順で判定を行っているのかなど、軽く説明していただけると助かります。

できれば今日中にお願いします。急なお願いで申し訳ありません。

589 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 10:49:54 ]
>>584
int *array;

int array[8];
にしたらいい




590 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 11:37:57 ]
>>584
そもそも i に値がはいってないな。

591 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 12:22:37 ]
>>585
なんか5個だと思い込んでたw
てか最大値って言葉わかりにくいー極大値とか外れ値とかそんな感じ??
飛び抜けて大きな値って平均値の何倍かとかで調べたいんですか?
よくわかんないので標準偏差の何倍かで調べるようにしてみました。
てかこのまえupした画像で考えると、グラフで飛び出した点を求めなきゃいけないとするといったん並べ替えるのはよくないのだろうか・・・??
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7831.txt

592 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 12:56:53 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ユーザから2から100までのいずれかの整数を受け取り、1からその数までの総和を計算する
プログラムをfor文を使って書け。利用者が範囲外の数値を入力した場合、「値が範囲内にありません」
などのエラー表示を行え。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
[4] 期限: 2008/10/25
[5] その他の制限:まだ初めて日が浅く、習ったのはif else文やforループくらいまでです。

よろしくお願いします。

593 名前:デフォルトの名無しさん [2008/10/23(木) 13:03:19 ]
1] 授業単元:c++ builder
[3] 環境
 [3.1] OS:Widows XP
 [3.3] 言語:C++
[4] 期限:2008/10/24
[5] その他の制限:Cの基本言語程度

Memo1に60行の配列の乱数を出したのですが、そのMemo1にある60行の乱数の平均の数を
Edit1に出すプログラムがどうしてもできません。
どなたか教えていただけないでしょうか。よろしくおねがいします。

594 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 13:19:31 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):100 個の整数型配列を宣言して,各要素に2〜200 の偶数値を格納し,配列要素の
総和を求めて出力するプログラムをつくりなさい。ただし,配列への値の格納,総和の
計算ともポインタを用いて実行すること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:08年10月24日24:00まで

どうかお願いします。

595 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 13:55:57 ]
>>588 問2
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7832.txt
これでいい?
問題文にあった3つの動作例でしかチェックしてない。

596 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:07:55 ]
[1] 授業単元:プログラム・C言語
[2] 問題文(含コード&リンク):
以下のようなプログラムを作成しなさい

まず標準入力から、姓と名をそれぞれ別のchar配列型変数で受取る。
次に別の空のchar配列型変数に名と姓の間にスペースを挿入して格納し、表示するプログラム。
※ヒント 
空のchar配列型変数に「名」を入れる時はstrcpy()、スペースと「姓」を追加する時はstrcat()を使う
とよい。

実行例
./a
family name? sato
first name? zin

zin sato

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
[4] 期限: 2008/10/25
[5] その他の制限:まだ序の口レベルです。 #include <stdlib.h>のみでお願いします。

何卒よろしくお願いします。

597 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:19:28 ]
>>592
#include <stdio.h>

int main(void)
{
int n, i, sum=0;

printf("値を入力してください\n");
scanf("%d", &n);

if(n < 2 || n > 100)
{
printf("値が範囲内にありません\n");
}
else
{
for(i=1; i<=n; i++)
{
sum += i;
}
printf("総和 = %d\n", sum);
}

return 0;
}

598 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:22:11 ]
>>596
#include <stdio.h>
#include <string.h>

int main()
{
char family_name[16], first_name[16], name[32];

printf("family name? ");
gets(family_name);
printf("first_name? ");
gets(first_name);

strcpy(name, first_name);
strcat(name, " ");
strcat(name, family_name);

printf("%s", name);

return 0;
}

599 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:29:38 ]
>>594
#include <stdio.h>

void Set(int *buf)
{
int i;

for(i = 0; i < 100; i++)
buf[i] = (i+1)*2;
}

int Sum(int *buf)
{
int i, sum = 0;

for(i = 0; i < 100; i++)
sum += buf[i];

return sum;
}

int main()
{
int buf[100];

Set(buf);

printf("%d", Sum(buf));

return 0;
}



600 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 14:40:52 ]
>>595
返答ありがとうございます。

無理でしたら構いませんが、なるべく関数poker_hand内で全ての動作を
記述している形がよいので、できればその形に組みなおしていただきたいのですが
とりあえず参考にしつつ自分でも作ってみておきます。
問1に関してもできればnumber_place内で全て記述している形でお願いします。
無茶な要求をしてしまって申し訳ありません。

601 名前:デフォルトの名無しさん [2008/10/23(木) 14:59:44 ]
[1] 授業単元:CG(C言語使用)
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7835.zip
OpenGLによるCGを用いたプログラムを、自由に設計する課題を作成。
条件として、「アニメーションが行えること」、「キーボード入力によって何らかの
操作が行えること」、「シェーディングやテクスチャマッピングを適切に使用できること」
です。前者2つとシェーディングは何とか理解出来ますが、テクスチャマッピングが
思うように設計できません。どなたか専門知識をお持ちの方、私が添付したプログラムのどの
辺にどのような関数をセットすればよいかなど、いわゆる作成方法についてご指導
お願いします。なお、テクスチャマッピングは壁を設計する予定です。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++(bcc32)
 [3.3] 言語:C
[4] 期限:2008年10月23日22時半

なお、期限については今日中としますが、今日中に良い意見が集まらなければ明日も
募集する予定です。宜しくお願いします。

602 名前:デフォルトの名無しさん [2008/10/23(木) 15:02:17 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7833.lzh

↑↑の画像の一番明るい場所を、
画像の中心を(0,0)とした座標として表示するプログラムを
つくりなさい。また、その明度の値も表示するようにしなさい。
例に示した画像はjpeg形式ですが、非圧縮bmp(白黒)
の場合でも可能です。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:今月中
[5] その他の制限:なし

よろしくお願いします。

603 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:08:51 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

文字列を入力し、その文字列が外部のテキストファイルに存在すれば、OK!と表示するプログラムを作れ

外部テキストは

apple
egg




のように10万個ほどの単語が書かれている。

効率的に探せるならば、C++のSTL等を用いてよい


[3] 環境
 [3.1] OS: Xp
 [3.2] VC 6.0
 [3.3] 言語: C++
 [4] 期限:明日
[5] その他の制限:


お願いします

604 名前:592 mailto:sage [2008/10/23(木) 15:12:26 ]
>>597
早いレスで助かります。
どうもありがとうございました。

605 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:22:15 ]
>>600
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7836.txt
もうやだ。こんなプログラム見たくねえorz

606 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:33:58 ]
ただのストレートでも 10 → A いけるんだとしった
ロイヤルの時だけだと思ってたわ

607 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:36:11 ]
>>582
ありがとうございます

608 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:38:37 ]
>>588
問1
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7837.txt

合ってるといいなw

609 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:03:17 ]
>>603
こんなでいい?
#include<iostream>
#include<fstream>
#include<string>
#include<set>
using namespace std;
typedef set<string> Dictionary;
int main(){
string word;
Dictionary dict;
ifstream ifs("in.txt");
if(!ifs.is_open()) return 1;
while(!ifs.eof()){
ifs >> word;
dict.insert(word);
}
ifs.close();
while(1){
cout << "Search:";
cin >> word;
if(dict.find(word) != dict.end()) cout << "OK!" << endl;
else cout << "Not found." << endl;
}
}



610 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:09:27 ]
>>599

丁寧な回答ありがとうです!




611 名前:デフォルトの名無しさん [2008/10/23(木) 17:50:21 ]
[1] 授業単元:文字列の探索
[2] 問題文(含コード&リンク):
(1)ファイルの先頭からテキストを1行ずつ(1行の文字数は999文字以下とする)読み込み、
  何行目の何文字目に検索文字列の先頭が存在するか出力する。
(2)探索文字列中に同じ文字が複数含まれる場合について検索方法を改良する。

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

[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc (ver不明です)
 [3.3] 言語: C言語
[4] 期限: 2008年10月27日23:59まで
[5] その他の制限:問題文中のプログラムの「//ここにボイヤームーア法」の場所を補ってプログラムを組む感じです。
どうかお願いします。。

612 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:16:59 ]
>>602
libjpeg 使っていいんだったら
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7840.txt

613 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:37:45 ]
>>598

あなたのお陰で非常に助かりました。
ありがとうございます。

614 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:41:20 ]
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文:次の関数のゼロ点を求めるプログラミングをせよ。
        f(x) = x^4-10x^3+ 35x^2-50^x+24
        探索区間はx = 0から5(数学的表現では、x = [0; 5))であり
        実数解が4個あることを留意せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月24日1300まで
[5] その他の制限:2分法を使って組んでいただけませんか。

615 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 20:49:21 ]
>>614
#include <stdio.h>
#include <math.h>
double f( double x )
{
return pow(x,4) -10 * pow(x,3) + 35 * pow(x,2) - pow(50,x) + 24;
}
int main()
{
double x = 1.0;
printf( "f(%lf) = %lf\n", x, f(x) );
return 0;
}

616 名前:614 mailto:sage [2008/10/23(木) 20:54:54 ]
>>615
おい
ふざけんな

617 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:09:28 ]
【質問テンプレ】
[1] 授業単元:仕事
[2] 問題文(含コード&リンク):
"00 00 01 bd 80 80 ...."
とスペースや改行も含めた
テキストファイルから
0x00 0x00 0x01 のバイト列に
変換するコードをください

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++どちらでも可
[4] 期限: 2008/10/24 10:00
[5] その他の制限:特に無しです

よろおね

618 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:11:04 ]
>>614
実数解が1個しか無いんだが。。。
#include <stdio.h>
#include <math.h>
#define DELTA 1e-4

double f(double x) { return pow(x, 4) - 10*pow(x, 3) + 35*pow(x, 2) - pow(50, x) + 24; }
int main(int argc, char *argv[])
{
double left = 0.0, right = 5.0, mid = 2.5;
if (f(left) * f(right) > 0) {
return 1;
}
while (fabs(f(mid)) > DELTA) {
mid = (left + right) / 2;
if (f(left) * f(mid) < 0)
right = mid;
else
left = mid;
}
printf("x = %f\n", mid);
return 0;
}

619 名前:614 mailto:sage [2008/10/23(木) 21:16:10 ]
すいません関数が間違っていました
f(x)=x^4-10*x^3+35*x^2-50*x+24



620 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:27:33 ]
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):

mozi1_mozi2_mozi3のように_で区切られた文字列を標準入力から入力し、stringに格納する。

char *list1[5] = {"test","test2","test3","test4","test5"} と *list2[3] = {"hoge",hoge2","hoge3"} の文字列へのポインタの配列
がある。

mozi1はlist1の文字列と比較し、一致するものがあればその添え字を表示し、
mozi2はlist2の文字列と比較して、同様の動作をするプログラムを作れ。

mozi1がtest2であれば1を表示
mozi2がhoge3であれば2を表示する。一致するものがなければその旨を表示すること



[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 2008年10月25日
[5] その他の制限

お願いします。

621 名前:615 mailto:sage [2008/10/23(木) 21:43:09 ]
>>619
>>616

622 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 21:55:07 ]
>>611
質問が
BM法ってリスト2つ使った奴じゃないと駄目?
それとも簡略版でいいのかしら

623 名前:デフォルトの名無しさん [2008/10/23(木) 22:49:19 ]
1] 授業単元: C++
[2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7841.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Visual stdio2005
 [3.3] 言語:C++
[4] 期限:10月 24日(土)まで

期限が短いですがお願い致します。


624 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 22:53:58 ]
ここってGUIも受け付けてもらえますか?

625 名前:デフォルトの名無しさん [2008/10/23(木) 22:56:54 ]
受け付けてもらえます

626 名前:611 [2008/10/23(木) 22:57:38 ]
>>622
ありがとうございます。
講義内でも問題文に書かれた以上のことは言われなかったのですが、簡略版で大丈夫です。
とりあえず、「力まかせの探索」でなければ大丈夫とのことでした。

627 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 22:58:21 ]
[1] 授業単元: 信号解析
[2] 問題文(含コード&リンク):

一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル
Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、

τdx/dt = -dV/dx + ξ(t)
< ξ(t)ξ(t') > = A * б (t - t')
< ξ(t) > = 0 …@

で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル
V (x; t) は、時間と共に周期的にその形を変える:

V(x,t) = Vo(x) - f(t)x
= -1/2*ax^2 + 1/4*bx^4 - hxcos(wt)

で与えられる。
a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。
t = 0 において、玉はx = 10 にあるとする。
τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。
@式を時間発展させて、玉の位置と周期的な外力f(t)に比例する量である10cos(ωt)をグラフに表せ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月24日23:59まで
[5] その他の制限: 特になし

 よろしくお願いします

628 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:00:13 ]
>>624
では書きます。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ファイルを開く・保存のコモンダイアログを使い、選択されたファイルをテキストに書き出すプログラムを作れ。
ファイルは複数選択される場合もある。
express版の場合、外部のリソースエディタは用いてかまわない。


出力されるファイル
test.bmp
data.wav
data2.wav




[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C or C++
[4] 期限: 2008年10月26日
[5] その他の制限

629 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:02:11 ]
>>627 問題文修正しました
[1] 授業単元: 信号解析
[2] 問題文(含コード&リンク):

一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル
Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、

τdx/dt = -dV/dx + ξ(t)
< ξ(t)ξ(t') > = Aб(t - t')
< ξ(t) > = 0 …@

で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル
V (x; t) は、時間と共に周期的にその形を変える:

V(x,t) = Vo(x) - f(t)x
= -1/2*ax^2 + 1/4*bx^4 - hxcos(wt)

で与えられる。
a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。
t = 0 において、玉はx = 10 にあるとする。
τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。
@式を時間発展させて、玉の位置と周期的な外力 f(t) に比例する量である 10cos(ωt) をグラフに表せ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月24日23:59まで
[5] その他の制限: 特になし

 よろしくお願いします



630 名前:デフォルトの名無しさん [2008/10/23(木) 23:03:31 ]
この分野では、Sunday のアルゴリズムが究極では?


表 : 実行結果

: 時間 (秒) : 比較回数
-------------------------------
力任せ : 0.133 : 149,938
BM 法 : 0.046 : 30,168
BMH 法 : 0.041 : 29,728
quick : 0.033 : 25,094

www.geocities.jp/m_hiroi/light/pyalgo11.html

631 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 00:41:06 ]
名前を変えるほど改良されてる訳でもない気がしないでもない

632 名前:デフォルトの名無しさん [2008/10/24(金) 01:09:30 ]
Quick Search algorithm www-igm.univ-mlv.fr/%7Elecroq/string/node19.html

The C code
void preQsBc(char *x, int m, int qsBc[]) {
int i;

for (i = 0; i < ASIZE; ++i)
qsBc[i] = m + 1;
for (i = 0; i < m; ++i)
qsBc[x[i]] = m - i;
}


void QS(char *x, int m, char *y, int n) {
int j, qsBc[ASIZE];

/* Preprocessing */
preQsBc(x, m, qsBc);

/* Searching */
j = 0;
while (j <= n - m) {
if (memcmp(x, y + j, m) == 0)
OUTPUT(j);
j += qsBc[y[j + m]]; /* shift */
}
}



633 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 01:11:48 ]
[1] 授業単元:C
[2] 問題文: (1)1〜50までの整数の中から異なるいくつかをえらんび、
掛け合わせても一の位が0にならないようにする。選ぶことができる整数は40個。
上の文をプログラムで出力せよ。

(2)1〜50までの全てを掛け合わせると末尾の0を数えるプログラムを書け。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 10月24日8:00
[5] その他の制限:特になし

(1)は2の倍数、5の倍数が少なくとも1個ずつ入ったときにだけ1の位が0になる
ので2の倍数と5の倍数が同居しないように計算します。

634 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 02:25:39 ]
>>633
(2)
#include <stdio.h>

int main(void)
{
int i, c1 = 0, c2 = 0;

for(i=1; i<=50; i++) {
int temp = i;
for(; !(temp%2); c1++) temp /= 2;
for(; !(temp%5); c2++) temp /= 5;
}

printf("%d", c1 < c2 ? c1 : c2);

return 0;
}

635 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 02:55:22 ]
>>634
あたまいいなあ

636 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:09:59 ]
(2)は50を5^nで割った商を足してけばいいと思う
int cnt=0,t;
for(t=5;50/t;t*=5){
cnt+=50/t;
}
printf("%d\n",cnt);

637 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:12:31 ]
理由は素因数として2より5の方が少ないから。
数字を並べてみて1~50までに因数の5がいくつあるか数えるには?

638 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:36:40 ]
理由はもっともだが>>636にはハテナがたくさんだ

639 名前:デフォルトの名無しさん [2008/10/24(金) 04:41:46 ]
>>623
期限は10月24日(金)の11:00でした。
書き間違えてすみません。
よろしくお願いします。



640 名前:639 mailto:sage [2008/10/24(金) 06:35:26 ]
期限はアメリカ東海岸時間(EST)の10月24日(金)の11:00です
日本時間だと10月25日の11:00になります。
再再度訂正すみません

641 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 06:43:17 ]
すいません、C/C++以外の課題を聞けるスレってあります?

642 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 06:59:49 ]
[1] 授業単元: C
[2] 問題文:
2つの固有値から2×2の行列を求めるプログラムを作りなさい。
固有値は整数のみとする。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]コンパイラ名とバージョン:Visual studio
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:特になし

643 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:03:10 ]
620をお願いします

644 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:44:17 ]
[1] 授業単元:C言語 (ポインタ)

[2] 問題文(含コード&リンク):出力例のように キーボードから0〜9 の数字d と,正の整数n を読み込み,n 以下の整数x で,
x とx の2 乗の10 進数表示の両方にd を含むものをすべて出力するプログラムをつくりなさい。
ただし,次のプロトタイプ宣言で示すように,整数x とd を仮引数として,
x とx の2 乗の10 進数表示の両方にd を含む場合に1,そうでない場合に0 を返す
関数hit_digit を作成しなさい。
int hit_digit(int x, int d);
▼出力例
0〜9 の数字d を入力して下さい:7
正の整数n を入力して下さい:100

[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:08年10月25日24:00まで
[5] その他の制限:C言語の基本的な関数のみでお願いします。


645 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:04:13 ]
>>639
和訳くらいしたらどうなの・・・

646 名前:602 [2008/10/24(金) 12:33:22 ]
>>612
回答ありがとうございます!
助かりました。



647 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:41:56 ]
>>644
#include <stdio.h>
int hit_digit(int x,int d);
int main(void) {
int d,n,x;
printf("0〜9 の数字d を入力して下さい:");
scanf("%d",&d);
printf("正の整数n を入力して下さい:");
scanf("%d",&n);
for(x=0;x<=n;x++) if(hit_digit(x,d)) printf("%d\n",x);
return 0;
}
int hit_digit(int x,int d) {
int y,z;
y=x;
z=x*x;
for(;y;y/=10) if(y%10==d) for(;z;z/=10) if(z%10==d) return 1;
return 0;
}


648 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 13:34:34 ]
>>591
レス返信遅くなりました。
最大値というよりは極大値という感じですね。
飛び抜けて大きな値ってのは (平均値+5*ρ) 以上の値のことを指し示すのですが
ρってのが平均値の標準偏差です(たぶん)。

グラフで飛び出した点を求めたら、並べ替えなくていいそうです。

てかコンパイル通したら、peak.txtが出力されませんでした。今、プログラム解読中です(汗)


649 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 14:39:57 ]
[1] 授業単元: C言語
[2] 問題文:縦軸「|」横軸「-」グラフ「*」
を使って±√xのグラフを書け
[3] 環境
 [3.1] OS:mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 10月26日
[5] その他の制限: 基本的な関数のみでお願いします



650 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:36:43 ]
>>649
#include <stdio.h>
int main()
{
int x, y;
for (y = -4; y < 5; y++)
{
putchar('|');
for (x = 0; x < y * y; x++)
{
putchar(' ');
}
putchar('*');
putchar('\n');
}
return 0;
}


651 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:37:15 ]
横軸忘れた

652 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:05:49 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  トランプを切る方法の1つとして、トランプを2つにわけて両手でぱらぱらと切る方法がある。
  今、トランプは、ジョーカーを除いた52枚とする。もし、切り方のうまい人がいて、トランプ
  を正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。
  この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るでしょうか。
  これを計算するプログラムを作成してください。

  与えられたヒント
  52個の要素をもつ配列P,Qを用意します。最初は、Pi←i+1(i=0,2,3,…,51)とデータをセットします。
  そして、Q2i←Pi(i=0,1,2,…,25)およびQ 2(i-26)+1←Pi(i=26,27,…,51)を行う。もし、Qの要素が
  1,2,3,…,52になっていたら終了であるが、そうでなければ、P←Qを行い、同じ手順を繰り返す。

[3] 環境
 [3.1] OS: Windows (cygwin使用)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 10月27日18:00時まで
[5] その他の制限: for文かwhile文でお願いします

653 名前:デフォルトの名無しさん [2008/10/24(金) 16:27:02 ]
株式会社損害保険ジャパン
qb5.2ch.net/test/read.cgi/saku2ch/1185507477/


1 名前:新甚 博史 広報室 室長代理 [HShinjin@sompo-japan.co.jp] :2007/07/27(金) 12:38 HOST:ZP144243.ppp.dion.ne.jp<8080><3128><8000><1080>
対象区分:[法人/団体]管理人裁定待ち
削除対象アドレス:
www2.2ch.net/2ch.html

654 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:29:57 ]
>>652
8回で戻ったけどあってる?

655 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:35:11 ]
>>649
縦軸と横軸ってxyグラフ?実数と複素数?
±√abs(x)、もしくはx>=0 でxyグラフならできる。
実数と複素数でもできるけど、グラフの意味合いが違ってくるからなー。
その場合 x>0 Im=0の軸だけにプロット、 x<0 Re=0の軸だけにプロットになっちゃう。

656 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:54:14 ]
>>652
311,875,200

657 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:01:32 ]
>>650
ありがとうございました
横軸は自分で入れてみます
>>655
xyグラフです。
abs関数って絶対値を返すんでしたっけ・・・

658 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:02:19 ]
>>652
#include <stdio.h>
int main(void)
{
int P[52], Q[52];
int i, c, x;

for(i=0; i<52; i++)
P[i] = i+1;

c=0;
while(1) {
for(i=0; i<26; i++)
Q[2*i] = P[i];
for(i=26; i<52; i++)
Q[2*(i-26)+1] = P[i];
c++;

for(i=x=0; i<52; i++)
if(Q[i] != i+1)
x=1;

if(x!=0)
for(i=0; i<52; i++)
P[i] = Q[i];
else
break;
}
printf("%d times looped.\n", c);
}
本当は終了条件判断後の代入と最初の代入だとかを一緒にすべきだよな。でもここでは文意どおりに…。

659 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:02:24 ]
>>652
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7843.c



660 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:24:05 ]
>>649
#include <stdio.h>
#include <math.h>

#define START_X -30
#define START_Y -10
#define WIDTH 60
#define HEIGHT 20

int main(void)
{
int x,y,p;
int max_width = START_X + WIDTH;
int max_height = START_Y + HEIGHT;

for(y = max_height; y > START_Y; y--) {
putchar(y?'|':'0');
for(x = START_X; x < max_width; x++) {
p = (int) sqrt(fabs(x));
putchar((p == abs(y))?'*':' ');
}
putchar('\n');
}

putchar('+');
for(x = START_X; x < max_width; x++) {
putchar(x?'-':'0');
}
putchar('\n');
return 0;
}
y=±sqrt(abs(x))のグラフを書きます。 START_X=0で使ってくれ。

661 名前:デフォルトの名無しさん [2008/10/24(金) 17:42:34 ]
1] 授業単元:情報処理V
[2] 問題文:JPEGファイルを読んでブロック(マーカ単位)で表示するプログラム(16進)
[3] 環境
 [3.1] OS:Windows(cygwin使用)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
 [4] 期限: 10月30日16:30まで
[5] その他の制限:基本的な関数のみでお願いします。

662 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 18:53:17 ]
>>647

丁寧な回答ありがとうございました!

663 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 20:49:17 ]
>>551 のつづきです。

[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):

@とAは>>551

B (平均値+5*ρ)以上の値を最大値(極大値)とするように変更させなさい。ρを標準偏差とする。

C @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
  Bで求めた各々の最大値(極大値)の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに
   出力できるように変更させなさい。
    例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
            [38]3.4255342 [72]3.214283 [98]2.434924390・・・・
             ・
             ・
             ・

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月26日23:59まで
[5] その他の制限: 特になし

よろしくお願いします。


664 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 22:44:49 ]
[1] 授業単元:if文
[2] 問題文:3つの整数を入力し,それらを比較して,大,中,小を判定しなさい.
       3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも
       正確に判定ができるように対応すること.
       全ての条件を場合分けするプログラムは不可とする.
       できるだけ少ない条件分けで対応できるよう工夫すること。

例 9 5 2   →   大:9  中:5  小:2
例 6 6 6   →   大:6,6,6  3つの数は等しい
例 6 6 3   →   大:6,6  小:3
例 6 6 9   →   大:9  小:6,6

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 10/30 13時
[5] その他の制限: 特になし

よろしくお願いします

665 名前: ◆O2tO.pRmks mailto:sage [2008/10/25(土) 00:55:24 ]
[1] 授業単元:配列
[2] 問題文:配列a[10] = {53,68,9,55,42,70,43,66,97,84}の要素の最大値・最小値・平均値を調べ、結果を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] gcc
 [3.3] 言語:C
[4] 期限:2008年10月25日まで
[5] その他の制限:特になし

666 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:05:55 ]
>>665
#include <stdio.h>

int main(){
int a[10] = {53, 68, 9, 55, 42, 70, 43, 66, 97, 84};
int max, min, i;
float ave = 0.0;

max = a[0];
min = a[0];
for(i = 1; i < 10; i++){
if(max < a[i])
max = a[i];
if(min > a[i])
min = a[i];
ave += (float)a[i];
}
ave /= 10.0;

printf("最大値: %d\n", max);
printf("最小値: %d\n", min);
printf("平均値: %.1f\n", ave);
}


667 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:24:51 ]
>>664
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
int num[3],w,cnt,i;
for(cnt=0;cnt<3;cnt++)
scanf("%d",&num[cnt]);
for(cnt=0;cnt<2;cnt++)
{
for(i=cnt+1;i<3;i++)
{
if(num[cnt]<num[i])
{
w=num[cnt];
num[cnt]=num[i];
num[i]=w;
}
}
}

668 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:25:26 ]
>>664

printf("大:%d",num[0]);
if(num[0]==num[1])
printf(",%d",num[1]);
else
{
if(num[1]==num[2])
{
printf(" 小:%d,%d",num[1],num[2]);
exit(0);
}
else
printf(" 中:%d",num[1]);
}
if(num[0]==num[2])
printf(",%d 3つの数は等しい",num[2]);
else
printf(" 小:%d",num[2]);
}
gcc知らない…

669 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:37:48 ]
>>664

#include <stdio.h>

int main(){
int i, j, tmp;
int count = 0;
int a[3];

scanf("%d%d%d", &a[0], &a[1], &a[2]);

/* 降順にソート */
for(i = 0; i < 3; i++){
for(j = i + 1; j < 3; j++){
if(a[i] < a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}



670 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:38:17 ]
>>664 続き


/* 1個目と2個目を比較して値が違ったら「大」が決定 */
if(a[0] != a[1]){
printf("大: %d ", a[0]);
/* 2個目と3個目を比較して「中・小」を決定 */
if(a[1] != a[2])
printf("中: %d 小: %d\n", a[1], a[2]);
else
printf("小: %d, %d\n", a[1], a[2]);
}
/* 1個目と2個目が一緒なら2個目と3個目を比較して「大・小」を決定 */
else{
if(a[1] != a[2])
printf("大: %d, %d 小: %d\n", a[0], a[1], a[2]);
else
printf("大: %d, %d, %d 3つの数は等しい\n", a[0], a[1], a[2]);
}

return 0;
}


671 名前:669-670 mailto:sage [2008/10/25(土) 01:40:07 ]
>>667-668で既に回答出てたな・・

672 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:45:44 ]
>>671
俺のは手抜きです^^;

673 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:52:31 ]
>>672
結局同じようなことやってるからあまり変わらないっしょー

674 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 02:09:28 ]
>>663
結局1番と2番は日本語の意味が理解できなかった。
2番は1番の意味がわかればできるけど1番は何回読んでもわからない・・・
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define isOuter(val,ave,sd) ((val)> (ave) + 5*(var))
int main(){
FILE *fp,*fout;
char buf[1024],*cp;
double data[1024],ave,sum=0,sum2=0,var,sd;
int cnt=0,i,k=0;
if((fp = fopen("data.txt", "r")) == NULL) return 1;
if((fout = fopen("peak.txt", "w")) == NULL) return 1;
while((cp = fgets(buf,sizeof(buf),fp)) != NULL){
while((cp = strtok(cp," \t\r\n")) != NULL){
data[cnt] = atof(cp); sum += data[cnt]; sum2 += data[cnt]*data[cnt];
if(++cnt == 1024){
ave = sum / 1024.0; var = sum2 / 1024.0 - ave*ave; sd = sqrt(var);
for(i=0;i<1024;i++) if(isOuter(data[i] , ave, sd)) fprintf(fout,"[%d]%f ", i+1,data[i]);
fprintf(fout,"\n");
cnt = sum = sum2 = 0;
}
cp = NULL;
}
}
fclose(fp); fclose(fout);
}

675 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 04:36:38 ]
>>620

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7845.txt

676 名前:675 mailto:sage [2008/10/25(土) 04:44:02 ]
>>620
>>675

ミスった、スマン
一つ前の古いのをUPしてしまった…
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7846.txt

677 名前:デフォルトの名無しさん [2008/10/25(土) 05:36:07 ]
[1] 授業単元:趣味プログラム
[2] 問題文(含コード&リンク):
sony.squares.net/dat.txt
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:最新版Cygwinのgcc
 [3.3] 言語:C
[4] 期限: [無期限]
[5] その他の制限:リンク先に記載。

重複を取り除きながらの挿入ソートでは10分経っても終わりませんでした。O(n^2) = O(366051^2)
重複を取り除きながらでも早いソートを実現したいです。お願いします。

678 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 06:28:59 ]
>>677
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7847.c
条件Xってのがいまいち不明だったので手抜きで、最後に入ってる場所だけ分かる。

679 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 06:43:50 ]
>>677
あれ、条件2ってどういうこと?
最大値が分かれば1から順に並べればいいってこと、、、なのか?
ソートっていってるからそうじゃないような気がするんだが。



680 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 09:50:58 ]
値の範囲がわかってるなら、nが現れた行番号をその配列のn番目に入れればいいから、ソートする必要ない気がする

681 名前:デフォルトの名無しさん [2008/10/25(土) 13:10:37 ]
>>678
ありがとうございます。参考にさせて貰います。
>>679-680
すいません、本来のプログラムでは未ソート時点では最大値や点の数が分かっていませんでした。

682 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 14:21:22 ]
それが分かってないなら>>678
は使えないな、まさしく>>680
の手法だから


一旦二分木に移していく感じでならO(nlogn)でソートできるんじゃないかな
c++のsetで試したからcのソース無いけど

683 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:00:23 ]
Quickソートでいいんじゃない?

684 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:25:56 ]
クイックソートしてから重複除いても>>677でやったのよりそっちのほうが速いよね

685 名前:初心者 [2008/10/25(土) 15:26:11 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  ★下記の仕様を満たすプログラムをC言語で作成しなさい
  【仕様】 表計算ソフト簡易プログラム

  ▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。
  ▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。
  ▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。

   (表示例:空欄にはそれぞれ計算結果が入ることになる)

番号| 国語 数学 英語    |合計    |平均     |順位
1 |  75   35   40     |       |       |
2 |  69  75   82       |       |       |
        (中    略)
10 |   57  48   36      |       |       |
---------------------------------------------------
合計 |
平均 |
最高 |
最低 |

[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: 分かりません
 [3.3] 言語: C言語
[4] 期限: 来週中ぐらい
[5] その他の制限: 繰り返し、条件処理、配列を勉強しました。
         これらを使ってお願いします。
         初心者なので初心者でも分かるようなプログラムを
         お願いします。

686 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 22:03:03 ]
>>685
こんな感じでいいのか?

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7849.txt

687 名前:686 mailto:sage [2008/10/25(土) 22:07:11 ]
あ、変な改行いれちまった。
79行目の最後の「\」と改行を消して80行目とつなげてくれ

688 名前:611 [2008/10/25(土) 22:32:12 ]
提示したプラグラムを補う感じで、>>611お願いいたします。。

689 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 22:43:40 ]
やだ



690 名前:デフォルトの名無しさん [2008/10/25(土) 22:49:55 ]
[1]C
[2]kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7850.txt
[3]C言語
[4]来週の水曜
[5](2)はライブラリ関数のqsortを使うようお願いします
よろしくお願いします。

691 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 01:50:39 ]
C言語で長門がやってたみたいにゲームの改造とかできますか?

692 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 02:23:02 ]
>>690
答え合ってるか分からん。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7852.txt

693 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 02:36:10 ]
>>674
まず@番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。
その値を1024個を一つのくくりとする。つまり1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
この1024個の値の平均値と平均値から飛び出している値=最大値(極大値)を求める。
最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。
次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。

こんな感じです。わかりやすく説明したつもりなんですけど・・・どうでしょうか?

プログラムよろしくお願いします。

694 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 02:59:59 ]
>>693
>1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
なんで1024が[205][3]なの?

1024個ごとに平均値と最大値を出力すればいいのか?

695 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:00:12 ]
>>691
長門裕之がゲームの改造をしていたのは知らなかったがプログラミング言語Cを用いてゲームの改造ならできるよ

696 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:02:33 ]
>>694
209921行だからじゃない?

697 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:04:49 ]
だけど「209921行5列」なのに「2097152個」ってなんかへんじゃね?


698 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:14:14 ]
やっぱ理解できんわ

699 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:36:28 ]
実際にデータを見ると209920行なわけだが。。。



700 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:38:18 ]
>>694
> 1024個ごとに平均値と最大値を出力すればいいのか?
そう書いてある

701 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:43:30 ]
>>693は出題者だったか。
であれば、array[206][5]という2次元配列に読ませる必要があるのかどうかを知りたい。
別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?

それと、「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、
じゃあ最初の課題では極大値の判定はどうやってやればいい?

702 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 05:09:52 ]
>>611 >>688
簡易ボイヤームーア法で良ければこれで
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7853.txt

完全版はアルゴリズムが理解できん

703 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 05:18:45 ]
ja.wikipedia.org/wiki/%E3%83%9C%E3%82%A4%E3%83%A4%E3%83%BC-%E3%83%A0%E3%83%BC%E3%82%A2%E6%96%87%E5%AD%97%E5%88%97%E6%A4%9C%E7%B4%A2%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
ボイヤームーア

704 名前:デフォルトの名無しさん [2008/10/26(日) 08:49:35 ]
友達からC++のプログラムもらって家でコンパイルしたら
strcpy_s()関数が使えません、という警告が出て、コンパイルが成功しませんでした。
調べてみたらstrcpy_sはstrcpyの拡張版らしくて、うちのコンパイラが若干古いので、strcpy_sは使えないみたいなんです。
それでプログラムのstrcpy_sをすべてstrcpyに置き換えたら、またエラーが出ました。
strcpy_sは引数の数が三個で、strcpyは二個なんで、その警告が出ました。
strcpy_sを、strcpyと同様の動作をさせる関数として定義すればうまくいくと思ったのですが、どのような関数を定義すればよいでしょうか。



705 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 08:53:42 ]
>>704
例えば
void strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource) {
strcpy(strDestination, strSource);
}

マクロでもいいと思うけど、というか、他にもいろいろ問題出てこないの?って気がしなくもない。

706 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 08:55:15 ]
>>704
って糞マルチかよ。スレチだけどいいかと思って答えた俺のバカー

707 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 08:58:18 ]
>>706
マルチだからといって無碍に切り捨てるのも問題かと。

708 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 09:02:56 ]
マルチだと分かっていて回答するならふさわしいスレで回答できるじゃん。
今回はここかな。
pc11.2ch.net/test/read.cgi/tech/1224057986/499

宿題スレおよび以下はスレチでしょ
pc11.2ch.net/test/read.cgi/tech/1224000127/681

709 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 09:53:26 ]
>>708
御意



710 名前:デフォルトの名無しさん [2008/10/26(日) 11:48:59 ]
コンソールからファイルを引数として渡すと、そのファイルのパーミッションと
ディレクトリ種別などを取得するようにしたいです。→(例drwxr-xr-x)
以下のコードで、st_modeを8進数で表示してみたところ
#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
struct stat abc;
if(stat(argv[1], &abc)==-1){
perror("stat");
exit(EXIT_SUCCESS);
}
printf("%o\n", abc.st_mode);
}
パーミッション644のファイルが「100644」と表示されます。
これを100644の代わりに-rw-r--r--と表示するように実装するにはどのように
書けばよいか教えて下さい。宜しくお願いします。

711 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:07:41 ]
abc.st_mode | 0777
って文字列にすんのかよ。

printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-');
printf("%c" (abc.st_mode & S_IRUSR) ? 's' : 'r');
printf("%c" (abc.st_mode & S_IWUSR) ? 's' : 'r');
printf("%c" (abc.st_mode & S_IXUSR) ? 's' : 'r');
以下略

712 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:08:33 ]
なんかひどいコピペミスをしたようだ。。。

printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-');
printf("%c" (abc.st_mode & S_IRUSR) ? 'r' : '-');
printf("%c" (abc.st_mode & S_IWUSR) ? 'w' : '-');
printf("%c" (abc.st_mode & S_IXUSR) ? 'x' : '-');
以下略

713 名前:デフォルトの名無しさん [2008/10/26(日) 12:17:48 ]
printfよりもputcharがよくね?

714 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:31:30 ]
そだね。putcharの方がよかた。
っていうかカンマも抜けてるし何このグダグダ感orz

715 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:32:45 ]
('ー')

716 名前:デフォルトの名無しさん [2008/10/26(日) 12:41:28 ]
>>712
出来ました。ありがとうございます。
ちなみにディレクトリがdでなく-になってしまうのですがまだ他に
何か必要でしょうか?

717 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:52:23 ]
横から口だし失礼

ボイヤームーアってどのくらい速いんですか?
ソートの種類で例えるとどのソートに匹敵する実用的なアルゴリズムなんでしょうか?




718 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:54:30 ]
>>717
www.google.co.jp/

719 名前:デフォルトの名無しさん [2008/10/26(日) 12:59:00 ]
setuidbit, setgidbit, stickybitなどを考慮するともっとひどいコードに。



720 名前:デフォルトの名無しさん [2008/10/26(日) 13:10:37 ]
Visual Studio使ってる人ってVisual C++ Express Edition ?

721 名前:デフォルトの名無しさん [2008/10/26(日) 13:10:49 ]
>>719
なるほど。あんまし大変になりそうであればとりあえずこんな感じで十分
なのでいいです。ありがとうございました。

722 名前:デフォルトの名無しさん [2008/10/26(日) 14:02:41 ]
[1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。
#include <string.h>
int strcmp(char str1, char str2);
------------------------
str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数
関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */
関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */
関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */
関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。
2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。
[3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C
[4] 期限:2008年10月27日16:00まで
[5] その他の制限:1の関数の宣言は以下のようにする。
関数 void ReadData(struct person *person, int *index, int *n);
関数 void PrintData(struct person *person, int *index, int n);
関数ReadData、PrintDataでは、
while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name,
person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){
index[i]=i;
i++; }
-------------------------------------------------------------
for(i=0;i<n;i++){
printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name,
person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); }
とりあえず、問題1の並び替えがうまく出来ませんorz
お願いします。


723 名前:デフォルトの名無しさん [2008/10/26(日) 14:09:02 ]
[1] 授業単元:プログラミング
[2] 問題文:
Newton--Raphson法を用いて
X*X*X-7X*X+16X-10=0
の解を求めよ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/24
[5] その他の制限:初心者です。なるべく基本的な構造でお願いします。

>>474
以前お願いしたのですがうまくいきません。どなたか問題点を指摘
していただきたいです。また初歩的な30行程度のプログラムにしたいと
思っています。


724 名前: ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 14:26:39 ]
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
重みつき無向グラフを隣接行列で表現し、縮約を行うプログラムを実装せよ。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月30日まで
[5] その他の制限: 期限が近めですが、なんとか、宜しくお願いします。

725 名前:デフォルトの名無しさん [2008/10/26(日) 14:29:14 ]
>>723
#include <stdio.h>
#include <math.h>

#define EPS0 1.0e-5

double fnc(double x);
double dfnc(double x);

main()
{
double x0, x1;
x0 = 0;
x1 = 10;
while(fabs(x1 - x0) > EPS0)
{
x0 = x1;
x1 = x0 - fnc(x0)/dfnc(x0);
}
printf("x = %lf\n", x1);
}

double fnc(double x)
{
return x*x*x - 7*x*x + 16*x - 10;
}

double dfnc(double x)
{
return 3*x*x - 14*x + 16;
}


726 名前:デフォルトの名無しさん [2008/10/26(日) 14:36:19 ]
>>725
ありがとうございます。ものすごく早い回答がいただけて
とてもうれしいです。早速じっこうしてみましたが「関数の
値を返すべき」という警告がでるのでぜひ解除して
いただきたいです。本当にお願いします。

727 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:38:31 ]
>>726
main()の最後に return 0; を付ければいい

728 名前:デフォルトの名無しさん [2008/10/26(日) 14:42:17 ]

CodeGear C++ 5.92 for Win32 Copyright (c) 1993, 2007 Code
kadai5z.c:
警告 W8070 kadai5z.c 20: 関数は値を返すべき(関数 main )
警告 W8066 kadai5z.c 30: 実行されないコード(関数 dfnc )
エラー E2378 kadai5z.c 31: Return文に ; がない(関数 dfnc
*** コンパイル中に 1 個のエラーが発生しました ***

このような表示になります。

729 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:49:47 ]
縮約のアルゴリズムってこんな感じ?面倒だから実装はしないけど


縮約関数:
 func(G, v, w)

意味:
  グラフGに於ける点(v,w)で結ばれる辺を縮約する

仕様:
 グラフGに於ける点wを削除し、点wに接続する全有向辺を点vに接続し直す(有向辺を追加する)
 ただし、重複している場合は追加しない


(点wを削除するためには、新規にグラフG’を作成?)



730 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:51:18 ]
辺v,wの削除も

731 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:51:36 ]
hairanai

732 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:52:48 ]
無向グラフだ

733 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 15:29:11 ]
[1] 授業単元:プログラミング
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7855.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:途中まで作成はしたのですが上手くいきません。
         よろしくお願いします。


734 名前:デフォルトの名無しさん [2008/10/26(日) 15:40:32 ]
>>733
#include<stdio.h>
#define N 100

main()
{
int t;
double a, x[N+1];

printf("成長パラメーターの入力");
scanf("%lf", &a);
x[0] = 0.5;
for (t=0;t<=N-1;t++)
{
x[t+1] = a * x[t] * (1.0 - x[t]);
}
for (t=0;t<=N;t++)
printf("t=%dのとき人口は%lgです。\n",t,x[t]);
return 0;
}


735 名前:724 ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 15:42:27 ]
>>729
はい、ただ重複している場合は追加しないのではなく、
重みを足す事になっています。
 
なんとか、実装して頂けると嬉しいです。。

736 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:07:21 ]
>>735
やってみる

737 名前:724 ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 16:21:56 ]
>>736
ありがとうございます!


738 名前:デフォルトの名無しさん [2008/10/26(日) 16:38:30 ]
[1] 授業単元:プログラミング
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7856.txt
[3] 環境
 [3.1] OS:MacOSX→Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/28
[5] その他の制限: 初心者ながらいろんなところでヘルプを得ながら必死に
書き上げたのですが、実はMacOSX上でしか動作しないことがわかりました。
Linux上でコンパイルするとエラーになってしまいもはやデバッグのしようが
わかりません。Linux上での動作が条件なので書き直したいのですが、どなたか
助けてください。

739 名前:デフォルトの名無しさん [2008/10/26(日) 16:47:47 ]
>>738
NetBSDでも動作するよ。



740 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:48:10 ]
>>738
linuxでも動いた。
コンパイルするシステムのヘッダファイルとかそういうの次第。

741 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:56:58 ]
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7857.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年10月27日10:00


742 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:59:28 ]
[1] 授業単元:C言語 「分野:ポインタ演習」

[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=7744
の7858.txtです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:08年10月27日24:00まで
[5] その他の制限:お手数ですが、C言語の基本的な関数のみでお願いします。


743 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:59:33 ]
>>737
出来た。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7860.txt


744 名前:デフォルトの名無しさん [2008/10/26(日) 17:10:49 ]
>>742
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
double horner(double x, double *a, int n);
main()
{
int i, n;
double x, *a;
printf("Horner の方法で多項式を計算します!\n");
printf("次数n を入力して下さい:");
scanf("%d", &n);
a = (double*)malloc(sizeof(double) * (n + 1));
printf("実数係数を順に入力して下さい:\n");
for(i = n; i >= 0; i--){
printf("a[%d] = ", i);
scanf("%lf", &a[i]);
}
printf("x の値を入力して下さい:");
scanf("%lf", &x);
printf("多項式の値 = %lg\n", horner(x, a, n));
free(a);
return 0;
}
double horner(double x, double *a, int n)
{
if (n == 0) return a[0];
return x * horner(x, a + 1, n - 1) + a[0];
}


745 名前:724 ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 17:27:55 ]
>>743
こんなに早く出来るなんて、思ってませんでした。。
本当にありがとうございました!

746 名前:デフォルトの名無しさん [2008/10/26(日) 17:45:25 ]
>>739>>740
そうですか。確認有り難うございました。ある特定のLinuxの環境での実行が条件
なので、とにかくそこの環境でコンパイルしたいのですが、以下のエラーって
どう変えればいいかとかわかったりしますでしょうか?エラーになる環境がないと
難しいかも知れませんが。。(エラーになるLinuxの環境が何のディストリビューション
かもわからず、すみません。Linuxクラスタだとか聞きましたが)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7861.txt

747 名前:デフォルトの名無しさん [2008/10/26(日) 17:49:18 ]
>>746
#include <unistd.h>


748 名前:デフォルトの名無しさん [2008/10/26(日) 17:54:21 ]
鼻血が止まらん

749 名前:デフォルトの名無しさん [2008/10/26(日) 17:54:44 ]
すまん。誤爆だ。



750 名前:デフォルトの名無しさん [2008/10/26(日) 17:57:50 ]
>>747
ありがとうございます。追加しましたが、どうやらエラーは変わらないようです

751 名前:デフォルトの名無しさん [2008/10/26(日) 18:11:45 ]
>>750
ディストロがわからないのはつらいね。
#include <sys/types.h>
では?


752 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 18:15:28 ]
自分が今使ってるOSがなんだか分からんの?

753 名前:デフォルトの名無しさん [2008/10/26(日) 18:27:04 ]
>>751
有り難うございました。半分くらい減りました。残るエラーはこちらです↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7862.txt
>>752
すみません、自分の管理している環境じゃないもので、テルネットして実行しています。
uname -aは打てますが、これが有益な情報かどうか不明です。。
(ちなみに打ったところ最後がi686 GNU/Linuxとなってました。)

754 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 18:55:06 ]
>>753
その uname -a 結果ください。

755 名前:デフォルトの名無しさん [2008/10/26(日) 19:04:56 ]
>>754
Linux XXXX 2.6.18-6-686-bigmem #1 SMP MM DD hh:mm:ss 2008 i686 GNU/Linux
と出ました。
それとぐぐって出て来たヘッダファイル(fcntl.hとか)を適当に追加しましたが駄目でした。
S_IFMT, S_IFBLKとかって何に定義されてるんでしょうか

756 名前:デフォルトの名無しさん [2008/10/26(日) 19:06:19 ]
すみません。Debian。ですかね。

757 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 19:09:50 ]
>>734
ありがとうございました!

758 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 19:17:16 ]
[1] 授業単元:プログラミング
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:式の部分が上手くいきません。
         よろしくお願いします。

759 名前:デフォルトの名無しさん [2008/10/26(日) 19:38:23 ]
こうやって見ると数式のプログラムばかりだね
理学部やならいいけど、工学部情報学科ならば実務とはかけ離れてるのも大概にしろと



760 名前:デフォルトの名無しさん [2008/10/26(日) 19:38:56 ]
プログラム演習は数式遊びの場じゃない

761 名前:デフォルトの名無しさん [2008/10/26(日) 19:40:09 ]
東大のプログラムの授業なんかは
ユニックスのパイプコマンドを作成しろとか
サーバー通信なんちゃらの実務的なのが多い


762 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 20:03:15 ]
>>761
東大じゃありませんが、1990年ごろの情報系学部演習ですでに、
ごく簡単なシェル/パイプを実装, (fork() +exec*()+pipe())
をやっていました。シグナルとかセマフォとかも。無論、当時の私には極悪・試行錯誤の連続で泊り込む勢いでした。
バークレーソケットは3年次後半でしました。

それはそうと、ロジスティック方程式を解いて(がんばれば高校数学でできます。)解析解に代入する、とかはどうでしょう。やっぱりだめですか。
ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E6%96%B9%E7%A8%8B%E5%BC%8F
数値解析部門は、それはそれで習得しなければならないと思います。

763 名前:デフォルトの名無しさん [2008/10/26(日) 20:17:24 ]
MATLBAでやったら全部一発

764 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 20:34:52 ]
>>755
私の環境は WindowsXP/cygwin なんですが、エラーはでませんでした。(警告によるとキャストが必要なものはありましたが、まあ問題ない)
さて、S_* などは、私の環境では sys/stat.h にあるのですが、(実体は /usr/include/sys/stat.h) >>755さんの環境でも、
インクルードファイルをみつけているようですね。(インクルードパスがちがっておれば、みつけられない、ってでてくると思います。)
すると、暗黙の #define が unix(posix) 用になっていないのかもしれません。

gcc -v ソース.c 2> mes.txt

として、mes.txt の内容をください。
2>
がうまくいかないのであれば、その旨書き込んでください。

765 名前:デフォルトの名無しさん [2008/10/26(日) 20:56:37 ]
>>764
レス有り難うございます。mes.txtをアップ致しました。
thread modelというのはposixになっているようですが。。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7864.txt

766 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 21:27:10 ]
>>765
では、
gcc -Dunix -v ソース.c 2> mes2.txt
の結果をください。
/usr/include/sys/stat.h の内容もください。

そ れ と、

このソースファイルをコンパイルしたいな、と思った動機を教えてください。というか白状してください。(笑)
もし演習の課題ならば、コンパイルできない、という事態に陥らないよう、教官がいろいろ陰で配慮してくださるはず。
うまくいかないのは、課題を出した教官が怠慢だったのか、ということもあるかもしれませんが、
私の見るところ、自主的に今ある環境で自分のやりたいことをやってみた、という気がします。
その意気やよし!
最後まで付き合います。ただし今日は徹夜を覚悟してください。

767 名前:デフォルトの名無しさん [2008/10/26(日) 21:40:07 ]
[1] 授業単元:データ構造とアルゴリズム演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7865.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 10月28日まで
[5] その他の制限: 特になし

よろしくお願いします

768 名前:デフォルトの名無しさん [2008/10/26(日) 21:50:29 ]
>>766
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7866.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7867.txt
アップ致しました。本当に課題です。文系なのに間違って海外の理系の学校に
来てしまい毎日半端ない宿題に追われているところです。なので、自主的に、
といいたいところですが今はとにかくコンパイルすることしか頭にありません。。
助けばかり乞うのは自分のためによくないのですが最近はあまりに半端ない分量の
ため依存率が高くなってきました。

769 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:06:22 ]
>>768
なんだか、教官が手抜きなんですねぇ。それは大変。

では、
gcc -v -D__USE_BSD -v ソース.c 2> mes3.txt
として mes3.txt の内容をください。
あと、コンパイルできたかどうか、コンパイルできたのなら実行結果
(おそらくは ./a.out . > mes4.txt
として mes4.txt に結果が入ると思います。)
を教えて下さい。

あるいは教官に「コンパイルできないよ!」と主張してください。(そちらは昼ですか?)
30分後にのぞきます。



770 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:11:05 ]
>>767
1-1:
struct cell *cell2 = cell1->next;
struct cell *cell3 = cell2->next;
printf("%d\n%d\n%d\n", cell1->element, cell2->element, cell3->element);

1-2:
struct cell *c;
for (c = cell1; c != NULL; c = c->next) {
printf("%d\n", c->element);
}

771 名前:デフォルトの名無しさん [2008/10/26(日) 22:18:55 ]
>>769
原因が判明しました。怒らないで下さい。いつもメイクファイルを使用しているのですが、
常にgccのオプションは-Wall -std=c99としています。先程たまたま-std=c99を取ったらコンパイル
出来てしまいました!(なんでMacの環境だと同じメイクファイルでエラーにならないんだろう。。)
なぜかの原因究明はもう辞めて寝ます。徹夜したところなので。。ちなみに教官にMac OSXの環境で
つくったからこれで勘弁して!って言ったら駄目だと言われました。厳しい世の中ですね。
色々とサポート有り難うございました。
以上

772 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:19:20 ]
2-1:
void append(struct cell **cell1, int e)
{
struct cell *cell2 = (*cell1)->next;
(*cell1)->next = malloc(sizeof(struct cell));
(*cell1)->next->element = e;
(*cell1)->next->next = cell2;
}

2-2:
void prepend(struct cell **cell1, int e)
{
struct cell *cell0 = malloc(sizeof(struct cell));
cell0->element = e;
cell0->next = *cell1;
*cell1 = cell0;
}

使い方:
append(&cell1, /* 新しい element */)
prepend(&cell1, /* 新しい element */)

773 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:45:12 ]
>>771
んー、それはそれで謎なんですが‥‥‥。
-std=c99
は、直近のCの規格でコンパイルする、ということでしかないので、今回は特に影響がないはず。
c99とすると、でインクルードするヘッダがかわるのでしょうか?c++ 風に <iostream> と.h がない書き方にしないといけないのでしょうか?よくわかりません。
このあたりは識者からのコメントをお待ちいたします。

実行結果を教えてくださるとありがたいです。ともあれ、おやすみなさい。

774 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:03:46 ]
gccの場合、-std使うとたしかそれに合わせて標準のヘッダの中身も
変化する(#ifdefなどを使って)から、その影響はあると思う。

775 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:06:18 ]
[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:inux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

776 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:10:01 ]
>>666
遅れましたが、ありがとうございました。

777 名前: ◆ojvIN3PEqY [2008/10/26(日) 23:31:37 ]
[1] 授業単元:プログラミング
[2] 問題文:ビットマップディスプレイの原理を用いて、入力した整数(0〜1000000)を、ビットマップ式に表示するプログラムをつくれ。

357111
*** *** *** * * *
* * * * * *
*** *** * * * *
* * * * * *
*** *** * * * *

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


778 名前: ◆ojvIN3PEqY [2008/10/26(日) 23:33:36 ]
例がおかしくなってしまったので無視してください(*_*)

779 名前:デフォルトの名無しさん [2008/10/26(日) 23:40:11 ]
[1] 授業単元:ハードウェア設計
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7844.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: 10月28日まで
[5] その他の制限: 特になし
よろしくお願いします。



780 名前:775 mailto:sage [2008/10/26(日) 23:43:32 ]
問題文に間違いがあったので修正します。

[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:inux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

781 名前:デフォルトの名無しさん [2008/10/26(日) 23:44:21 ]
>>777
#include <stdio.h>
#include <stdlib.h>

int
main()
{
char s[81];
int i = 357111;
sprintf(s, "banner %d", i);
return system(s);
}


782 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:48:42 ]
>>774
んー、では 64bit がらみですか?それとも <sys/stat.h> の内容が変わったのか?

ちょっと調べてみましたが、最近は stat(2) 返り値の st_mode の判別方法として、
if (S_ISBLK(infobuf.st_mode))
printf("block device.\n");
というマクロが定義されているようですね。
私は、
if ((infobuf.st_mode & S_IFMT) == S_IFBLK)
printf("block device.\n");
しかしらなかったのですが。

ひきつづき識者のコメントをいただけたら、と思います。

783 名前:デフォルトの名無しさん [2008/10/27(月) 00:09:30 ]
基本情報スレからきました

784 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:17:26 ]
>>777
#include<stdio.h>
#include<string.h> // memset
#define WIDTH (4*7)
#define HEIGHT (5)
void numset(char screen[HEIGHT][WIDTH], int x, int y, int num){
static const char font[][4*10+1]={ // 0123456789 の順に 3x5 で文字+数字間と末尾に一文字空白入れる
"*** * *** *** * * *** *** *** *** *** ",
"* * * * * * * * * * * * * * ",
"* * * *** *** *** *** *** * *** *** ",
"* * * * * * * * * * * * * ",
"*** * *** *** * *** *** * *** *** ",
};
int ix, iy;
for(iy=0;iy<5;iy++)
for(ix=0;ix<4;ix++) screen[y+iy][x+ix]=font[iy][num*4+ix];
}
void display_number(long value){
char screen[HEIGHT][WIDTH];
long div, x, y=0;
if(value<0 || value>1000000) return;
memset(screen, '\0', sizeof(screen));
for(div=1;value/div>=10;div*=10);
for(x=0;div>0;div/=10,x+=4) numset(screen, x, y, (value/div)%10);
for(y=0;y<HEIGHT;y++) printf("%s\n", screen[y]);
}
int main(int argc, char *argv[]){
int num=123456;
if(argc==2) sscanf(argv[1], "%d", &num);
display_number(num);
return 0;
}

785 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:37:21 ]
>>782
ヘッダ見ればいいんじゃ、とおもうんだけど。。。

786 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:50:25 ]
円周率3より悲惨な事実w

572 名前:名無し検定1級さん 投稿日:2008/10/27(月) 00:48:29
と思ったけど、今の大学3年以下のゆとり教育課程では
方程式を高校で初めて学ぶんだったねw
ありえんwww
複素数無くなったしw

787 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:53:46 ]
二次方程式 / 複素数平面 じゃないかね

788 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:54:39 ]
>>779
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7869.txt

問題2についてはなんか違う気もするけど仕様を満たせばいいかな。

gccでコンパイルできるかなぁ

789 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:58:40 ]
1,
1,2,
3,2,1,
1,2,3,4,
5,4,3,2,1,
.
.
.
これらの規則的な数字を配列のvd[1〜100]に順番に入れていきたいんですけどどうしたらいいでしょう。
あとその反対の
1,
2,1,
1,2,3,
4,3,2,1,
1,2,3,4,5,
.
.
.
をvm[1〜100]に順番に入れたいのですが、
ループさせてうまく配列に入れられないでしょうか。
わかるかた教えてください。
お願いします。



790 名前:デフォルトの名無しさん [2008/10/27(月) 01:07:17 ]
[1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。
#include <string.h>
int strcmp(char str1, char str2);
------------------------
str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数
関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */
関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */
関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */
関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。
2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。
[3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C
[4] 期限:2008年10月27日16:00まで
[5] その他の制限:1の関数の宣言は以下のようにする。
関数 void ReadData(struct person *person, int *index, int *n);
関数 void PrintData(struct person *person, int *index, int n);
関数ReadData、PrintDataでは、
while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name,
person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){
index[i]=i;
i++; }
-------------------------------------------------------------
for(i=0;i<n;i++){
printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name,
person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); }
とりあえず、問題1の並び替えがうまく出来ませんorz
お願いします。


791 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 01:08:57 ]
>>787
もちろん一次のこと
さらに複素数も無限級数もやらなくなった


792 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 01:09:34 ]
IT業界だけじゃないけど、これから日本のエンジニアは大変なことになる
大量に採用するなら今年までにしとけ
再来年からはヤバイ奴らが入社してくるぞww

793 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 01:10:28 ]
>>790
名簿ファイル下さい

794 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 01:13:49 ]
>>791
んじゃ中学で何習うのorz

795 名前:デフォルトの名無しさん [2008/10/27(月) 01:24:26 ]
>>793
名簿ファイルはリアルに教授の名前載ってるから、あげるの無理なんです
すみません

796 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 01:25:49 ]
>>795
せめて構造体の中身教えてな
themaには何が入ってるんだ?
研究テーマか何かか?

797 名前:775 mailto:sage [2008/10/27(月) 01:26:48 ]
>>780をお願いします。

798 名前:デフォルトの名無しさん [2008/10/27(月) 01:37:20 ]
>>796
名簿はこんな感じ
19670712 namae a aaaaaa@xxx.aaaaaa.ac.jp Uchu
19790102 namae b bbbbbb@xxx.bbbbbb.ac.jp Kotaidenshi
19300303 namae c cccccc@xxx.cccccc.ac.jp Uchu
----------------------------------------------------
themaには研究テーマが入ってます

宜しくお願いします


799 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 02:27:33 ]
[1] 授業単元:プログラミング
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:何度もすいません・・・
         式がやはりネックです



800 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 02:38:23 ]
>>701
>別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?
そういうことです。

>「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、 じゃあ最初の課題では極大値の判定はどうやってやればいい?
平均値以上の値を最大値(極大値)としなきゃいけないんですOTL


801 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 03:00:37 ]
>>790
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7870.txt

とりあえず、1番だけ。
2番は問題の意味がよくわからない。
もっと詳しく書いてくれ。
必要なデータとかあればそれもよろしく。

今日はもう寝る。

802 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 03:17:59 ]
>>663 問題修正
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
@ 5行209921列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と(平均値+5*ρ)以上の値を最大値(極大値)を求めなさい。ρを標準偏差とする。
最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。この作業をファイルの最後の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data

A 求めた最大値をpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を表示させ、2行目からは次の1024個中から求めた最大値を表示させなさい。

B @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
  @で求めた各々の最大値の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに出力できるように変更させなさい。
    例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
            [38]3.4255342 [72]3.214283 [98]2.434924390・・・・
             ・
             ・
             ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月27日午後5時
[5] その他の制限: 特になし

よろしくお願いします。

803 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 03:20:10 ]
>>802 補足説明
 
まず@番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。
その値を1024個を一つのくくりとする。つまり1個目[0][0],2個目[0][1],・・・,5個目[0][4],6個目[1][0],・・・,1024個目[205][3]とする。このとき個数=周波数の値でもある。
この1024個の値の平均値と最大値(極大値)を求める。
最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。
次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。

よろしくお願いします。

804 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 03:57:31 ]
[1] 授業単元:配列
[2] 問題文:10人分の2科目の試験得点(100点満点)を2次元配列に初期化しておく。2次元配列vの宣言と初期化は以下のとおり

int v[2][10]={{55,67,45,78,89,91,73,50,80,69}
{44,59,87,92,60,51,77,89,64,53}};

この10人分の科目別得点の平均を求めなさい。ただし、2科目の科目別平均は次の1次元配列に格納する。
 double mean[2]

doubleという型名で配列の名前がmean

《実行結果》
科目1の平均=69.700000
科目2の平均=67.600000


[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/27 午後1時
[5] その他の制限:出来るだけ短く

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



805 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 03:57:47 ]
>>785
そう、だから >>768 で sys/stat.h を貼ってもらって、それをみたんですが、
くだんの#define は
#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN
の下で定義されていました。
mac osx = darwin ≒ FreeBSD+mach? であっても、
-std=c99 とすると、この上のどれも #define されず、
それでいて-std= を指定しなければ、この上のどれかが #define される
ということ、かつ >>774 より-std で#define の内容がかわる、ということですから、そんなことがあっても不思議でない、ということです。
単にそれだけですが。

806 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 04:19:58 ]
>>805
失礼。認識間違いしていました。
>>768の環境では__USE_BSD も __USE_MISC も __USE_XOPEN もどれも #define されないようですね。
でも手元のVine Linux 4.2 では __USE_BSD と __USE_MISC が #define されています。(#error で確認)
したがって >>768 の環境に問題があるのでしょうか。debian な人にお願いするしかないですね。




807 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 04:24:18 ]
>>806
手元の Vine Linux 4.2 で -std=c99 をコンパイルすると、>>768 と同じ現象が再現しました。
じゃ、いったいなにが #define されているのでしょうか‥‥‥。

808 名前:デフォルトの名無しさん [2008/10/27(月) 08:13:30 ]
【質問テンプレ】
[1] 構造体:
[2] 英文なので翻訳します。
この宿題の中で、僕はFieldとScreenという2つのクラスを持っています。
Screen というクラスはField というクラスを80個持ちます。
で、問題はここからなのですが
教授は「Screenが無制限にFieldを持つようにプログラムを作れば、ボーナス点をやる」
とか言いだしたのでどうやるか教えてください。

[3] 環境
 [3.1] うぃんどーず
 [3.2] ぼーらんど 
[3.3] C++
[4] 一週間後
[5] 制限:new とか使う感じです。

809 名前:デフォルトの名無しさん [2008/10/27(月) 08:13:42 ]
>>801

ありがとうございます
問題2は
郵便番号 区(漢字で) 町(カタカナで) 町(漢字で)
の順に並んだ名簿のファイルを読み込んで並び変えます



810 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 08:21:13 ]
>>808
[3] 環境
 [3.1] うぃんどーず
 [3.2] ぼーらんど 

Windowsもborlandも読めないだろうと馬鹿にしてるんだな


811 名前:デフォルトの名無しさん [2008/10/27(月) 08:28:46 ]
>>810
いやwwwwwそういうわけじゃないです。。。
教えてくださいお願いします!

812 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 08:56:43 ]
>>808
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7871.txt

std::vectorを使ったがnew/deleteでも同じようにいけるはず
誰かに任せた

813 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 08:57:50 ]
#include <iterator>
#include <functional>

は不要なので削除して下さい

814 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 08:59:31 ]
>>789
int i, j, k, flag, vm[100];

for(i=1,k=0,flag=1; flag; i++) {
for(j=1; j<2*i-1 && flag; j++) {
vm[k++] = j;
if(k==100) flag = 0;
}
for(; j>0 && flag; j--) {
vm[k++] = j;
if(k==100) flag = 0;
}
}

下の場合は
for(j=1; j<2*i&& flag ; j++) {

815 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 09:07:36 ]
>>812
ありがとうございます。
でもnew/delete使う感じでお願いしたいんです。
vectorが何のこっちゃ分かりません。すみません・・・

816 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 09:09:19 ]
[1] 授業単元: 配列
[2] 問題文(含コード&リンク)
身長について処理をするプログラムの作成

最大20とする整数nをキーボードから入力する。
次に、n人分の実数(身長)をキーボードから入力しその平均身長をもとめ、
さらにそのそれぞれの人の身長と、平均身長との差を一人一行ずつ出力しなさい。
小数点以下は無視していい。
例)
n=3の場合
170.0 0.0
165.0 -5.0
175.0 5.0

[3] Windows
VC 6.0
言語:C++
[4] 期限:今日中
[5] その他の制限:特になし

c言語を侮っていてさぼり気味だったつけがまわり、気がついたら全くわからなくなってました。
ヒントだけでもいいのでどうかお願いします。

817 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 09:20:11 ]
>>815
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7872.txt

わかるかな?これ以上簡単に書けんよ

818 名前:デフォルトの名無しさん [2008/10/27(月) 09:24:37 ]
>>817
ありがとうございます!

819 名前:デフォルトの名無しさん [2008/10/27(月) 09:49:54 ]
[1] 授業単元: プログラミング基礎
[2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7873.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 10月27日 21:00まで

よろしくお願いします



820 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 10:20:56 ]
pc11.2ch.net/test/read.cgi/gamedev/1217601153/
Syntax Error. しかしらないキチガイが現れました

821 名前:デフォルトの名無しさん [2008/10/27(月) 10:26:09 ]
>>816
#include <stdio.h>

int main(void)
{
int i, n;
int sincho[20];
int sum, heikin;
printf("n? ");
scanf("%d", &n);
if (n >= 20) {
printf("nが大きすぎます。\n");
return 1;
}
for(i = 0; i < n; i++)
{
printf("%d人目の身長: ", i+1);
scanf("%d", &sincho[i]);
}
sum = sincho[0];
for(i = 1; i < n; i++)
{
sum += sincho[i];
}
heikin = sum / n;
for(i = 0; i < n; i++)
{
printf("%d %d\n", sincho[i], sincho[i] - heikin);
}
return 0;
}


822 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 10:31:06 ]
>>816

#include <stdio.h>
int main(int argc, char *argv[])
{
double height[20], sum, avg;
int n, i;

printf("n の値を入力してください: ");
scanf("%d%*[^\n]", &n);
if (n > 20) {
puts("大きすぎます");
return 1;
}
sum = 0.0;
for (i = 0; i < n; i++) {
printf("身長を入力してください: ");
scanf("%lf%*[^\n]", &height[i]);
sum += height[i];
}
avg = sum / n;
for (i = 0; i < n; i++) {
printf("%.1f %.1f\n", height[i], height[i] - avg);
}
return 0;
}

823 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 10:32:36 ]
>>819
#include<stdio.h>
int main(void){
char str[100],big[100];
int i,k;
printf("文字列を入力して下さい:");
scanf("%s",str);
k=0;
for(i=0; str[i]!='\0'; i++){
switch(str[i]){
case 'a':
case 'i':
case 'u':
case 'e':
case 'o':continue;
default:{big[k]=str[i]-32;
k++;
}
}
}
big[k]='\0';
printf("入力:%s\n",str);
printf("出力:%s\n",big);
}

824 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 10:34:06 ]
忘れた
return 0;

825 名前:デフォルトの名無しさん [2008/10/27(月) 10:35:03 ]
#include <stdio.h>
int main(void){
char str[100],big[100];
int i, j;
printf("文字列を入力して下さい:");
scanf("%s",str);
for(i=0, j=0; str[i]!='\0'; i++){
if (str[i]>='a' && str[i]<='z'){
big[j]=str[i]-('a'-'A');
if (big[j] == 'A' || big[j] == 'I' ||
big[j] == 'U' || big[j] == 'E' ||
big[j] == 'O')
{
;
}else j++;
}else if (str[i] == 'A' || str[i] == 'I' ||
str[i] == 'U' || str[i] == 'E' ||
str[i] == 'O')
{
;
}else {
big[j] = str[i];
j++;
}
}
big[j]='\0';
printf("入力:%s\n",str);
printf("出力:%s\n",big);
return 0;
}

826 名前:デフォルトの名無しさん [2008/10/27(月) 11:38:02 ]
>>788さん
ありがとうございます!
大変助かりました!

827 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 12:27:23 ]
>>820 = ID:FJ+86jwr ?
数字も読めないのか

828 名前:デフォルトの名無しさん [2008/10/27(月) 12:30:57 ]
[1] 授業単元:プログラミング
[2] 問題文:な簡単な単語検索を行うプログラムを作成
せよ.
1. 3 つの単語を入力し,これを検索対象のデータと
する.
2. 検索したい単語を入力すると,それが覚えた単語
の中に含まれていれば“YES!”,含まれていなけ
れば“NO!”と出力する.
3. −1 が入力されるまで,繰り返し検索できるように
する.
条件
3 つの単語は,2 次元配列str1[3][100] に格納する.
(str1 には99 文字までの単語を3 つ格納できる)
実行例
$ ./q2-4
Input 3 words:
<-- "aaa"
<-- "bbbb"
<-- "ccccc"
Search word: <-- "aaa"
YES!
Search word: <-- "dd"
NO!
Search word: <-- "-1"
$ (終了)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月30日 木曜日
[5] その他の制限: 標準関数strcmp(str *, str *) を使うということです
よろしくお願いします

829 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 12:50:45 ]
>>828
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7874.txt



830 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 13:20:59 ]
>>820
どう見てもキチガイはID:FJ+86jwrだな

831 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 13:54:18 ]
>>790
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7875.c

2番も1番と同じ要領でやってみた。

832 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 14:15:40 ]
>>802 問題文修正しました。
>>663 問題修正
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
@ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と(平均値+5*ρ)以上の値を最大値(極大値)を求めなさい。ρを標準偏差とする。
最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。この作業をファイルの最後の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data

A 求めた最大値をpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を表示させ、2行目からは次の1024個中から求めた最大値を表示させなさい。

B @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
  @で求めた各々の最大値の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに出力できるように変更させなさい。
    例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
            [38]3.4255342 [72]3.214283 [98]2.434924390・・・・
             ・
             ・
             ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月28日午後1時
[5] その他の制限: 特になし

よろしくお願いします。


833 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:17:14 ]
>>744

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

834 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:17:14 ]
>>832
@とAまでは↓もうプログラムはあります。
kissho1.xii.jp/7/src/7jyou16183.zip.html
DLkey : foo
あとはB番目の問題をやるだけです。

プログラムよろしくお願いします。

835 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:54:45 ]
>>832
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7877.c
peak.txtが例の通りにならないんだが、これでいいのだろうか。

>>834を読んでなかった…。

836 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:08:27 ]
3と4はもう答え書いたのに(´・ω・`)

837 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:09:06 ]
[1] 授業単元:プログラミング
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:

838 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:12:59 ]
>>835
ありがとうございます。
しかし、peak.txtが出力されませんでした。どうしてなんだろう?
コンパイルはgccですよね? 

839 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:17:46 ]
>>836
コンパイルはとおったのですが、peak.txtが出力できませんでした。
かなり格闘したのですが、手に負えなくて・・・OTL




840 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:20:25 ]
>>835
fprintf(fpout, "[%d]%lf ", j + 1, a[j]);
は正しくは
fprintf(fpout, "[%d]%f ", j + 1, a[j]);



841 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:22:01 ]
>>840
そうだった^^;

842 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:28:46 ]
>>836
というか、旧Bが現@なんだよねたぶん。

843 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:41:51 ]
>>842
はい、そうです。なんか旧@と旧Bの問題が重複(分かりにくい)ということだったので
旧Bの問題文を現@の問題文に含みました。

よろしくお願いします。

844 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:52:32 ]
>>838
peak.txtのファイルすらできないってこと??

845 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:05:02 ]
>>844
はい、そうです。ファイルができませんOTL
gccのオプションは -o だけでいいのですか?

846 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:09:16 ]
まさかコンパイルしただけでファイルが出来るとか思ってないよな

847 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:10:11 ]
>>845
gcc hoge.c -o hoge.exe
ってな感じにコンパイルして実行すれば良いと思うけど。。。
コンパイルは通るんだよね?

848 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:20:14 ]
>>846
あ・・・できると思ってました><
どうすればファイルを作成することが出来るのでしょうか?

>>847
コンパイルは通ります。フォルダの中にpeak.txtが出来てないだけです。

849 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:23:00 ]
>>848
実行しろよ
Linuxなら
./a.out




850 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:23:06 ]
>>848
コンパイルしてできた実行ファイルを実行する。
同じフォルダにdata.txtを置いておくこと。

851 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:24:26 ]
ひどいな・・・
赤ちゃんかよ・・

852 名前:デフォルトの名無しさん [2008/10/27(月) 17:40:17 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): f(x)=1/(2+sinx+cosx) の積分を[π,-π]の範囲でSimpsonの1/3公式で求め、分割数と誤差を表示させよ。
               
[3] 環境
 [3.1] OS:Windows
 [3.2] 言語:C言語
 
[4] 期限: 2008.10.29

お願いします。

853 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:40:26 ]
目が点になるっていうのはこういう事か

854 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:48:32 ]
>>852
誤差って、真値は?

855 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 18:02:09 ]
>>549>>551
すみませんでした。ちと、ボケてましたwww
うまく出力できました。
ありがとうございました。

856 名前:デフォルトの名無しさん [2008/10/27(月) 18:06:50 ]
>>854
あっ、すいません
√2×πです。

857 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 18:12:03 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):課題1:2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,原点からの距離を求める関数 length_vectorを作成する.
構造体 Point型を使用して,平面の点を表示する関数 print_vを作成する.

2:2次元平面上の点を表す構造体 Point 型と構造体配列を定義して,座標平面上の2点に関する計算を行うプログラムを作成したい.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,要素2つの構造体配列 arrayを定義する.
構造体配列 arrayに,平面の点を代入する関数 input_pointを作成する.
構造体配列 arrayに格納されている2点の長さを求める関数 length_vector2を作成する.
二乗の計算には pow ,ルートの計算には sqrtを使用
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7879.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C
[4] 期限: ([2008年10月28日17:00まで]
??????の部分を問題文に従ってうめていただけると助かります

858 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 18:19:44 ]
>>856
#include <stdio.h>
#include <math.h>

double f(double x)
{
return 1. / (2. + sin(x) + cos(x));
}

int main(void)
{
int k, n;
double h, a = -M_PI, b = M_PI, fo, fe, sum;

while (1) {
printf("分割数 N (0 = END) = ");
scanf("%d", &n);
if (n == 0)
break;

h = (b - a) / (2. * n);
fo = fe = 0.;
for (k = 1; k <= 2 * n - 3; k += 2) {
fo += f(a + h * k);
fe += f(a + h * (k + 1));
}
sum = (f(a) + f(b) + 4. * (fo + f(b - h)) + 2 * fe) * h / 3.;

printf("分割数 = %d, 誤差 = %.10g\n", n, sum - sqrt(2.) * M_PI);
}
return 0;
}

859 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 18:20:47 ]
うーん積み残し誤差も考慮しないといけんかな・・・・



860 名前:775 mailto:sage [2008/10/27(月) 19:16:14 ]
お願いします。

[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:inux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

861 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 21:35:39 ]
>>549
二つ目のですが整数を入力すると入力した逆の単項式が出てしまうので入力した順に出力されるようにして欲しいのですがそれだと変化しないのですが・・・

862 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 21:49:46 ]
>>861
双方向リストにするか、再帰を使うか。

863 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 22:00:12 ]
>>821>>822
お二人とも丁寧に有り難う御座います。ホントに助かりました。


864 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 22:09:35 ]
[1] プログラミング入門言語
[2] 五人分の点数(0〜100点まで)を入力し、点数の高い順に並べ替えさせるプログラム
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4] 期限:制限なし

初心者なので困ってます><お願いします!!

865 名前:デフォルトの名無しさん [2008/10/27(月) 22:19:29 ]
#include<stdio.h>
int main(void){
int score[5], temp, i, j;

for(i=0;i<5;i++){ //点数入力
printf("%d人目の点数: ", i+1);
scanf("%d", &score[i]);
}
for(i=0;i<5;i++){ //並べ替え
for(j=4;j>i;j--)
if(score[i] < score[j]){
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
for(i=0;i<5;i++)
printf("%d ", score[i]);
putchar('\n');

return 0;
}

866 名前:865 [2008/10/27(月) 22:22:22 ]
馬鹿みたいにタブ使ったから空白作れてないな。しくじった。
 #include<stdio.h>
int main(void){
int score[5], temp, i, j;

for(i=0;i<5;i++){ //点数入力
printf("%d人目の点数: ", i+1);
scanf("%d", &score[i]);
}
for(i=0;i<5;i++){ //並べ替え
for(j=4;j>i;j--)
if(score[i] < score[j]){
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
for(i=0;i<5;i++)
printf("%d ", score[i]);
putchar('\n');

return 0;
}


867 名前:デフォルトの名無しさん [2008/10/27(月) 22:47:26 ]
>>831
有難う御座います


868 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 22:53:22 ]
>>866
早速の回答ありがとうございます!!

もう一問わからないのが><
どなたかお願いします><

[1] プログラミング入門言語
[2] 3人分の3教科の素点を表示する。素点は100点満点でランダムに作る。
  またその時、
  ・3教科の合計・平均点を計算し、それぞれ素点の右の列に表示する。
  ・合計点の高い学生から順に表示する。
  ・平均点は小数第一までの表示とする。 
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4] 期限:なし。


869 名前:デフォルトの名無しさん [2008/10/27(月) 23:36:38 ]
OSはlinux
期限はとくになし

素数を数えて落ち着くプログラム
おながいします。



870 名前:デフォルトの名無しさん [2008/10/28(火) 00:49:26 ]
>>858
ありがとうございます。
すいませんが、積分範囲は自分で入力するようにしたいんですよ・・・言葉足らずで申し訳ありません。
一応自分で考えたんですけどうまく出力されません・・・間違っている場所の指摘お願いします。



871 名前:デフォルトの名無しさん [2008/10/28(火) 00:50:16 ]
>>858
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main(void)
{
FILE *fo;
double a, b;
int n, i;
double h, s, x;
double fa, fb, fx;
double sinx, cosx, sina, cosa, sinb, cosb;
if((fo = fopen("ans7.txt", "w")) == NULL){
printf("Do not open file\n");
exit(1);
}


872 名前:デフォルトの名無しさん [2008/10/28(火) 00:50:53 ]
つづき・・・
printf("積分区間a,bを入力してください.\n");
scanf("%lf%lf",&a, &b);
printf("分割数nを入力してください.\n");
scanf("%d",&n);
fx = 1/(2+sinx+cosx);
fa = 1/(2+sina+cosa);
fb = 1/(2+sinb+cosb);
h = (b-a)/n;
s = fa+fb;
x=a;
i=1;
x=x+h;
if(i%2 == 0){
s = s+2*fx;}
else{
s = s+4*fx;}
i = i+1;
while(i>n){
s = h/3*s;}
printf("分割数nは%d回です。\n", n);
printf("誤差は%lfです。\n", s);
fprintf(fo, "分割数nは%d回です。\n", n);
fprintf(fo, "誤差は%lfです。\n",s);
fclose(fo);

}

お願いします。

873 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 01:14:31 ]
>>870
修正点が多すぎるので>>858を修正しました。
あとは適当にいじって下さい。

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

874 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 01:26:51 ]
>>868
構造体使わないようにと思って。。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7882.c

875 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 02:27:04 ]
フィボナッチ数列を・・・43024項まで求めるプログラムが出来た。
この調子で、8月に発見されたメルセンヌ素数をはじき出す
プログラムを作るぜ。戯言すまそ。

876 名前:しろうと [2008/10/28(火) 10:04:34 ]
初心者です。シグナルハンドリングについて勉強しているとこです。
kill -9 [pid]
ってkillがpidを殺すコマンドで-9は深く考えた事無かったけどこれって
実はkill自体はシグナルを単に送るだけで、-9にkillみたいな意味があるって
認識を改めた。ここまで正しいですか?

877 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 10:12:36 ]
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7883.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月29日まで

よろしくお願いします。

878 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 10:15:54 ]
どなたか857の解答期限迫ってきてるんでお願いします
問題が見づらいようなら言ってください 

879 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:04:05 ]
>>857
課題1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* (x,y)-平面の点を座標で表す構造体 */
struct Point{
double x, y;
};

/* 原点からの長さを求める関数 */
double length_vector(struct Point *p){
return sqrt(pow(p->x, 2) + pow(p->y, 2));
}

/* 平面の点を表示する関数 */
void print_v(struct Point *p){
printf("(%f, %f)\n", p->x, p->y);
}



880 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:04:38 ]
>>857 続き
int main(void)
{
struct Point p;

printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);

print_v(&p); /* print_vを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector(&p) );

return 0;
}

881 名前:デフォルトの名無しさん [2008/10/28(火) 11:16:47 ]
[1] 授業単元:データの可視化
[2] 問題文:
1: 三角関数 sin x、cos xは、テイラー展開により、
xの多項式に展開できる。2m+1次までの展開を計算する関数、
を作れ、関数の宣言は、
float MySin(float x, int m)とせよ。

2:上記MySinを使って、次数を増やすにつれて、三角関数に近づくこと示せ。
xの範囲を-πからπまでとし、π/100毎にm=0, 1, 2, 3に対して計算せよ。

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

お願いします

882 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:17:04 ]
>>857
課題2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* (x,y)-平面の点を座標で表す構造体 */
struct Point{
double x, y;
};

/* 要素を代入する関数 */
void input_point(struct Point data[], int i)
{
printf("Input Point p[%d].x: ", i);
scanf("%lf", &data[i].x);
printf("Input Point p[%d].y: ", i);
scanf("%lf", &data[i].y);
}

/* 長さを求める関数 */
double length_vector2(struct Point data[]){
return sqrt(pow(data[0].x - data[1].x, 2.0) + pow(data[0].y - data[1].y, 2.0));
}

883 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:17:47 ]
>>857 続き
int main(void)
{
struct Point p[2]; /* 構造体配列の定義 */
int i;

for (i = 0; i < 2; i++)
{
input_point(p, i); /* 座標点の入力 */
}

printf("The length of vector: %lf \n", length_vector2(p) );

return 0;
}

884 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 12:00:28 ]
>>881
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7884.c
こゆこと?

885 名前:デフォルトの名無しさん [2008/10/28(火) 13:12:20 ]
>>873
ありがとうございました♪
もっと勉強します。。。

886 名前:しろうと [2008/10/28(火) 13:20:49 ]
signal(SIGINT, func1);
でコンパイルするとpassing argument 2 of 'signal' from incompatible pointer type
という警告が出ます。どう書けばいいですか?(gcc)

887 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 14:02:49 ]
>>886
void func1(int sig)
{
//処理
}


888 名前:しろうと [2008/10/28(火) 14:13:08 ]
>>887
有り難うございました。void func1(void)で定義してました。sigという整数
型の引数が渡って来てるんですね。


889 名前:しろうと [2008/10/28(火) 14:14:58 ]
訂正
sigという整数型の引数が渡って来てるんですね。
→整数型の引数が渡って来てるんですね。



890 名前:デフォルトの名無しさん [2008/10/28(火) 15:07:15 ]
C言語をやっている人はアルゴリズムも学習しているイメージがあるので
ここで聞かせて頂きます。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7885.txt
上記は疑似コードで書かれていますが、アルゴリズム1もアルゴリズム2も
配列の中から最小値を探し出す処理をしているそうですが、アルゴリズム1の
02行目では配列をどうやってtempにぶちこめるのでしょうか?

891 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 15:58:48 ]
アルゴリズムスレか擬似コードスレへ行ってください

892 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:00:44 ]
>>889
signal( )に渡した第1引数がそのまま渡される。


893 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:01:55 ]
>>890
関数を再帰呼び出ししている
1 #include <stdio.h>
2
3 int algo1(int ary[], int x)
4 {
5 if ( x == 0 ) return ary[0];
6 else {
7 int temp = algo1(ary, x-1);
8 if ( temp <= ary[x] ) return temp;
9 else return ary[x];
10 }
11 }
12
13
14 int main(void)
15 {
16 int a[] = {4, 3, 2, 1, 5, 7, 8, 9, 6, };
17
18 printf("min == %d\n", algo1(a, sizeof(a)/sizeof(a[0])-1));
ここの要素数引く1するのが糞だけど
19
20 return 0;
21 }
アルゴリズム2は、たぶん2分検索とかじゃないか

894 名前:892 mailto:sage [2008/10/28(火) 16:03:11 ]
いや言い方が変だな
まあシグナルが引数に渡されるということで

895 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:31:56 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7823.txt
これを実行して整数を入力すると入力した逆の単項式が出力されるので入力した順番に出力させよ
ちなみに係数も乗も0にするとプログラムは終了されます
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: お任せ
 [3.3] 言語: C


896 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:05:12 ]
問題:
・普通の日付をユリウス日に変換して
ユリウスに○日後を足し算して
・ユリウス日から日付を求める

言語:C/C++
期限:今日中
制限:無し

おねがいしまう

897 名前:775 mailto:sage [2008/10/28(火) 17:08:19 ]
お願いします。本当にさっぱりわからないので…
誤字修正しました

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

898 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:37:04 ]
[1] 授業単元: C言語
[2] 問題文: 1変数関数 f(x)=0.5*(x-2)*(x-2) の値が最小となる点を求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ:gcc
 [3.3] 言語: C
[4] 期限: 10月30日まで
[5] その他の制限:基本的な関数のみでお願いします

899 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:49:21 ]
どれもレベル高いなぁ('`A)
もう一回勉強しなおそう



900 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 20:16:48 ]
>>896
自己解決しました

901 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 21:05:38 ]
>>893
くそみそ?

902 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:46:59 ]
>>898
それx=2のときのf(2)=0が最小値なんだけど

903 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:48:50 ]
>>898
すごい馬鹿みたいな総当りでいいか?

904 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:51:09 ]
>>898
f(x)を微分したf'(x)の変曲点を求めるとかな

905 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:52:23 ]
いやf'(x)=0をニュートン法か二分法で解いた方がいいな

906 名前:デフォルトの名無しさん [2008/10/29(水) 00:39:08 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ある文字列を入力、その後また文字列を入力し、最初に入力した文字列に後で入力した文字列が含まれていれば1、含まれていなければ0と表示するプログラムを作成。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] C
[4] 期限: 2008/10/29 12:00まで
[5] その他の制限: 自作の関数を使うかstrcmp関数を使う。ポインタ変数を使う。#include<stdio.h>・#include<string.h>のみ使用。

                    

907 名前:デフォルトの名無しさん [2008/10/29(水) 00:42:26 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 大文字の文字列を小文字に変換するプログラム。文字列を入力する際に1文字でも大文字以外の文字が入っていれば、エラーを表示しもう1度入力を促すようにする(continue文で)
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] C
[4] 期限: 2008/10/29 12:00まで
[5] その他の制限: 自作の関数を使う。ポインタ変数を使う。#include<stdio.h>のみ使用。

905・906ともどもよろしくおねがいします。

908 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 00:53:58 ]
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):正または負の八桁以内の整数を入力し、次の変換法則にしたがって
文字列に変換して、結果を出力するプログラム
*変換規則
各桁の数を半角の数字に変換し、文字型配列に右詰め(最下位桁の数字を配列要素[11])
で格納し、3桁ごとに","を挿入して、最上位桁の文字の前に'+'または'-'の符号を付加する。
符号を格納した配列要素より左の要素には空白が格納されている。また、配列要素[11]には
ヌル文字が格納されている。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc55
 [3.3] 言語: C
[5]ポインタはまだ習っていないです

どうやるかさっぱり分かりません・・・
特に3桁ごとに、を挿入したり最後に+や-を付ける所で思考が止まりました
長くて読みにくいと思いますがどうかよろしくお願いします。

909 名前:775 mailto:sage [2008/10/29(水) 01:01:47 ]
お願いします。本当にさっぱりわからないので…
誤字修正しました

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]



910 名前:デフォルトの名無しさん [2008/10/29(水) 01:29:16 ]
>>898は、多少一般化して、任意の一変数多項式関数の最小値にしたらいいだろう

911 名前:デフォルトの名無しさん [2008/10/29(水) 01:42:04 ]

[1] 授業単元: プログラミング基礎
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7886.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月30日 23:59まで

よろしくおねがいします



912 名前:デフォルトの名無しさん [2008/10/29(水) 02:10:44 ]
>>911
割れるだけ割る。 素因数分解。 ユークリッドの互除法。 などがある。
ソースはユークリッドの互除法。 
3つの数の最大公約数は、2つずつの最大公約数を求めて、2つの最大公約数を求めればいいだろう

913 名前:デフォルトの名無しさん [2008/10/29(水) 02:14:38 ]
3つのはこれでいいのでは?
int gcd3(x, y, z){
return gcd( gcd(x,y), gcd(y,z));
}


914 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 02:50:51 ]
int gcd3(x, y, z){
return gcd( gcd(x,y), z);
}
で十分じゃない?


915 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 13:35:50 ]
>>906,907
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7887.txt
と思ったらタイムオーバー

916 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 14:34:52 ]
「入力された任意桁数(30桁以下)の整数に対し、各位の値を、配列を用意してそれに1つづつ格納する」のはどのようにするとスマートでしょうか・・・??

917 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 14:48:03 ]
>>916
スマートとか考えると後で意味不明のコーディングになる
forループでいいだろ

918 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 14:56:40 ]
自分でやってみましたが、powを使うとよく分からないことに・・・(泣)

言い方を変えて、<math.h>を極力使わないようにしたいです・・・

919 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:05:09 ]
for(i=0; i<30; i++){
arr[i] = n%10;
n /= 10;
}



920 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:17:13 ]
こんなに小さいプログラムでいいんですね(^^;

3時間かけて諦めた自分は何なんだろうorz

921 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:21:05 ]
30桁だから文字列だろ
#include <stdio.h>
int main(void)
{
char num[] = "123456789012345678901234567890";
int arr[30];
int i;
int c = strlen(num);
for (i = 0; i < c; i++)
{
arr[c - i - 1] = num[i] - '0';
}
for (i = 0; i < c; i++)
{
printf("%d ", arr[i]);
}
return 0;
}


922 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:23:21 ]
>>921
はいエラー

923 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 15:26:07 ]
いちいちstring.h使わんでも
forで0になるまで回せばいいじゃん。
>>919だと任意桁数ってのに合わないからね

924 名前:916 mailto:sage [2008/10/29(水) 16:01:52 ]
>>921
やはり>>916 の書き方が悪かったです…。
任意桁数の整数は、入力されたものを使うことになります。


925 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 18:08:16 ]
>>908
www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2008h20_2/2008h20a_fe_pm_qs.pdf
これの問6とほぼ一緒な感じか?
a,b,cに入るのは
a: /= 10
b: i % 3
c: i < j; i++, j--

正の整数に+をつけるなら、
if(minus != 0){
str[j++] = '-';
}
この付近に少しコードを付け足せばできると思う。

926 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 18:21:20 ]
>>925
すまん、勘違いした。
右詰めにするのか…。

927 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 18:41:54 ]
[1] 授業単元: プログラミング演習
[2] 問題文:1から50までの整数のうち,素数であるものを全て書き出すプログラムを,for文を用いて作成.
  出力結果は次のように横に並ぶようにする.

1 3 5 7 11 13 17 19 23 29 ・・・・

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月4日 16:00まで
[5] その他の制限:2重ループを用いる。nの素数判断は,2〜n-1までの数で順にわり算して,全ての数で割り切れなければnは素数。
            for文までしか習ってないのでそのあたりを考慮して頂けたらありがたいです。よろしくお願いします。

928 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 18:47:04 ]
>>927
#include <stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 50; ++i) {
for (j = 2; j <= i; ++j) {
if (j == i) {
printf("%d ", i);
} else if (i % j == 0) {
break;
}
}
}
putchar('\n');
return 0;
}


929 名前:928 mailto:sage [2008/10/29(水) 18:49:28 ]

int main()
{
int i, j;
for (i = 1; i <= 50; ++i) {
for (j = 2; j <= i - 1; ++j) {
if (i % j == 0) {
break;
}
}
if (j == i) {
printf("%d ", i);
}
}
putchar('\n');
return 0;
}

すいませんこっちのほうがま真っ当です



930 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 19:09:55 ]
[1] 授業単元: プログラミング基礎
[2] 問題文:




(以下の問題は、 算数にチャレンジ!! の中の 第559回問題 からの引用。)
1〜10の数が書かれたカードが1枚ずつ、全部で10枚あります。

今、これらのカードを並べ、隣り合った数の差を左から次々に加えていくことにします。例えば、

2,5,6,8,1,4,3,9,7,10
と並べたならば、
3+1+2+7+3+1+6+2+3=28
ということになります。
では、この計算結果が最も大きくなるようにカードを並べると、結果はいくらになるでしょうか。(問題終)

元の問題は算数の問題なので論理で答えを出すものだが、ここではプログラムを書いてその最大値を求めて欲しい。

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月14日まで

よろしくおねがいします

931 名前:デフォルトの名無しさん [2008/10/29(水) 19:15:13 ]
大きい数字が中心で1や2は端がいいな

932 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 19:53:24 ]
一般化して100個でも出来るのがいいな

933 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:12:11 ]
プログラムって総当たりってこと?
結構時間かかりそうとおもったけど、10桁くらいなら余裕か…。

934 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:19:50 ]
>>933
おそらく総当りだと思います

935 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:09:12 ]
>>930
100個は無理。
#include<stdio.h>
#include<string.h>
#define M 10
unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(unsigned int *x){for(int n=0;n<M;n++)printf("%d ",x[n]);}
unsigned int sanowa(unsigned int *x){unsigned int s=0,n; for(n=0;n<M-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]>x[n+1];return s;}

main(){
unsigned int i,j,k;
unsigned int orgnum[M],num[M],jretu[M];
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0; unsigned int maxretu[M];
for(k=0;k<kaijyo(M);k++){
memcpy(num,orgnum,4*M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i){max=i;memcpy(maxretu,jretu,4*M);}
}
retuprt(maxretu); printf(" max=%d\n",max);
}

936 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:14:43 ]
最大値を与える列を求める

#include<stdio.h>
#include<string.h>
#define M 10
void retuprt(unsigned int *x){for(int n=0;n<M;n++)printf("%d ",x[n]);}
unsigned int sanowa(unsigned int *x){unsigned int s=0,n; for(n=0;n<M-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]>x[n+1];return s;}
main(){
unsigned int i,j,k;
unsigned int orgnum[M],num[M],jretu[M];
for(i=0; i<M; i++) orgnum[i]=i+1;
for(k=0;k<3628800;k++){
memcpy(num,orgnum,4*M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
if(sanowa(jretu)==29){retuprt(jretu);printf("\n");}
}}

937 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:18:07 ]
プ

[4] 期限: 10月14日まで

938 名前:935 mailto:sage [2008/10/29(水) 21:21:55 ]
間違えた

939 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:23:28 ]
改めて>>877の問2)からどなたかお願いします。

問2)連結リストの先頭の次に、セルを一つ追加する関数を作成する。セルのelement
メンバの値は0 でよい。
つまり、cell1 → cell2 → cell3 → NULL
であるときに、この関数を1 回呼ぶと、
cell1 → (新しいセル) → cell2 → cell3 → NULL となるようにすればいい。

問3)連結リストの先頭の前に、セルを一つ追加する関数を作成せよ。セルのelement
メンバの値は0 でよい。
つまり、cell1 → cell2 → cell3 → NULL
であるときに、この関数を1 回呼ぶと、
(新しいセル) → cell1 → cell2 → cell3 → NULL となるようにすればいい。

自分なりに問2を進めてみたのですがvoid add_cell_secondをどう書いたらいいのでしょうか?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7888.txt



940 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:24:28 ]
これって解が214176個もあるぞ。 問題として解答するなら30にならないことも示す必要あるな。

941 名前:940 mailto:sage [2008/10/29(水) 21:37:08 ]
まちがえた

942 名前:940 mailto:sage [2008/10/29(水) 21:40:22 ]
11まではなんとかもとまるが

#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;

unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(vector<unsigned char> &x){for(int n=0;n<x.size();n++)printf("%d ",x[n]);}
unsigned int sanowa(vector<unsigned char> &x){unsigned int s=0,n; for(n=0;n<x.size()-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];return s;}

main(){
unsigned int M,K;
unsigned int i,j,k;
vector<unsigned char> orgnum,num,jretu;
for(M=2; M<20; M++) {
orgnum.resize(M),num.resize(M),jretu.resize(M);
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0;K=kaijyo(M);
for(k=0;k<K;k++){
memcpy(&num[0],&orgnum[0],M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i)max=i;
}
printf("M=%d max=%d\n",M,max);
}}

943 名前:930 mailto:sage [2008/10/29(水) 21:42:17 ]
>>935-936
ありがとうございました

944 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:42:45 ]
>>939
func(cell1)で次と前に新しいのを挿入する。
それぞれ先頭が帰ってくるが、こういうのでいいんだろうか。

struct cell *insert_next(struct cell *target)
{
struct cell *c1;
c1=(struct cell *) calloc(1, sizeof(struct cell));
c1->next=target->next;
target->next=c1;

return target;
}

struct cell *insert_prev(struct cell *target)
{
struct cell *c1;
c1=(struct cell *) calloc(1, sizeof(struct cell));
c1->next=target;

return c1;
}

945 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:46:33 ]
>>775です。

さっぱりわからないので少しだけでもお願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

946 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:47:57 ]
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;

unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(vector<unsigned char> &x){printf("( ");for(int n=0;n<x.size();n++)printf("%d ",x[n]);printf(")");}
unsigned int sanowa(vector<unsigned char> &x){unsigned int s=0,n; for(n=0;n<x.size()-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];return s;}

main(){
unsigned int M,K;
unsigned int i,j,k;
vector<unsigned char> orgnum,num,jretu,maxretu;
for(M=2; M<20; M++) {
orgnum.resize(M);num.resize(M);jretu.resize(M);maxretu.resize(M);
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0;K=kaijyo(M);
for(k=0;k<K;k++){
memcpy(&num[0],&orgnum[0],M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i){max=i;memcpy(&maxretu[0],&jretu[0],M);}
}
printf("\nM=%d max=%d ",M,max); retuprt(maxretu);
}}

947 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:49:43 ]
>>943

>>935は間違えているので、このように変更するように
x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];

948 名前:775 ◆00BY157eo6 mailto:sage [2008/10/29(水) 22:06:50 ]
>>775です。

さっぱりわからないので少しだけでもお願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

トリップつけました。

949 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 22:08:19 ]
>>929
ありがとうございました



950 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 22:09:28 ]
>>948
まずはテキストでうp

951 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 22:10:10 ]
>>944
ありがとう。そのinsert_nextとprevとfunc(cell1)を>>939のどこに入れたらいいんでしょうか?


952 名前:775 ◆00BY157eo6 mailto:sage [2008/10/29(水) 22:17:02 ]
>>950
テキストでファイル内容をうpしました。
ただ、できれば直接ファイルを参照して欲しいのですが…

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイル(内容は)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7890.txt
を参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_aux(内容は)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7889.txt
に含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

953 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 22:34:57 ]
>>952
もう一度行列を復習してから書き込んでくれ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7890.txt
の行列って正方行列じゃないだろ

954 名前:775 ◆00BY157eo6 mailto:sage [2008/10/29(水) 22:42:52 ]
>>953
あ、そうですね…

すいませんでした
一度ひっこみます

955 名前:775 ◆00BY157eo6 mailto:sage [2008/10/29(水) 22:50:53 ]
修正しました。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイル(内容は下のtxtにまとめました)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7892.txt

を参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_aux(内容は)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7889.txt
に含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

956 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:08:44 ]
>>930
面白い問題なので俺もやってみた。コマンドライン引数で要素数指定。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7894.txt

N=10 Max=49( 1152件) time 0:00.62
N=11 Max=59(11520件) time 0:06.03
N=12 Max=71(28800件) time 1:13.19
N=13 おわらねぇ……てか落ちた!

CPU Q6600 2.4GHz
OS Win Vista Ulti 32bit


957 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:11:19 ]
なんか atexit する場所がへんだった。

958 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:40:43 ]
N=2n+1のときの解はたぶん、

n+2, n, 2n+1, n-1, 2n, n-2, 2n-1, n-3,…,n+3, 1, n+1
だな。
N=2nのときも似たようなもん。証明は知らない。

959 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:44:30 ]
N=2n+3とすると
n+3, n+1, N, n, N-1, n-1, N-2, n-2,…,n+4, 1, n+2
となり簡明か



960 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:01:09 ]
N=2nのときmaxは、2*n*n-1
N=2n+1のときmaxは、2*n*n+2n-1
だな。証明は知らない。

961 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:36:04 ]
>>930
面白い問題なのでオレも考えてみた。
で、解くためのアルゴリズムを見つけた。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7895.txt
是非とも等角フォントで。

差の表を用いて考えれば
全部の数列の差を試さなくてすむし、一発で出来る

962 名前:930 mailto:sage [2008/10/30(木) 01:44:42 ]
>>961
絵はどうでもいいからCで書けよカス

963 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:56:47 ]
>>962
偽者だというのは分かるが、お前がキモイ・・・






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

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

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