トップページ⇒tech
1001コメント425KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?2BP(12)
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0628デフォルトの名無しさん2007/10/02(火) 20:24:42
0x%Xじゃね?
0629デフォルトの名無しさん2007/10/02(火) 21:36:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ユーザが整数を入力すると、その整数をINT型の変数に入れ、そのビット列を表示するプログラム。
ただ、INT型のビット数は環境によって変わる可能性があるため、
sizeof()演算子を利用してINT型の変数のビット数を求め、そのビット数分だけ表示するようにせよ。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: なし

お願いします。

0630デフォルトの名無しさん2007/10/02(火) 21:46:43
>>629
これでおk

unsigned int v, bit = 1 << sizeof(int) * 8 - 1;
scanf("%d", &v);
while(bit) {
  putchar(bit & v ? '1' : '0');
  bit >>= 1;
}
puts("");
0631デフォルトの名無しさん2007/10/02(火) 21:48:02
>>629
1バイトが8ビットとは限らないけどこれでよければどうぞ。

#include<stdio.h>

int main(void)
{
int in;
int cnt;

scanf( "%d", &in );

for ( cnt = sizeof( int ) * 8; cnt > 0 ; cnt-- ) {
printf ( "%d", ( in >> ( cnt - 1 ) ) & 1 );
}

return 0;
}
0632デフォルトの名無しさん2007/10/02(火) 21:49:46
>>630
入力が負の数だったときに処理系依存で無限ループじゃね?
0633デフォルトの名無しさん2007/10/02(火) 21:56:13
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): じゃんけんを10回行い、その対戦結果(対戦譜)をCSV形式で出力するもの。
ただし、出力先は(/デスクトップ/じゃんけん結果)フォルダで、ファイル名は日付を含むこと。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C++
[4] 期限: 明日中
[5] その他の制限: 出力したCSVファイルはExcelで開いて確認すること。

お願いします。
0634デフォルトの名無しさん2007/10/02(火) 21:57:20
>>630-631
ありがとうございます。
参考にさせていただきます。
0635デフォルトの名無しさん2007/10/02(火) 22:05:50
>>632
kwsk
0636デフォルトの名無しさん2007/10/02(火) 22:19:01
>>633
>[1] 授業単元: C言語
> [3.3] 言語: C++
どっちやねん
0637デフォルトの名無しさん2007/10/02(火) 22:23:04
とりあえずC言語でやっておけばおk。どうせC++コンパイラでもC言語のソースは
コンパイルできるし。
0638デフォルトの名無しさん2007/10/02(火) 23:24:31
>>635
あ、ごめん。unsignedつけてたらOKだっけ?
負の数の右シフトが算術シフトになるか論理シフトになるかは
処理系依存だったと思ったから・・・
あいまいで、そーりー
0639デフォルトの名無しさん2007/10/02(火) 23:32:29
何が言いたいのか今一よく判らんが、unsignedなら負の数にはならないんだな、これが。
0640デフォルトの名無しさん2007/10/02(火) 23:38:17
符号無し!
0641デフォルトの名無しさん2007/10/02(火) 23:39:18
>>380
めんどくさいんでcharで説明。
[10101010]を右に1ビットシフトした場合[10010101]になるか[01010101]になるかは処理系依存

調べたらやっぱ、unsignedは問題なかった。スマソ
http://proger.blog10.fc2.com/blog-entry-62.html
0642デフォルトの名無しさん2007/10/02(火) 23:41:57
とりあえず、何をシフトしてるかぐらいは理解してくれ
0643デフォルトの名無しさん2007/10/03(水) 00:27:59
>>641
> [10101010]を右に1ビットシフトした場合
> [10010101]になるか[01010101]になるかは処理系依存

