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


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

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



1 名前:デフォルトの名無しさん [2009/06/24(水) 23:28:21 BE:454421568-DIA(282072)]
あなたが解けない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++の宿題片付けます 127代目
pc12.2ch.net/test/read.cgi/tech/1244449887/

367 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:41:57 ]
>>366
>44100に分割する
44100などで分割する

368 名前:デフォルトの名無しさん [2009/07/02(木) 01:42:25 ]
>>329
ありがとうございます。


でも、ファイル間違えてるみたいで…それで、9628見つけたんですが、文字化けが…

もう一度貼っていただけないでしょうか?

369 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:44:49 ]
>>368
文字エンコードが違うだけじゃね

370 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:49:44 ]
こっちにいいのがあったわ
www.amei.or.jp/report/DR_Div/base.htm

371 名前:デフォルトの名無しさん [2009/07/02(木) 01:50:18 ]
>>364〜367
エイリアシングの条件は逆でしたね。

うーん、音データを1飛ばしで無音にするのとは何が違う??

372 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:55:04 ]
>>357を読めよ
ただ単に答えが欲しいだけだろ

373 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:56:26 ]
配布されたソースがあるなら全部うpするよろし
エスパーして考えると
for(i=0; i<snd->datanum; i++){   「snd->datanum」が1秒間の分割数
  if(snd->sounddata[i] > snd->samplingrate*4){  サンプリング周波数の4倍より大きい場合?
    snd->sounddata[i] == snd->sounddata[i]/2;  信号値を半分にする?
    printf("count %d\n",i);
  }
  if(i%2 == 0){  偶数の時は
    snd->monaural8[i] = 0;  何かを0にする
  }
forが閉じてないよ!?

サンプリング周波数を半分に落とすだけなら
信号値を抜く(飛ばす)ことはあっても信号値を変化させること(3行目)はないはず

374 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:57:05 ]
ダウンサンプリングは要するに音声データ圧縮技術の一部で、まだ(幾らかは)
動いている研究分野だと聞いたことがある。
宿題だとしてもどーしてもC言語で書かなければならないという必然性が見いだしにくい。
ひとえに理論だとかライブラリがどの程度揃っているかに依存する問題じゃないかと。
そういうスペシフィックで流動性が高い(というか最終的には主観的価値評価が)含まれる
問題はここで聞かれても最善の回答が出てくることはあんまし期待しないほうがいいかも。

375 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:57:11 ]
>>357の42pにダウンサンプリングの具体例があってデシメーションフィルタを通すって書いてあるじゃん



376 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:58:34 ]
>>373
snd->sounddata[i] == snd->sounddata[i]/2;  信号値を半分にする?
これは半分にしないw
こではサンプリング周波数で切り刻んだ波形の振幅だw

377 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:01:12 ]
>>368
あれ?URL間違えて書いてたのか・・・。
正しくは以下で。まぁもう自力で見つけちゃってるみたいですが。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9628.c
文字コードはUTF-8です。

378 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:04:51 ]
>>376
「==」に気づかんかったwww orz
ついでに信号値=振幅のつもりだったんだけど通じんかったか

>>355
>周波数成分を除去したいが、
なら信号値(サンプリング周波数で分割した波形の振幅)をあれこれするわけか
>>373の下2行は忘れてくれ

379 名前:デフォルトの名無しさん [2009/07/02(木) 02:08:10 ]
>>372〜375
答えが欲しいのです。考え方が理解できていないのでプログラムを書いてみようと思ったのですが、
当然理解できていないので詰まってしまったのでここで聞いてみたのです。
サンプリング周波数は特定の点に限ればツールを使用すればダウンサンプリングも出来てしまうのですが、
それだと趣旨と異なりますね。。

最初に晒したソースはチグハグでしたね。
4倍というのは、エイリアシングの条件を逆だと勘違いしたので、もともと2倍までOK、なら半分ならその4倍までOKと
思ってしまったのです。
何かを0にする、というのは量子化された値を0にすれば(つまり1個おきにデータをとれば)どうなるのかなと思いました。
ちなみにそれならば0よりも128の無音にしたほうが妥当ですね。

えと、1個おきにデータを取得すると、データが半分になり、再生時間も半分になるじゃないですか。
その点はどうすればいいのでしょうか?


380 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:13:59 ]
>>379
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい
その代わり自分でも質問したようにノイズがでるからフィルターを通す必要があるんだよと・・・

