08/10/20 18:10:38
授業単元: C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
条件は関数 void sort3 の引数は3つの int 型の値であるが,これをポインタ変数を受け取る関数に書き換える.交換の作業はすべて関数内で処理し,main 関数では交換作業を行わないものとする
。
[3] 環境
[3.1] OS: Windows/Linux
[3.2] コンパイラ名とバージョン: 任意
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2008年10月23日まで
475:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/20 23:25:55
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:関数・配列は習いましたが、ポインタは知りません。
自分で書いてみたのですが、例えば15を打つと
「素数ではありません」「素数ではありません」「素数です」とでてしまいます。
480:デフォルトの名無しさん
08/10/20 23:36:28
else{
for(i=3;i<=no;i+=2){
if ((no%i)==0){
puts("素数ではありません");
break;
}
else{
puts("素数です");
break;
}
}
}
481:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/21 00:06:50
>>480 481
ありがとうございます!
483:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/21 08:16:08
>>483
俺は
int* temp = a;
a = b;
b = temp;
かと思った
485:デフォルトの名無しさん
08/10/21 12:43:13
>>473
ありがとうございました。調べてみます。
486:デフォルトの名無しさん
08/10/21 12:53:22
>>476
それでコンパイルすると3つ目の整数を入力してから入力した整数が小さい順に出力されるようにしたいんだけどそれだとエラー起きてしまうのですが・・・
487: ◆3VUXqvbfSY
08/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:デフォルトの名無しさん
08/10/21 14:14:37
>>486
関数のプロトタイプ宣言
void sort3(int *x, int *y, int *z);
呼び出し
sort3(&n1, &n2, &n3);
489:デフォルトの名無しさん
08/10/21 17:19:27
>>487
どうやって入力するのかわからなかったけど、
とりあえず標準入力から一行ずつ float の値を一つ読み込こんでいくようにしておいた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
490:デフォルトの名無しさん
08/10/21 18:11:11
簡単なゲームを作っているのですが、今まで使っていたアイコンは32×32だったので、それを16×16のサイズにしようと思い、そのサイズの画像を取り込んだら、32×32のサイズに拡大されて表示されてしまうのですがどうしたらよいのでしょう?
アイコンファイルってサイズ指定するとこないですよね?
491: ◆3VUXqvbfSY
08/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:デフォルトの名無しさん
08/10/21 19:03:53
>>491
いいオプションがついてるな。
ってことはいい先生って事だ。たぶん。
493:デフォルトの名無しさん
08/10/21 19:13:49
2枚の画像を読み込んで、それを引き算をして、その引き算した画像を出力するプログラムをお願いします。
494:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/21 19:39:23
お願いします。
497:デフォルトの名無しさん
08/10/21 20:56:21
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
① 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
この作業をファイルの最後の2097152個目の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
URLリンク(kissho4.xii.jp)
DLKey:data
② 求めた最大値を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:デフォルトの名無しさん
08/10/21 22:04:04
よくわからないけど平均値どこ行ったの?
499:358
08/10/21 23:39:49
>>494,495
URLリンク(kansai2channeler.hp.infoseek.co.jp)
参考程度にしてくれ
>>497
ロダ死亡
LSIのは、むかし試食版とか使ったことあるけど、もうしらねぇ。
URLリンク(www1.axfc.net)
参考程度にしてくれ
DLkey : foo
500:デフォルトの名無しさん
08/10/22 00:02:22
ちょっと修正、勘違いしていた、気がしないでもない。
ついでに、全ソースもつけといたので、環境に合わせてコンパイルとリンクしてくれ
ロダ生きてたみたい
URLリンク(kissho1.xii.jp)
DLkey : foo
ってか、358ってなんだ、前のがそのまんまだった。
501:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/22 02:23:57
>>498
平均値は最大値を求めるだけに使うので、出力とかはしなくていいんです。
↓(手書きで申し訳ないですけど・・・)イメージ的には↓
URLリンク(kissho.xii.jp)
DLkey:foo
>>499
>>500
ありがとうございます。早速、明日学校でコンパイルしてみます。
本当に助かりました。
503:デフォルトの名無しさん
08/10/22 03:55:43
>>502
圧縮するという事を学ぼう。
テキストはzipに、bmpは形式を変更。
504:デフォルトの名無しさん
08/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::デフォルトの名無しさん
08/10/22 11:35:56
>>501
URLリンク(kansai2channeler.hp.infoseek.co.jp)
506:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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::デフォルトの名無しさん
08/10/22 13:08:58
>>508
URLリンク(kansai2channeler.hp.infoseek.co.jp)
511:デフォルトの名無しさん
08/10/22 13:52:57
>>510
ありがとうございました!
512:デフォルトの名無しさん
08/10/22 14:32:51
わざわざ文字列の長さを求めなくてもAllCharactersToUpperのfor文の条件をstr[i]!='\0'にすればいいと思う。
513:デフォルトの名無しさん
08/10/22 14:50:28
>>509
Cじゃないけどエクセルで作ってみたw
URLリンク(kansai2channeler.hp.infoseek.co.jp)
514::デフォルトの名無しさん
08/10/22 15:14:32
>>507
URLリンク(kansai2channeler.hp.infoseek.co.jp)
515:デフォルトの名無しさん
08/10/22 15:41:27
2つの画像を読み込んで、1つ目の画像から2つ目の画像を引き算をした画像を作りたいんですが
どのような感じで作ればいいでしょう?
516:デフォルトの名無しさん
08/10/22 15:55:18
2つの画像を読み込んで、1つ目の画像から2つ目の画像を引き算するような感じで
作ればいいと思います
517::デフォルトの名無しさん
08/10/22 16:21:40
>>507
URLリンク(kansai2channeler.hp.infoseek.co.jp)
518:デフォルトの名無しさん
08/10/22 16:25:34
>>514
最初の1行しか読まれないんですが・・・
519::デフォルトの名無しさん
08/10/22 16:30:51
>>518
>>517で試してみて
520:デフォルトの名無しさん
08/10/22 16:32:18
>>519
3つめでしょうか?
521:デフォルトの名無しさん
08/10/22 16:36:01
>>518
プログラムざっとみたけど1行目しか読んでない
522:デフォルトの名無しさん
08/10/22 16:42:31
>>519
3つめでやったら、コンパイルは通るんですが、バッファーオーバーランでとまります・・・
523:デフォルトの名無しさん
08/10/22 16:50:24
do-while間のi初期化忘れてるな
524:523
08/10/22 16:53:21
投稿者が見てるか分からんが
i=0; ←追加
do{
(略)
}while(dp = strtok(NULL,gDlim));
これで動くように一見見える
525:デフォルトの名無しさん
08/10/22 16:54:36
>>524
動きました。がやはり1行目しか読まれないみたいです
526:523
08/10/22 17:01:18
char *dp,*p,*gDlim = " \n\r";
↓
char *dp,*p,*gDlim = " ";
これもミスっぽいな
527:デフォルトの名無しさん
08/10/22 17:17:20
>>504-505
お二人とも本当に有難う御座いました。
助かりました。
528::デフォルトの名無しさん
08/10/22 17:25:24
>>525
読み込むファイルアップしてみ
529:デフォルトの名無しさん
08/10/22 17:29:51
fgets後にstrtokで" \r\n"渡してるからじゃん?
これだと行頭しか処理されないよ。
530:デフォルトの名無しさん
08/10/22 17:31:44
strtokとか使う必要あんの?普通にfscanfのほうがよくね?とか無責任に言ってみる
531:517
08/10/22 17:39:35
行頭に-1.0がある行は無視するという条件だから
行中に-1.0があっても読み込むためにstrtokを使った
ちなみにfscanfつかったソースは#if 0~#endif
の間に残してある
532:デフォルトの名無しさん
08/10/22 17:42:21
>>529
そうなんですか?やはり1行目しか読まれません
533:デフォルトの名無しさん
08/10/22 17:47:15
あと1行1列が2回表示されます・・・
534:デフォルトの名無しさん
08/10/22 17:53:07
>>533
だから読み込むファイルアップしてみ
535:デフォルトの名無しさん
08/10/22 17:57:21
>>534
見落としてました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これです。横に100個って書いたんですが、12個のファイルしかなかったです。
先ほど頂いたソースは100のところを12に書き換えました。
536:デフォルトの名無しさん
08/10/22 17:59:29
>>534
俺も適当にddata.txt作ってみたけど1列目が2回出たなあ
537:デフォルトの名無しさん
08/10/22 18:03:30
実数が100個並ぶのにバッファは512かあ。
538:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/22 18:19:14
return 0;
わすれちゃった。
540:デフォルトの名無しさん
08/10/22 18:42:16
>>538
うまくうごきました。ありがとうございます。
541:デフォルトの名無しさん
08/10/22 19:01:36
[1] 授業単元:C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
問1.このプログラムではxの零乗が3x{0}と表示されるため3と出力されるようにする
問2.このプログラムでは入力の逆順に単項式が出力されるためそれを入力した順番に単項式が出力するようにする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: お任せ
[3.3] 言語: C
[4] 期限: 2008年10月24日hh:mmまで
542:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/22 19:26:15
380
>>407
遅くなりましたが、回答ありがとうございました!!
もっと自分で学習せないかんですね・・・
544:デフォルトの名無しさん
08/10/22 19:27:58
fread(&px1,sizeof(float),1,fp1);
fread(&px2.sizeof(float),1,fp2);
write(&opx,sizeof(float),1,fp3);
&いるっけ?
545:デフォルトの名無しさん
08/10/22 19:28:47
ごめん、いるわw
勘違いでした
546:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/22 19:48:27
ああ、まちがえた。
×fread(&px2.sizeof(float),1,fp2);
○fread(&px2,sizeof(float),1,fp2);
^
548:デフォルトの名無しさん
08/10/22 20:11:32
483 484 お二人ともありがとうございました。質問の内容がわかりにくくてすいません。
ありがとうございました
549:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/22 21:22:28
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
① 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
この作業をファイルの最後の2097152個目の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
URLリンク(kissho6.xii.jp)
DLKey:data
② 求めた最大値を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:デフォルトの名無しさん
08/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するのに時間がかかるかもしれません。お手数かけます。)
URLリンク(kissho6.xii.jp)
DLKey:data
② 求めた最大値を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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/22 21:56:59
>>551
あれ、だめだったのか。
Terminalから、makeするだけでいいはずなんだけどconfigure作ってなかったからかもしれないなぁ。
READMEファイルでも読んで、ダメだったらどうしよう。
URLリンク(kissho1.xii.jp)
DLkey : foo
処理の効率化とかヘッダファイルに使いかたとか書いといたので、うまくいかなかったらソース自体変更してみてね。
555:デフォルトの名無しさん
08/10/22 22:17:30
>>553
array[i] = i;
↓
array[i] = -i;
556:デフォルトの名無しさん
08/10/22 22:20:37
>>554
:set backupdir=/tmp
とでもするといいよ。ってemacsでも~作るんだったらそっちはわかんね><
557:デフォルトの名無しさん
08/10/22 22:29:17
>>552
こんなん?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
558:デフォルトの名無しさん
08/10/22 22:49:48
>>556
ありがたく追加させていただきました。
基本viを使っています。たまにvimになったり、geditになったりもしますが、emacsは使いません。
でも、S式っていいよね、とか言ってみるてst。
559:デフォルトの名無しさん
08/10/22 23:22:08
>>551
これでいい?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
560:デフォルトの名無しさん
08/10/22 23:31:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):x^3-7x^2+16x-10=0 の解をニュートン法を用いて求めるプログラムを作りなさい。
[3] 環境 OS: Windows
[4] 期限: 2008.10.24
お願いします。
561:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 00:04:47
>>555
ありがとう。作成した配列をディスプレイに表示する所が分からないのですが、
printf内にどうやってdesc_arrayで作成したarray[i] = iの部分を書けばいいのでしょうか?
564:デフォルトの名無しさん
08/10/23 00:06:39
printf("array[%d] = %d,i,srray[i])
565:デフォルトの名無しさん
08/10/23 00:11:11
>>561
ありがとうございます。
566:デフォルトの名無しさん
08/10/23 00:19:41
すいません>>560ですが
コンパイルしようとすると
bccは内部コマンド、外部コマンド
操作可能なプログラムコマンドまたはバッチファイルとして認識しません。
と出るんですが、どうすればいいのですか??
567:デフォルトの名無しさん
08/10/23 00:25:41
bcc32じゃないの? つーかそもそもコンパイラはいってるの?
568:デフォルトの名無しさん
08/10/23 00:26:32
宿題以前だろ…
569:デフォルトの名無しさん
08/10/23 00:38:00
>>567>>568
すいませんでした・・・
解決しました。
570:デフォルトの名無しさん
08/10/23 00:40:20
>>562
URLリンク(kansai2channeler.hp.infoseek.co.jp)
571:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 01:18:46
下記のように出力するプログラムをprintf,getsを用いて作成せよ.
./a.exe
学籍番号は? XXXXXXXXX
名前は? AAAA BBBB
学籍番号: XXXXXXXXX
名前 :AAAA BBBB
574:573
08/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:デフォルトの名無しさん
08/10/23 01:23:25
>>574
scanfいらない
576:573
08/10/23 01:25:35
>>573の補足
学籍番号は? XXXXXXXXX 補足→ XXXXXXXXXはキーボードで打ちます
名前は? AAAA BBBB 補足→ AAAA BBBBはキーボードで打ちます
577:573
08/10/23 01:27:02
>>575
即レスありです。
両方ともいらないですか?
578:デフォルトの名無しさん
08/10/23 01:35:17
>>577
両方いらないです。
579:573
08/10/23 01:41:48
名前はちゃんと出ましたが学籍番号がちゃんと出ません><
580:デフォルトの名無しさん
08/10/23 02:02:51
>>579
記載ミスだと思ってスルーしてましたが
1つめのgetsの引数は st1 にしていますよね?
581:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/10/23 08:21:48
>>581
ありがとうございます。
584:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 10:00:08
>>554
>>556
ありがとうございました。うまくコンパイルすることができました。
本当に助かりました。m(__)m
>>559
シンプルでわかりやすいプログラムありがとございます。
まだちゃんと解読してないんですけど、peak.txtの出力した最大値が
1024個中5個だけってことなんでしょうか? 一応、求めた平均値より突飛して高い値(最大値とする)
をpeak.txtに出力したいんですけど・・・最大値の数は特に指定はないです。
586:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 10:17:06
MCIでデータ1データ2データ3を同時に鳴らした時、
コールバックでどのデータが終了したか
どうやって判断したらいいですか?
588:デフォルトの名無しさん
08/10/23 10:47:44
[1] 授業単元: 情報工学演習
[2] 問題文(含コード&リンク):
数独のような問題を解くプログラムと、ポーカーでの強さを判定するプログラム
詳細は下のテキストファイルに書いてあります
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月24日13時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
main関数は必ずテキストファイルに書いてあるもののままにしてください。
それ以外の部分もなるべくそのままでお願いします。
また、なるべく理解したうえで少し自分なりに手直したいので、
どんな手順で判定を行っているのかなど、軽く説明していただけると助かります。
できれば今日中にお願いします。急なお願いで申し訳ありません。
589:デフォルトの名無しさん
08/10/23 10:49:54
>>584
int *array;
を
int array[8];
にしたらいい
590:デフォルトの名無しさん
08/10/23 11:37:57
>>584
そもそも i に値がはいってないな。
591:デフォルトの名無しさん
08/10/23 12:22:37
>>585
なんか5個だと思い込んでたw
てか最大値って言葉わかりにくいー極大値とか外れ値とかそんな感じ??
飛び抜けて大きな値って平均値の何倍かとかで調べたいんですか?
よくわかんないので標準偏差の何倍かで調べるようにしてみました。
てかこのまえupした画像で考えると、グラフで飛び出した点を求めなきゃいけないとするといったん並べ替えるのはよくないのだろうか・・・??
URLリンク(kansai2channeler.hp.infoseek.co.jp)
592:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 13:55:57
>>588 問2
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これでいい?
問題文にあった3つの動作例でしかチェックしてない。
596:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 14:40:52
>>595
返答ありがとうございます。
無理でしたら構いませんが、なるべく関数poker_hand内で全ての動作を
記述している形がよいので、できればその形に組みなおしていただきたいのですが
とりあえず参考にしつつ自分でも作ってみておきます。
問1に関してもできればnumber_place内で全て記述している形でお願いします。
無茶な要求をしてしまって申し訳ありません。
601:デフォルトの名無しさん
08/10/23 14:59:44
[1] 授業単元:CG(C言語使用)
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
OpenGLによるCGを用いたプログラムを、自由に設計する課題を作成。
条件として、「アニメーションが行えること」、「キーボード入力によって何らかの
操作が行えること」、「シェーディングやテクスチャマッピングを適切に使用できること」
です。前者2つとシェーディングは何とか理解出来ますが、テクスチャマッピングが
思うように設計できません。どなたか専門知識をお持ちの方、私が添付したプログラムのどの
辺にどのような関数をセットすればよいかなど、いわゆる作成方法についてご指導
お願いします。なお、テクスチャマッピングは壁を設計する予定です。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++(bcc32)
[3.3] 言語:C
[4] 期限:2008年10月23日22時半
なお、期限については今日中としますが、今日中に良い意見が集まらなければ明日も
募集する予定です。宜しくお願いします。
602:デフォルトの名無しさん
08/10/23 15:02:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
↑↑の画像の一番明るい場所を、
画像の中心を(0,0)とした座標として表示するプログラムを
つくりなさい。また、その明度の値も表示するようにしなさい。
例に示した画像はjpeg形式ですが、非圧縮bmp(白黒)
の場合でも可能です。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:今月中
[5] その他の制限:なし
よろしくお願いします。
603:デフォルトの名無しさん
08/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
08/10/23 15:12:26
>>597
早いレスで助かります。
どうもありがとうございました。
605:デフォルトの名無しさん
08/10/23 15:22:15
>>600
URLリンク(kansai2channeler.hp.infoseek.co.jp)
もうやだ。こんなプログラム見たくねえorz
606:デフォルトの名無しさん
08/10/23 15:33:58
ただのストレートでも 10 → A いけるんだとしった
ロイヤルの時だけだと思ってたわ
607:デフォルトの名無しさん
08/10/23 15:36:11
>>582
ありがとうございます
608:デフォルトの名無しさん
08/10/23 15:38:37
>>588
問1
URLリンク(kansai2channeler.hp.infoseek.co.jp)
合ってるといいなw
609:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/23 16:09:27
>>599
丁寧な回答ありがとうです!
611:デフォルトの名無しさん
08/10/23 17:50:21
[1] 授業単元:文字列の探索
[2] 問題文(含コード&リンク):
(1)ファイルの先頭からテキストを1行ずつ(1行の文字数は999文字以下とする)読み込み、
何行目の何文字目に検索文字列の先頭が存在するか出力する。
(2)探索文字列中に同じ文字が複数含まれる場合について検索方法を改良する。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc (ver不明です)
[3.3] 言語: C言語
[4] 期限: 2008年10月27日23:59まで
[5] その他の制限:問題文中のプログラムの「//ここにボイヤームーア法」の場所を補ってプログラムを組む感じです。
どうかお願いします。。
612:デフォルトの名無しさん
08/10/23 19:16:59
>>602
libjpeg 使っていいんだったら
URLリンク(kansai2channeler.hp.infoseek.co.jp)
613:デフォルトの名無しさん
08/10/23 19:37:45
>>598
あなたのお陰で非常に助かりました。
ありがとうございます。
614:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/10/23 20:54:54
>>615
おい
ふざけんな
617:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/10/23 21:16:10
すいません関数が間違っていました
f(x)=x^4-10*x^3+35*x^2-50*x+24
620:デフォルトの名無しさん
08/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
08/10/23 21:43:09
>>619
>>616
622:デフォルトの名無しさん
08/10/23 21:55:07
>>611
質問が
BM法ってリスト2つ使った奴じゃないと駄目?
それとも簡略版でいいのかしら
623:デフォルトの名無しさん
08/10/23 22:49:19
1] 授業単元: C++
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Visual stdio2005
[3.3] 言語:C++
[4] 期限:10月 24日(土)まで
期限が短いですがお願い致します。
624:デフォルトの名無しさん
08/10/23 22:53:58
ここってGUIも受け付けてもらえますか?
625:デフォルトの名無しさん
08/10/23 22:56:54
受け付けてもらえます
626:611
08/10/23 22:57:38
>>622
ありがとうございます。
講義内でも問題文に書かれた以上のことは言われなかったのですが、簡略版で大丈夫です。
とりあえず、「力まかせの探索」でなければ大丈夫とのことでした。
627:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
URLリンク(www.geocities.jp)
631:デフォルトの名無しさん
08/10/24 00:41:06
名前を変えるほど改良されてる訳でもない気がしないでもない
632:デフォルトの名無しさん
08/10/24 01:09:30
Quick Search algorithm URLリンク(www-igm.univ-mlv.fr)
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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 02:55:22
>>634
あたまいいなあ
636:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 03:12:31
理由は素因数として2より5の方が少ないから。
数字を並べてみて1~50までに因数の5がいくつあるか数えるには?
638:デフォルトの名無しさん
08/10/24 03:36:40
理由はもっともだが>>636にはハテナがたくさんだ
639:デフォルトの名無しさん
08/10/24 04:41:46
>>623
期限は10月24日(金)の11:00でした。
書き間違えてすみません。
よろしくお願いします。
640:639
08/10/24 06:35:26
期限はアメリカ東海岸時間(EST)の10月24日(金)の11:00です
日本時間だと10月25日の11:00になります。
再再度訂正すみません
641:デフォルトの名無しさん
08/10/24 06:43:17
すいません、C/C++以外の課題を聞けるスレってあります?
642:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 11:03:10
620をお願いします
644:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 12:04:13
>>639
和訳くらいしたらどうなの・・・
646:602
08/10/24 12:33:22
>>612
回答ありがとうございます!
助かりました。
647:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 13:34:34
>>591
レス返信遅くなりました。
最大値というよりは極大値という感じですね。
飛び抜けて大きな値ってのは (平均値+5*ρ) 以上の値のことを指し示すのですが
ρってのが平均値の標準偏差です(たぶん)。
グラフで飛び出した点を求めたら、並べ替えなくていいそうです。
てかコンパイル通したら、peak.txtが出力されませんでした。今、プログラム解読中です(汗)
649:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 15:37:15
横軸忘れた
652:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 16:27:02
株式会社損害保険ジャパン
スレリンク(saku2ch板)
1 名前:新甚 博史 広報室 室長代理 [HShinjin@sompo-japan.co.jp] :2007/07/27(金) 12:38 HOST:ZP144243.ppp.dion.ne.jp<8080><3128><8000><1080>
対象区分:[法人/団体]管理人裁定待ち
削除対象アドレス:
URLリンク(www2.2ch.net)
654:デフォルトの名無しさん
08/10/24 16:29:57
>>652
8回で戻ったけどあってる?
655:デフォルトの名無しさん
08/10/24 16:35:11
>>649
縦軸と横軸ってxyグラフ?実数と複素数?
±√abs(x)、もしくはx>=0 でxyグラフならできる。
実数と複素数でもできるけど、グラフの意味合いが違ってくるからなー。
その場合 x>0 Im=0の軸だけにプロット、 x<0 Re=0の軸だけにプロットになっちゃう。
656:デフォルトの名無しさん
08/10/24 16:54:14
>>652
311,875,200
657:デフォルトの名無しさん
08/10/24 17:01:32
>>650
ありがとうございました
横軸は自分で入れてみます
>>655
xyグラフです。
abs関数って絶対値を返すんでしたっけ・・・
658:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 17:02:24
>>652
URLリンク(kansai2channeler.hp.infoseek.co.jp)
660:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/24 17:42:34
1] 授業単元:情報処理Ⅲ
[2] 問題文:JPEGファイルを読んでブロック(マーカ単位)で表示するプログラム(16進)
[3] 環境
[3.1] OS:Windows(cygwin使用)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 10月30日16:30まで
[5] その他の制限:基本的な関数のみでお願いします。
662:デフォルトの名無しさん
08/10/24 18:53:17
>>647
丁寧な回答ありがとうございました!
663:デフォルトの名無しさん
08/10/24 20:49:17
>>551 のつづきです。
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
①と②は>>551
③ (平均値+5*ρ)以上の値を最大値(極大値)とするように変更させなさい。ρを標準偏差とする。
④ ①で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
③で求めた各々の最大値(極大値)の周波数を [周波数]最大値 となるように②で出力した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:デフォルトの名無しさん
08/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
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/10/25 01:40:07
>>667-668で既に回答出てたな・・
672:デフォルトの名無しさん
08/10/25 01:45:44
>>671
俺のは手抜きです^^;
673:デフォルトの名無しさん
08/10/25 01:52:31
>>672
結局同じようなことやってるからあまり変わらないっしょー
674:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/25 04:36:38
>>620
URLリンク(kansai2channeler.hp.infoseek.co.jp)
676:675
08/10/25 04:44:02
>>620
>>675
ミスった、スマン
一つ前の古いのをUPしてしまった…
URLリンク(kansai2channeler.hp.infoseek.co.jp)
677:デフォルトの名無しさん
08/10/25 05:36:07
[1] 授業単元:趣味プログラム
[2] 問題文(含コード&リンク):
URLリンク(sony.squares.net)
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:最新版Cygwinのgcc
[3.3] 言語:C
[4] 期限: [無期限]
[5] その他の制限:リンク先に記載。
重複を取り除きながらの挿入ソートでは10分経っても終わりませんでした。O(n^2) = O(366051^2)
重複を取り除きながらでも早いソートを実現したいです。お願いします。
678:デフォルトの名無しさん
08/10/25 06:28:59
>>677
URLリンク(kansai2channeler.hp.infoseek.co.jp)
条件Xってのがいまいち不明だったので手抜きで、最後に入ってる場所だけ分かる。
679:デフォルトの名無しさん
08/10/25 06:43:50
>>677
あれ、条件2ってどういうこと?
最大値が分かれば1から順に並べればいいってこと、、、なのか?
ソートっていってるからそうじゃないような気がするんだが。
680:デフォルトの名無しさん
08/10/25 09:50:58
値の範囲がわかってるなら、nが現れた行番号をその配列のn番目に入れればいいから、ソートする必要ない気がする
681:デフォルトの名無しさん
08/10/25 13:10:37
>>678
ありがとうございます。参考にさせて貰います。
>>679-680
すいません、本来のプログラムでは未ソート時点では最大値や点の数が分かっていませんでした。
682:デフォルトの名無しさん
08/10/25 14:21:22
それが分かってないなら>>678
は使えないな、まさしく>>680
の手法だから
一旦二分木に移していく感じでならO(nlogn)でソートできるんじゃないかな
c++のsetで試したからcのソース無いけど
683:デフォルトの名無しさん
08/10/25 15:00:23
Quickソートでいいんじゃない?
684:デフォルトの名無しさん
08/10/25 15:25:56
クイックソートしてから重複除いても>>677でやったのよりそっちのほうが速いよね
685:初心者
08/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:デフォルトの名無しさん
08/10/25 22:03:03
>>685
こんな感じでいいのか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
687:686
08/10/25 22:07:11
あ、変な改行いれちまった。
79行目の最後の「\」と改行を消して80行目とつなげてくれ
688:611
08/10/25 22:32:12
提示したプラグラムを補う感じで、>>611お願いいたします。。
689:デフォルトの名無しさん
08/10/25 22:43:40
やだ
690:デフォルトの名無しさん
08/10/25 22:49:55
[1]C
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]C言語
[4]来週の水曜
[5](2)はライブラリ関数のqsortを使うようお願いします
よろしくお願いします。
691:デフォルトの名無しさん
08/10/26 01:50:39
C言語で長門がやってたみたいにゲームの改造とかできますか?
692:デフォルトの名無しさん
08/10/26 02:23:02
>>690
答え合ってるか分からん。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
693:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/26 02:59:59
>>693
>1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
なんで1024が[205][3]なの?
1024個ごとに平均値と最大値を出力すればいいのか?
695:デフォルトの名無しさん
08/10/26 03:00:12
>>691
長門裕之がゲームの改造をしていたのは知らなかったがプログラミング言語Cを用いてゲームの改造ならできるよ
696:デフォルトの名無しさん
08/10/26 03:02:33
>>694
209921行だからじゃない?
697:デフォルトの名無しさん
08/10/26 03:04:49
だけど「209921行5列」なのに「2097152個」ってなんかへんじゃね?
698:デフォルトの名無しさん
08/10/26 03:14:14
やっぱ理解できんわ
699:デフォルトの名無しさん
08/10/26 03:36:28
実際にデータを見ると209920行なわけだが。。。
700:デフォルトの名無しさん
08/10/26 03:38:18
>>694
> 1024個ごとに平均値と最大値を出力すればいいのか?
そう書いてある
701:デフォルトの名無しさん
08/10/26 03:43:30
>>693は出題者だったか。
であれば、array[206][5]という2次元配列に読ませる必要があるのかどうかを知りたい。
別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?
それと、「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、
じゃあ最初の課題では極大値の判定はどうやってやればいい?
702:デフォルトの名無しさん
08/10/26 05:09:52
>>611 >>688
簡易ボイヤームーア法で良ければこれで
URLリンク(kansai2channeler.hp.infoseek.co.jp)
完全版はアルゴリズムが理解できん
703:デフォルトの名無しさん
08/10/26 05:18:45
URLリンク(ja.wikipedia.org)
ボイヤームーア
704:デフォルトの名無しさん
08/10/26 08:49:35
友達からC++のプログラムもらって家でコンパイルしたら
strcpy_s()関数が使えません、という警告が出て、コンパイルが成功しませんでした。
調べてみたらstrcpy_sはstrcpyの拡張版らしくて、うちのコンパイラが若干古いので、strcpy_sは使えないみたいなんです。
それでプログラムのstrcpy_sをすべてstrcpyに置き換えたら、またエラーが出ました。
strcpy_sは引数の数が三個で、strcpyは二個なんで、その警告が出ました。
strcpy_sを、strcpyと同様の動作をさせる関数として定義すればうまくいくと思ったのですが、どのような関数を定義すればよいでしょうか。
705:デフォルトの名無しさん
08/10/26 08:53:42
>>704
例えば
void strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource) {
strcpy(strDestination, strSource);
}
マクロでもいいと思うけど、というか、他にもいろいろ問題出てこないの?って気がしなくもない。
706:デフォルトの名無しさん
08/10/26 08:55:15
>>704
って糞マルチかよ。スレチだけどいいかと思って答えた俺のバカー
707:デフォルトの名無しさん
08/10/26 08:58:18
>>706
マルチだからといって無碍に切り捨てるのも問題かと。
708:デフォルトの名無しさん
08/10/26 09:02:56
マルチだと分かっていて回答するならふさわしいスレで回答できるじゃん。
今回はここかな。
スレリンク(tech板:499番)
宿題スレおよび以下はスレチでしょ
スレリンク(tech板:681番)
709:デフォルトの名無しさん
08/10/26 09:53:26
>>708
御意
710:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/26 12:17:48
printfよりもputcharがよくね?
714:デフォルトの名無しさん
08/10/26 12:31:30
そだね。putcharの方がよかた。
っていうかカンマも抜けてるし何このグダグダ感orz
715:デフォルトの名無しさん
08/10/26 12:32:45
('ー')
716:デフォルトの名無しさん
08/10/26 12:41:28
>>712
出来ました。ありがとうございます。
ちなみにディレクトリがdでなく-になってしまうのですがまだ他に
何か必要でしょうか?
717:デフォルトの名無しさん
08/10/26 12:52:23
横から口だし失礼
ボイヤームーアってどのくらい速いんですか?
ソートの種類で例えるとどのソートに匹敵する実用的なアルゴリズムなんでしょうか?
718:デフォルトの名無しさん
08/10/26 12:54:30
>>717
つ URLリンク(www.google.co.jp)
719:デフォルトの名無しさん
08/10/26 12:59:00
setuidbit, setgidbit, stickybitなどを考慮するともっとひどいコードに。
720:デフォルトの名無しさん
08/10/26 13:10:37
Visual Studio使ってる人ってVisual C++ Express Edition ?
721:デフォルトの名無しさん
08/10/26 13:10:49
>>719
なるほど。あんまし大変になりそうであればとりあえずこんな感じで十分
なのでいいです。ありがとうございました。
722:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/10/26 14:26:39
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
重みつき無向グラフを隣接行列で表現し、縮約を行うプログラムを実装せよ。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年10月30日まで
[5] その他の制限: 期限が近めですが、なんとか、宜しくお願いします。
725:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/26 14:36:19
>>725
ありがとうございます。ものすごく早い回答がいただけて
とてもうれしいです。早速じっこうしてみましたが「関数の
値を返すべき」という警告がでるのでぜひ解除して
いただきたいです。本当にお願いします。
727:デフォルトの名無しさん
08/10/26 14:38:31
>>726
main()の最後に return 0; を付ければいい
728:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/26 14:49:47
縮約のアルゴリズムってこんな感じ?面倒だから実装はしないけど
縮約関数:
func(G, v, w)
意味:
グラフGに於ける点(v,w)で結ばれる辺を縮約する
仕様:
グラフGに於ける点wを削除し、点wに接続する全有向辺を点vに接続し直す(有向辺を追加する)
ただし、重複している場合は追加しない
(点wを削除するためには、新規にグラフG’を作成?)
730:デフォルトの名無しさん
08/10/26 14:51:18
辺v,wの削除も
731:デフォルトの名無しさん
08/10/26 14:51:36
hairanai
732:デフォルトの名無しさん
08/10/26 14:52:48
無向グラフだ
733:デフォルトの名無しさん
08/10/26 15:29:11
[1] 授業単元:プログラミング
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:途中まで作成はしたのですが上手くいきません。
よろしくお願いします。