(http://proger.blog10.fc2.com/blog-entry-62.html)
> C言語の規格として、算術シフトか論理シフトかは不定

うそ。規格では次のようになっている。ISO/IEC 9899, 1999 より:
> 6.5.7
> The result of E1 >> E2 is E1 right-shifted E2 bit positions.
> If E1 has an unsigned type or if E1 has a signed type and a
> nonnegative value, the value of the result is the integral
> part of the quotient of E1 / 2^E2. If E1 has a signed type
> and a negative value, the resulting value is implementation-defined.

つまり、E1 が unsigned であるか、もしくは signed かつ E1 ≧ 0 のときに
限って右シフトの動作は定められており、それ以外は implementation-defined。
すなわち、論理シフトやら算術シフトの範囲を超えて処理系の自由。
0644デフォルトの名無しさん2007/10/03(水) 00:58:12
負数の右シフトは値がぶっ飛んだって問題ないでOK?
0645デフォルトの名無しさん2007/10/03(水) 00:59:42
日本語でおk
0646デフォルトの名無しさん2007/10/03(水) 02:29:31
そもそも負って言っても2進数で表すと、どういう表現になるか?
考えてみよー
0647デフォルトの名無しさん2007/10/03(水) 03:04:07
[1] 授業単元:
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
 [3.1] OS: windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月4日22:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします
0648デフォルトの名無しさん2007/10/03(水) 05:48:29
>>647
問題1
#include <stdio.h>
#include <math.h>

int fac(int n) { return n==1 ? 1 : n * fac(n-1); }

int geo(int a, int r, int n) { return n==1 ? a : geo(a, r, n-1) * (pow(r, n) - 1) / (pow(r, n-1) - 1); }

int fib(int n) { return n==1 || n==2 ? 1 : fib(n-1) + fib(n-2); }

double a[] = { 1, 2, 3, 4, 5};

double hor(double x, int n) { return n==0 ? a[n] : hor(x, n-1) * x + a[n]; }

int main(void)
{
    printf("10! = %d\n", fac(10));
    printf("2^0 + 2^1 + 2^2 + ... + 2^9 = %d\n", geo(1, 2, 10));
    printf("fibonacci 20: %d\n", fib(20));
    printf("f(2) = %.2f\n",hor(2, 4));

    return 0;
}
0649デフォルトの名無しさん2007/10/03(水) 08:58:37
>>646
考える前に仕様書を読んでくれ。6.2.6.2 に書いてあるから。要点は
・value bits / padding bits / sign bit からなる。
・どこの bit が value bits/padding bits/sign bit であるかは処理系定義。
・sign bit が 0 のときは正の数,1 のときは負の数を表現する。
・数表現が「絶対値と符号,二の補数,一の補数」のどれかは処理系定義。
0650デフォルトの名無しさん2007/10/03(水) 09:14:49
>>631
> 1バイトが8ビットとは限らない
それよりもこれについて悔しく
0651デフォルトの名無しさん2007/10/03(水) 09:19:45
知らなくても普通は問題ないが、そういう特殊な環境もあるらしい。
0652デフォルトの名無しさん2007/10/03(水) 09:22:07
やな環境だなぁ。そんな環境を作っている奴、使っている奴は確実に変わり者。
0653デフォルトの名無しさん2007/10/03(水) 09:25:09
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
0654デフォルトの名無しさん2007/10/03(水) 09:29:54
1バイトが7ビットとか・・・ぷっ・・・ぷぷぷっ・・・ぷぅ〜〜〜(屁)が出ちゃうぜ
0655デフォルトの名無しさん2007/10/03(水) 09:32:52
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
0656デフォルトの名無しさん2007/10/03(水) 09:41:06
というわけで (UINT_MAX-UINT_MIN) の数値からunsigned intのビット数をどうにかして得てからやったほうが無難なときもあるよ,と
0657デフォルトの名無しさん2007/10/03(水) 09:52:48
[email protected]
0658デフォルトの名無しさん2007/10/03(水) 09:56:42
>>654
CHAR_BITは8以上と定められているので、流石にそれではISO準拠を名乗れない。
0659デフォルトの名無しさん2007/10/03(水) 10:02:58
>>655
っつかお前さっきっから偉そうにうぜぇよ?詰まらん突込みに必死になりすぎw
んなの知っててわざとお前みたいなでしゃばりに答えさせているだけだろ。
ほんっと、最近うぜぇガキが増えたな。
>>653
>>651
>>649
>>643
↑こいつキモイ
0660デフォルトの名無しさん2007/10/03(水) 10:04:26
655 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:32:52
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
↑バカとか言っているし、なんだこいつ?不勉強だってw
>>650には知らないとか存在しないとは書かれていない。
しかも「悔しく」ってボケているところに気づかない2ちゃん初心者ワロスw
モロに釣られたな、このでしゃばり、知識をひけらかしたい厨房。

653 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:25:09
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・

0661デフォルトの名無しさん2007/10/03(水) 10:06:54
>>656
UINT_MINは存在しない。
存在したとしても常に0だろうし。
0662デフォルトの名無しさん2007/10/03(水) 10:07:36
ttp://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88_(%E6%83%85%E5%A0%B1)
> 初期のコンピューターでの1バイトは6ビットである(英文文字(キャラクタ)コードが
> 源であった)。1バイトを7ビットや9ビットとして扱うコンピュータもあり
> (DECのPDP-10、NECのACOS-6など)、このため情報通信の分野では
> 常に8ビットを表すために、バイトではなくオクテットと呼ぶのが適切である。
さてと、どっちが不勉強の無知を晒したか、分かったよな?8ビットを1バイトとしない環境があるとしても
それはバイトではなく 何と 言うでしょう〜〜か?ったく、知ったかのバカが無知を晒したよw
>>655 >>655 >>655 >>655 >>655 >>655 <こいつなw
0663デフォルトの名無しさん2007/10/03(水) 10:08:37
>>661
いい加減知ったかはうるさいよ
>>655のバカさんw
>>651 >>653
0664デフォルトの名無しさん2007/10/03(水) 10:11:32
なんでもかんでも例外をキャッチするなよ
しかもバグってるし…
0665デフォルトの名無しさん2007/10/03(水) 10:13:43
良い感じに水掛け論になってきたなwwwwwwwwwwwwww
0666デフォルトの名無しさん2007/10/03(水) 10:15:08
>>661
http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=Dcs&q=UINT_MIN&btnG=%E6%A4%9C%E7%B4%A2&lr=
っつか、ほんまバカにバカって言われるとなんとも。まぁ、どっちが知識があるとか
競い合っているようじゃまだまだ子供だな。ちゃんと調べようぜ?
UINT_MINが存在するしないを一個人が決めて良いもんだろうか?
強いて決めるなら、って話なら分かる。
0667デフォルトの名無しさん2007/10/03(水) 10:17:45
>>655さんよぉ、とっとと謝罪してくれないかねぇ?どこが バカ なのか説明してくれ。
突っ込んだ質問にさも知ったような口で答えたつもりが、相手が無知だと勘違いして
墓穴を掘るとは・・・敢えて突っ込まれて正確に、事細かに説明できないなら黙ってた方が良いよ。
あと、ここ、宿題スレだから。続きがやりたいなら別の質問関連のスレで頼むわ。
0668デフォルトの名無しさん2007/10/03(水) 10:19:18
30分かけて一生懸命調べてからファビョってるところが笑える
0669デフォルトの名無しさん2007/10/03(水) 10:21:53
>>662
・1バイトは通常8ビットであり、古くは6ビット、7ビット、9ビットの物が存在した。
・よって「常に8ビット」を表すために情報通信分野ではオクテットという用語がある。
その機械で1バイトが8ビット以外と定められているのなら、バイト以外ありえないが。
まさかオクテットだなどと言うまい?
0670デフォルトの名無しさん2007/10/03(水) 10:22:24
>>668
負け犬の遠吠え乙w 正確な説明も出来ないくせに他人をバカ呼ばわりしてんじゃねーよ
0671デフォルトの名無しさん2007/10/03(水) 10:23:54
>>669
問題はそこじゃない。>>650が無知だったという証拠は?
詳しくと突っ込まれて答えたのがそうでない環境があるってことだけだろ?
そんなの知ってんだよ、こっちは情報関係の分野を専攻してたからねぇ。
具体的に答えたのはむしろボケた俺の方だろ?w
0672デフォルトの名無しさん2007/10/03(水) 10:26:12
いつになったら中途半端な知識で突っ込んで、指摘されたら逆切れ連投&釣り宣言の馬鹿コンボを
やめてくれるんだろう。
何回このパターン見たことか。
0673デフォルトの名無しさん2007/10/03(水) 10:27:56
っつか、マジでスレ違いだし、ここらで俺が結論づけておくわ。
>>655のバカが突っ込んだつもりで不勉強を晒しただけだな。
他人をバカ呼ばわりする前に自分の知ったかな不十分な知識で偉そうにしていて
相手を勝手に無知、不勉強にするな。調べもしない奴こそいい加減。
悪いがこっちは調べたんじゃなくて知ってたが、敢えて誰もが見られる文献に
リンクをしただけ。普通は自分で調べるだろ、調べる奴は。
0674デフォルトの名無しさん2007/10/03(水) 10:36:35
>>650,652,654,659,660,662,663,666,667,670,671,673

相変わらず恐ろしいほどの瞬発力だ
0675デフォルトの名無しさん2007/10/03(水) 10:45:04
>>672
まあ、わかりやすいから見かけたら即あぼーんで対処するしかないな。

馬鹿は馬鹿である引け目があるが故に馬鹿と指摘されると馬鹿のように怒り始めるから
あまり馬鹿にしてやらないほうが良い。馬鹿にも馬鹿なりの自尊心というやつがあるの
だろう。本当に馬鹿ではなく自分に絶対の自信があるのなら、馬鹿にされても聞き流せ
るはずだから、本来はとても馬鹿馬鹿しい事だが。まあ、わざわざ相手して馬鹿をみる
こともない。
0676デフォルトの名無しさん2007/10/03(水) 10:46:32
沸きすぎワロタww
0677デフォルトの名無しさん2007/10/03(水) 10:50:16
久々に覗いて見たらまたいつもの人か
相変わらずだなここも
0678デフォルトの名無しさん2007/10/03(水) 13:28:34
ここの板もいい加減ID制にして欲しいよ
あぼーんするのが面倒だ
0679デフォルトの名無しさん2007/10/03(水) 15:18:03
つhttp://pc11.2ch.net/test/read.cgi/tech/1051039126/
0680デフォルトの名無しさん2007/10/03(水) 15:36:19
別にIDにしなくてもいいや、いい加減慣れた
長くても一日放置すれば飽きるみたいだし
0681デフォルトの名無しさん2007/10/03(水) 23:37:15
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。
【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)「閏年」「祝日」「六曜」「節句」「二十四節気」の表記を可能にする。
(5)上記以外については自由に作成してよい。