ちょっとかじって勉強した程度なんでフィルタ部分はどうロジック化すればいいかわからんw

381 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:17:23 ]
あ、ごめん
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい
これは忘れて

サンプリングを間引けばいい

wavのヘッダにサンプリング周波数とかをちゃんと入れておけば再生時に
その数字を見てあわせてくれるから。

382 名前:デフォルトの名無しさん [2009/07/02(木) 02:23:25 ]
一個おきにデータ破棄をしてみたら、やはり2倍速(再生時間が半分)で再生されました。
ここは削った値に前後の割った値を入れてらどうなるかなとも思うんですが、そうすると
サンプリング周波数がそのままでただ音質を劣化させただけになると思うんですよ。

>>380
音声データ数(再生時間に影響??)はそのままにするには無音にするべきなんですか?
一度してみたらキーンという音が発生します。。



383 名前:デフォルトの名無しさん [2009/07/02(木) 02:24:23 ]
>>377
無事に見れました!

かなり難しかったのでこれ見ながらまた勉強したいと思います。
ありがとうございました。

384 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:24:40 ]
>>382
ヘッダを書き換えろよwww

385 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:26:18 ]
>>382
だからー

44.1khzを22.05khzにデータを削ったらヘッダの情報も書き換えないと駄目だってw



386 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:27:35 ]
>>358
こんなんでどうでしょ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9640.c

387 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:33:09 ]
wavのファイルフォーマットはこんな感じね
www.kk.iij4u.or.jp/~kondo/wave/
・サンプリングレート
・データ速度 (Byte/sec)
のところをダウンサンプリング後の数字にすればいい

そうすれば再生側がここを元にタイミング調整するから

388 名前:デフォルトの名無しさん [2009/07/02(木) 02:33:51 ]
>>384
おお、出来そうです!!

ちなみに、LPFを通すというのはどういう作業になるのでしょうか??


389 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:34:11 ]
あと

data チャンクの波形データのバイト数か

390 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:34:54 ]
>>388
さすがにその辺はこのスレに専門でやってるやつはいないと思うw

391 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:38:39 ]
LPFのソースあったわ
tosa.mri.co.jp/sounddb/nospeech/lpf.htm


392 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:38:41 ]
>>390
いたらだめかな…。

393 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:40:46 ]
もういっちょ
www.geocities.jp/horie_ryu/page05.html

394 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:41:29 ]
>>392
じゃあ頼むわ
俺も勉強してー


395 名前:358 [2009/07/02(木) 02:45:40 ]
>>386文字化けが><



396 名前:デフォルトの名無しさん [2009/07/02(木) 02:46:04 ]
>>392
心強い。そしてここのスレの人、ありがとう。

だが、データ数を単純に半分にしてみたら、波形が線になっちゃったよ。
再生秒数がもともと6秒とかだったのが0.001とかのレベル。

ヘッダに入れるデータサイズはサンプル数*(チャンネル数*bit数/8)では?
それならばサンプル数を2で割るだけでおkかと思っていたんですが違うのでしょうか??

397 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 02:48:25 ]
>>396
その辺は>>387を参考に

398 名前:デフォルトの名無しさん [2009/07/02(木) 02:49:51 ]
>>391
そのサイトは良く見るけど、はっきり言って自分の作るプログラムじゃないとあまり解らないんだ。
関数とかも学校の授業で習ったのしかしらなくてscanf()使ったらとあるサイトでボコボコに言われたし。。

解ってないところが解らないっていうのが苦痛

399 名前:386 mailto:sage [2009/07/02(木) 02:56:34 ]
>>395
UTF-8で。

400 名前:デフォルトの名無しさん [2009/07/02(木) 03:02:09 ]
>>397
出来ました、forに巻き込まれていて1/2しすぎたようです。。。
抜け出したらバッチリ。


unsigned int i=0,t=0;
snd->samplingrate = snd->samplingrate/2;

for(i=0; i<snd->datanum; i++){
if(i%2 == 0){
snd->sounddata[t] = snd->sounddata[i];
t++;
}
}
snd->datanum = snd->datanum/2;

という感じで出来ました、が、LPFは通さなくても良いのでしょうか?
というか、LPFとはなんですか?なんとなく言っていることは解るんですが
プログラム的にはさっぱりわかりません。。

401 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 03:09:13 ]
>>400
この場合はダウンサンプリングすることによって本来あったはずの波形データが
なくなるのでその補完がフィルタなので、雑音とかができてもいいならフィルター無しでもいいんじゃないかな?

