[表示 : 全て 最新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/

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/






[ 続きを読む ] / [ 携帯版 ]

前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