[3] 環境
 [3.1] OS: Windows VISTA or XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/10/5まで。
[5] その他の制限: 特になし

よろしくお願いします。
0682デフォルトの名無しさん2007/10/03(水) 23:43:05
>>681
「六曜」の計算式plz
0683デフォルトの名無しさん2007/10/04(木) 00:06:49
>>682

(月+日)÷6=?…あまり
大安 0
赤口 1
先勝 2
友引 3
先負 4
仏滅 5
例:
十五夜(8月15日) : 8+15=23, 23÷6=3あまり5→仏滅
十三夜(9月13日) : 9+13=22, 22÷6=3あまり4→先負
七夕(7月7日): 7+7=14, 14÷6=2あまり2→先勝
0684デフォルトの名無しさん2007/10/04(木) 00:11:44
>>683
六曜は月の暦(太陰暦)だから太陽暦での月の途中でリセットされるよ
0685デフォルトの名無しさん2007/10/04(木) 00:25:37
やべぇ、5年もホテルでバイトしてて六曜が重要だったのに
そんな単純な計算式で出るなんて初めて知った・・・
0686デフォルトの名無しさん2007/10/04(木) 00:36:50
ラブホか
0687デフォルトの名無しさん2007/10/04(木) 00:44:54
(; ・`д・´)これConsoleでやるのか!
0688デフォルトの名無しさん2007/10/04(木) 00:51:38
太陽暦と太陰暦変換の計算式って中々見つからない
海上保安庁の
http://www1.kaiho.mlit.go.jp/KOHO/syoshi/pr_eph.htm
に計算式があるようだが 解読できないです。
0689デフォルトの名無しさん2007/10/04(木) 02:50:41
[1] 授業単元:
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
 [3.1] OS: windows 
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月5日6:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします
0690デフォルトの名無しさん2007/10/04(木) 03:55:44
>>689
問題2の1つ目のループの計測
2つ目以降は計測してるループのとことかnの値とかそこらへんを書きかえればok
#include <stdio.h>
#include <sys/time.h>
int main(void)
{
    int i, j, n, sum;
    hrtime_t start, finish;

    printf("1.\n");
    printf("+----+---------+---------+---------+---------+---------+\n");
    printf("| n | 2000000| 4000000| 6000000| 8000000| 10000000|\n");
    printf("+----+---------+---------+---------+---------+---------+\n");
    printf("|time|");

    for(n=2000000; n<=10000000; n+=2000000) {
        start = gethrtime(); /* 計測開始 */
        sum = 0;
        for(i=0; i<n; i++) sum++;
        finish = gethrtime(); /* 計測終了 */
        printf("%9f|", (double)(finish-start) / NANSEC);
    }

    printf("\n+----+---------+---------+---------+---------+---------+\n");

    return 0;
}
0691デフォルトの名無しさん2007/10/04(木) 04:02:44
>>689
関数名が情けないことになってるので、書きなおしておいて
#include<stdio.h>
int kaijo(int n){
if(n<=1) return 1;
return n*kaijo(n-1);
}
double touhikyusu(double a0, double x, int n){
if(n<=0) return a0;
return touhikyusu(a0*x, x, n-1);
}
int fibonacchi(int n){
if(n<=1) return 1;
return fibonacchi(n-1)+fibonacchi(n-2);
}
double honer(double x, double keisu[], int keisu_num){
if(keisu_num<=0) return 0.0;
return honer(x, keisu, keisu_num-1)*x+keisu[keisu_num-1];
}
int main(void){
double sum;

printf("%d\n", kaijo(10));
for(i=0,sum=0.0;i<10;i++) sum+=touhikyusu(1.0, 2.0, i));
printf("%f\n", sum);
printf("%d\n", fibonacchi(10));
printf("%f\n", honer(2.0, (double [5]){1.0, 2.0, 3.0, 4.0, 5.0}, 5));
return 0;
}
0692デフォルトの名無しさん2007/10/04(木) 04:34:39
動作確認ぐらいしろよ
0693デフォルトの名無しさん2007/10/04(木) 09:51:29
関数名touhikyusuなのに、等比級数を返さないってのはどうよ?
0694デフォルトの名無しさん2007/10/04(木) 10:17:28
double touhikyusu(double a0, double r, int n){
if(n<=0) return a0;
return touhikyusu(a0, r, n-1)*r+a0;
}
0695デフォルトの名無しさん2007/10/04(木) 11:27:50
>>694
なにそれ?
0696デフォルトの名無しさん2007/10/04(木) 12:37:01
等比級数と等比数列がごっちゃになってた

double function(double a, double r, int n){
return n==1 ? a : a*pow(r,n-1) + function(a, r, n-1);
}
0697デフォルトの名無しさん2007/10/04(木) 12:48:16
>>689
普通初項というとa1じゃないか?
それ以外は良いと思うが
0698 ◆JdKMFRogo6 2007/10/04(木) 15:10:08
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
処理の前後で clock() の値を保存しておき、その差をとり、プログラムの実行時間を求めよ。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] VC 
 [3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
 include<time.h>を用いる。
int t1, t2, t0;
t1 =?
処理
t2 =?
t0 = t2 - t1;
 結果表示

制限というかイメージ的には、こんな感じかなぁとは思うのですが式がわかりませんでした。
大変お手数ですが、よろしくお願いいたします
0699デフォルトの名無しさん2007/10/04(木) 15:43:28
>>698
処理の内容は何でもいいの?
0700デフォルトの名無しさん2007/10/04(木) 17:42:53
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに取り出して違うディレクトリに5個にコピーしろ。
[3] 環境
 [3.1] OS: LINUX
 [3.2] VC 
 [3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat〜20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。

data/〜.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
〜とするべきなのかな?
0701デフォルトの名無しさん2007/10/04(木) 18:11:54
>>700
LinuxなのにVC?
0702デフォルトの名無しさん2007/10/04(木) 18:14:19
そこはコピーしてました。
上のを。
0703デフォルトの名無しさん2007/10/04(木) 18:20:10
ちゃんと書けよハゲ
0704デフォルトの名無しさん2007/10/04(木) 18:36:04
ディレクトリなどの概念はOSに依存するので
きちんと環境を書かないと解答なんてできないよ。
0705デフォルトの名無しさん2007/10/04(木) 18:52:58
>>681
681です
六用の部分は省いても良いです。
0706デフォルトの名無しさん2007/10/04(木) 19:09:39
最近はハゲって言っちゃ駄目だそうだよ。
例えば目の不自由な人を「めくら」と言う等、本人の人格に関わりの無い身体的特徴をあげつらって侮辱するのは差別ではないか、って事らしい。
チビとかデブも駄目らしい。
ハゲは「髪の不自由な人」、チビは「身長の不自由な人」、デブは「脂肪燃焼の不自由な人」って言うそうな。
0707デフォルトの名無しさん2007/10/04(木) 19:41:06
[1] 授業単元:実験
[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに
取り出して違うディレクトリに5個にコピーしなさい。
[3] 環境
 [3.1] OS: LINUX
 [3.2] (gcc )
 [3.3] 言語: C
[4] 期限: 10月5日の朝までにできてればいいです。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat〜20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。

data/〜.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
〜とするべきなのかな?


0708デフォルトの名無しさん2007/10/04(木) 22:48:21
[1] 授業単元: 生物実験
[2] 問題文(含コード&リンク):
α=1/1+10^(pKa-pH)。pKaとpHを引数として
αを求める関数を書け。
[3] 環境
 [3.1] OS: windowsXP
 [3.3] 言語:C
[4] 期限:来週月曜日まで。
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ありません。

累乗計算がうまくいきません。
よろしくおねがいします。
0709デフォルトの名無しさん2007/10/04(木) 22:52:32
pow使えば?
0710デフォルトの名無しさん2007/10/04(木) 23:01:38
#include <stdio.h>
#include <math.h>

int main(void)
{
double pka,ph,a;

printf("Enter pKa.\n");
printf("pka="); scanf("%f",&pka);
printf("\nEnter pH.\n");
printf("pH="); scanf("%f",&ph);


a=pow(10,pka-ph);

printf("degree of disassociation=%f\n",1/(1+a));

return 0;
}

こんな感じでやってみたのですが・・・。
powは小数の累乗でもできますか?

0711デフォルトの名無しさん2007/10/04(木) 23:03:05
>>710
powは
double pow(double,double)
だから小数を使う。この意味は習ってないのかな
0712デフォルトの名無しさん2007/10/04(木) 23:05:29
doubleを%fでprintfしていいんだっけ?
0713デフォルトの名無しさん2007/10/04(木) 23:08:10
関数書けってんだから、mainでやるのは違くね?

double f(double pKa, double pH) { return 1 / ( 1 + pow(10, pKa - pH)); }
0714デフォルトの名無しさん2007/10/04(木) 23:10:09
>>712
%fの方がもともと正式
0715デフォルトの名無しさん2007/10/04(木) 23:23:00
>>707
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
char filelist[20][FILENAME_MAX], *work[20], *temp;
char cmd[FILENAME_MAX*2+10];
int i, index;

for(i=0;i<20;i++){
sprintf(filelist[i], "data/%d.dat", i+1);
work[i]=filelist[i];
}

for(i=1;i<20;i++){
index=rand()%(i+1);
temp=work[i];
work[i]=work[index];
work[index]=temp;
}

for(i=0;i<5;i++){
sprintf(cmd, "cp -p %s data2/", work[i]);
system(cmd);
}

return 0;
}
0716デフォルトの名無しさん2007/10/04(木) 23:33:39
逆からやれば全部並び替えなくてもいいのに
0717デフォルトの名無しさん2007/10/04(木) 23:45:21
>>716
こういうこと?
for(i=0;i<5;i++){
index=(rand()%(20-i))+i;
temp=work[i];
work[i]=work[index];
work[index]=temp;
}
0718デフォルトの名無しさん2007/10/04(木) 23:53:39
for(i=0; i<5; i++) {
index = rand() % (20 - i);
sprintf(cmd, "cp -p %s data2/", work[index]);
system(cmd);
work[index] = work[19-i];
}
0719デフォルトの名無しさん2007/10/05(金) 00:12:37
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
#include <stdio.h>

int main(void)
{
int no = 1;
int sum = 0;

do{
sum = sum + no;
no = no + 1;
}while (no <= 5);

printf("1から5までを足した値は%dです。\n", sum);

return (0);
}



問題 上のプログラムに対し、変数noとsumの値がどのように変わっていくのか
   が、わかるように、その過程が出力されるようにプログラムを変更する。

   ヒント)ループ処理の中で変数noとsumの出力処理を行う
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
[4] 期限:10月5日午前1時30分まで
0720デフォルトの名無しさん2007/10/05(金) 00:41:27
do{
sum = sum + no;
no = no + 1;
printf("no:[%d] sum:[%d]\n", no, sum); // この行を追加する
}while (no <= 5);
0721デフォルトの名無しさん2007/10/05(金) 00:49:47
>>710
>double pka,ph,a;
>printf("pka="); scanf("%f",&pka);
>printf("pH="); scanf("%f",&ph);
本当に上手くいってないのは累乗計算なのかな?
0722デフォルトの名無しさん2007/10/05(金) 00:51:11
>>720
no = no + 1;
の前の行に入れた方がよくね?

というかこれforでよくね?
まだ習ってないのか?
0723デフォルトの名無しさん2007/10/05(金) 01:01:38
初期値が0と1はプログラムからはわかる
はじめに表示したら、最終的なnoの値が表示されない。
2か所にprintfとかめんどくせ
こんな理由でそこにしてみた。

ってか、この課題をわざわざ書き込みするってことは授業を全く聞いていないレベルだと思うし
0724 ◆JdKMFRogo6 2007/10/05(金) 01:29:24
>>699
遅れてすいません。処理の内容は何でもかまいません。
プログラムの時間を計ってみろとの課題なので四則演算でも何でもOKです。
0725デフォルトの名無しさん2007/10/05(金) 09:38:30
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
数当てゲームの作成
ルール1
1〜9の数字を重複しない4桁の数字を使う。
4桁の数字は毎回違う数字となるように工夫すること(rand()とsrand()を適切に
利用)
ルール2
数字と桁位置が一致する場合をHIT。
ルール3
数字は一致するが桁が一致しいない場合をBlow
ルール4
4HIT0BLOWで終了
ルール5
12回以内に見つけなければYOU lostと表示し終了
12回以内に見つけかればYOU winと表示し終了

よろしくお願いいたします。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (borand 5.5)
 [3.3] 言語: (C++)
0726デフォルトの名無しさん2007/10/05(金) 10:56:11
数字は一致するが桁位置が一致しないてどういうこと?
2314とか?

HITは4321てことでいいのかな
0727デフォルトの名無しさん2007/10/05(金) 11:03:02
HIT&BLOWでググれ
■ このスレッドは過去ログ倉庫に格納されています