>>391
>Down sampling (48kHz -> 16kHz) with 7.7kHz low pass filter
ってなってるのでcoefは7.7kzのフィルター用の数値だと思う。
固定なので使いにくそうだけど

>>393の方は計算でこの辺の数字を求めてるようなので
使えそう



402 名前:358 [2009/07/02(木) 03:13:08 ]
>>386
やってみたんですが石が表示されませんでした

403 名前:デフォルトの名無しさん [2009/07/02(木) 03:18:54 ]
>>401
私の作ったプログラムはヘッダを書き換えて、間引いたという手順ですが、
本来はLPFを使用してから行うものですよね?

補完とはどこを補完するのですか?
是非ともLPFもプログラムとして理解して作りたいのですが

404 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 03:25:54 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9641.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C
[4] 期限:今日12時
[5] その他の制限:ポインタとリストを最近習った

どうかお願いします

405 名前:386 mailto:sage [2009/07/02(木) 03:37:02 ]
>>402
じゃぁ解答の部分だけ扱いたい文字コードのファイルにコピペしていただく方向で。



406 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 03:39:04 ]
>>403
LPFの必要性はこの辺
www.ne.jp/asahi/shiga/home/MyRoom/aliasingnois.htm

ここがもっと丁寧
blog.jyoken.net/?eid=773796

407 名前:デフォルトの名無しさん [2009/07/02(木) 04:00:30 ]
>>406
あまり理解できませんでしたが、プログラム的には

またデータ部分をいじるわけですよね??LPFを通した後先ほどのプログラムで間引くと
きれいにダウンサンプリングできました。と、いえるわけですか??

408 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:09:24 ]
>>407
間引いたあとじゃないとノイズ成分が出ないと思うのでそのあとフィルターを通す感じ?
44.1KHzを22.05kHzにした場合はさらに半分の11.025khzのなんとかってなってたよね・・・・

409 名前:デフォルトの名無しさん [2009/07/02(木) 04:26:10 ]
>>408
アンチエイリアシングフィルターは間引く前に通さないと意味無いよ。


410 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:30:07 ]
>>409
ああ、そっかすまそ
先に高い周波数成分をなくしてか・・・
寝ぼけてるな・・・

411 名前:デフォルトの名無しさん [2009/07/02(木) 04:35:32 ]
>>408〜410
ですよね。

うーん、正直、さっぱりわからん。
LPFとはさ、高周波を取るわけじゃないですか?
周波数ってなんでブチって切れないの?
何を境にして切ってるの?

412 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:38:09 ]
>>358 >>402
書いてみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9642.c

413 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:48:57 ]
>>411
まあアナログ値をサンプリングしたことあるとよくわかるんですが
入力波形の最高周波数の倍は無いときっちり拾えないですよ。

まあその辺の説明は>>406の下の方の

>折り返し周波数
>
>じゃあ、具体的にどういうものがエイリアスとなるのか、というのが問題になるわけですが、
>サンプリングしたときにエイリアスが発生しない最高の周波数は、サンプリング周波数の1/2です。
>これを折り返し周波数といいます。上の例ではサンプリング周波数が2Hzだから、限界は1Hzという
>ことになります。

つまり44.1kHzのサンプリングレートというのは>>406にもこうあります
>一般的に用いられている44100Hz(CDのサンプリング周波数)では、折り返し周波数は22050Hzで、
>これは人間の耳に聞こえる最高の周波数20000Hzぐらいに合わせてあります。これは、けっこう
>ギリギリの周波数です。

つまりダウンサンプリングする場合はダウンサンプリング後のサンプリング周波数の半分を超える
周波数成分があるとノイズと化しますのでフィルターを通してなくしちゃいます。


414 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 04:52:58 ]
スペアナ(ロジアナ?)とかあの手の機械でも高周波を扱うのが高いのは扱う
周波数の倍以上のサンプリング能力が無いと波形チェックができないからでしたっけ?
安い機械はあんまり高い周波数は扱えません。(すげー予断

415 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 05:01:11 ]
>>404
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9643.txt
windowsのコンソールアプリとしてテスト済み
たぶんOKだと思います。




416 名前:デフォルトの名無しさん [2009/07/02(木) 05:19:06 ]
>>413
>>414
なんというか、FFTを用いて、周波数解析を用いるじゃないですか。
それで、出た値の高周波を0にして、逆FFTを用いることを時間軸ごとに
区切ってしていけば高周波をブチっと切れないのかな、と。

考え方がそもそも変ですか??

417 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 05:31:59 ]
>>416
その方法でいいのかもしれませんね。
homepage2.nifty.com/kirislab/chap5_mri/fourierConv.html


418 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 05:36:42 ]
>>416
プログラム的には高周波をゼロにする周波数特性を逆FFTしたものと
入力信号との畳み込み演算を行えばいい

419 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 05:43:36 ]
>>418
いままでのを踏まえてロジック的には>>393
www.geocities.jp/horie_ryu/page05/lpf.c
ですかね


420 名前:デフォルトの名無しさん [2009/07/02(木) 06:07:22 ]
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):下記
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:Visual stdio2008
 [3.3] 言語: C
[4] 期限: 2009年7月2日8時40分まで
[5] その他の制限: どういう風に動いているか説明しなければならない&できるだけ簡単に
構造体 score 型の変数 seito1 と seito2 が宣言されている. seito1 の内容をそのまま seito2 へ代入したい. 次のプログラムの @ の部分を埋めよ.
int main( void )
{
struct score seito1, seito2;
strcpy(seito1.name, "yamada");
seito1.english = 50;
seito1.mathematics = 70;
@
printf("名前:%s\n英語:%d\n数学:%d\n ", seito2.name, seito2.english, seito2.mathematics);
return 0;
}

421 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 06:12:04 ]
seito2 = seito1;

422 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 09:39:33 ]
ダウンサンプリング:方法は1つに定まらないし、どんな音源に対しても通用する方法も
無いと思われ。(人の耳と脳がどう感じるかが最終的に問題になる。心理が絡んでくる
問題なんで)

423 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 11:15:32 ]
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
  
 2つの正整数 m とn とを引数として受け取り、m と n の最大公約数を戻
り値として返す関数gcd()を作成する。この関数を用いることにより、キー
ボードから入力した3つの正整数 a, b, c の最大公約数を求めるプログラム
を書け。

注意: 最大公約数を計算するには次のような「ユークリッドの互除法」を
用いるとよい。

「ユークリッドの互除法」
 2つの正の整数 m、n(m>n)の最大公約数を求めるには、m を n で割っ
て余り r1 を求め、次に n を r1 で割って余り r2 を求め、・・・、この
ように大きい方を小さい方で割って余りを求め、最後に割り切れたときの除
数が求める最大公約数である。

例)440/380=1余り60 
  380/60=6余り20  
  60/20=3 余りなし
 したがって、440と380の最大公約数は20 


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: c++ builder
 [3.3] 言語: C
[4] 期限: 20009年m7月3日12:00まで
[5] その他の制限:できるだけシンプルにお願いします。よろしくお願いします。


424 名前:デフォルトの名無しさん [2009/07/02(木) 11:28:53 ]
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9645.txt
[3] 環境
 [3.1] OS:Linux
 [3.2]gcc
 [3.3] 言語: C
[4] 期限:7/3
[5]kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9644.txtのファイル名はseiseki.txtでお願いします
ポインタは使用不可です



425 名前:デフォルトの名無しさん [2009/07/02(木) 11:48:24 ]
>>423
結構、シンプルになったと思う。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9646.txt




426 名前:デフォルトの名無しさん [2009/07/02(木) 11:54:07 ]
>>424
ポインタ使わないとか、可能なのか?

427 名前:425 [2009/07/02(木) 11:57:38 ]
m=m%n;
i=m; m=n; n=i; って、

i=m%n; m=n; n=i; で良いな。無駄な代入してるや。

428 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 11:59:55 ]
>>426
ポインタの価値を理解するためにわざわざ回りくどいプログラムを書かせるのが目的だそうです

429 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 12:00:11 ]
>>423
まぁまぁコンパクトにしてみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9648.c

430 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 12:01:34 ]
>>428
ポインタ使わないとファイルが読み込めないぞ

431 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 12:02:53 ]
>>429
大小関係チェックしてねぇw

432 名前: ◆/91kCCQXBo mailto:sage [2009/07/02(木) 12:28:14 ]
>>296 ユーザーインターフェースのメニューは、自分で追加できると思うのでやってない。
ファイルに登録された成績コードを読み、動的に確保した生徒構造体の領域にデータを編集
jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/9-10

433 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 13:21:05 ]
>>424
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9650.c
ただし拡張性は皆無。

434 名前:デフォルトの名無しさん [2009/07/02(木) 13:38:30 ]
[1] 授業単元:C言語
[2] 問題文:単純なオセロゲーム
[3] 環境:
 [3.1] OS: Unix
 [3.2] gccでコンパイル
 [3.3] (C/C++/どちらでも可 のいずれか)
[4] 期限: 来週・・7月9日 
[5] その他の制限:特になしです
勝敗と成績がわかるものがよいです。
よろしくお願いします。

435 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 13:46:40 ]
>>424
433に先こされてしまったが。負の数は知らない
ポインタなし ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9651.c



436 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:06:01 ]
こういうコード書くからCプログラマが落とさなくても良い信用を落とすのではないかと杞憂
もう少しエスパーしてやったらいいんじゃないかと...

437 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:41:33 ]
杞憂ならいいじゃん

438 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:43:47 ]
>>436
そもそもこんなところに○投げにくるやつらの評価なんてどうでも・・・

439 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:58:03 ]
>>424
#include <stdio.h>
int seiseki[]={70 56 66 45 88 66 85 68 55 73 55 65 53 67 55 85 72 76 58 65,
92 70 45 73 55 56 57 52 62 82 72 62 33 85 95 46 95 48 72 34,
83 42 88 92 56 68 65 91 82 66};//コンマ省略
...


440 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 14:58:31 ]
>>333,342
範囲外なら再入力させるところは間違ってるかも
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9652.c

441 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:19:05 ]
ポインタ使用不可なのに配列を使っていいんだろうか

442 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:22:30 ]
「配列使用時には(まだ習ってもない)ポインタを使用してはいけない」ぢゃないのか?

443 名前:デフォルトの名無しさん [2009/07/02(木) 15:24:51 ]
〔1〕授業単元:C言語
〔2〕問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9654.txt
〔3〕環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
〔4〕期限:7月3日 12時
〔5〕ポインタ、配列、リスト構造まで習いました
   よろしくお願いします


444 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:25:31 ]
>>441
配列のその辺の扱いは多少大目に見るべきじゃないだろうか。
ポインタに成り下がれるとかいうんだっけ?
時々その辺のネタで荒れるスレ知ってるが

445 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:34:17 ]
あからさまに
 int *a とか
*(a + 1) とか
malloc/callocしてアドレスを渡して回るとか
こういうのやらなければいいんじゃね。



446 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:35:45 ]
ポインタ使用不可ってのは「*」使用不可ってことなのか?
a[i]だろうが*(a + i)だろうがポインタを使ってることに変わりないんだが

447 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:37:14 ]
やっぱ荒れだすなww


448 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:43:45 ]
>>446
確かにそうだけど、>>424の問いが言いたいのは
定義後に保持するアドレスを自由に変更できるポインタ変数の便利さを知れってことでしょ。
そう考えれば配列は使っていいことになる。

出題者が本当にそういう意図で出したのかどうかは知らん。

449 名前:425 [2009/07/02(木) 15:54:16 ]
>>434
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9655.txt
かなり適当だけど「単純なオセロ」ぐらいにはなってるかと。

450 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 16:14:04 ]
>>443
/* 課題1 */
#include <stdio.h>
#include <math.h>
int main() {
struct Vertex { double x, y; } verA, verB, verC, verD;
printf("verA (x, y): "); scanf("%lf %lf", &verA.x, &verA.y);
printf("verB (x, y): "); scanf("%lf %lf", &verB.x, &verB.y);
printf("verC (x, y): "); scanf("%lf %lf", &verC.x, &verC.y);
printf("verD (x, y): "); scanf("%lf %lf", &verD.x, &verD.y);
if (verA.y != verB.y || verC.y != verD.y) {
printf("error\n");
} else {
printf("area: %g\n", (fabs(verA.x-verB.x)+fabs(verC.x-verD.x))*fabs(verA.y-verC.y)/2);
}
return 0;
}

451 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 16:14:06 ]
[1] 授業単元:プログラミング
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9656.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限: 7/6
 よろしくお願いします。

452 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 16:17:23 ]
>>443 無理やり1レスでスマソ
/* 課題2 */
#include <stdio.h>
#include <stdlib.h>
struct Node { int value; struct Node *next; };
struct Node *init_list() {
struct Node *root = (struct Node *)malloc(sizeof(struct Node));
root->value = 0; root->next = NULL; return root;
}
void add_node(struct Node *root, int value) {
struct Node *p = root->next, *q = root;
while (p) { q = p; p = p->next; }
p = (struct Node *)malloc(sizeof(struct Node));
p->value = value; p->next = NULL; q->next = p;
}
void make_list(struct Node *root) {
int value;
printf("Insert:\n");
while (scanf("%d", &value) != EOF) { add_node(root, value); }
}
void show_list(struct Node *root) {
struct Node *p = root->next;
printf("Show:\n");
while (p) { printf("%d\n", p->value); p = p->next; }
}
void free_list(struct Node *root) {
if (root) { free_list(root->next); free(root); }
}
int main() {
struct Node *root = init_list();
make_list(root); show_list(root); free_list(root); return 0;
}

453 名前:デフォルトの名無しさん [2009/07/02(木) 16:44:35 ]
>>449
ありがとうございます。
動作確認しました、問題なかったです。
たすかりました^v^

454 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 17:41:54 ]
[1] 授業単元: 情報プログラミングC
[2] 問題文(含コード&リンク): 7リットルと5リットルのバケツを使って、どちらか一方のバケツに4リットルの水を入れる方法を探す。
[3] 環境
 [3.1] OS: 窓VISTA
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C
[4] 期限: 7/2
[5] その他の制限: 実行できる操作
(a)水道から新たに水を入れてバケツを満杯にする(b)バケツの水を全部捨てる
(c)一方のバケツの水を他方のバケツが満杯になるまで注ぐ(d)一方のバケツの全部の水を他方のバケツに注ぐ
初期状態は両方0リットル。幅優先探索と待ち行列を使用。ただし、ポインタと構造体は使わない。

455 名前:デフォルトの名無しさん [2009/07/02(木) 17:52:28 ]
>>450>>452
非常に助かります
ありがとうございました



456 名前:デフォルトの名無しさん [2009/07/02(木) 19:10:32 ]
>>454
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9657.txt
待ち行列を使用ってのがよくわからんかった。
current_rankは削除しそこねなんで消して(それで再アップするのもなんなんで)。

457 名前: ◆/91kCCQXBo mailto:sage [2009/07/02(木) 19:54:17 ]
>>454 3を5に、4を7に置き換えればOK。
データの受け渡しにポインタ使ってるけど。乱数使ってるから待ち行列に近いのかも。
add cup 7.
transfer from cup7 to cup5.
cup7=2, cup5=5
empty cup 5.
transfer from cup7 to cup5.
cup7=0, cup5=2
add cup 7.
transfer from cup7 to cup5.
cup7=4, cup5=5

>4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかる。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9266.txt

458 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:11:16 ]
> 乱数使ってるから待ち行列に近いのかも。
意味が分からん

459 名前:454 mailto:sage [2009/07/02(木) 20:14:36 ]
>>456>>457
どうもありがとうございました
助かります

460 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:32:20 ]
>>457
乱数使う意味がわからんけど、猿ソートっぽいことやってんの?

461 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:43:13 ]
ヒトだ。ソートは使っていない。
猿解説すると、次の4パターンの動作しかないので、3回の中でその順番をランダムに代えている。
・7リットルのカップを満タンにする(次は、7リットルのカップの中身を5リットルのカップに移す)
・5リットルのカップを満タンにする(略)
・7リットルのカップを空にする(略)
・5リットルのカップを空にする(略)

462 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:03:57 ]
>>446
ポインタを使うなっていうのは、
ポインタ変数を使うなってことでしょ。

aを配列で宣言していれば、
aは(ポインタに変換され得る)配列型の変数であって、
ポインタ型の変数じゃない。

463 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:21:24 ]
[1] 授業単元:Cプログラミング初級演習
[2] 問題文(含コード&リンク):
10個のdouble型の数値を読み込み、最小値の1個を除いた9個の数値の和を出力せよ。
例:1 2 3 4 5 6 7 8 9 10
  54.000000
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語:C
[4] 期限: 7/6まで

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


464 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:29:15 ]
>>463

#include <stdio.h>
#include <float.h>

int main(void){
double n;
double low = DBL_MAX;
double ans = 0;
int i;

for(i=0; i<10; ++i){
scanf("%lf", &n);
ans += n;
if(n < low) low = n;
}
ans -= low;
printf("%f\n", ans);
return 0;
}


465 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:32:12 ]
>>435
>>435
ありがとうございました



466 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:45:37 ]
>>464ありがとうございました

467 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:56:51 ]
>>461
あ、猿とはちょっと違ったのか。
てっきりランダムでごりごりやって気が済んだところでの最適解を使うとかそんなんかと。






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

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

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