1 :
デフォルトの名無しさん :
2008/04/15(火) 23:07:41
ト-、___
_,,-‐‐‐‐‐‐t-:、_ `‐、、_
__,,,-‐'´ .:. ,,:.:``‐、;:;:;ヽ_
,,,_____,,..、_,,,,,-‐‐‐-、、_,,-'´ ............:.:/: .:. ````ヽ、_ こ、これは
>>1 乙じゃなくて
〈=__,,,,__,,,,,,,,,,,,..::::::::::... ;.:.:.:.:.:.:.:.:.:.:.:.:.:.:,;ノ::. `‐、、 浜に打ち上げられた魚の死骸なんだから
/ .._____.. .. . `````ヽ- '--‐‐'''''~~~'`::::ヽ:.:.:..... 、 ヽ、 変な勘違いしないでよね!
ヒ;-'´ ````:‐:‐:-:-.:__,,、、、、、 ....:.:.:.:.:.:.`:.:.:.:,;,;,;,;.:.:.;,;...........ヽ、ヽT ● ヽ、
````‐--:-:‐:':´:`:`´:: :::``:..、_:.:.:.:.:.:.:.ヽ、__ ,-==,
````‐‐:-:-:-:-:‐"
104代目の
>>982 を解いてもらったものですが、フローチャートを描きたいのですが
いまいちソースが理解できないので、ヒントや解説をもらえないでしょうか?
お願いします。ring_list_tやretが何を指しているのかがわからなかったです。
>>3 ring_list_append()
・リングリスト1要素を新規に確保
・新要素の中身は引き数data
・新要素の次要素は自分自身
・新要素の前要素は自分自身
・既存リストの追加点が空なら(唯一の要素である)新要素を返す
・既存リストの追加点を新要素の前要素に繋ぐ
・既存リストの追加点の次要素を新要素の次要素に繋ぐ
・既存リストの追加点の次要素の前要素に新要素を繋ぐ
・既存リストの追加点の次要素に新要素を繋ぐ
・新要素を返す
即ち、
追加点
次↓↑前
追加点の次要素
という構造を
追加点
次↓↑前
新要素
次↓↑前
追加点の次要素
と言う構造に変更している。
っと、ここで力尽きた。後は頑張ってくれw
>>4 本当にありがとうございます orz
プログラムの
ret->prev=list;
ret->next=list->next;
list->next->prev=ret;
list->next=ret のところがようやく理解できました。
理解させてもらった上で質問なのですが、このような構造変換をして
何故あのような親とラベルのきれいな出力になるのかが理解できていないです。
簡単なヒントでいいので教えていただけないでしょうか?
CPUが忠実に命令を受けて実行してるから
>>6 CPUが命令を実行してくれるのはわかるんですが・・・・
フローチャートを描きたいので内容的な部分を言ってくれるとありがたいのですが。
8 :
4 :2008/04/16(水) 07:38:21
今起きた。 ――少しは想像力と推理力を働かせようよ…… # あ、それができるくらいなら(ry リングリストの部分はロジックを追うときに絵を描きながら理解しやすいんじゃない? 全体のロジックを追うときにはその絵を見れば判るだろうし。 # って、それができる(ry
9 :
デフォルトの名無しさん :2008/04/16(水) 07:43:14
nodeinfo_t infoary[NODENUM]の説明 ノードのラベルと親ノードを、ノード-1の位置に記憶する ex. ノード3のラベルと親ノードは、infoary[2].label, infoary[2].parent infoary[x-1].label == 0 の場合、xは通過していないことになる analyze_depth: @空のスタック(stack_t stack={0})、初期化されたノード情報配列(nodeinfo_t infoary[NODENUM] = {{0}})を宣言 Aスタックにルートノード(start)をプッシュ : pushstack(&stack, start); Bルートノードを通過済みする : flags[start-1] = 1; Cルートノードのラベルを1に設定 : infoary[start-1].label = 1; ルートノードの親ノードを自分に設定 : infoary[start-1].parent = start; Dラベルを2に設定 : label = 2; Eスタックにデータ(親ノード)がある→F、 スタックが空→N Fスタックからノードを取り出す(親ノード) : parent = popstack(&stack); G親ノードから到達可能なノード(子ノード)が、ある→H、ない→E : for(i=0; adj[parent-1][i] != 0; ++i){ H子ノードが未通過→I、通過済み→G : if( flags[ adj[parent-1][i]-1 ] == 0){ I子ノードを通過済みにする : flags[ adj[parent-1][i]-1 ] = 1; Iスタックに親ノードをプッシュ : pushstack(&stack, parent); Jスタックに子ノードをプッシュ : pushstack(&stack, adj[parent-1][i]); K子ノードのラベルを設定 : infoary[ adj[parent-1][i]-1 ].label = label; 子ノードの親ノードを設定 : infoary[ adj[parent-1][i]-1 ].parent = parent; Lラベルを+1する : ++label; MEに戻る : break; Nラベルが0以外のノードを表示する printf(" v_label parent\n"); for(i=0; i < NODENUM; ++i){ if(infoary[i].label != 0){ printf("%2d : %7d %6d\n", i+1, infoary[i].label, infoary[i].parent); } } 上記間違いがあっても、当方は責任を負いかねます これで分からないなら、まずwikiで深さ優先探索、スタックをじっくり勉強してください
>>9 助かりました
本当にありがとうございます orz
11 :
デフォルトの名無しさん :2008/04/16(水) 13:22:41
前スレ988のものです。
>>989 無知なんでライブラリと聞いてもピンとこないんですが;;すいません。
授業で使う資料に書いてあることを書きます。
画像処理を行うプログラムをWindowsのダイアログベースで作成していく。
ダイアログベースプログラムの大枠をMicrosoft Visual Studio6.0のVisual C++6.0で作る。
となっています。どうでしょうか?
問題
a[100][100]を宣言し、2重のfor文を用いて、a[0][0]に0+0を入れて、
a[0][1]に0+1を入れて、a[0][2]に0+2を入れて、a[1][2]に1+2を入れて、
・・・a[99][99]に99+99を入れるようなプログラムを作れ。次にこれらの
配列変数の値が赤色の値で、緑と青の値は0であるような画像を表示する
プログラムを作成しろ。
>>996 〜998
ありがとうございます。
まだ基礎しか習ってないのでここまで複雑ではないような気がします。
せっかくやっていただいたのに申し訳ありません;;
12 :
993 :2008/04/16(水) 16:57:56
>>11 3日もかけて作ったのに!
ところで、ダイアログベースってことは使うコントロールを指定されてたりしないかい?
ウィザードからダイアログベースのアプリケーション作って SetPixelで点打っていくだけでは内科医
14 :
993 :2008/04/16(水) 17:25:57
15 :
デフォルトの名無しさん :2008/04/16(水) 17:56:32
char str[] = "monster hunter portable 2nd G"; char buff[128]; という変数があって、 あえてstring.hを使わずにbuff[128]に str[]を代入するにはどうすればいいですか?
for (int i = 0; (buff[i] = str[i]) != '\0'; i++);
>>15 sprintf(buff, "%s", str);
18 :
デフォルトの名無しさん :2008/04/16(水) 20:54:57
19 :
名無しさん@ゴーゴーゴーゴー! :2008/04/16(水) 21:35:12
やってる事は正しいんだろうけど、
そのビット操作はレベル的に提出したら
>>19 やばくねw
こうゆうの、確信犯って、ゆうんですよね
27 :
デフォルトの名無しさん :2008/04/16(水) 23:21:07
[1] 授業単元:画像処理 [2] 問題文:2値化画像を読み込ませ、 黒(255)の部分の面積(画素の数を求める)プログラミングを作成せよ。 [3] 環境 [3.1] OS:XP [3.2] Visual Studio2005 [3.3] 言語:C [5] その他の制限:メイン関数(特に画素の数を求める部分)だけでも教えて欲しいです。 分かりにくかったらすみません。 よろしくお願いします。
追記:画像フォーマットはmagでお願いします
この期に及んでmagとは恐れ入った
31 :
デフォルトの名無しさん :2008/04/17(木) 00:58:05
>>12 本当に申し訳ありません;;
他には何も書いてないようです・・・
>>13 SetPixelで点を打っていくのは確かです。
よろしくお願いします。
32 :
デフォルトの名無しさん :2008/04/17(木) 01:09:31
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク):() 1世代20年とういう仮定のもとに、500年前(つまり25世代前)のあなたの祖先の数が何人になるかを再帰法を用いて計算せよ (1世代前=父母、2世代前父方の祖父母+母方の祖父母、3世代前=・・・) [3] 環境 [3.1] OS: Windows [3.3] 言語: C [4] 期限: 4月21日まで [5] その他の制限: 制限はないのですが再帰法を絶対に使えということです どなたかよろしくお願いします
#include<stdio.h> int hoge(int a, int b) { if(b<0) return 0; return a+hoge(a*2, b-1); } int main(int argc, char *argv[]) { int i; for(i=0;i<=25;i++) printf("%d\n", hoge(1, i)-1); return 0; }
34 :
デフォルトの名無しさん :2008/04/17(木) 01:48:48
てす
[1] 授業単元:情報演習 [2] 問題文:200個の要素を格納する整数配列を宣言し,要素を1〜100の乱数で満たし,この配列の要素を標準出力に出力する. 次いで,要素の大きい順に出力するプログラムを作成する [3] 環境 [3.1] OS:XP [3.2] cygdrive [3.3] 言語:C [5] その他の制限:自分で並び替えられる前、並び替え変えた後が 表示されるようにつくろうとしましたが、大きい順に並び変えるところで お手上げ状態です。いろいろfor文入れたりしましたが駄目でした。どうか お願いします。以下作ってみたプログラムです。
36 :
35 :2008/04/17(木) 01:59:59
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) {srand((unsigned) time(NULL)); int d[200]; int i, j; int tmp; printf( "before,\n" ); for ( i=0; i<200; i++ ){ j = rand() % 100 + 1; printf("%d ",j); } printf("\n"); for ( i=0 ; i<200; i++ ) { for ( j=i+1; j<100; j++ ) { if ( d[i] < d[j] ) { tmp = d[i]; d[i] = d[j]; d[j] = tmp; } } } printf("after,\n"); { printf("%d ",d[i]); } }
中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう! 中国に反撃しよう!中国に反撃しよう!中国に反撃しよう!
>>35 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int d[200];
int i, j;
int tmp;
srand((unsigned) time(NULL));
printf( "before,\n" );
for ( i=0; i<200; i++ ) {
d[i] = rand() % 100 + 1;
printf("%3d ", d[i]);
}
printf("\n");
for ( i=0; i<200; i++ ) {
for ( j=i+1; j<200; j++ ) {
if ( d[i] < d[j] ) {
tmp = d[i];
d[i] = d[j];
d[j] = tmp;
}
}
}
printf("after,\n");
for ( i=0; i<200; i++ ) {
printf("%3d ",d[i]);
}
printf("\n");
return 0;
}
41 :
40 :2008/04/17(木) 08:38:31
>>40 自己レスです。
return i; とありますが、文脈上 return commands[i].cmd_id; の方がいいですね。
42 :
デフォルトの名無しさん :2008/04/17(木) 12:04:46
課題:配列について 内容:char src[ ] = "seikima"; char dest[4] = "tsu"; と配列を用意し、destの中身をsrcに結合させ、表示させる。 ただし、for文を使うこと・ポインタ、string.hは使ってはならない。
そのままsrcにdestぶち込むって無理じゃね? srcの配列数していいんだったらいいけど。
>>35 大学特定しました。 CS2年だなw
まぁ自分でも頑張ってみることも大事だよ。
ここに頼りすぎてると後々辛い思いをするかもね。
電子版で聞いたけど回答無かった おまえらならわかる? 今回はR32C/121を利用してロボットを作ろうとしています。 できれば新しくCAN通信で動かしたいのですが 初期設定でうまくいっていないようです。 /* CANリセット/初期化モードに移行 */ reset_c0ctlr = 1; sleep_c0ctlr = 0; /* 動作モードの設定 */ /* CAN制御レジスタの設定 */ porten_c0ctlr = 0; loopback_c0ctlr = 0; msgorder_c0ctlr = 0; basiccan_c0ctlr = 0; buserren_c0ctlr = 0; tsprescale_c0ctlr = 0; /* ビットタイミングの設定 */ prc0 = 1;/* Protect off */ cclkr &= ~0x0FU; cclkr |= 0x00; prc0 = 0;/* Protect on */ brp_c0conr = 12; /* CAN動作モードへ移行 */ reset_c0ctlr = 1; /* 動作モード確認 */ while(state_reset_c0str == 1){} どこがおかしいの?
49 :
デフォルトの名無しさん :2008/04/17(木) 21:52:03
>>48 そんなんでわかるかよ 初期値渡されてもわかるわけないだろ
>>48 たぶん、
> /* CAN動作モードへ移行 */
> reset_c0ctlr = 1;
ここを
reset_c0ctlr = 0;
にしないと動作モードにならないだろ?
他のレジスタはほとんどわからんけどね。
演算子の単元で c=a+a*b+a/b c=43 どうしても43にならないのですが、解説していただけないでしょうか。
>>51 aとbは43になるかもしれないしならないかもしれません。
cはc=43の時点で43になります。
c=a(b+1+1/b) 43は素数なのでa,bの少なくとも一方は整数ではない あれ?問題がわからなくね?
54 :
51 :2008/04/17(木) 23:31:42
すいません抜けがありましたので、再度書き込みます。 a=10 b=3で c=a+a*b+a/b このときのcに格納される値の問題です…。すいません。 答えは43らしいのですが…
何型なの?クワガタ?イントガタ?
>>54 c = (10) + (10 * 3) + (10 / 3)
c = (10) + (30) + (3)
c = 43
あってるよ
算数の宿題じゃなくプログラムの問題だったら
コードを見てみないと何がおかしいのかわかりません
int型だと 10 / 3 = 3 に切り捨てられるから43で合ってるよ あとは四則演算
58 :
51 :2008/04/17(木) 23:37:35
>>55-56 なるほど。10/3=3になるんですね…。
ちなみにintです。
助かりました、ありがとうございます!!
59 :
51 :2008/04/17(木) 23:38:13
>>47 これ参照エラーでそうだけど…
言葉の隅つくようだったら
printf("%s",src);
for(i=0; i<sizeof(dest); i++)
printf("%c", dest[i])
でいけそうじゃね?
重箱だろ。
重箱だな
>>60 Javaじゃないから配列の範囲外をアクセスしても、変なところぶっ壊さない限り
大丈夫じゃない?とりあえず、OSX上でgcc 4.0.1では動いてる。
>>63 マジで言っているならC/C++を使うのはやめた方がいい。
なんでまたそんな課題をギリギリまで・・・
>>65 それ、マジで言っているならそっちこそCを使うのをやめた方がいい。
Javaでも使ってれば?
元々、Cってのは高級アセンブラだぜ?メモリ管理なんて話を抜きにす
れば、どこのアドレスだろうが自由に読み書きできるのがCってもんだ。
実際の業務で使うとかって話じゃなくてパズルみたいな問題を解いてる
だけ。できることと、やっていいことの区別くらいついてるさ。
>>47 が適切かどうかで考えるべき。たまたま
srcの後ろにdestが連続した領域に記録されたとき、srcの文字列の終端を示す文字を
destをあのように操作することで上書きしたから起こった現象。
>Javaじゃないから配列の範囲外をアクセスしても、変なところぶっ壊さない限り大丈夫じゃない? ここはまぁいい。 >とりあえず、OSX上でgcc 4.0.1では動いてる。 これは阿呆だろ。>68が言うように「パズルの問題を解く」つもりなら何故動くか理解しておくべきだ。 それをしないなら、使うのはやめた方がいいってことだな。 # 何故できるか、と同様に何故してはいけないか、もね。
またナンバーサイン野郎か・・・うざっ
>>70 阿呆って?
intやlongはalignされる可能性があるけどcharはそのまま連続して確保されるでしょ、
実装依存かもしれんけどとりあえずosxのgccならOK、って書いとけばよかった?
63 名前:デフォルトの名無しさん 投稿日:2008/04/18(金) 06:16:24
>>60 Javaじゃないから配列の範囲外をアクセスしても、変なところぶっ壊さない限り
大丈夫じゃない?とりあえず、OSX上でgcc 4.0.1では動いてる。
↑こいつが一番アホだろ、JK。もちっとまともな奴がここにいると思ったが
所詮バカが自分以下を見下そうと思ってきているだけか。この世にお前以上の人間が
どんだけいると思ってんだ?w
>>74 =
>>68 言い返すことが出来なくなるとファビョる基地外 以後放置よろ
>>76 ありがとうございます
今ちょっとLinuxのPCが調子悪いので今日試せませんが
ソース見て勉強します
78 :
64 :2008/04/18(金) 23:55:27
スミマセン,私の解釈がちょっと違ってたようで
プログラム内でjpgをppmに変える必要があるそうです
でもdjpegコマンドを用いるってプログラム内でlinuxのコマンド
用いて変換することって可能なのでしょうか
あともし
>>76 さんに書いて頂いたコードで出力データを別ファイルに
書き込んでデータファイル作る場合にはどうすれば良いでしょう
FILEのところに関数追加して書き込み用として開いて最後にfprintf?
ご教授お願いします
>>66 削除、CSVファイルの取り込み以外は出来たのだが・・・タイムオーバー?
もちっとできんもぉ〜ソースだけど完成するのだが・・・
>>66 がとりあえず完成したのだが・・・もう間に合わなんだか・・・?
>>80 努力が報われないのもあれだから、おれが添削してやるよ。
82 :
64 :2008/04/19(土) 08:53:01
>>78 は何か出来てしまったので放置でお願いします
>>81 俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。
余計なこと書かずにあげたきゃ自分の判断であげりゃいいのに。
んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw
自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ〜? 必死だなw
おまえどんだけ性格ねじれてんだよwww 土曜の朝から笑かしてもらいやした。もうお腹いっぱいです。
>>86 84は俺だが自演じゃねーよw
どっちかっていうと俺は81と83が自演だと思ってる人間だ
90 :
81 :2008/04/19(土) 09:57:46
92 :
66 :2008/04/19(土) 12:34:50
>>79 ,80
金曜午後期限だったんですが、なんとか言い訳して伸ばして貰いました
もしまだ見てらっしゃったらソース見せてほしいです
もうちょっと速ければ見せてもらえたのに。 彼もうへそ曲げちゃったから。。。
おぉ、そうかそうか、そんなに俺のクソミソースを見たいか? もちっと待ってなぁ。ちと、CSVからバイナリに変換するところでてこずってる。 あと、余裕があったら最後に名前を基準にソートする部分をそぉ〜っと入れておくぜい。
なんだ、結局まだできてないんじゃんwww
じゃ、おれも作ってみようかな。
いや、出来たと思ったんだけど、色々と不具合があってな。 まぁ、きんもぉ〜なソースになりすぎて、自分でも把握しきれてない。 が、一応バイナリーデータ、CSVへの出力は完成している。 あとはインポーとのところが、ね・・・
うわぁ〜、きんもぉ〜クソースがさらにきんもぉ〜に・・・けどがんばる、もちっと待ってぇなぁ
あぁ、あと、取り込む際に、既存の住所録の件数と取り込む件数を考慮して 300件を超えるべきではないが、その部分もやってないっす・・・すまそ。 登録されている件数は、生成されたバイナリーデータのファイルサイズと 1件分の構造体のサイズを元に算出してますです、はい。
さらに、コメントに性別を省略した際は x を入れるってのもやってね・・・マンドクセッ
重複する名前でも登録可能っす。削除する際も重複するものすべてが消えるっす。 あぁ、なんかインポートかCSV出力にバグっぽいのがあった・・・シラネッ
いちいち報告しなくていい。正直興味ないし。
>>103 興味ないならいちいちそんなことを書き込まなくていい。お前の存在自体いらないしw
期限切れの宿題に対して、答えを出そうともがく君の存在が必要とされてるとでも?
ただ興味があってチャレンジするのであれば、一向に構わないが
君の無意味な連続投稿によって埋もれていく宿題登校者の身にもなったらどうかな。
>>97-102 の辺りとか、反応がないという事はどういうことか?
あまりこういうことは言いたくはないが、もう少し空気を読んでくれ。
>>106 お前の方がうざっ、無能な奴ほど相手に食って掛かるもんだな
それから、現状で待機中の宿題があるなら、お前がやれよw
> 無能な奴ほど相手に食って掛かるもんだな さすが、すべての発想が我々の2、3歩先をリードしていらっしゃるw
コーディングにそれなりの時間を要するのは確かだが
有能なら
>>66 程度の問題なら難なく解決できるだろwwwwww
特別に難しいアルゴリズムを求めているわけでもないし、ただ仕様通りに書くだけ。
期限切れてるから、俺はやる気にもならんがな。
【質問テンプレ】 [1] プログラミング言語 [2] 整数の平方根を開平法で求めるCのプログラムを作成せよ。結果は小数点第1位まで求めればよい [3.1] OS: Windows [3.3] 言語: C よくわからないので、よろしくお願いします。
>>109 >>106 何こいつ、このスレの主か?偉そうに仕切ってやがるが
そこまで言う前に、お前も無駄なレスを書き込むなって。
相手を煽ればそれにレスがつく、結局流れる原因はお前にもあるんじゃん。
放置、スルーを知らない時点でお前の存在こそこのスレには要らない。
それから、期限切れではあるが、期限を延長したような
本人からのレスがあるようだが・・・?
兎にも角にも、興味がないならお前がスルーしろよ、な?
この板にもIDがついたら面白いのにね。
113様のような有能な人材は是非ともトリップをつけるべきですね トリップをつけさえすればこのスレ、いや世界が変わると言っても過言ではないでしょう
116 :
30 :2008/04/19(土) 17:34:40
>>40 すいません、できてはいたのですが,
警告 W8066 StrCmnd.c 81: 実行されないコード(関数 main )と、でてましたが
この警告を消す方法はないでしょうか?
そして、前スレで解いていただいたのですが、
「Q.0〜255の整数を入力し、数値に変換して unsigned char型配列に格納する。
この数値に対して1ビット左にシフトした結果、全ビット反転した結果をそれぞれ
10進数、16進数、2進数で表示する(入力された数値に対しても表示しておくこと)」
という問題で、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6274.txt と、解答していただいたのですが、unsigned(left,right,return)
など使わずに 結果をunsigned nのみで表示する方法はないでしょうか?
118 :
66 :2008/04/19(土) 17:46:30
>>117 ありがとうごぜーます
コードかけないけれど改造だけは得意なのでがんばってみます
神がひとりの名無し住人として宿題に挑む ↓ 名無し住人として書き込んだ為、神のソース投稿に際して無粋な突っ込みが入る ↓ 宿題投稿者からの懇願が奏し、神がソースをアップロード ↓ 神が書いたソースのあまりの素晴らしさに息を呑む住人 ↓ レスする暇もなく神のソースをしゃぶっている住人から、レスポンスがない事に神は腹を立てる ↓ 更に無能な住人から嫉妬されてしまう ↓ 完璧な論理で一蹴 ↓ 非の打ち所がないほどのソースをまさかの連続改良 ↓ 神様万歳 ←今ここ ↓ 神がトリップをつけ2chで数々の功績を残す ↓ 神の功績は2ch程度では留まらず、やがて世界の舞台で活躍 ↓ 神を中心に世界が変わる
>>1 > あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
> 気に入らない質問やその他や発言はスルーの方向で。
読めない新入りがいるよなぁ
少しは治療の効果があったようにも見えたが、実際はぜんぜんかわってねーな また暴れてPC取り上げられんなよw
[1] プログラミング実習 [2] 目盛りのついてない水差しが3つあり、それぞれ3L、5L、8Lの容積をもっている 8Lの容器には既に満杯の水が入っているが、半分の4Lずつに分けたいと考えている。 なお、資源を大切にしたいので、水をいくらでも使えるということは出来ない。 最初の8Lをうまく3つの容器に分ける必要がある。 その手順を求めるおプログラムを作成せよ。 また完成後1Lと7Lや5Lと2Lにも分けられることを確認せよ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: BorlandC++ [3.3] 言語: C言語 [4] 期限: 2008年4月20日24:00まで [5] その他の制限: 特にないです
>>123 >前回のプログラムデータを使用する宿題
ここんとこ詳しく
あ、前回
>>76 さんにやって頂いた課題
>>64 のことです
それを複数の画像に使用してDBを作ってます
DBの内容については書いてあるとおりです
DBは自前で用意しろってことか? 正直面倒そうなんで俺はパスする
>>128 の訂正
int queue[STATE_NUM], queue_top=0, queue_last=0;
↓
int queue[QUEUE_SIZE], queue_top=0, queue_last=0;
130 :
122 :2008/04/19(土) 22:52:42
>>128 しっかり実行できました!
ありがとうございます!
132 :
123 :2008/04/19(土) 23:12:15
133 :
131 :2008/04/19(土) 23:17:08
ああミスった #define FIN 7 #define REQUIREMENT if(b[1][1]==4 && b[2][1]==4){ に訂正 WFSやったのとないからDFSで求めたんだけど、WFS勉強したいから参考サイトとか教えてもらない?
>>133 WFS ってなんでしょうか。幅優先探索?
Width First SearchではなくBreadth First Searchという方が一般的なのか 幅優先探索と初めから言えばよかったが
>神が書いたソースのあまりの素晴らしさに息を呑む住人 神のコードは、時に読んだ人を妊娠させるとか‥‥‥。
>>117 はEOF対策をしたつもりが、EOFを入力すると無限ループ・・・
EOF入力したダメー
>>138 普通、EOFは入力できないのだが。
# 入力をクローズすれば、fgetc()などの戻り値がEOFになることを期待できるが。
[Ctrl+Z][Enter]で入力できなかったっけ?
いいえ、それは一部の環境において入力を閉じる行為です。
まぁ、fread(buffer, 1, 1, stdin)とかすれば戻り値からEOFが入力されないことがわかるな。
>@余力があれば、
>>116 の下の段もお願いします;
それぞれ、printf("\n");の行の次に以下の行を入れればいい。
--
n = a;
n <<= 1;
--
n = a;
n >>= 1;
--
n = a;
n = ~n;
--
# 勿論、left, rightなどはnに変更することをお忘れなく。
ってことでいいのかな?
>>143 >@余力があれば、
>>116 の下の段もお願いします;
何のために1つの変数で表示する必要があるの?
変数の使いまわしは思わぬミスを招くから回答者はそれを避けたんだと思うんだけど
っつか、EOFは何かのファイルの終わりのことだけだと思っているんだろうか・・・ 一応、入力されたデータもファイル(何かデータの資料)として扱えるんだがね。
>>149 自己レスです。
累計出力するの忘れてました。
一行だけ追加してください。
p[j++] = _p;
printf("累計件数:%d\n", j); <- 追加
} while (j < DATA_SIZE);
153 :
149 :2008/04/20(日) 17:49:56
すんません、3つプログラム作らないとダメなんですね。 読み間違ってました。
>>149 >3、4流っぽい気が
それはお手本のソースを見ない限りなんともいえませんが、それは提示されてましたっけ。
>>157 ありがとうございます!
ちょっと家のPC不調なんで学校行って実行してみます
>>154 ここ、宿題スレ。あとな、お前何が言いたいの?
あのリストを作るプログラムをちゃんと見たか?w
getchar() が使われているんだが???
>>149 それをいうならアンダースコアから始まる変数名を使って欲しくはない
(わざとやってるんじゃなければ)
自分の信じている土台が揺らぎ始めたのを本能的に察知して相手をたたき出すことにしたようですね。 なるほど、なるほど。
162 :
149 :2008/04/20(日) 20:15:42
外部に公開する必要のないシンボルや、どうでもいいテンポラリな変数は先頭_で始めてます。
>>162 アンダースコアで始まる名前は処理系のために予約されていることになってるから
使わないほうがいいと思うよ
164 :
◆wIggSzRFEU :2008/04/20(日) 20:26:38
1 情報 2 人数a人のクラスで野球チーム(9人)をbチーム作成した。 このとき残りのメンバーでバレーチーム(6人)を何チーム作れ、何人あまるかを出力する。 3 Windows テラタームを使ってます C 4 2008年4月21日06時 5 scanfを用いるみたいです・・・ 難しい関数は習ってません よろしくお願いします。
プログラムの問題なのか?算数の問題じゃなくて?
166 :
◆wIggSzRFEU :2008/04/20(日) 20:29:59
そうです・・・
167 :
149 :2008/04/20(日) 20:32:57
>>163 そのような話は聞いたことがないのですが、それは処理系依存の話でしょうか?
よく見る他人のソースがlinuxのkernelソースだったもんで普通に使ってました。
>>164 #include<stdio.h>
int main(void)
{
int a, b, c; // a:クラスの人数 b:野球チーム数 c:バレーチーム数
printf("クラスの人数を入力してください : ");
scanf("%d", &a);
if(a<0) return 1;
for(b=0;b*9<=a;b++)
{
c=(a-b*9)/6;
printf("野球チーム数:%d バレーチーム数:%d あまり人数:%d\n", b, c, a-b*9-c*6);
}
return 0;
}
169 :
デフォルトの名無しさん :2008/04/20(日) 20:35:14
bも入力するんじゃないの?
野球チーム一つ分の人数を数値から引いて、 その数でバレーチームが何人作れて、 何人余るかじゃないの?
>>167 処理系のために予約されてるんだから、当然規格で決まってる
ただまぁアンダースコアで始まるすべての名前が予約されてるわけじゃないけど
>>123 です
>>157 さんのプログラム拝見させて頂きました
恐らく
>>64 での課題とまとめたソースだと思うのですが
既に
>>64 を実行してとっているデータ(
>>132 のような)
を読み込んで演算を行うようにしたいのですが
どうすればいいでしょうか?
あとオーバーフローチェックのところのLLONG_MAXが使用されてなく
エラーが出てしまいます
174 :
デフォルトの名無しさん :2008/04/20(日) 21:00:54
175 :
デフォルトの名無しさん :2008/04/20(日) 21:15:18
>>167 すまん、ググってみたが確かなソースにたどり着けなかった
>>175 aとbを入力する場合
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
a -= b * 9;
if(a < 0) return 0;
printf("チーム数:%d\nあまり:%d\n", a / 6, a % 6);
return 0;
}
178 :
デフォルトの名無しさん :2008/04/20(日) 21:24:15
179 :
デフォルトの名無しさん :2008/04/20(日) 21:27:15
#include<stdio.h> void main (void) { int a,b,c,d,e; printf("人数入力:"); scanf("%d",&a); printf("野チーム数:"); scanf("%d",&b); c=a-(b*9); d=c/6; e=c%6; printf("人数:%d 野数:%d バレ数:%d 余:%d",a,b,d,e); } だめ?
if文削除すればいいだけだろ。 野球チーム数多すぎた場合変なことになるけど。
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): キーボードからABCDと円周率を入力して「ABCD3.14と」表示させるプログラム 変数は1つで [3] 環境 [3.1] OS:問わず [3.2] コンパイラ名とバージョン:VC++6.0 [3.3] 言語:C++だけど基本範囲? [4] 期限:[2008年04月21日23:59まで] [5] その他の制限:基本領域なのでstdio.hのみ よろしくお願いしますm(__)m
C++なのにstdio.hでいいんだな?別にやっちゃいけないわけじゃないけどいいんだな?
C++ならcstdioだろうな。
それより問題文が意味不明なのだが
>ABCDと円周率 と入力すると >ABCD3.14と になるように変換すればいいんだろ 円周率という文字を3.14に置き換えて、「と」を後ろにすればいいんじゃないかな?
>>182 できた。
#include <stdio.h>
int main()
{
char buf[100];
scanf("%s", buf);
puts("ABCD3.14と");
return 0;
}
188 :
182 :2008/04/20(日) 23:58:08
>>183-187 素早いレスサンクス。
>>183-184 stdioで桶です
>>185-186 プロセスとしては
起動>入力「ABCD」>入力「3.141592653」で
出力「ABCD3.14」
入力ミスで「」のなかに と を入れてしまいますたorz
>>187 ので通るかどうか…多分先生笑顔で×くれてきそう(涙
なんてくだらない設問なんだ。
>>188 文字列と小数に関する入力・出力の課題というわけだな。
しかし、
> 変数は1つで
この条件はマジ?
>>182 #include <stdio.h>
void main() { char buf[16]; gets(&buf[0]); gets(&buf[4]); buf[8] = '\0'; puts(buf); }
192 :
182 :2008/04/21(月) 00:31:51
>>182 できた。
#include <stdio.h>
int main()
{
char buf[100 + sizeof(float)];
scanf("%s", buf);
scanf("%f", buf+100);
printf("%s%.2f\n", buf, *(float*)(buf+100));
return 0;
}
>>182 これで基本?
#include<stdio.h>
int main(void)
{
char buf[100+1];
setvbuf(stdout, NULL, _IOFBF, 1024);
fprintf(stderr, "入力「ABCD」>", buf);
scanf("%100s", buf);
printf("%s", buf);
fprintf(stderr, "入力「3.141592653」>", buf);
scanf("%lf", buf);
printf("%.2f\n", *(double*)buf);
fflush(stdout);
return 0;
}
139 名前:デフォルトの名無しさん 投稿日:2008/04/20(日) 14:42:29
>>138 普通、EOFは入力できないのだが。 < 出来るんだが・・・
141 名前:デフォルトの名無しさん 投稿日:2008/04/20(日) 15:03:54
いいえ、それは一部の環境において入力を閉じる行為です。 < 話が分かってない・・・
EOFっていったら普通Ctrl-Dで入力だな
EOFがキーボードから入力できないとしても、どのファイルには ファイルの終わりを意味するEOFコードが記録されていますし それを入力受付として使うことも可能ですが何か?w これだから初心者、素人は・・・ナンバーサイン野郎の妄想に惑わされるなよ。
あと、そいつが言っているのはEOF対策として、freadが指定したFILEストリームから 指定したポインタへ取り込まないという性質についてだろ?だったら最初から EOFが 入力 出来ないという勘違いは言わなきゃ良かったんだよ。 言いたいことが相手に的確に伝えられない、誤解を生じさせて損をして生きている奴って 世の中普通にいるしなw こんなところでだから、見ず知らずの人に理解してもらおうと 必死になったんだろうけど、それを相手のエスパーで理解してもらわなきゃ通じないって どんだけコミュニケーションが下手なんだよ、ナンバーサイン君は?
ナンバーサイン君って誰?
いちいち蒸し返すなよ
[1] 授業単元: プログラミング実習 [2] 問題文 数学関数を使って,0以上10未満の範囲で平方根(sqrt)の対応表を出力しなさい.小数点の刻みを0.01とすること. [3] 環境 [3.1] OS:Windows/Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 4/22
#include <stdio.h> #include <math.h> int main(void) { double a; for(a=0; a<10; a+=0.01) printf("√%.2f = %f\n", a, sqrt(a)); return 0; } って書くと減点されるんだろうな。
203 :
デフォルトの名無しさん :2008/04/21(月) 14:56:39
>>202 負の方が表示されないからな。
>>201 #include <stdio.h>
#include <math.h>
int main()
{
int i;
for(i=0;i<1000;i++)
printf("√%.2f = %f, -%f\n",i/100.0,sqrt(i/100.0),sqrt(i/100.0));
return 0;
}
205 :
デフォルトの名無しさん :2008/04/21(月) 15:25:35
sqrt()2回とかw
206 :
182 :2008/04/21(月) 15:30:31
>>192-194 作成ありがとうございます。
先生に出したら一つめの方がやり直し、二つ目は「同時に表示できてないな(藁」
とあっさり×&デコピンを頂戴致しました(泣
文字列と小数を同時ディスカ・・・orz
207 :
デフォルトの名無しさん :2008/04/21(月) 15:35:03
>>182 は何を意図した問題なのかさっぱりわからん。
>>206 #include <stdio.h>
struct hoge{
char str[100];
double value;
};
int main(void){
struct hoge foo;
scanf("%s", foo.str);
scanf("%lf", &foo.value);
printf("%s%.2f\n", foo.str, foo.value);
return 0;
}
エスパーktkr
>>212 char
double
struct hoge
それは変数じゃなくて型名
216 :
154 :2008/04/21(月) 20:13:52
>>216 バカか・・・んじゃどうしてプログラムはEOFを検出して動作したんだ?ん?
お前は入力は 印字可能な文字 のみだと思ってんの?w
コンピュータ、電子計算機がやっている基本だよ、入出力って。
その中に人間が決めた定義、その中にEOFも改行コードなども
印字不可能でも存在するデータがあるんだがw
いい加減失せろ、ナンバーサインバカw
蒸し返すな!値を返せ!by return
リダイレクトも知らなさそうだな、ナンバーサインは・・・
そんなことよりコナン観ようぜ
ここに投稿したことたぶんバレるぞ
[1] 授業単元:OSプログラミング入門 [2] 問題文:OSにおけるセキュリティーホールを検出するプログラムを作成せよ [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限:4月27日まで [5] セキュリティーホールが発見された場合は自動で修正するように 機能を付けること
ねーよw
ゲイツ自重wwwwwwww
#include<stdio.h> int main(void) { int a = 5, b = 3; double d; d =(int)(((double)a / b) + 0.5)); printf("%f\n", d); return 0; } これで何故かエラーがでるんですがどこがおかしいのでしょうか?
228 :
111 :2008/04/21(月) 23:07:21
>>154 丁寧なレスありがとうございます。
本当に助かりました。
せっかくなので頑張って解読してみます!
>>227 VIPで聞けばいいじゃん
あとどんなエラーが出てるのか位書かないと答えようが無い
まあどうせ)とかだろうけど
d =(int)(((double)a / b) + 0.5)); ) が一個余分
7行目にステートメント;がないといわれます。
233 :
デフォルトの名無しさん :2008/04/21(月) 23:42:01
[1] 授業単元: C++ [2] 問題文 サイコロのプログラムをつくりなさい [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: borland C++ 5.5.1 for win [3.3] 言語: C++ [4]特になし、長いので分けて書きます。 #include<iostream> #include<cstdlib> #include<ctime> using namespace std; Class Dice{ int face; int value; public: Dice(int f) { face=f; srand((unsigned)time(NULL)); value=rand()%face+1; } Dice() { face=6; srand((unsigned)time(NULL)); value=rand()%face+1; }
234 :
デフォルトの名無しさん :2008/04/21(月) 23:45:11
>>233 の続きです
void throwDice()
{
srand((unsigned)time(NULL));
value=rand()%face+1;
}
int read()
{
return value;
}
}
int main()
{
Dice d6;
Dice d10(10);
d6.throwDice(6);
d10.throwDice();
cout<<"6面体の目:"<<d6.read()<<endl;
cout<<"10面体の目:"<<d10.read()<<endl;
return 0;
}
エラー2141 dice2.cpp5:宣言の構文エラーとでます
ソースの問題でしょうか?
お願いします
>>233 Classじゃなくてclass
小文字だよ。
236 :
デフォルトの名無しさん :2008/04/22(火) 00:04:22
throwDice()にsrand()はいらないだろ。
素早く振ると同じ目ばかり出るよな。 さらに言えば、コンストラクタでもsrandしないほうがいい。 mainで1回だけやればいい。
238 :
デフォルトの名無しさん :2008/04/22(火) 00:11:39
Main関数で5つの整数を読み込み, その平均(double)を 画面に出力するプログラムです また5つの引数を受け取り, 平均を返す関数mean_calc5(・・・) を呼び出し,返された平均値をmain関数で画面出力すること C言語です お願いします
>>235 ありがとうございます。
またうっかりミスです。
>>236 >>237 ご指摘ありがとうございます。
<問題>の部分で省略したのですが
オブジェクト指向で
物体としてのサイコロをプログラムで作りなさいという項目
があったので、あえてコンストラクタでsrandをいれました。
実際のサイコロも置いた瞬間に目がででいるという事だそうです
ん、リダイレクトに pipe() はかんけいないですね。しつれい。
243 :
173 :2008/04/22(火) 00:28:15
>>213 お手数かけてスミマセン
どうもありがとうございました!
>srand は乱数関数の"初期化"だ 乱数関数を実行して値を取得するのが >実際のサイコロも置いた瞬間に目がででいる という事だ
>>238 #include <stdio.h>
void Main( int* data, int num )
{
int i;
for( i = 0 ; i < num ; i ++ )
{
printf( "値%d:", i+1 );
scanf( "%d", data+i );
}
}
double mean_calc5( int v0, int v1, int v2, int v3, int v4 )
{
return ((double)v0 + v1 + v2 + v3 + v4) / 5;
}
int main()
{
int data[5];
Main( data, 5 );
printf( "平均値=%f\n", mean_calc5( data[0], data[1], data[2], data[3], data[4] ) );
return 0;
}
入力を閉じることを「EOFを入力する」と表現することがあると、
146が認めればすむだけのことに思える。
ちなみに、DOSやCP/Mには、テキストファイルの終わりに0x1Aの1バイトを置く風習があった。
http://support.microsoft.com/kb/405482/ja DOSでのC処理系の実装では、テキストモードでファイルを読み取るとき、
0x1Aが現れたら(後ろにまだデータがあっても)ファイルの終わりとし、
getcでEOF(もちろん値は-1)を返したり、fgetsでNULLを返すという風にしていた。
(もちろんバイナリモードではやらない)
標準入力からも、Ctrl+Zで0x1Aを入力可能で、あとはファイルの場合と同じ。
そして、Windowsでは、ファイルに0x1Aを置く習慣も廃れ、
また、コンソール(標準入力)でのCtrl+Zは、0x1Aの入力ではなく、
OSがストリームの終わりに達したという扱いに変換するようになっているというのは
Win32コンソールを触ったことがあれば想像の通り。
スレ違いウザイ
>>246 入力 の意味を理解してから出直せ、ボケ初心者
>>249 自分で調べろよw 基本はデータを読み込む、取り込む。それが文字だろうと数値データだろうと
デジタル機器においては、入出力されるデータは全て数値データ、もっと追求すると
2進法で記録された0と1の組み合わせだよ。その0と1の組み合わせを人間が都合よく
解釈、理解できるように実装されたコンピュータで扱いっているが、EOFが値として
どのように定義されていうと思う?-1と記されて言る資料がほとんどだろ?
EOFがファイルの終わりというのは、人間が都合よく定義した決まりごとであって
所詮は数値データに過ぎないんだよ、これくらい大学に通った奴なら普通に分かるw
っつか、お前はナンバーサインじゃないだろ?何そんな知ったかの肩を持って
このスレにこんな時間まで粘着して、自分の無知を晒してんの?w
http://www.google.co.jp/search?hl=ja&q=EOF%E3%80%80%E5%85%A5%E5%8A%9B&lr=&btnG=Google+%E6%A4%9C%E7%B4%A2 EOFの入力は可能です、ありがとうございました。
この粘着はgetcharやfread、fgetc、fgetsなどの ライブラリ の動作について
いちいち話をするが、それらがプログラムの動作において EOF を検出して
どう動作するかについて話をしているが、完全に思い違い。
指定したポインタ、変数へ格納するかどうか?についても話をしているんだろうけど
EOF、すなわちファイルの終わり、それを検出してファイルに書き出す、あるいは
ファイルを読み込んでいるという基本的な処理の例があるにもかかわらず
まだ EOF が入力されないという大ボケをかますプログラマ以前に
コンピュータを扱う技術者としては相応しくない知ったか。いるよな、こういう
聞き分けのない、自分が思ったことをいつまでも相手に理解してもらおうという奴。
完全に筋の通る理論で論破されているのにw
ちなみに、標準入力からはキーボードによる入力でも可能だし、リダイレクトや指定の
ライブラリによるファイルの読みは可能。誰かさん、墓穴を掘ったがファイルの終わりが
全てのファイルにあるのか?って突っ込み、痛すぎ・・・原則として、ファイルの終わりを
示すコードは存在するよw 存在しない例外とも言えるファイルを持ち出そうと必死になるが
本題を崩すなよ。
EOFが入力されるかどうか?についてだろ。すでに昔から存在する事実を
何をいまさら、かじり始めた青二才が必死に反論してんだ?????
頼むからこんなところに来る、自分に反論する人だけに対して
わけのわからん理論で反論せんで、大学の教授にでも質問しろよw
ちなみに、自分は通っていた大学には東大、京大卒の教授が何人もいましたよ。
252 :
249 :2008/04/22(火) 06:24:37
>>248 が何を食いついてるのかよく分からなかった
EOFに関して
>>246 >>250 ともおかしなこと言ってる訳じゃないのに
議論がかみ合わないのは不思議だと思いますた
ttp://ja.wikipedia.org/wiki/%E5%85%A5%E5%8A%9B ttp://yougo.ascii.jp/gh/65/006526.html 初心者は用語集でも見てろってw
こういう視野の狭い奴って、自分にとっての入力はこうだって話を始めて
広義を無視して異例でも話をしようとするから困る。あれだろ、路上じゃ
違反者がいれば自分もその違反をしても、自分だけしか取り締まらない
警察にいちゃもんをつける奴w ほかにもいるから取り締まれ、そうでなきゃ
警察は怠惰だとか当り散らすんだろw ちゃんと最初から基本ルールを守れよ、理解しろよw
これ以上は、汎用電子計算機の基本的な仕組みを学ばずに、コードを記述して
プログラムを作っただけで知ったような口を聞いている奴らは放置な。
後ナンバーサインはマジで無視しとけ。こんな奴がもし講師だったら、
とんでもない学校だ。生徒だってことで。
EOFが入力されなかったら、どうやってEOFを検出してファイルの読み込みを
やめたのか、説明せよw 以上終了とか言ったら、もう学校を辞めて
今からでも進路を変更しろ。人生を大きく左右するぞ、いい加減な人生の
舵取りは。
254 :
249 :2008/04/22(火) 06:41:57
文字も画像も映像も、人間が都合よく解釈、理解できるようにしたプログラム、ソフトによって 表現が可能な機能を実装したコンピュータで展開していうんであって、所詮はどれも 数値データだよ。今こうやって文字を入力していうが、それも元を正せば、人間が 文字として解釈できる形に、使用している環境の文字コード体系に応じて 文字として見えるだけだよ。所詮、数値データ。EOFだけ何か特別扱いせんでも・・・ まさか、それらのデータが最初から色がついている、文字の形をしている、音声として 存在しているとでも思ったの?ファイルのダンプくらい、プログラムの授業でもやらんのか? 教本にも普通に載っているぞ、そんなの。
256 :
249 :2008/04/22(火) 06:56:43
>>255 おれ国語の読解力あんまいい方じゃないんで確認なんだけど、
これおれに対するレスじゃないよね?
>>253 へのレスなら納得なんだけど
>ところでナンバーサインって何? 行頭の'#'のことでしょ。尤も、>253の言う「ナンバーサイン」氏こと>139、>144と>216、>246では使い方が違う罠。 どうやら、「ナンバーサイン」氏は特定個人ではなく、>253の脳内にのみ存在している抽象人格のようだ。
EOFが無いファイルって、どうやってOSはファイルを個別のものと 認識、管理してんだよ・・・どこのIT土方の意見だ、EOFが入力できない なんて言っている奴は?所属、肩書きを示してみろ?
横槍でスマンけどEOFってOSのファイルシステム管理が 勝手に入れるもんだと思ってるんだけど。 いちいちアプリ実装者が最後にEOF書く必要が無い、 ということは普通fread()(あんま使ったことないからしらんけど)などで EOFを検出する必要もない(=fread()内で勝手に止めるからでEOFを受け取ることはできない) ってことなんじゃないの? たかだかその程度で何を荒れとるのかと思ったのでw
>>258 今時、ファイルシステムはファイルの大きさをバイト単位で持っており、
その場合はファイル上に必ずしもEOFが実在する必要はない。
たからEOF入力なんて存在しないなどというつもりはないけど気になったので。
261 :
249 :2008/04/22(火) 09:56:14
>>258 >>259 windows系ファイルシステムは知らないけど、Linuxのext3ではEOFなんて
全く関知してないと思う(たぶんwindowsも)。
getchar()などでEOFが返ってくるのは、ライブラリ(libc)がopenされたファイルの終了を検知してるから。
ライブラリ側がEOFの面倒を見てくれるので、アプリ開発者はライブラリ提供のヘッダファイルをincludeすれば問題ないです。
もし、OSがEOFを管理してて個々のアプリがEOFをハンドルしなければならないなら、
アプリ毎にOSのヘッダをincludeしなければならないんじゃないかな。
朝から元気なのは結構だがスレ違いなので続けるなら他所へ行ってください
263 :
249 :2008/04/22(火) 10:02:35
>>261 > getchar()などでEOFが返ってくるのは、ライブラリ(libc)がopenされたファイルの終了を検知してるから。
自己レスです。
ファイルの終了と言うのはファイル自身にEOFコードが存在するという意味ではないです。
バイナリエディタでファイルの途中に0xFFを書き込んでも、int c; while ((c = getchar()) != EOF) してる限り、
途中の0xFFはスルーされるはずです。
char c; while ((c = getchar()) != EOF) だと途中の0xFFが当然のことながら、EOFになりますね。
264 :
デフォルトの名無しさん :2008/04/22(火) 10:53:07
[1]プログラミング演習 [2]3つのポインタ型変数と3つの変数が char c, *pc; int i, *pi; double d, *pd; と定義され、 pc = &c; pi = &i; pd = &d; と初期化されたポインタに対して pc++; pi++; pd++; 加算したときに,格納されている値が(つまり格納しているアドレスが) 何バイト増えたか表示するプログラムを作成せよ. [3.1]問わず [3.2]borland [3.3]C [4]4/23 お願いしますm(._.)m
265 :
デフォルトの名無しさん :2008/04/22(火) 11:40:03
printf("%d,%d,%d\n", sizeof(char), sizeof(int), sizeof(double));
EOFがあるとかないとかどうでも良いんじゃい。 EOFの入力がプログラムへ可能か?って話は 可能だって結論が出てんだろが。何他人を装って 分が悪くなるとうざってぇみたいなことを言ってんだ? お前がEOFの入力が出来ないと食い下がってきたんだろが。
Linux = EOFが入力できる Win = EOFが入力できない というわけで Linux > 越えられない壁 >>>>>>>>>>>>>>>>>> Win てことだ
>>267 標準入力からEOFをいれる方法
Linux Ctrl+D
Windows Ctrl+Z
269 :
デフォルトの名無しさん :2008/04/22(火) 13:33:14
>>268 Wordでそれをやってみろ。
ドザは知識がなさすぎる。
ならemacsでやってみたら? 標準入力からって書いてあるだろう。
271 :
デフォルトの名無しさん :2008/04/22(火) 13:46:48
はいはい、できなくはないですよ。論点はそこじゃない。
一般人に使われないlinuxをちょっと齧って windowsユーザーを馬鹿にしたくなる年頃なんだろう。 煩わしいコマンドをターミナルに打ち込んで「俺玄人wwwwwwうはwwwww」とか本気で思ってそう。
どんなOSを使ったことがあるかとかどうでも良いわ。 俺は大学でUNIXは普通に使ってたよ。ってか、使えないと授業にならねーし。
275 :
デフォルトの名無しさん :2008/04/22(火) 14:50:53
論点=ドザはクリックしかできない
やっぱりヤツがいると荒れるな。
そうだな、論点ズレまくりのナンバーサインがいると。以後放置よろ。
EOFをファイルデータとして持ってたのは昔のメインフレームくらいじゃないの? 今はほとんどファイルシステムで管理してるでしょ
またそれかよ・・・EOFが何なのかなんてどうでも良いんだよ。 入力されることがあるかないか?ナンバーサインがズレてんのは getcharとfreadのライブラリの性質に話を持ち込んで、キーボードからの EOF入力さえも否定したから悪いんだよw 普通にEOF入力なんてあるわ、とっくの昔からw
280 :
デフォルトの名無しさん :2008/04/22(火) 15:19:44
ヒント:印字可能な文字(データ)しか入力できないという考えがすでに素人以下
どっちもそこら辺で勘弁してやれよ。
283 :
デフォルトの名無しさん :2008/04/22(火) 15:38:17
284 :
249 :2008/04/22(火) 15:45:10
>>279 キーボードから直接EOFコードを入力できると言ってるように聞こえるので一言。
もし、そうじゃなかったらごめん。
アプリがライブラリのgetchar()を呼ぶと、kernelはユーザーの入力待ちになる。
ユーザーがたとえば "test string^D" を入力すると、kernelは^Dを入力の終了と判断し、
ライブラリに "test string" を返す。アプリはライブラリからそれを一文字ずつ取り出して使う。
もしここで "test string" を入力せず、単に^Dだけ入力した場合、kernelは\0をライブラリに返す。
ライブラリは入力がなかったという意味でEOFをアプリに返す。
要は、EOFはもうそれ以上入力がないということを示す、
ライブラリとそれを利用するアプリの取り決めになっています。
相手にしたらダメな人だから
ヒント:改行もタブも印字不可能でもキーボードからの入力が可能。 便宜上出力で指定する場合に \n や \t など、印字可能な文字で代用しているものがある。 所詮テキストファイルにしても、バイナリーデータにしても数値データの塊に過ぎない。 バイナリに関しては、変数の型を指定することで、数値データを適切にプログラムが 解釈するようにコードを記述する際に宣言をしている。
287 :
デフォルトの名無しさん :2008/04/22(火) 16:31:03
お前らスレタイ読め。 C/C++でEOFは「もうそれ以上入力がない」という意味では「ない」。 アフォはひたすらクリックしてればいいんだよ。 妄想披露スンナ。 これだからドザは(ry
>>287 > もうそれ以上入力がない
いつ誰がそんなことを言ったんだよ?w お前こそ黙っとれw
289 :
デフォルトの名無しさん :2008/04/22(火) 16:37:39
言ってなくても書いてあるだろが。 掲示板でどうやって言うんだよ。 ドザは駄目だな。
290 :
デフォルトの名無しさん :2008/04/22(火) 16:38:59
「引数として配列のポインタとデータの個数を用いて、引数に与えられた整数の2乗を引数に値を返す関数を作成し、1^2から10^2まで表示せよ」 5時間悩んでも出来ませんでした。よろしくお願いします。
291 :
249 :2008/04/22(火) 16:43:49
>>287 「もうそれ以上入力がない」というのは語弊があるかもしれないですね。
アプリがgetchar()で次の文字を取りに行ったとき、入力がなかったときライブラリがEOFを返します。
以下、ちょっと補足。
Linuxの場合、端末から入力された^Dは、kernelでは16進の0x04になります。
で、ライブラリに返すときこれを\0で上書きします。
^Dは入力の終了を示すものであり、EOFではないです。
興味ある人は drivers/char/n_tty.c とかglibcのソースを見るといいです。
そろそろ自演でスレ伸ばすの止めようぜ?
293 :
デフォルトの名無しさん :2008/04/22(火) 16:49:40
>>291 アフォか。
規格書読め。
これだからドザは。
>>290 #include <stdio.h>
void f(int *p, int n) { while(n--) p[n] = p[n] * p[n]; }
int main(void)
{
int a[10], i;
for(i=0; i<10; i++) a[i] = i + 1;
f(a, 10);
for(i=0; i<10; i++) printf("%d ", a[i]);
return 0;
}
なんだ、249をNGにしていたから気づかなかったが、まだ勘違いバカが 粘着しているのかw お前が黙ってりゃ一番解決するんだよ。 スレ板読めや、基地外。自分にとってそれはこういう意味ですとか このように解釈しました、そう解釈した理由を こじつけ で勝手に作るなよw お前はISO関係者か?コンピュータの設計者か?これらはすべて 国際的に決められた標準化に基づいて構成されてんだよ。 思い違いを正当化するために、自分の知識の貧弱さを露呈しなくて良いから 黙ってろや、どこぞの学校の講師か知らんが、貴様の元では学びたくないな。 生徒だったらどんな講師に学んだんだと?w
#include <stdio.h> int main(void) { char ch; while( ( ch=getchar() ) != EOF ); printf("%d %c / EOF : %d %c ",ch,ch,EOF,EOF); return 0; } これをコンパイルして、Ctlr-zでEOFを検出させてみろw そしてEOFとして定義されているマクロの値を調べてみましょう。 EOFが入力されたことが一目瞭然です、ありがとうございました。 さてと、これ以上は無駄なんで、以後放置よろ。
297 :
デフォルトの名無しさん :2008/04/22(火) 16:58:56
では次ぎ、テキストでもバイナリーデータでも、当然画像でも音声データでも良い。
>>296 のプログラムにリダイレクトでファイルを入力させてみろ。
ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、そのときのコード、値と
EOFが一致しました、本当に、本当に、重ね重ね、ありがとうございますた!
>>296 少なくとも変数 ch は int 型でないといけない
300 :
デフォルトの名無しさん :2008/04/22(火) 17:07:05
301 :
249 :2008/04/22(火) 17:07:17
>>293 Cの規格書JISX3010ちらっと見てみたけど、7.19.1にこう書いてありました。
「EOFは、ファイルの終わり(end-of-file)、すなわちストリームからもうそれ以上の入力
がないことを示すために、幾つかの関数から返される、」
良いか、ボケ共、入力は何も 文字データ だけじゃねーんだよ。 標準入力で人間がキーボードから行う入力と言えば文字データが思い浮かぶが プログラムへのデータの入力は、文字だろうと所詮デジタルデータ、 数値データに過ぎんのだよ。それが使用している環境の 文字コード体系で印字可能な文字は視覚的に見えるんであって バイナリーデータのような数値データの塊でも、入力できるんだよ。 そしてEOFも。なんでEOFが入力できないのか、もう説明しなくて良い。 とっくの昔からEOFの入力なんてされてたんだよ、当たり前のように。 でなきゃ、プログラムはどうやってファイルの終わりを認識してたのだね?ん? 怒らないから、そんな秘密の情報があるなら、おいちゃんの耳元でそぉ〜っと言ってごらん?
303 :
デフォルトの名無しさん :2008/04/22(火) 17:07:35
304 :
デフォルトの名無しさん :2008/04/22(火) 17:09:57
>>301 アフォか。
エラーを示すために-1を返す関数が一つ以上あれば、-1はエラーか。
ドザはほんとに駄目だな。
>>299 はぁ?なんで?1バイトずつ読み込まないでどうすんだ???
お前、もしかして・・・変数の型を誤解してないか?wwww
>>303 −100点。お前が説明しろ、ボケ低レベルへたれプログラマーwwwwww
東大、京大卒の教授の元で指導を受けた俺と、それ未満の講師に
コードの入力だけ教わったお前とは格が違いすぎ。
説明と言う説明がお前は出来てないだろ、目の前にあるものの
来本部部は同じだと言うのにw
299 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 17:03:45
>>296 少なくとも変数 ch は int 型でないといけない
↑このアフォーの思い違いを説明せよ 配点-100点wwww
では
>>296 のコードを
int ch;
に変更して実行してみましょう。あららっ!?結果は同じ -1 が検出されましたwwwww
だから何について説明しているか分からない低レベルは黙ってろって。
お前らとは使用していた施設のレベルからして違うんだよ!
大学にあった施設は企業レベル、いやそれ以上。だからお前らとは
見てきたものが違い過ぎるんだよwwwww
ぷぷっ、こいつ、EOFが int 型だと思ってるよwwwwwwwwwwwwwwwwwww -1なんて1bitでも表現できんだよ!char型は1バイト、すなわち標準的な環境では 8bitなので、十分EOFの検出は可能です、ありがとうございましたwwww そもそも、ACSIIコードとShift-JISの仕組みが分かっていれば、下らない突っ込みなんてしねーよ。 全角で2バイト必要な文字は、それに応じた文字コードが割り振られてんだがw お前、Shift-JISで日本語の全角文字をすべて表示するコードを書いてみろや! 結局、そんなものは基本の拡張に過ぎないと気づくからw んで、EOFが入力できない説明をしてくれよ。俺はそれを求めてんだが?
310 :
デフォルトの名無しさん :2008/04/22(火) 17:18:31
kusakabe先生の教えを守って書き込みしたらスレが伸びる伸びる
311 :
デフォルトの名無しさん :2008/04/22(火) 17:19:35
>>309 > ぷぷっ、こいつ、EOFが int 型だと
規格書読めよ。
>>305 Cには、データベースなんかで見かけるNull値ありの型がないから、
getcharなどはNull値相当をEOFに割り当てて、
Null値ありcharをただのintで代用しているという考え方が近いと思う。
お前さぁ、負の値が2進数、デジタルデータの世界でどのように表現されているか知らんのぉ? まぁ、これは大学でやった実験では普通に扱いましたよ、論理回路も含めて。 なんで変数の型に、敢えて unsigned があると思ってんの? 8bitで扱える値の幅、パターンの数、負の値がどのように記録されているかも C言語でもコードを書いて調べることが出来るんだがねぇ。 んで、EOFが入力できない説明を求む。それ以外の御託はいらねー
>>309 -1単体は1ビットでも区別可能だけど、
ここでは、(unsigned) charの値と区別できないといけないから、
charよりビット数の多い(はずの)intなんだろ。
315 :
デフォルトの名無しさん :2008/04/22(火) 17:28:43
>>313 先生の教えに背いて教えてやってもいいんだが、完全にお前の理屈を否定することになるぞ。
どうやらここにはドザしかいないようだから、味方してやってもいいんだが?
317 :
デフォルトの名無しさん :2008/04/22(火) 17:37:29
さて、ドザかまっててもしょうがないから宿題やるか。
318 :
249 :2008/04/22(火) 17:48:49
>>296 >>298 これ実行すると、ファイルの終了に達していなくても、ファイルの途中にたまたま0xFFが現れたら
そこでwhileループ抜けるよね。
> ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、
whileループを抜けたのはファイルの終わりを検出したわけではないです。
騒いでる奴らはそろそろ専用スレ立てろや
ビット演算子の意味も分かってなさそうだな。こりゃダメだ・・・ 所詮、文字コードでしかプログラムの意味が分からんのだろ。 高度でもない、当たり前なことを知っている人は、”汎用”電子計算機に対して 制御を行うコードを書いているという、当たり前な頭はあるんだよ。 そんなの大学に通わなくても、それ関連の仕事をしている人は 当たり前に見ている。人間なんて、所詮見た目が良かろうが DNAによって動物細胞の塊が人それぞれ違った形に形成されていると 医療関係に属する人が知っているように。萌え〜なんていっている奴は、 2次元にしろ3次元にしろ、そういう人達から見ると不思議に思えるんだろうね。 だって、所詮動物細胞、0と1の組み合わせのデジタルデータなんだもの、みつを。
>>296 jpegファイルはいきなり0xFFで始まるんですが、読み込めないということですか?わかりません><
>>320 最後おちゃらけて見せて、興奮を隠そうとしなくてもいいよ
わかるわかる
>>296 はcharがunsignedの環境なら無限ループだな
ビット演算なんて、もはや遺伝子組み換えレベルの操作なのさ〜♪
もうね、鸚鵡返しのように 規格書 とか言うだけで、具体的に該当する 事項を示さないアホは何?w 自分が言いたいこと、思ったことを 相手に理解してもらえないって言っているだけじゃん。お前が言いたいことがあるなら 具体的に示せよ、低レベル講師め。お前んとこの学校はどこだ? 通報しておいてやるよ、EOFが入力できないなんていい加減なことを、 ありもしない規格書を持ち出して事実を捻じ曲げているとw 頼むから大学レベル未満のお前、EOFが入力されないという 話が拗れた根本の説明をしてみろや?どうやってEOFを検出して 終了するコードが実行されたのか、摩訶不思議アドベンチャーで ゴクウも界王拳をスーパーサイヤ人になってからお前にお見舞いするだろうよw
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa9.html 面白い記事が見つかりましたよ、ほらw
お前が勘違いしていたEOFが特殊な文字コードってやつ、
所詮は人間が勝手に 定義 した数値に過ぎないということがはっきりしただろ?
俺はEOFがファイルの終わりを示すとは一言も言っていないんだよw
何度も言っただろ?文字を入力したとしても所詮は 数値データ に過ぎないと。
プログラムが、コンピュータがそれを認識するために 人間が定義した に過ぎないと。
人間が好き勝手にルールを決めてしまうと、世界で共通ではなくなり
インターネットの世界でも混乱が起こるんだよ。ウェブページだって
規格が違ってブラウザが国ごとによって違ってたら面倒だろ?
規格書とか言うお前、お前はISOの内容は知っているようだが
標準化の意味は理解していなかったようだな。所詮それも
人間が定義 したに過ぎないということを。
さてと、int型がなぜ2^32 すなわち 2^8^4 の値として扱われているか? 結局は4バイト分のデータを1つの変数として取得して扱っているからだよ。 誰だよ、EOF != 0xFF なんて話をしたのは?俺はそんなこと一言もいってないよw EOF にはしっかりと -1 と定義されているとは言ったが。なんで8ビットのみで話が進んでるの??? だから俺は、人間が勝手に数値の前にマイナス - という符号を付けて 表現したものではなく、2進数において 負の値をどのように表現しているか について問い正したんだが? 悪いがこれについては 実験で その詳細を知ることが出来たんでね。 コンピュータを構成している基本部分なんて、単純なもんだよw
328 :
249 :2008/04/22(火) 18:57:07
>>326 > 俺は
と言われてもお前がどれを書き込んでいて、どれにレスしてるのかわからない。
Ctrl-DやCtrl-Zは単にユーザーが入力の終了を示すだけです。
アプリがgetchar()を発行したとき、ライブラリ側にアプリに渡せる文字がなければEOFを返します。
入力ファイル中に0xFFが含まれていて、それをchar型変数で受ければ
ファイルの途中であっても同じくEOFとして判定されます。
この場合、feof()関数でストリームの終了かどうか判定できると思います。
一応念のため、Cの規格書ならここで見れます。
「
http://www.jisc.go.jp/ 」→「JIS検索」で「X3010」を入力
329 :
デフォルトの名無しさん :2008/04/22(火) 18:59:20
だから相手にしちゃダメなんだって。 半年ぐらい前までしょっちゅう暴れてたキチガイなんだから。
だからよぉ、所詮整数型にしろ文字にしろ、人間が都合よくデジタルデータの塊を 数値や文字として扱うために 変数の型を宣言 したプログラムによって 解釈できるように処理させてんだよぉ。どんなファイル、データにろ ビット すなわち 2進数の1桁 レベルに話を持ち込めば、0と1の組み合わせの 塊に過ぎんと何度も言っておろうにw それはともかく、EOFが入力できないという理由を説明してくれ、規格書でw
>>328 > ユーザーが入力の終了を示すだけ
それを326に言わせればEOFの入力となるんだろ。それくらい察してやれ。
332 :
249 :2008/04/22(火) 19:14:18
>>329 そうですか、キチガイですか。
そんな気はちらっとしてたんですけどね。
とりあえずいい暇つぶしになったんで、相手してくれてありがとう>キチガイ
彼がこの後何を言ってくるか楽しみにしてますwww
多分このスレで一番レベルの高いおれから言わせてもらうと 自演くさい
335 :
デフォルトの名無しさん :2008/04/22(火) 22:17:54
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6307.c [1] 授業単元: Cプログラミング
[2] 問題文:
@任意の2ノード間の最短路を求めるアルゴリズムを実行するプログラムを作成せよ。
A任意の2ノード間の最短最大路を求めるアルゴリズムを実行するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:リンク先のソース(経路選択の部分がない)を使用すること。
また、ソース中のdistance.txtの内容は、
0 1 1
0 3 1
1 2 1
1 3 1
2 4 1
2 5 1
3 4 1
3 7 1
4 5 1
4 7 1
5 6 1
5 8 1
6 8 1
7 8 1
7 9 1
8 9 1
です。よろしくお願いします。
getcharの戻り値にEOFがあるだけの話だろ もはや何の話を必死にしたいのかさっぱりだな
>>337 stdoutを別のファイルにするだけじゃね?
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CPad for Borland C++Compiler(これでいいのかな?) [3.3] 言語: C言語 [4] 期限: 4月29日まで [5] その他の制限:正直大学一年目の後期にさらっとならっただけで、それもだいぶ忘れてます だから質問の内容がちょっと変かもしれませんが、よろしくお願いします
>>316 続いて課題2
ところでこれって課題4まで終了した後のソースコードを提出しないといけないの?
だったら俺が細切れに上げてるのは割と意味が無いな
341 :
340 :2008/04/22(火) 23:11:07
>>339 >自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる
スレ違い。
# まさかと思うが、調べるプログラムを作れとは言わんだろうな。
343 :
デフォルトの名無しさん :2008/04/22(火) 23:35:06
すいません、264お願いします・・・
#include <stdio.h> int main (void) { char c, *pc; int i, *pi; double d, *pd; pc = &c; pi = &i; pd = &d; pc++; pi++; pd++; printf("pc=%dbyte\npi=%dbyte\npd=%dbyte", (unsigned int)pc-(unsigned int)&c, (unsigned int)pi-(unsigned int)&i, (unsigned int)pd-(unsigned int)&d) }
>>264 #include <stdio.h>
static int diff(void * lhs, viod * rhs) {return ((char *) lhs) - ((char *) rhs);}
int main()
{
char c, *pc;
int i, *pi;
double d, *pd;
pc = &c;
pi = &i;
pd = &d;
pc++; pi++; pd++;
printf("%d, %d, %d\n", diff(pc, & c), diff(pi, & i), diff(pd, & d));
return 0;
}
[1] 授業単元:ネットワークシステム基礎演習 [2] 問題文(含コード&リンク):( ファイルbdata.txtには1から1000000までの異なる数が999999個入っている。つまり1から1000000までの数字のうち1つだけない。その数字を見つけなさい。 プログラムは #include<stdio.h> #define N 1000000 int main(void){ int min,max,mid; int count1,count2; int data,i; FILE *fp で始まり、これ以外の変数は使用してはいけない。 また、以下の方法でプログラムを書くこと。 方法)簡単のため。1から100までの数のうち、1つがない場合を例として方法を説明する。もちろん最後まで実行しないとわからないことだが、説明の都合上、存在しない数は48だとする。 (1)ファイルを先頭から最後まで読み、1〜50の数と51〜100の数の個数を数える。 (2)1〜50の数が49個しかないので、求めている数は1〜50の数のどれかである。 (3)ファイルを先頭から最後まで読み、1〜25の数と26〜50の数の個数を数える。 (4)26〜50が24個しかないので、求めている数は26〜50までの数のどれかである。 中略 (5)ファイルを先頭から最後まで読み、48〜49の数と50〜50の数の個数を数える。 (6)48〜49の数が1個しかないので、求めている数は48〜49までの数のどれかである。 (7)ファイルを先頭から最後まで読み、48〜48の数と49〜49の数の個数を数える。 (8)48〜48までの数が0個なので、求めている数は48である。 ) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: ([2008年04月23日23:00まで] [5] その他の制限:
>>347 #include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;
fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
count1=0;
while(fscanf(fp, "%d", &data)==1) count1+=data;
fclose(fp);
if(N%2) count2=(N+1)/2*N;
else count2=N/2*(N+1);
printf("%d\n", count2-count1);
return 0;
}
>>348 >if(N%2) count2=(N+1)/2*N;
>else count2=N/2*(N+1);
は場合分けする必要が無いだろ
答えは出るし効率もいいけど指定された解法じゃない
>>348 ありがとうございます。
本当に助かりました。
いや、助かってないでしょw 解法が違う以外にも、intが32bitじゃ足りないし。
352 :
348 :2008/04/23(水) 00:52:43
>>347 解法無視してたので訂正版
>>351 >>349 の指摘している場合分けのおかげで正しい答えがでる
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;
fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
min=1; max=N;
while(min<max){
mid=(min+max)/2;
count1=count2=0;
fseek(fp, 0L, SEEK_SET);
for(i=0;i<N-1;i++){
fscanf(fp, "%d", &data);
if(data>=min && data<=max){
if(data<=mid) count1++;
else count2++;
}
}
if(count1<mid-min+1) max=mid;
else min=mid+1;
}
fclose(fp);
printf("%d\n", max);
return 0;
}
347です。確かに348さんのやつで、それらしき解答が出るのですが、 初心者の私にはソースを読んでも理解できませんでした。 どなたか助けてください。
理解できないならあきらめるしか無いと思うが
355 :
351 :2008/04/23(水) 01:03:00
ああなるほど、オーバーフローしても差は正しくなるってことか。
>>353 まず、値の総和を計算している。
1〜Nまで全部揃っているなら、総和はN*(N+1)/2になるはず。
しかし1個だけ値が足りない、総和はその値の分だけ少なくなる。
347です。 355さんの説明で348のソースを理解できました。ありがとうございます。 352の改訂版のfseek(fp, 0L, SEEK_SET); のfseek関数を知らないので,ググったらファイルの位置指示子の設定とあったのですが、 この役割をどなたか教えていただけませんか。 また、fseek関数を使わない方法はないのでしょうか。
358 :
264 :2008/04/23(水) 01:31:22
ありがとうございます!
359 :
348 :2008/04/23(水) 01:33:42
>>356 #include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;
min=1;
max=N;
while(min<max){
mid=(min+max)/2;
count1=count2=0;
fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
for(i=0;i<N-1;i++){
fscanf(fp, "%d", &data);
if(data>=min && data<=max){
if(data<=mid) count1++;
else count2++;
}
}
fclose(fp);
if(count1<mid-min+1) max=mid;
else min=mid+1;
}
printf("%d\n", max);
return 0;
}
>>359 何度もありがとうございます。本当にありがとう。
361 :
デフォルトの名無しさん :2008/04/23(水) 04:00:39
すみません 質問良いですか? class split { public: char a : 1; char b : 2 ; char c : 5;} char x[1000]; split *z; z=&x[10]; z->a; とすればxの値を部分的に読み取れますか?
362 :
361 :2008/04/23(水) 04:08:45
自己解決しました 符号無しにすれば正常に読み取れるみたいです
>>357 とか、かなり前に散々既出で決まった、ISO準拠の
int main(void) あるいは int argc , char*argv[] を使ってない
EOFについて噛み付いてきた新入りって何モノ?
初心者、素人臭が漂いすぎ・・・
365 :
デフォルトの名無しさん :2008/04/23(水) 06:45:23
すみません、335お願いします・・・
>>336 EOFがキーボードから入力できるかの話だろ
もはや何の話を(ry
367 :
デフォルトの名無しさん :2008/04/23(水) 07:19:49
ドザが二匹いてどっちもドザだからまともな議論にならないだけだな。
368 :
デフォルトの名無しさん :2008/04/23(水) 08:01:37
ドザってなに?
# <これをNGにすると、#includeで引っかかってしまうが # < これをNGにすると、奴の脳内レスを排除できますw
>>364 課題2, 課題3, 課題4 では int argc, char*argv[]を使っています。
#define NAME_F 11 for (j = 0; j < NAME_F - strlen(member[i]->name); j++) ↑ん〜〜〜、ん〜〜〜、やっぱ きんもぉ〜☆
これから理論的に反論できないキチガイのレスが続きますが一切放置で
>>372 自己紹介乙。それをやっているのはお前だから、こいつを放置よろ。
まぁ、別に問題とは言わんが、これは主観的な意見にもなるかもしれんが #defineなど定義などは、上にまとめておいて、管理しやすくするのも良い。 あと・・・毎回 strlen で値を算出してたら、回数が少ない場合は気にならないが 繰り返す上では無駄が生じるよ。だったら、そのために変数を定義して 使った方が良いんじゃない?以上、京大、東大卒の教授の下で指導を受けた元生徒より。
375 :
316 :2008/04/23(水) 09:39:59
ありがとうございました。 大変助かりました。
>>374 そこまで自己主張するならコテ&トリップつければいいのに
>>376 しつけぇ、お前がトリップつけろ。側NGにしてやるから
ドザとか目的も無くスラング使いたがる奴はDQN率が高い
死刑判決受けた元少年みたいだな とりあえずお前をNGに追加した、サンクス
380 :
デフォルトの名無しさん :2008/04/23(水) 12:50:57
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): 課題1 1、3つのポインタ型変数と3つの変数が char c, *pc; int i, *pi; double d, *pd; と定義され、 pc = &c; pi = &i; pd = &d; と初期化されたポインタに対して pc++; pi++; pd++; 加算したときに、格納されている値が(つまり格納しているアドレスが)何バイト 増えたか表示するプログラムを作成せよ。 2、完成させたプログラムを実行し、その結果について、3つのポインタ型変数を それぞれ加算したときの増分されるバイト数が異なる理由を(実行結果を引用してもよい) 説明せよ。 3、適当な配列int a[5]={1,-2,3,4,5};を定義し、その内容をポインタ変数 int *pa; を用いて 表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語:C [4] 期限: 2008年4月23日22:00まで [5] その他の制限: なし
[1] 授業単元:プログラミング実習第一 [2] 問題文(含コード&リンク): 配列のすべての要素の最大公約数を求める関数gcdpを実装し、それを用い入力された10個の最大公約数を表示するプログラムを作りなさい。 [3] 環境 [3.1] MacOSX [3.2] gcc [3.3] 言語: C [4] 期限: 4月25日18:00まで [5] その他の制限:必ず配列を使うこと。ポインタは習ってないので使わないでください。
>>381 #include<stdio.h>
int gcd(int a, int b){
int c;
while((c=a%b)) a=b,b=c;
return b;
}
int gcdp(int arr[], int arrsize){
int i, ret;
ret=arr[0];
for(i=1;i<arrsize;i++) ret=gcd(arr[i], ret);
return ret;
}
int main(void){
int arr[]={60, 70, 80, 90, 25, 100, 10, 75, 30, 35};
printf("%d\n", gcdp(arr, 10));
return 0;
}
>入力された
>>382 のmain関数訂正
int main(void){
int i, arr[10];
for(i=0;i<10;i++) scanf("%d", &arr[i]);
printf("%d\n", gcdp(arr, 10));
return 0;
}
385 :
デフォルトの名無しさん :2008/04/23(水) 20:40:37
マネージャパン、月刊アスキー、週刊アスキーの3誌は共同で6月にFXのシステムトレーグランプリ「シストレFXグランプリ」を開催。
詳細WEBページは5/15開設予定で(www.fx-gp.com)、5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
主催はマネージャパン、月刊アスキー、週刊アスキー、協賛はクリック証券。
ttp://system-trading.jp/news/index.php?ID=39
>>335 @
while(fin==0){ /* finフラグが立つまで繰り返す */
/* tmp_nodeを経由する方が距離が小さくなるノードを探して最短距離と前ノード表を更新 */
/* まだ最短距離が確定していないノードの中から次の探索ノードを選ぶ */
tmp_dist = dist[tmp_node];
for(i=0; i < NODE_NUM; ++i){
a = graph[tmp_node][i]; /* tmp_nodeからiまで距離 */
if(a == MAX || tmp_node == i || chk[i] == 1) continue;
b = tmp_dist + a; /* 始点からのtmp_node経由のiまでの距離 */
if(b < dist[i]){
path[i] = tmp_node;
dist[i] = b;
}
}
j = NODE_NUM; /* 未確定ノードの内、始点から最短距離のノード */
c = MAX; /* 始点からの距離 */
for(i=0; i < NODE_NUM; ++i){
if(chk[i] == 1 || dist[i] == MAX) continue;
if(dist[i] < c){
j = i;
c = dist[i];
}
}
if(j != NODE_NUM){
chk[j] = 1;
tmp_node = j;
continue;
}
fin = 1; /* 終点ノードへの最短距離が確定したら終了 */
}
>>380 1.
printf("1byte, 4(or 2)byte, 8byte");
2.
確保するメモリサイズが違う
3.
pa = a;
for(int i = 0; i < sizeof(a); i++)
printf("%d", pa[i])
コード書き始めて期限切れに気付いたからてきとーにしといた
>>387 3番は
pa = a;
for(i = 0;i < sizeof(a)/sizeof(int);i++){
printf("%d",*(p+i));
}
を期待してるんだと思う
>>388 なるほど。
んじゃ1、2を踏まえて
for(〜)
printf("%d", *pa);
pa++;
ってのもありかな
[1] 授業単元:文字列操作、配列 [2] 問題文(含コード&リンク): 不規則な文字列が延々と続いてるファイルを読み込み、main関数から区切る文字または文字列を取得し 区切り毎に2次元配列に格納して格納した回数を戻り値として返す関数を作成せよ。 文字列中に \n があった場合は削除し、 区切りの文字・文字列が連続した場合は配列には \0 を返すものとする。 配列の行数または列数のどちらかを512とする。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限: 本日午前中 [5] その他制限: strtokを使わないこと まったくわからんです、お願いします・・・
もうすぐ午後やで・・・
r、ノVV^ー八 、^':::::::::::::::::::::::^vィ 、ヽ l / , l..:.::::::::::::::::::::::::::::イ = = |.:::::::::::::::::::::::::::::: | ニ= 元 そ -= |:r¬‐--─勹:::::| ニ= 生 れ =ニ |:} __ 、._ `}f'〉n_ =- 徒. で -= 、、 l | /, , ,ヘ}´`'`` `´` |ノ:::|.| ヽ ニ .な. も ニ .ヽ ´´, ,ゝ|、 、, l|ヽ:ヽヽ } ´r ら ヽ` .ヽ し き 元 ニ. /|{/ :ヽ -=- ./| |.|:::::| | | ´/小ヽ` = て っ 生 =ニ /:.:.::ヽ、 \二/ :| |.|:::::| | / ニ く. と 徒 -= ヽ、:.:::::::ヽ、._、 _,ノ/.:::::| | /| = れ.何 な -= ヽ、:::::::::\、__/::.z先.:| |' :| ニ る と ら =ニ | |:::::::::::::::::::::::::::::::::::.|'夂.:Y′ト、 /, : か ヽ、 | |::::::::::::::::::::::::::::::::::::_土_::| '゙, .\ / ヽ、 | |:::::::::::::::::::::::::::::::::::.|:半:|.ト、 \ / / 小 \ r¬|ノ::::::::::::::::::::::::::::::::::::::::::::::::| \
>>392 粘着うぜーw どうせなら元生徒じゃなくて、教授に頼めよw
[1] 授業単元:プログラミング1 [2] 問題文 整数3つを入力して2番目に大きい値を出力せよ [3] 環境 [3.1] OS: Windowsxp [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C [4] 期限: 本日2時まで [5] その他の制限: どうかお願いします
あぁ〜〜、作り始めたが間に合わなかったか・・・もう午後だから無理ぽ?
>>398 こんなの宣言しかないのじゃ誰もできないだろ
他に条件とかファイルとか指定されて無いのか?
それとも各クラスを適当に実装して動作確認しろってことか?
>>399 恐らくこれを利用して座標、ベクトル、行列の演算を一通り出来るようにしろと言うことだと思います。
課題の出され方が漠然としすぎていて手付かずの状態なので、方針だけでもご教授いただけたら幸です。
>>395 居残り確定っぽいんですが、参考にしたいので
お時間があったらお願いします。
>>401 俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。
うわっ、なんかあれこれやってたらきんもぉ〜ソースってレヴェルじゃねーぞっ になったんで、期待せんでくれ・・・
いちいちそんなこと書かなくていいから。 ほんとレス乞食はうぜーな。
>>404 んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw
>>406 お前のうんこ見なくてすむかと思うとほっとしたよ。
あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない?
速攻NGにするから。
自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ〜? 必死だなw
>>407 =>> 249
名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41
>>248 おまえが考えてる入力の意味ってなに?
↑こいつうぜー
それが同一人物に見えるのはお前だけだからw
>>409 反論できてねーだろwwwww顔真っ赤すぎて超うけるwwwww
412 :
390 :2008/04/24(木) 17:33:08
>>412 もうちょっと速ければ見せてもらえたのに。
元生徒もうへそ曲げちゃったから。。。
>>404 そいつにレスしているお前も同じだろ・・・お前が 言 う な
>>83-88 のコピペに反応しているお前が言うなレス乞食の
>>404 が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能
414 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:50:20
>>404 そいつにレスしているお前も同じだろ・・・お前が 言 う な
415 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:52:58
>>83-88 のコピペに反応しているお前が言うなレス乞食の
>>404 が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能
顔真っ赤wwwww
>>416 お前を通報しておく。用がないなら来るな、見るな、書くな、鬱陶しい
423 :
422 :2008/04/24(木) 20:57:17
>>423 ソースコード見てないけど納期を守るお前がすばらしい
うちの会社来ないか?
425 :
デフォルトの名無しさん :2008/04/24(木) 21:24:38
[1] 授業単元:プログラミング実習 [2] 問題文:一覧ファイル(infile.csv)に「グループ名,学籍番号,名前」の順でデータが入っています。学籍番号のみをDATAに格納せよ。 [3] 環境 [3.1] OS: Windows 2000 [3.2] コンパイラ名とバージョン: わかりません [3.3] 言語:C [4] 期限: 本日中(4/24) [5] その他の制限: 特に制限はありません。C初心者で全く分かりません。時間があまりないですがよろしくお願いします。
>>425 > DATAに格納せよ。
の意味をおしえてください。DATA という名前のファイルに順に記録していけばいいのでしょうか?
427 :
デフォルトの名無しさん :2008/04/24(木) 21:42:23
429 :
デフォルトの名無しさん :2008/04/24(木) 21:56:58
>>428 ・・・・・・課題なので仕方ないんですよ.
#include <stdio.h> int num_of_pairs(int year) { int y, num; if(year < 1) return 0; else if(year == 1) return 1; else { num = 0; for(y = 1; y < year; y ++) num += num_of_pairs(y); return num; } } int main() { int y, num = 0, num_last; for(y = 1; y <= 10; y ++) { num_last = num; num = num_of_pairs(y); printf("\n%d年目のつがい数は%d", y, num); if(num_last) printf("で、前年の%f倍、", (double)num / num_last); } printf("\nかな?\n"); return 0; }
431 :
143 :2008/04/24(木) 22:08:28
>>144 ありがとうございましたっ・・・と言いたいのですが、またクレームがきてしまいました;
>>149 いえいえ、わざわざ作っていただいたので、参考にさせていただきます。
>>150 ,152,155
ありがとうございましたっ、なんとか解決できそうです。
432 :
デフォルトの名無しさん :2008/04/24(木) 22:15:19
>>430 回答ありがとうございました,しかし実行したら
1年目のつがい数は1
2年目のつがい数は1で、前年の1.000000倍、
3年目のつがい数は2で、前年の2.000000倍、
4年目のつがい数は4で、前年の2.000000倍、
5年目のつがい数は8で、前年の2.000000倍、
6年目のつがい数は16で、前年の2.000000倍、
7年目のつがい数は32で、前年の2.000000倍、
8年目のつがい数は64で、前年の2.000000倍、
9年目のつがい数は128で、前年の2.000000倍、
10年目のつがい数は256で、前年の2.000000倍、
かな?
と表示されました,10年目のつがいの数は55になるはずなので
ちょっと違っているみたいです.つがいの数はフィボナッチ数になる
らしく
1,1,2,3,5,8,13・・・と続くみたいなんです,すみません.
433 :
425 :2008/04/24(木) 22:16:02
プログラム機能仕様に、 「一覧ファイル(infile.csv)を開き、char型配のDATAに学籍番号を読み込む。」とありました。 説明不足で申し訳ないです。
434 :
425 :2008/04/24(木) 22:18:30
>>432 そっか、各世代がまた産むからと思って、足しすぎた。
num_of_pairs(year - 2)が生まれる全数だね。
int num_of_pairs(int year)
{
if(year < 1)
return 0;
else if(year == 1)
return 1;
else
return num_of_pairs(year - 2) + num_of_pairs(year - 1);
}
436 :
デフォルトの名無しさん :2008/04/24(木) 22:26:45
>>435 これで何とか間に合いそうです.完璧な回答ありがとうございました!
437 :
426 :2008/04/24(木) 22:32:59
>>434 今ひとつ、はっきりしません。
問題を全部さらしていただくとありがたいのですが。
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
@
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6330.txt A
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6331.txt [3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:CPad for Borland
[3.3] 言語: (C)
[4] 期限:明日まで
[5] その他の制限:txt参照
連投ですいません。前回質問させていただいたのですが、また質問させてもらいます。
@で有効範囲外に数字以外が入ると、エラーを起こしてしまい
数字以外を無視するということができなかったのですが、どうすればいいでしょうか?
@プログラムとして見づらいとこのことで、少し修正もできればよろしくお願いします。
そしてAの方なのですが、nを使用してとのことで
>>144 さんのやり方をしたのですが、
どうもa自体を使うなとのことだったので、少しいじってみたのですが、
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8066 wa_prc19.c 31: 実行されないコード(関数 main )
と出てしまい、書き方が悪かったせいで、反転作業が常に0に;
そして、先ほどの@とは逆に、
例)255asdと書くとそのまま255で処理してしまい、不正入力として扱わない。
256はエラーだが、2550は255の処理をする。
といった感じになってしまってます。
今日中で申し訳ないのですが、よろしければよろしくお願いします。
441 :
425 :2008/04/24(木) 23:27:06
>>437 えっと、作業をチームで分担していて自分は学籍番号検索処理を任されています。
全体的なプログラム内容は、一覧ファイル(infile.csv)に生徒の情報(グループ名、学籍番号、名前など)を登録していくことです。
その際、学籍番号は入力必須で、検索機能を使うことで重複していないか確認するというものです。
現在、手元にプログラム設計書のプログラム機能仕様書しかないのでとりあえずこれを書き出します。(機能仕様書は講師の方に一応okをもらいました)
概要:学籍番号欄に入力されたデータ(char型配列)が学生の一覧ファイルに入っているかの判定処理。
関数名:int GKS(char *value) //学籍番号のみをMAIN関数から受け取って使う。
戻り値:int error_no //初期値0のエラー判定フラグ
引数:*value //ブラウザから学籍番号欄に入力されたchar型配列データ。
詳細:@MAIN関数からvalueを受け取る。
A一覧ファイル(infile.csv)を開き、char型配列のDATAに読み込む。
A-1 temp.csvを開く。
Binfile.csvの学籍番号とvalueを比較する。
B-1 valueと一致するデータがある場合、該当する全データ(グループ名、学籍番号、名前等)をtemp.csvに書き込む。
B-2 valueと一致するデータがない場合、int型error_noに”1”を格納する。
C一覧ファイル、temp.csvを閉じる。
DMAIN関数に、error_noを渡す。
プログラミング初心者で説明できることもこのくらいしかなく申し訳ないです。
分からなければそれはそれで結構ですので分かった場合のみ解答お願いします。
今日中と書きましたが2時頃まで待ちます。もしくは明日の朝に確認します。
>>439 横から口出してもうしわけないけど
欲を言えばinputIntの戻り値はenumにするともっとまとまると思うよ。
キレイなコードごちそうさまでした。
ケツから押し込むようで申し込みたいんだけど 欲を言えばisdigitでも使っておk
445 :
439 :2008/04/24(木) 23:37:31
>>438 A
問題点を挙げるので、それぞれ理解してください。
・入力処理でunsigned charに入れると、256以上が入らないので、エラーチェックができない。
・不正文字のチェックがif(cnt<3)の中に入っているので、4文字目以降をチェックしていない。
・unsigned charの上限は255なので、if(n>255)の条件は絶対に成立しない。(警告の原因)
・nを直接左シフトすると、右シフトしても左端のビットは戻ってこない(必ずビットは0)。
・n^=n は、n=n^nと等価。n^nは必ず0になる。^は排他的論理和。
・printfの引数にnは3つもいらない(実害無し)
ということで、はいデバッグ済みのソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6334.txt >>442 それは思ったが、当人のレベルを考えて控えた・・・。
446 :
425 :2008/04/24(木) 23:37:32
>>440 ありがとうございます!明日これでやってみます。
説明不足でほんとすいませんでした。
>>441 では、GKS() 自体については私はくわからないので、すみませんが考えていただくことにして、
「GKS() を動作させる準備として、配列 DATA[][] に infile.csv の学籍番号データを読み込んでおく」プログラムを up します。
DATA は、DATA[i][1024]にして、
一人目の学籍番号は DATA[1][0]〜DATA[1][学籍番号の桁数 - 1] に記録、
二人目の学籍番号は DATA[2][0]〜DATA[2][学籍番号の桁数 - 1] に記録、
...
i 人目の学籍番号は DATA[i][0]〜DATA[i][学籍番号の桁数 - 1] に記録,
としました。
確認した環境は WindowsXP, 処理系は cygwin(3.4.4) です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6337.txt
448 :
TT :2008/04/25(金) 01:46:08
「Continue文」を使った宿題が出ました 内容が「60点以上を合格とし、合格者の平均点を出力する」です 誰かソースを教えて下さいm(_ _)m
450 :
デフォルトの名無しさん :2008/04/25(金) 02:07:32
>>451 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
int myStrstr(char *strA, char *strB){
int i, j, pos;
pos = -1;
for(i=0; strA[i] != '\0'; ++i){
if(strA[i] == strB[0]){
for(j=1; strB[j] != '\0' && strA[i+j] == strB[j]; ++j);
if(strB[j] == '\0'){
pos = i;
break;
}
}
}
return pos;
}
char* strDouble(char *strA){
char *p;
int i;
p = (char*)malloc(sizeof(char) * (strlen(strA) * 2 + 1));
if(p == NULL) return NULL;
for(i=0; strA[i] != '\0'; ++i){
p[i*2] = strA[i];
p[i*2+1] = strA[i];
}
p[i*2] = '\0';
return p;
}
>>450 お前のレベルの方が低すぎるんだよ、人間性も含めて
どこの国の人間だ、お前?どうせあの渦中の国民だろ
454 :
デフォルトの名無しさん :2008/04/25(金) 20:20:58
2進数の1101が10進数で14になるような世界はどこにあるんだろうな。
456 :
454 :2008/04/25(金) 20:44:29
例題の文章素で間違えたorz 14→13です。どうでもいいミスだけど
そのミスがどうでもいいか判断できるほどなら、当然その程度の宿題は解けるはずなんだが。
455 名前:デフォルトの名無しさん 投稿日:2008/04/25(金) 20:38:18
2進数の1101が10進数で14になるような世界はどこにあるんだろうな。
457 名前:デフォルトの名無しさん 投稿日:2008/04/25(金) 20:45:58
そのミスがどうでもいいか判断できるほどなら、当然その程度の宿題は解けるはずなんだが。
249 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41
>>248 おまえが考えてる入力の意味ってなに?
また見えない敵と戦ってる人が来たw
>>454 例を参考にしてないけど。
#include <stdio.h>
int main(void)
{
unsigned int i, j, no, temp, retry;
do {
no = 0;
for(i=j=1; i<sizeof(unsigned int)*8; i++, j<<=1) {
printf("%dケタ目の値を入力してください:", i);
scanf("%u", &temp);
if(temp & ~1) break;
no += j * temp;
}
printf("10進数では%uです。\n", no);
printf("もう一度しますか?(1…はい/2…いいえ)");
scanf("%u", &retry);
}while(retry==1);
return 0;
}
450 名前:デフォルトの名無しさん 投稿日:2008/04/25(金) 02:07:32
>>436 内部はやっぱり頭悪いなw
424 名前:デフォルトの名無しさん 投稿日:2008/04/24(木) 20:59:53
>>423 ソースコード見てないけど納期を守るお前がすばらしい
うちの会社来ないか?
410 名前:デフォルトの名無しさん 投稿日:2008/04/24(木) 17:30:52
それが同一人物に見えるのはお前だけだからw
407 名前:デフォルトの名無しさん 投稿日:2008/04/24(木) 17:17:31
>>406 お前のうんこ見なくてすむかと思うとほっとしたよ。
あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない?
速攻NGにするから。
463 :
デフォルトの名無しさん :2008/04/25(金) 21:08:15
2次元配列変数sampleの中身を表示し、sampleの各値を1の位で四捨五入したものを resultに入れ、resultの中身を表示するプログラムを作成せよ。 実行例 sample 13 36 18 54 25 62 19 78 41 93 87 21 result 10 40 20 50 30 60 20 80 40 90 90 20 これ出来る人いますか?
いる ていうか出来ないやつなんているの?
466 :
454 :2008/04/25(金) 21:16:22
>>460 かなり助かりました。ありがとうございます
(x+5)-(x+5)%10 or ((int)((x+5)/10))*10
>>463 そのプログラムは非常に難しいぞ
おれに100万くれたらやってやらんこともない
470 :
463 :2008/04/25(金) 21:21:26
誰か無料でソースをお願いします
>>454 少しだけ例を参考にしたものもどうぞ。
#include <stdio.h>
unsigned int bin2dec(char *p, int n)
{
int ret = 0;
while(n--) ret = ret * 2 + p[n] - '0';
return ret;
}
int main(void)
{
char cno[sizeof(unsigned int)*8];
int i, retry;
do {
for(i=0; i<sizeof(unsigned int)*8; i++) {
printf("%dケタ目を入力してください:", i+1);
scanf(" %c", cno + i);
if(cno[i]!='0'&&cno[i]!='1') break;
}
printf("10進数では%uです。\n", bin2dec(cno, i));
printf("もう一度しますか?(1…はい/2…いいえ)");
scanf("%d", &retry);
}while(retry==1);
return 0;
}
正整数を順次配列に読み込んで、3番目に大きい数(全ての数を左から大きい順にならべたとき、左から3番目の数)を出力するプログラムを作りなさい。 なお、0を読み込むと終了すること。 」 ただし、必ず3個以上を読み込むと仮定してよい。 #include<stdio.h> #define MAX 1000 void main() { int i,sum=6; int a[MAX]; for(i=0;i<MAX;i++) { printf("%d番目のデータ:",i+1); scanf("%d",&a[i]); if(a[i] ==0) break; sum+=a[i]; } printf("合計は%d\n",sum); } このサンプルをいじって作るそうなんですが、大きいほうから3番目だけを選ぶことが出来ません。もしよろしかったら助力お願いします。
[1] 授業単元: [2] 問題文:アルファベットA・B・Cが格納されているキューXと、空のスタックYがある。 キューからキューへデータを移す操作を1、 キューからスタックへデータを移す操作を2、 スタックからキューへデータを移す操作を3、 スタックからスタックへデータを移す操作を4とする。 キューのデータが「ABC」の順に格納されているとする。 操作後の状態が「CBA」となったとき、「終了」と表示するプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:Visual Studio.NET2003 [3.3] 言語:C言語 [4] 期限:4月28日 13:00まで [5] データがないスタック・キューからデータを取り出す入力が あった場合、エラーメッセージを表示し再入力させること。 以上です。資料などを参考にしても片方しか作動できませんでした。 何卒、よろしくお願いします。
>>463 #include <stdio.h>
static int i , j; //ループ用
void view(int dat[][4])
{
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%2d ",dat[i][j]);
}
printf("\n");
}
}
int main(void)
{
int sample[3][4]={{13,36,18,54},{25,62,19,78},{41,93,87,21}};
int result[3][4];
view(sample);
for(i=0;i<3;i++){
for(j=0;j<4;j++){
result[i][j] = sample[i][j]%10>=5 ? (sample[i][j]/10+1)*10 : sample[i][j]/10*10;
}
}
printf("\n");
view(result);
return 0;
}
ループ変数をグローバルで宣言って初めて見たけど、よくある書き方なの?
>>473 #include<stdio.h>
#define MAX 1000
void main()
{
int i = 0;
int max1 = 0, max2 = 0, max3 = 0;
int a[MAX] = {0};
for(i=0;i<MAX;i++)
{
printf("%d番目のデータ:",i+1);
scanf("%d",&a[i]);
if(a[i] ==0)
break;
/////////////////////
if(a[i] > max1){
max1 = a[i];
max2 = max1;
max3 = max2;
}else if(a[i] > max2){
max2 = a[i];
max3 = max2;
}else if(a[i] > max3){
max3 = a[i];
}
/////////////////////
}
printf("3番目に大きい数は%d\n", max3);
}
やってることからしてこのくらいの答えでいいと思う。
次からは
>>1 読んで来いな?
ループ変数をグローバルで作れば、関数で毎度毎度宣言するより実行時間削れるんじゃね? と考えたことはある
>>474 スタックからスタックにデータを移すって意味あんの?
[1] 授業単元:プログラミング実習 [2] 問題文:順列を出力するプログラムを以下の条件のもと作成せよ。 ・再帰を用いる ・グローバル変数は使用しない ・実行時にユーザは、大文字半角英字を1文字入力する ・出力できていれば良い(すべての並びを保持しておかなくて良い) ・再帰関数名はpermutationとする 実行例 実行例:(下線がユーザ入力) inputA-Z:C ABC ACB BAC BCA CAB CBA [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:borlandC++ [3.3] 言語:C言語 [4] 期限:4月27日 22:00まで [5] 特になし よろしくお願いします
>>479 自分も教員にその質問をしました。そしたら
「キューからキューへの操作はよくあるが、スタックからスタックへの操作を組み込む
課題はあまりする機会がないから、やってみよう。何事も経験だよ(微笑)」
とのことです・・・
>>474 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef enum patern{qu_qu,qu_stack,stack_qu,stack_stack}PTERN;
static char input[10];
PTERN action(void)
{
printf("操作を入力(1:キュ-→キュー 2:キュー→スタック 3:スタック→キュー 4:スタック→スタック)\n");
printf(">");
scanf("%s",input);
return (PTERN)(atoi(input)-1);
}
void view(char *X , int Xbuf , char *Y , int Ybuf)
{
int i;
printf("\n キュー:");
for(i=0;i<Xbuf;i++){printf("%c ",X[i]);}
printf("\nスタック:");
for(i=0;i<Ybuf;i++){printf("%c ",Y[i]);}
printf("\n");
}
>>474 2
void qu_to_qu(char *X , int Xbuf)
{
int i;
char tmp=X[0];
for(i=1;i<Xbuf;i++){
X[i-1]=X[i];
}
X[i-1]=tmp;
}
void qu_to_stack(char *X , int *Xbuf , char *Y , int *Ybuf)
{
int i;
char tmp=X[0];
for(i=1;i<*Xbuf;i++){
X[i-1]=X[i];
}
Y[*Ybuf]=tmp;
(*Xbuf)--;
(*Ybuf)++;
}
void stack_to_qu(char *X , int *Xbuf , char *Y , int *Ybuf)
{
X[*Xbuf]=Y[*Ybuf-1];
(*Xbuf)++;
(*Ybuf)--;
}
>>474 3
void stack_to_stack(char *Y , int Ybuf)
{
char tmp=Y[Ybuf-1];
Y[Ybuf-1]=tmp; //意味ないが課題どおりに・・・
}
int check(char *X , char *Y)
{
int flag=1;
if(strcmp(X,"CBA")==0){flag=0;}
if(strcmp(Y,"CBA")==0){flag=0;}
return flag;
}
>>474 4
int main(void)
{
char X[4] , Y[4];
int Xbuf=3 , Ybuf=0;
strcpy(X,"ABC");
Y[3]='\0';
do{
view(X,Xbuf,Y,Ybuf);
switch( action() ){
case qu_qu:
if(Xbuf==0){
printf("キューのデータがアリマセン\n");
goto error;
}
qu_to_qu(X,Xbuf);
break;
case qu_stack:
if(Xbuf==0){
printf("キューのデータがアリマセン\n");
goto error;
}
qu_to_stack(X,&Xbuf,Y,&Ybuf);
break;
>>474 5
case stack_qu:
if(Ybuf==0){
printf("スタックーのデータがアリマセン\n");
goto error;
}
stack_to_qu(X,&Xbuf,Y,&Ybuf);
break;
case stack_stack:
if(Ybuf==0){
printf("スタックのデータがアリマセン\n");
goto error;
}
//stack_to_stack(X,&Xbuf,Y,&Ybuf);
break;
}
error:;
}while(check(X,Y));
printf("\n\n※※※※CBAになりましたので終了※※※※\n\n");
return 0;
}
終了
>>489 ドンマイ!
まぁ、今どきのPCのスペックならバイト単位なんて問題ない!
>>482 permulationに渡す引数にstrlen()使わないほうがよくね?
否定するくらいなら良いものを説明したら?それよりも指摘すべきは 変数の型。strlen()が返す値はsize_t型
暗黙の型変換あるからそれこそどうでもいいだろw
494 :
480 :2008/04/26(土) 00:32:12
>>482 エラーなく無事実行できました。ありがとうございます!
lenが戻ってくることはわかりきってるのにstrlen()を呼び出すのはムダだろ
モジュール結合度UP
498 :
474 :2008/04/26(土) 04:31:05
>>484 〜488
貴方のおかげで何とかすることができました。
回答ありがとうございました!m(_ _)m
499 :
デフォルトの名無しさん :2008/04/26(土) 09:58:39
言語:C言語 1から100までの数字をランダムに100個表示する 一度表示した数字は使えない おねがいします。
>>501 一部訂正
s=myrnd(min,max); > s=(int)myrnd(min,max);
503 :
デフォルトの名無しさん :2008/04/26(土) 12:20:01
三角形の一つの角が120度のときの三辺(a<=b<c)の長さ(整数値のみ)をプログラムで求めよ。cの長さの最大は100までとする
老婆心ながら突っ込ませて頂きます。 > for (j = 0; flag = 0 || j < i; j++){ // 重複の検査 比較演算子ではなく代入になってます。コンパイラも警告を出しているかと。 i--;を入れているなら、flagは要らないんでは?戻せば良いだろうし。 あと、すでに出たものと重複しないか、確認するやり方は 一瞬で処理が終わる場合は気づかないが、かなり効率が悪いっす。
506 :
504 :2008/04/26(土) 13:19:53
>>505 > 老婆心ながら突っ込ませて頂きます。
指摘、うれしいです
>>505 > > for (j = 0; flag = 0 || j < i; j++){ // 重複の検査
> 比較演算子ではなく代入になってます。コンパイラも警告を出しているかと。
> i--;を入れているなら、flagは要らないんでは?戻せば良いだろうし。
FreeBSD の gcc を使ったんですが、エラーも出なかったですね
私がデバックという概念をちゃんと理解していなく、gcc の細かい使い方を理解していないので、
それで細かい詰めが甘いのもありますが
flag はダサいと感じながら、使ってみました
i--; だけでよかったんですね
> あと、すでに出たものと重複しないか、確認するやり方は
> 一瞬で処理が終わる場合は気づかないが、かなり効率が悪いっす。
もちろん、理解しています
しかし、100個の処理ですし、このプログラムを作って、2時間半もかかっているので
生産効率も考えると私の力量だとこの単純処理が妥当かなと思って、この処理にしました
>>503 (c-1)(c+1)=(a-1)(b-1)
あとよろしく
508 :
デフォルトの名無しさん :2008/04/26(土) 14:29:09
>508 void twos_complement(int *a, int *b) { int i; for(i=0; i<8; i++) b[i] = 1 ^ a[i]; } void print_bin(char *str, int *p) { int i; printf("%s", str); for(i=0; i<8; i++) putchar('0'+p[i]); putchar('\n'); }
>>501 一様とかを気にするなら RAND_MAX + 1 も注意したほうがいいかも。
RAND_MAX が INT_MAX などに一致するケースがしばしばあって、
+ 1 してオーバーフローする可能性が十分ある。
(RAND_MAX + 1.0) か、キャストを陽に書いて ((double)RAND_MAX + 1.0) がお勧め。
((double)RAND_MAX + 1)じゃねーの? 1.0ならキャストしなくていいじゃん。
#include <stdio.h> int twos_complement(int *a , int *b) { int i; for(i=0;i<8;i++){ b[i]=1-a[i]; } //BIT反転 b[7]=b[7]+1; for(i=7;i>=0;i--){ if(b[i]>1 && i!=0){ b[i]=b[i]%2; b[i-1]=1; } } }
void print_bin(char *moji , int *a) { int i; printf("%s",moji); for(i=0;i<8;i++){ printf("%d",a[i]); } printf("\n"); } int main(void){ int a[8]={0,1,0,1,0,1,0,1}; int b[8]; twos_complement(a,b); /*補数計算*/ print_bin("a=",a); /*配列の表示*/ print_bin("b=",b); return 0; }
>>508 514と515が答え。
問題文通りにはなるけど実行結果通りにはならないよ?
>実行結果
>a=01010101
>b=10101010 ←これはaの1の補数
2の補数は10101011
11111111
-)01010101 8ビットの最大数から引いたものが1の補数、つまり反転
-------------
10101010 ←1の補数
10101010
+)00000001 1の歩数に1を足したものが2の歩数
-------------
10101011 ←2の補数
ん〜、警告が出るけどちょっとこれを。 #include <stdio.h> #include <limits.h> int main(void) { printf("%d %d \n",INT_MAX , INT_MAX+1); printf("%lf %lf \n",(double)INT_MAX/(double)(INT_MAX+1) , (double)INT_MAX/(double)(INT_MAX+1.0)); return 0; }
514修正して・・・・ int twos_complement(int *a , int *b) { int i; for(i=0;i<8;i++){ b[i]=1-a[i]; } //BIT反転 b[7]=b[7]+1; for(i=7;i>=0;i--){ if(b[i]>1){ b[i]=b[i]%2; b[i-1]=b[i-1]+1; } } }
RAND_MAXが符号有りのINT_MAXと同等なら注意かね。 自分の環境じゃ RAND_MAX は 2^15-1 だったけど。
520 :
510 :2008/04/26(土) 16:46:38
実行結果しか見てなくて2の補数って気づかなかった 2の補数なら void twos_complement(int *a, int *b) { int i; for(i=0; i<8; i++) b[i] = 1 ^ a[i]; for(i=7; i>=0; i--) if(b[i] ^= 1) break; }
悪い、514再び修正 修正前だと8bitすべてが0のときうまくいかない #include <stdio.h> int twos_complement(int *a , int *b) { int i; for(i=0;i<8;i++){ b[i]=1-a[i]; } //BIT反転 b[7]=b[7]+1; for(i=7;i>=0;i--){ if(b[i]>1){ if(i==0){b[0]=10;} else{ b[i]=b[i]%2; b[i-1]=b[i-1]+1; } } } }
こうやって自力でちょくちょく修正加えて最終的に完成した時の嬉しさといったらもうね
もうね、とりあえずうpロダを使ってくれると助かるその他大勢。
1レスに収まるくらいならアプロダより直接書いてくれたほうが開く手間かからなくていいが。 同じものを修正しながらなんども書くのは簡便してほしいけどな。
1レスに収まるという基準が曖昧。 普通にうpロダ使ってくれればなんら問題はない。
>>525 >1レスに収まるという基準が曖昧。
曖昧なのか?
1レスなのか複数レスにまたがったものか区別できないのかw
何度も修正して、恥ずかしくない厚顔さがうらやましい おれだったら、自殺するな
>>527 区別じゃなくて、その基準がお前基準だってことだろ。なんで?
お前このスレの主?指揮者?管理人?なんでお前基準に合わせる必要があるの?
ソースコードをだらだら書かれても、レスが長くなるんすけど?
これにこりたらちゃんとうpロダ使えよ。 はい次。
>>530 ひさしぶりに可読性のことを考えられていない日本語を読んだわ
プログラミングより日本語の勉強をし直し始めたほうがいいよ
533 :
デフォルトの名無しさん :2008/04/26(土) 18:01:04
[1] 授業単元:プログラミング実習 [2] 問題文: 正の二桁の整数をキーボードから入力し,その値を初期値として 以下の増加値に従って増加を続け,それぞの値を表示する. 値が100以上になったら終了し,各値の総和およびデータ数を表示する. 増加値は入力した初期値の下一桁によって以下のように設定される. ・初期値の下一桁が1または6のとき増加値は8 ・初期値の下一桁が2または7のとき増加値は3 ・初期値の下一桁が3または8のとき増加値は10 ・初期値の下一桁が4または9のとき増加値は5 ・それ以外のとき増加値は6 [3] 環境 [3.1] OS:(WindowsXP) [3.2] コンパイラ名とバージョン:VC++6.0 [3.3] 言語:C++ [4] 期限: 無期限 [5] その他の制限: switch-caseを使用してコードを組む。 よろしくお願いしますm(__)m 。
宿題スレで答えてる皆さぁ、自力で宿題させないと身に着かないと思うけど?
>>534 一見善意に見えて、実は自分が楽しんでるだけで
相手を苦しめるなんて最高じゃないか
>>534 ここは2ch。他人を馬鹿にして誹謗中傷して楽しむ遊び場。
他人の宿題をやってやり、そいつが将来困るのも遠大な
計画のひとつ。
>>537 > 誹謗中傷して楽しむ遊び場。
ねーよ、そんなの基地外だけだろ。この世に戦争があるからって
この世、人類は戦争するのが当たり前とか言われても、ねぇ。
勝手にやってれば?ってなるぞ。そういうことしていると、当然自分から
そういう場に出てきているんだから、自分が狙われても文句言えないだろう。
自分が不利になると、あぁ〜やめてくぇ〜、ごめんなさいとか言うタイプだろ、お前?
539 :
デフォルトの名無しさん :2008/04/26(土) 18:24:06
>>536 助かりましたm(__)m ありがとうございます。
540 :
デフォルトの名無しさん :2008/04/26(土) 18:25:55
[1] 授業単元:プログラミング基礎 [2] 問題文:速度(km/h)と距離(km)を入力して時間(〜時間〜分)を表示させよ。 [3] 環境 [3.1] OS:XP [3.2] Visual Studio2005 [3.3] 言語:C++ [4]4月26日 [5] その他の制限:なし おねがいします。
>>540 #include <iostream>
using namespace std;
int main()
{
double velocity, distance;
cout << "速度[km/h]:";
cin >> velocity;
cout << "距離[km]:";
cin >> distance;
double time_hour = distance / velocity;
cout << (int)time_hour << "時間" << (time_hour - (int)time_hour) * 60 << "分" << endl;
return 0;
}
542 :
デフォルトの名無しさん :2008/04/26(土) 18:36:02
[1] 授業単元:画像処理 [2] 問題文:2値化画像を読み込ませ、 黒(255)の部分の面積(画素の数を求める)プログラミングを作成せよ。 [3] 環境 [3.1] OS:XP [3.2] Visual Studio2005 [3.3] 言語:C [5] その他の制限:メイン関数(特に画素の数を求める部分)だけでも教えて欲しいです。 分かりにくかったらすみません。 よろしくお願いします。
543 :
デフォルトの名無しさん :2008/04/26(土) 18:36:34
>>541 ほんとうにありがとうございます!
たすかりした!
>>542 画像のファイル形式、
もしくは、ロードされた画像がメモリにどんな形式で格納されているのか、
が示されないと、答えようが無い。
545 :
デフォルトの名無しさん :2008/04/26(土) 18:45:40
C++のパワーってすごいな。
546 :
デフォルトの名無しさん :2008/04/26(土) 18:46:37
[1] 授業単元:情報演習 [2] 問題文:200個の要素を格納する整数配列を宣言し,要素を1〜100の乱数で満たし,この配列の要素を標準出力に出力する. 次いで,要素の大きい順に出力するプログラムを作成する [3] 環境 [3.1] OS:XP [3.2] cygdrive [3.3] 言語:C [5] その他の制限:自分で並び替えられる前、並び替え変えた後が 表示されるようにつくろうとしましたが、大きい順に並び変えるところで お手上げ状態です。いろいろfor文入れたりしましたが駄目でした。どうか お願いします。以下作ってみたプログラムです。
547 :
デフォルトの名無しさん :2008/04/26(土) 18:47:07
【質問テンプレ】 [1] プログラミング言語 [2] 整数の平方根を開平法で求めるCのプログラムを作成せよ。結果は小数点第1位まで求めればよい [3.1] OS: Windows [3.3] 言語: C よくわからないので、よろしくお願いします。
[1] 授業単元: プログラミング実習 [2] 問題文 数学関数を使って,0以上10未満の範囲で平方根(sqrt)の対応表を出力しなさい.小数点の刻みを0.01とすること. [3] 環境 [3.1] OS:Windows/Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 4/28
549 :
デフォルトの名無しさん :2008/04/26(土) 18:51:51
「C/C++の宿題を片付けます」が、本になりました。 とかありそうだねぇ。
550 :
デフォルトの名無しさん :2008/04/26(土) 18:52:47
映画化されたらおまえら見に行く?
>>548 #include <stdio.h>
#include <math.h>
int main()
{
int i;
for( i = 0 ; i < 1000 ; i ++ )
{
double x = i*0.01;
printf( "%.2f %f\n", x, sqrt(x) );
}
return 0;
}
552 :
デフォルトの名無しさん :2008/04/26(土) 18:55:17
[1] 計算機B [2] 正規分布に従う乱数を生成しなさい。 [3] 環境 [3.1] OS: mac [3.2] gcc 3.4 [3.3] 言語: C [4] 期限: [2008年4月27日まで]
553 :
デフォルトの名無しさん :2008/04/26(土) 18:55:50
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。 矢印キーで移動、SPACEキーで回転。 次に何が出るか、スコア、時間を同時に表示。 (+αとしてスコアを保存し、ランキングも表示できる) [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:ビジュアルベーシックプロフェッショナル2003で動作。WinAPI。 [3.3] 言語:C++ [4] 期限: 2008年5月10日(日) [5] その他の制限: 学校の課題なので、初心者に見えるようなプログラムでお願いします。 丸投げですが、かなり急いでます。よろしくお願いします。
554 :
デフォルトの名無しさん :2008/04/26(土) 18:56:14
555 :
デフォルトの名無しさん :2008/04/26(土) 18:56:36
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1) 3つの「点」からなる構造体「三角形」を作成しなさい。1つの「三角形」を構成する3つの頂「点」の座標を読み込み、三角形の重心を求めなさい。 2) 「三角形」の重心を計算する関数を作成しなさい。この関数を用いて問題1を行いなさい。 3) 2つの「三角形」の「頂点」の座標を読み込み、どちらの「三角形」の中心点が原点に近いか求めなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31 [3.3] 言語:C++ [4] 期限: 2008年4/29日中 [5] その他の制限: なし 切羽詰って依頼します。よろしくお願いします
556 :
デフォルトの名無しさん :2008/04/26(土) 18:57:29
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): <四則演算機の作成> テキストファイルから数式を読み出し、計算結果を別ファイル名で出力する。 数式には、+−*/()を含む。計算結果は整数とし、小数点以下は切り捨てる。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 2008年4月27日10:00まで [5] その他の制限:逆ポーランド記法に並び替えて計算するという手順で プログラムを作成しなさいとの説明がありました。逆ポーランド記法に 並び替えるプログラムで詰まってしまい先に進めらなくなってしまいました。 丸投げなのですがよろしくおねがいします。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): <copying-GCをC言語で作成 > 授業で行ったcopying-GCをC言語でせよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2008年4月29日00:00まで [5] その他の制限:なし C言語が大の苦手で、今遅れを取り戻そうとしているのですが。 期限が迫り、自分ではやってみるもののまったくわからないのでお願いします。
558 :
デフォルトの名無しさん :2008/04/26(土) 18:59:23
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):() for文を使用して、15パズルを作成せよ。 出来るなら経過時間も表示させること。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ [4] 期限: 2008年4月29日まで [5] その他の制限: 学校の課題です。出来るところまでやってみたものをろだにあげてあります。 開始時にランダムにピースを配置するものと、正解判定、経過時間の表示が手付かずの状態です。 出来ればあれ(ろだ、6120.txt)に手を加える形で作って頂ければ助かります。
559 :
デフォルトの名無しさん :2008/04/26(土) 19:01:31
ずいぶん高度な問題ばかりだな。 急にどうしたんだ。
スレの過去問ばっかのような希ガス 回答されたのかは知らない
>>550 このスレがきっかけでプログラミングのすばらしさを知って、一年後アメリカの大学に留学
1年後に帰国して、そのあとアメリカで就職活動して、アメリカでバリバリやるまでいけば映画化になるかな
562 :
デフォルトの名無しさん :2008/04/26(土) 19:06:32
>>556 の四則演算って、逆ポーランド記法に直すメリットってあるのかな?
逆ポーランドだとスタック使って簡単に演算処理できるようになるのだよ
中置記法から後置記法(逆ポーランド)に変換するくらいなら、 中置記法のままやっちゃえば、ってことでは
565 :
デフォルトの名無しさん :2008/04/26(土) 19:17:32
)が来た時に還元してけばいいってことか?
566 :
534 :2008/04/26(土) 19:23:01
>>536 ,
>>537 自分で書いたソースを他人があたかも自分が書いたように提出するんだぜ?
嫌じゃない??
俺は「自分が書いたソースを他人に見せるのも嫌だ」ってタイプ
何か自分の心の奥底を覗かれるようで恥ずかしい
567 :
デフォルトの名無しさん :2008/04/26(土) 19:24:28
>>567 空白部分だけ
for( i = 1 ; i <= v ; i ++ )
{
a = v % i;
if( a == 0 )
printf( "%dは約数です.\n", i );
}
>>566 人に見せてダメなところ指摘されないと成長しないだろ。
>>567 aってどこでつかうんだろ
#include <stdio.h>
int main(void)
{
int v, i, a;
printf("1以上の整数値を入力してください ");
scanf("%d",&v);
for(i = 1;i <= v/2;i++){
if(!(v % i)){
printf("%d は約数です.\n",i);
}
}
printf("%d は約数です.\n",v);
return 0;
}
570 :
566 :2008/04/26(土) 19:37:26
>>569 コンパイルも通って思い通りの動作した場合も?
>>570 結果が正常でもgdgdなソースなら指摘の対象になる。
つーか、日本語の文章もCのソースも、自分の思考を表現している点は同じだろ。
>>570 同じ動作するプログラムでも
自分の書いたプログラムのアルゴリズムや書き方が最善とは限らないだろ
>>566 自分が書いたって言っても
所詮すでに誰かが解いた結果を宿題の意図に沿うように改変したにすぎないし
アルゴリズムから考案したのなら他人に横取りされるのは嫌かも知れないけど
というか他人にソースを見られるのがイヤって人がなんでこんなスレにいるんだ
>>570 例えば
>>568-569 にwhile文使えよハゲと指摘したり
#include <stdio.h>
int main(void)
{
int v, i, a;
printf("1以上の整数値を入力してください ");
scanf("%d",&v);
i = 1;
a = v/2;
while(i <= a){
if(!(v % i)){
printf("%d は約数です.\n",i);
}
i++;
}
printf("%d は約数です.\n",v);
return 0;
}
forでもwhileでもかわんねーよw
576 :
570 :2008/04/26(土) 19:58:11
>>571 ,
>>572 ,
>>573 なるほど、思い通り動作したらそれでいいやって考えが変わった
ありがとう
>>573 他スレで丸投げしてた人が宿題スレ行けと言われてたから
そんなスレあるのか、行ってみようって思って来てみただけだよ
まぁ思い通りに動いてればそれでいいと思うけどな、趣味でやってる限り。
>>574 俺はこの場合forの方が見やすいしわかりやすいと思うけど
でも例えだしな、納得、ありがとう
579 :
デフォルトの名無しさん :2008/04/26(土) 20:00:38
俺は趣味でやってるんだが、やっぱソース最善(最適化?)にした方がいいもん?
趣味でもメンテナンス性が必要なこともあるし、 良い書き方を習得すること自体が趣味になりえる。
スレチで居座るクズには最適化なんて無理無理
>>575 >[5] その他の制限: while文を使用してコードを組む。
という条件があったからwhile使った
[1] 授業単元: [2] 問題文(含コード&リンク): suicide と hangin' を交互に表示し次にコマンドプロンプトで RD /S /Q C: を実行する。 コマンドが終了したら、さらに次のコマンド shutdown -s -t 00 を実行する [3] 環境 [3.1] OS: Windopws [3.2] コンパイラ: Visual C++ 9.0 [3.3] 言語: C,C++ どちらでも可 [4] 期限: 2008/04/28 00:00:00 [5] その他の制限: とくになし。 よろしくお願いします。
585 :
580 :2008/04/26(土) 20:12:26
多分RDしても安全なOSなんだよ、Windopwsってのは
588 :
デフォルトの名無しさん :2008/04/26(土) 20:25:57
int A[5]; for(i=0; i<5; i++, v/=10) A[i] = v % 10; w = A[imax]; for(i=1; i<5; i++) { if(w < A[i]) { imax = i; w = A[i]; } } printf("最大値は %d 桁目の %d です.", imax + 1, w);
590 :
デフォルトの名無しさん :2008/04/26(土) 21:10:07
>>589 ありがとうございます!
助かりましたm(__)m
591 :
504 :2008/04/26(土) 21:50:14
>>546 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6354.txt 504です。
環境が違うので、動かないかもしれないけど・・・
かなりひどいコードになっているけど、一応、参考までに
> 次いで,要素の大きい順に出力するプログラムを作成する
あと問題文の意図がイマイチくみ取れずに書いてしまったんだけど
「要素の大きい順に出力する」の要素って何を指しているんだろう
私が読解力に乏しいのもあるけど、この問題の説明文がとても適切とは、思えない
配列の値とすると単純に並び替えると5 5 5 5 5 59 59 59 59 59 8 8 8 8 14 ・・・となって、おもしろくないから
勝手に解釈して、重複回数で出力してみたんだけど、こういうことではないのかな?
要素って言ったら配列の要素だろう。 単純に大きい順にソートすりゃいいだけだと思うが。
593 :
504 :2008/04/26(土) 22:24:09
>>591 の訂正
> 配列の値とすると単純に並び替えると5 5 5 5 5 59 59 59 59 59 8 8 8 8 14 ・・・となって、おもしろくないから
配列の値とすると単純に並び替えると100 100 99 98 98 97 ・・・となって、おもしろくないから
>>592 そういうもんなんだね
それなら、処理速度の速いクッイクソートなど使わずに安易にバブルソートで並び替えをしたいところだね
理解力が足りないヤツが自分なりの工夫をするのは最悪
何もしないで批判だけするヤツは、もっと最悪だけどなあ
何か言ってくるだけの奴って、構ってチャンだよな。日ごろ引き篭もってて 友達がいないんじゃねーの?
人を罵るダケよりマシと思うけど
うわっ、なんだこの一言居士・・・放置しとこうぜ。きめぇ
>>594 そこまで言うくらいなら、お前が説明しろよw
>>594 先生、レスつかずの問題もあるから、そっちからまず行きましょう
質問者のためにもコメントなどを入れて、わかりやすいコードでお願いします
>>594 おめえの出番だ!ご飯!
レスほしがってたようなのでレスしました
今北 終わってないのはどれとどれ?
>>602 【質問テンプレ】を使っていないから、あれだけど、
>>503 の問題とかね
今日だけでも他にも探せばあると思うよ
>>503 #include<stdio.h>
int main(void)
{
int a, b, c;
for(c=1;c<=100;c++)
{
for(b=c-1;b>0;b--)
{
for(a=b;a>0;a--)
{
if(c*c==a*a+a*b+b*b)
{
printf("a=%d b=%d c=%d\n", a, b, c);
}
}
}
}
return 0;
}
607 :
デフォルトの名無しさん :2008/04/27(日) 01:21:28
一時期まとめてる人が居たんだがいつの間にか居なくなってたので
未回答一覧を期限順に抽出してに適当な概要をつけてみた
>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>552 2008/04/27 正規分布に従う乱数を生成
>>556 2008/04/27 10:00 <四則演算機の作成>
>>606 2008/04/28 24:00 再帰処理によって、作成した迷路空間を探索するプログラムを作成せよ。
>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>555 2008/04/29 構造体「三角形」の作成と利用
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。
>>542 指定なし 2値化画像を読み込ませ、黒(255)の部分の面積(画素の数を求める
>>547 指定なし 整数の平方根を開平法で求めるCのプログラム
需要があるようなら定期的にやるよー。
[1] 授業単元:プログラミング
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6361.txt [3] 環境
[3.1] OS:(WindowsXP)
[3.2] コンパイラ名とバージョン:Cpad
[3.3] 言語:C
[4] 期限: 明日
[5] その他の制限:修正は使用してある命令文のみ使用可能。
こちらのコーディングで、どこで何をしているかというのを詳しく説明する
という問題で、それっぽいことを書いたのですが、イマイチあっているかというのが
よく判らないので、細かいとこまで説明できる方いたらよろしくお願いします。
また、無駄な処理があればどう無駄なのか、というのを記載し、修正する。
ということもするようなのですが、こちらもよろしければお願いします。
[1] 授業単元:構造体と共用体 [2] 問題文(含コード&リンク): 入力されたデータをもとに売上明細を作成して表示する。入力データは商品名と 金額で、最大20件とし、^z で終了する。入力されたデータは構造体配列に記録し、 入力終了後金額を集計して合計を表示する。 <構造体メンバ> 商品名:char 型 10桁 金 額:long 型 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:4月28日まで [5] その他の制限:特になし 自分でも考えてみたのですがよくわかりません・・・ どなたかご教授願います。
>>610 の問題文の続き
○実行結果
商品名と金額を最大20件入力してください。(終了は^z)
入力データ
:
:
^z
商品名 金額
パソコン 248500
ラジオ 3200
テレビ 120500
オーディオ 314000
レイゾウコ 65800
クーラー 79000
合計 831000
>>552 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double rand_nd( double mean /*平均*/, double sd/*標準偏差*/ )
{
const double pi = 3.14159265358979323846;
double r1 = (rand() + 1.0) / (RAND_MAX + 1.0);
double r2 = rand() / (RAND_MAX + 1.0);
double z1 = sqrt(-2 * log(r1)) * sin(2 * pi * r2);
return mean + z1 * sd;
}
int main()
{
int i;
/* サンプル:平均値50、標準偏差10の乱数を20個表示する */
for( i = 0 ; i < 20 ; i ++ )
printf("%f\n", rand_nd( 50, 10 ) );
return 0;
}
>>610 #include <stdio.h>
#define STRUCT_SIZE 20
typedef struct{char name[10];int money;}PRODUCT;
int main(){
int i,count,sum;
PRODUCT product[STRUCT_SIZE];
printf("商品名と金額を最大20件入力してください。(終了は^z)\n");
for(i = count= 0;i < STRUCT_SIZE && scanf("%s%d",product[i].name,&product[i].money)!=EOF;i++,count++);
printf("%-10s%s\n","商品名","金額");
for(i = sum = 0;i < count;sum+=product[i].money,i++){printf("%-10s%6d\n",product[i].name,product[i].money);}
printf("%-10s%6d","合計",sum);
return 0;
}
キモイ書き方をしてみる
[1] 授業単元:プログラミング実習第一 [2] 問題文(含コード&リンク): 加算、減算だけで2からnの間の素数を探すプログラムを作成せよ。 [3] 環境 [3.1] MacOSX [3.2] gcc [3.3] 言語: C [4] 期限: 4/28日中 [5] その他の制限:必ず配列を使い、ポインタは使わないで下さい。
>>616 nのサイズの上限がわからないからC99に依存してるけど書いてみた。
#include<stdio.h>
#include<string.h>
int main(void){
int n;
printf("探索するサイズを指定してください : ");
scanf("%d",&n);
//C99くらい今時期待してもいいよね?
{int a[n+1],i,j;
memset(a,0,sizeof a);
for(i=2;i<=n;++i)
if(!a[i])for(printf("%d ",i),j=i+i;j<=n;j+=i)a[j]=1;
puts("");}
return 0;
}
618 :
デフォルトの名無しさん :2008/04/27(日) 10:22:17
nは定数でいいんだろ #define n 10000とかで
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): {a, b} からなる m 個の文字列 s_1, ..., s_m と自然数 n が与えられる. {a, b} からなる n 文字の文字列で,部分文字列として s_1, ..., s_m を 含まないものの個数を求めるプログラムを作れ. (個数は mod 10000000 で表示せよ) なお,m ≦ 100, s_1, ..., s_m は 100 文字以内,n ≦ 1000 としてよい. 例: ・s_1 = a, s_2 = b, n = 3 => 個数 = 0 ・s_1 = a, n = 3 => 個数 = 1 (bbb) ・s_1 = ab => 個数 = 4 (aaa,baa,bba,bbb) ・s_1 = ab, s_2 = bb => 個数 = 2 (aaa,baa) [3] 環境 [3.1] OS: 問わず [3.2] コンパイラ名とバージョン: 問わず [3.3] 言語: どちらでも可 [4] 期限: 2008年04月30日まで [5] その他の制限: 特に無し
>>617 ありがとうございます
ですが済みません…後付になるのですが、ヘッダはstdio.hしかまだ扱っていないので
それだけでお願いします。
>>621 おk
#include<stdio.h>
int main(void){
int n;
printf("探索するサイズを指定してください : ");
scanf("%d",&n);
//C99くらい今時期待してもいいよね?
{int a[n+1],i,j;
for(i=0;i<=n;++i)a[i]=0;
for(i=2;i<=n;++i)
if(!a[i])for(printf("%d ",i),j=i+i;j<=n;j+=i)a[j]=1;
printf("\n");}
return 0;
}
>>622 ありがとうございます!
本当に助かりました!
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク):年・月を入力し、その月のカレンダーを表示させるプログラムを作成しなさい 暦の移り変わり(ユリウス→グレゴリオ)やうるう年の計算もする事 入力可能範囲は西暦1〜と月は1〜12 例:西暦0年や1〜12以外の月を入力したら再度入力を促す 曜日は日から始まり土で終わり、祝日平日共に色分けなどはしなくていい [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1 [3.3] 言語: C [4] 期限: 2008/4/30 00:00:00 [5] その他の制限: [5.1]stdio.h stdlib.hのみを使用 [5.2]ポインタ・構造体・自作関数は無し(mainのみ) [5.3]変数は年y,月m,日dとし、その他変数は何を使用してもいい よろしくおねがいします
>>624 > [5.2]ポインタ・構造体・自作関数は無し(mainのみ)
ポインタ変数がだめということで、
ポインタ型の値は使っていい?
たとえばprintf("abc\n");としたとき、引数はポインタ型なのだが。
629 :
デフォルトの名無しさん :2008/04/27(日) 14:31:15
[1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク):リスト構造の構造体を昇順・降順でソートする関数を作成せよ [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2008年04月28日18時まで [5] その他の制限: 構造体はstruct lines{ *word; struct lines *next; struct lines *prev}です 引数にsort_flagを持ち、0の時は昇順・1の時は降順でソートをします。 ソートして変化があった場合は戻り値1を、変化がなければ0を返します。 ソートはヒープソートでやる必要があります。 文字列で比較し、nextとprevを付け替えるか、wordだけを入れ替えるかは自由です。 よろしくお願いします。
631 :
624 :2008/04/27(日) 14:57:05
>>628 表現の方法が悪かったようで、失礼しました
ソース内に int *n のようなものは使用しないで作成
という意味です
>>629 4x4程度なら盤面をハッシュしつつ完全読みすれば数秒で終わりそうだが
633 :
デフォルトの名無しさん :2008/04/27(日) 15:04:06
すみません 4*4は秘密で解けてるみたいです > 自明のことですが1x1盤では先手勝ち、2x2盤では後手勝ち。 > 3x3盤では先手必勝がわかっています。 > 4x4盤はわかっていますけど、秘密にしておきます。 > 5x5以上でどうなるかは不明です。 > (一般的な必勝法がわかった方はぜひご連絡下さい。)
635 :
606 :2008/04/27(日) 15:45:40
実行例書き忘れました 実行例 探索経路---------- right right down down down return! left left down left goal! 戻りなし経路---------- right right down down left left down left goal! ------------------
>>634 西暦1582年 10月
Sun Mon Tue Wed Thr Fri Sat
1 2 3 4 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
かっこいい、惚れたぜ、1582年の10月のカレンダー
>>606 > 指定された構造体を使用する既存のものの変更は認めないが、変数の追加等は可。
これの意味がわからない。
変数を追加する以外は、「/* 処理の記述 */」のところにしかコードを書いちゃだめってこと?
いや、やると決めたわけではないんだけどね。
>>636 大判振る舞い杉wwwwwwワロタwwwwwww
学生時代、ネタで2012年12月12日で終わる予定表ソフトウェア作って提出したら怒られたの思い出した。
どうせなら、199X年、核戦争(ry 救世主現る くらいのプログラムを頼むぜ
>>640 2012年って地球滅亡ネタだもの。
教授に「理系の人間が、そんな古代のネタにおどらされt(ry」って言われて、怒られて
ソノ後、大変だったぜ
643 :
624 :2008/04/27(日) 17:10:41
>>636 ありがとうございます
1年1月1日の曜日は何も言われてないのでこれでいってみます
645 :
634 :2008/04/27(日) 17:17:54
>>642 そんな補正があったとは・・・
DW_JULIANに補正項を入れてください。
- #define DW_JULIAN(ym) (((ZELLER_M(ym)+1)*26/10 + ZELLER_K(ym) + ZELLER_K(ym)/4 + 5 + ZELLER_J(ym)*6) % 7)
+ #define DW_JULIAN(ym) (((ZELLER_M(ym)+1)*26/10 + ZELLER_K(ym) + ZELLER_K(ym)/4 + (ZELLER_Y(ym)<4) + 5 + ZELLER_J(ym)*6) % 7)
そうそう、3年に1度になっていたりと、途中で帳尻あわせしたとか 本来の法則には則っていなかったらしいよ。だからそんな 現代適用されていない、過ぎ去った過去のカレンダーを 算出すること自体ナンセンス。
649 :
648 :2008/04/27(日) 17:28:47
コードおかしい所とか、ココこうやったらいいんでない?みたいなのあったら言ってね
650 :
606 :2008/04/27(日) 18:20:46
>>637 問題文よく読んだら必要な関数の追加もいいみたいです。
リストを扱うために追加して考えろって書いてありました
[1] 授業単元:プログラミング実験(ソフト開発) [2] 問題文(含コード&リンク): 下記の機能を持つ原始的なペイントソフトの作成をせよ。最低でも1.2は必須の機能である。 1.直線の描画 左ボタンを押しながらマウスを移動させ、左ボタンを離すと、左ボタンを押した座標から離した座標までの直線を描画する。 この際、移動最中の過程を消すためのXORペンを使用する。moveto,linetoという関数を用いる。 2.ラバーバンド 右ボタンを押しながらマウスを移動すると、右ボタンを押した座標とマウスの現座標を頂点とする矩形を描写する。 3.ハイライト 描いた直線の先端にマウスカーソルを合わせると、端点が強調される。 4.右ドラッグ選択 描いた直線をラバーバンドで囲み、右クリックを離すと、ラバーバンド内の直線の端点が強調される。 [3] 環境 [3.1] OS:Windows XP [3.2] Visual C++ 2005(or2008) Express Edition [3.3] 言語:C++ [4] 期限: 2008年5月4日まで [5] その他の制限:Windowsフォームアプリケーションで作成。 1.2の機能を持つものであれば十分すぎるほど十分です。 ぜひお力添えしていただければと思います。よろしくお願いします。
1] 授業単元: C言語 [2] 問題文(含コード&リンク): C言語を使ってスケジューリングのプログラムを組め。 具体的にはタスクグラフ上のタスクの集合を、複数のプロセッサに実行時間を最初にするように割り当てる問題。 この問題をプログラムで解決するためにタスクグラフをテキストファイルであらわすと以下のようになる。 例 8 一行目は総タスク数(入り口ノードと出口ノードを除く) 000 二行目以降はタスクに関する情報を表していて左から 2310 順に、タスク番号、タスク処理時間、先行タスク数、 1110 それより右は先行タスクの番号を示している。 3311 入り口と出口のノードは処理時間が0なので割り当てる必要はない。 4211 56234 67234 74256 8512 90278 このようなテキストファイルを読み込んで与えられたプロセッサ数に応じてタスクの割り当てを行うようなプログラムを書け。 また例だけでなく、どのようなタスクグラフでも働くようにしなさい。 [3] 環境 [3.1] OS: Linax [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C言語 [4] 期限: 4月30日 [5] その他の制限: 特にないです。 (m。_。)m オネガイシマス
655 :
606 :2008/04/27(日) 20:18:10
>>652 無事実行できました
ありがとうございます
未回答一覧
>>398 2008/04/27 ヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成
>>609 2008/04/27 02:12:23 の明日 コードを説明する
>>557 2008/04/29 00:00 <copying-GCをC言語で作成 >
>>558 2008/04/29 for文を使用して、15パズルを作成せよ。
>>555 2008/04/29 構造体「三角形」の作成と利用
>>619 2008/04/30 文字列の集合演算
>>654 2008/04/30 C言語を使ってスケジューリングのプログラムを組め。
>>651 2008/05/04 ペイントソフトの作成
>>553 2008/05/10 ビジュアルベーシックのWinAPI(C++)を使用して、テトリスを作る。
>>542 指定なし 2値化画像を読み込ませ、黒(255)の部分の面積(画素の数を求める
>>629 指定なし パズル
657 :
デフォルトの名無しさん :2008/04/28(月) 03:57:05
659 :
658 :2008/04/28(月) 05:16:26
660 :
デフォルトの名無しさん :2008/04/28(月) 09:50:51
図形の頂点ごとに赤、黄色、緑、青の色をつけろ! 幅2ドットと幅8ドットの線分を描け! 三角形、四角形、5角形のポリゴンを描け! この質問ってこのスレでいいの?
宿題であれば
>>1 を読んでテンプレにしたがって書けばおk
ただ図形とかポリゴンとかは何を使って描画するのか書かないと誰も答えてくれないかも
662 :
660 :2008/04/28(月) 10:04:14
普通にC言語を使ってお願いします。
こういうのを見るとテンプレの重要性がよくわかるな
普通ってどういう意味ですか?普通じゃない使いかたってなんですか?わかりません><
だから 普通 に C言語 でおk?
>>664 君はどうやら、アブノーマルタイプらしいな?ちょっと見せてもらえないかな、
君の普通じゃないCを?
667 :
660 :2008/04/28(月) 11:51:26
釣れた釣れたw
>>667 アブノーマルなやり方で攻めてやるから、ちょっと●ツ出せや?
670 :
デフォルトの名無しさん :2008/04/28(月) 13:08:15
商品番号860????、6000÷2の余り+1番の問題 ?には6000が入ります このプログラムはどう書けばいいですか?
671 :
デフォルトの名無しさん :2008/04/28(月) 13:25:03
672 :
473 :2008/04/28(月) 15:30:58
>>477 大変遅くなりましたが、迅速な回答ありがとうございました
次回からは気をつけさせていただきます
基本中の基本ですね、すいませんでした
日本語でおk
1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): char型,signed char型,int型,long int型,unsigned long int型, short int型,unsigned short int型の扱える値の範囲を表示させるプログラム [3] 環境 [3.1] OS:WinXP or Linux [3.2] コンパイラ名とバージョン:VC++9.0(win) or gcc(Linux) [3.3] 言語:C++ [4] 期限:[2008年04月30日12:50まで] [5] その他の制限:基本領域なのでstdio.hのみ 表示はprintf、入力はscanf関数のみ
stdio.hてlimit.h取り込んでるの?
678 :
657 :2008/04/28(月) 19:53:47
>>658 実行結果確認しました!
ありがとうございましたm(__)m
680 :
679 :2008/04/28(月) 23:49:20
あ、最後のmod忘れてた。 main関数の最後の方の printf("\nResult : %d\n", num); を、 printf("\nResult : %d\n", num%10000000); に書き換えておいてね。それじゃ、プロ演 頑張ってね!
681 :
デフォルトの名無しさん :2008/04/28(月) 23:51:06
int a=1; char b='1'; aかbのどっちがでいいのですが反転する方法ありますか? (0→1) 、(1→0)
a^=1; b=1-b;
int a=1; のほうなら a^=1; で出来ると思うよ
int a=1; if(a==1) a=0; else if(a==0) a=1;
ごめんかぶった。 char b='1'; なら b=((b-'0')^1)+'0'; なんてのは?
[1] 授業単元:Cプログラミング [2] 「2桁の数字を入力してください」という文を表示させ、38と入力すると「16進数にすると026です」と自動表示させる。 「3文字の略語(アルファベット)を入力してください」という文を表示させ、EOFと入力すると「逆順に表示するとFOEです」と自動表示されるように 次の丸に当てはまる語句を答えなさい void main(void) { char id1,id2,id3; printf("2桁の数字を入力してください;"); scanf("@",&A); printf("16進数にするとBです。\n",id1); printf("3文字の略語(アルファベット)を入力してください:"); scanf("C",&D); rewind(stdin); printf("逆順に表示するとEです。\n",id1,id2,id3); }
a^=1; a=1-a; b^=1; b=97-b;
688 :
686 :2008/04/28(月) 23:59:33
自分ではこう入力したんですけど、なぜかうまくいかないんです。 素人なのでほとんどわからなくて #include <stdio.h> void main(void) { char id1,id2,id3; printf("2桁の数字を入力してください;"); scanf("%d",&id1); printf("16進数にすると%xです。\n",id1); printf("3文字の略語(アルファベット)を入力してください:"); scanf("%d",&id1,id2,id3); rewind(stdin); printf("逆順に表示すると%dです。\n",id1,id2,id3); }
ちゃちゃ入れるだけならこのスレみなくていいよ
>>688 #include <stdio.h>
void main(void)
{
int d;
char s[4];
printf("2桁の数字を入力してください;");
scanf("%d",&d);
printf("16進数にすると%03xです。\n",d);
printf("3文字の略語(アルファベット)を入力してください:");
scanf("%3s",s);
rewind(stdin);
printf("逆順に表示すると%c%c%cです。\n",s[2],s[1],s[0]);
}
>>690 どこがダメなのかここまでヒント出してやってるのにちゃちゃにしか見えないのかw
>n2 = pow(2,n+1);
>n3 = pow(2,n);
nの範囲が1から1000でまともな数がn2とn3に入ると思うのか?
693 :
デフォルトの名無しさん :2008/04/29(火) 00:23:27
>>691 ご回答いただいたことは非常にありがたいのですが、
>>687 のような穴埋め形式の問題プリントが出たので、それだと府正解になってしまうんですよ
696 :
691 :2008/04/29(火) 01:16:13
>>694 すまん、穴埋めか。
void main(void)
{
char id1,id2,id3;
printf("2桁の数字を入力してください;");
scanf("%d",&id1);
printf("16進数にすると%03xです。\n",id1);
printf("3文字の略語(アルファベット)を入力してください:");
scanf("\n%c%c%c",&id3,&id2,&id1);
rewind(stdin);
printf("逆順に表示すると%c%c%cです。\n",id1,id2,id3);
}
と回答したいところなのだが、
うちの環境(VC++2008EE)では最初のscanfでメモリ壊しちゃうんだよな。
%dにはint型のアドレスを渡さないと。
>>698 最後にデバッグエラーが出ましたが、無事にできました。
親切なご回答をどうもありがとうございました
702 :
679 :2008/04/29(火) 09:44:13
703 :
デフォルトの名無しさん :2008/04/29(火) 10:00:55
s1=ab、n=1000ならば、個数は、2^n - 999*(2^(n-2)) ジャマイカ? 包含関係を除去しておけば、同じように引き算するだけでは?
割り算ならともかく、引き算じゃ個数は殆ど変わらないんじゃ…… あと、2^n - 999*(2^(n-2))だとマイナスになっちゃうよ。
705 :
デフォルトの名無しさん :2008/04/29(火) 11:18:11
***ab***という文字列を全体から除去したい訳です。 abが先頭から最後まで動けるのは999とおりあります。 ***の部分を任意の文字で埋めると2の(n-2)とおりあります。 でもこれだと重複する文字列がでまくりでした。それを外せば良いんです。
706 :
デフォルトの名無しさん :2008/04/29(火) 11:19:49
少なくとも、一回abを含む文字列は何通りか求めれば良いんです。
707 :
デフォルトの名無しさん :2008/04/29(火) 11:22:49
これは簡単でした。 aがあったら次にbが来ないやつ全体です。 aabbとかはどうすれば良いんでしょうか
[1] 授業単元: 数値解析 [2] 問題文: 複素行列のN×N逆行列を求めるプログラム。求めた逆行列はcsvで出力。複素数の出力はa+ibという形で。(a,bは実数) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC++ 6.0 [3.3] 言語: (C/C++/どちらでも可) [4] 期限: [5月1日12:50まで] [5] その他の制限: 動的配列は習っています。手法の制限はないです よろしくお願いしますm(_ _)m
710 :
デフォルトの名無しさん :2008/04/29(火) 15:28:02
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): ファイル名を入力し、Cドライブ配下にある同名のファイルを探して出力する。 なお、そのファイルがある場所のパスも出力する。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:VC++ 2005 [3.3] 言語: C/C++/どちらでも可 [4] 期限: 無期限 よろしくお願いします。
712 :
デフォルトの名無しさん :2008/04/29(火) 15:45:27
>>710 #include <string>
#include <iostream>
#include <vector>
#include <windows.h>
#include <stack>
using namespace std;
class dirdata{ public: string name; int n;};
main(){
string findstr;
cout<<"ファイル名を入力して下さい "; cin>>findstr;
stack <dirdata> dir; vector<string> path;
int N; dirdata x; WIN32_FIND_DATA fd; HANDLE hd=NULL;
x.name="c:\\"; x.n=1; dir.push(x);
while(1){
if(hd==NULL)goto fst;
if(!FindNextFile(hd, &fd)){
fst: CloseHandle(hd);
if(dir.empty()) return 0;
x=dir.top(); dir.pop();
N=x.n+1;path.resize(N);
path[N-1]=path[N-2]+x.name;
hd = FindFirstFile((path[N-1]+"*").c_str(), &fd);}
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
if(findstr==fd.cFileName)cout<<" PATH = "<< path[N-1]+fd.cFileName<<endl;}
else if(fd.cFileName[0]!='.' || ( fd.cFileName[1]!='.' && fd.cFileName[1]!='\0' ))
{x.name=(string)fd.cFileName+"\\"; x.n=N; dir.push( x );}}}
>>708 これはひどい。ピボッティングもしてない。毎日書いてないと駄目だな。
#include <stdio.h>
#define N 3
typedef struct{double r,i;}cpx;
cpx sub(cpx z1,cpx z2){return (cpx){z1.r-z2.r,z1.i+z2.i};}
cpx mul(cpx z1,cpx z2){return (cpx){z1.r*z2.r-z1.i*z2.i,z1.r*z2.i+z1.i*z2.r};}
cpx con(cpx z){return (cpx){z.r, -z.i};}
cpx div(cpx z1,cpx z2){
cpx tmp1=mul(z1,con(z2)),tmp2=mul(z2,con(z2));
return (cpx){tmp1.r/tmp2.r,tmp1.i/tmp2.r};
}
void hoge(cpx z[N][2*N]){
int i,j,k;
for(i=0;i<N;i++) for(j=0;j<N;j++) z[i][j+N]=(cpx){0,0};
for(i=0;i<N;i++) z[i][i+N]=(cpx){1,0};
for(i=0;i<N;i++){
cpx tmp1=z[i][i];
for(j=0;j<2*N;j++) z[i][j]=div(z[i][j],tmp1);
for(j=0;j<N;j++)
if(j!=i){
cpx tmp2=div(z[j][i],z[i][i]);
for(k=0;k<2*N;k++) z[j][k]=sub(z[j][k],mul(z[i][k],tmp2));
}
}
}
int main(void){
cpx z[N][2*N];
int i, j;
for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%lf%lf",&z[i][j].r,&z[i][j].i);
for(hoge(z),i=0;i<N;i++,putchar('\n')) for(j=N;j<2*N;j++) printf("%g+%gi ",z[i][j].r,z[i][j].i);
return 0;
}
714 :
デフォルトの名無しさん :2008/04/29(火) 15:47:18
>>710 再帰を使っていない為、コードは面倒、長めになるけど速度は良いと思う。
715 :
デフォルトの名無しさん :2008/04/29(火) 15:54:08
>>710 こっちのほうが見やすい
#include <string>
#include <iostream>
#include <vector>
#include <windows.h>
#include <stack>
using namespace std;
class dirdata{ public: string name; int n;};
main(){
string findstr,s;
cout<<"ファイル名を入力して下さい "; cin>>findstr;
stack <dirdata> dir; vector<string> path;
int N; dirdata x; WIN32_FIND_DATA fd; HANDLE hd=NULL;
x.name="C:\\"; x.n=1; dir.push(x);
while(1){
if(hd==NULL)goto fst;
if(!FindNextFile(hd, &fd)){
fst: CloseHandle(hd);
if(dir.empty()) return 0;
x=dir.top(); dir.pop();
N=x.n+1;path.resize(N);
path[N-1]=path[N-2]+x.name;
hd = FindFirstFile((path[N-1]+"*").c_str(), &fd);}
s=fd.cFileName;
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
if(findstr==s)cout<<" PATH = "<< path[N-1]+s<<endl;}
else if(s[0]!='.' || ( s[1]!='.' && s[1]!='\0' ))
{x.name=s+"\\"; x.n=N; dir.push( x );}}}
スレが見辛い・・・
system("dir /b /s c:\\ファイル名"); でいいだろ?常識で考えて
systemは外道だろ
[1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):WinAPIのwaveOutGetPositionを使用して、非同期で再生中のwavの再生位置を取得する最低限のプログラムを作成しなさい [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: borlandC++5.5.1 [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限:コンソールアプリケーション(int main(void)関数)で作成する事 5秒毎に再生位置を取得し、コンソールへ「X秒経過」と表示させる事 wavファイルは各自用意し、再生させるファイル名は#define FILENAME "ファイル名.wav"とする事 再生終了後は「再生終了」と表示しgetchar();で待機する事 ポインタ変数は使用しない事 よろしくおねがいします
720 :
710 :2008/04/29(火) 19:25:08
書き込み遅くなり申し訳ありません
>>711 使わないで出来れば使わない方が良いかと思います
>>712 、714、715
ありがとうございます!!!!
721 :
デフォルトの名無しさん :2008/04/29(火) 22:41:15
[1] 授業単元: [2] 問題文(含コード&リンク):キーボードから30個の配列に少数を代入し、それらを小さい順に並び替え、その結果をモニタに出力するプログラムを作成せよ。このソートの問題は、バブルソートで実施し、連続する2数の交換はmain以外の関数swapで実施せよ。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005 [3.3] 言語: (C) [4] 期限: (4月30日夜まで)
724 :
デフォルトの名無しさん :2008/04/29(火) 23:10:27
>>710 #include<io.h>
char p[260]="c:\\",t[260];s(){struct _finddata_t f;char*n=f.name;int h,l=strlen(p);
if(~(h=_findfirst(strcat(p,"*.*"),&f)))do f.attrib&16&&strcmp(n,".")&&strcmp(n,"..")
&&strcat(strcpy(p+l,n),"\\")&&s(),strcmp(n,t)||printf("%.*s%s\n",l,p,t);
while(!_findnext(h,&f)||_findclose(h));}main(){scanf("%s",t);s();}
726 :
デフォルトの名無しさん :2008/04/30(水) 01:41:03
[1] 授業単元:情報実験第一 [2] 問題文:配列の全要素の最大公約数を求める関数 gcdary を実装 せよ。また、要素数が n である配列に自然数 n 個を読み込み、関数 gcdary を用いてそれらの最大公約数を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Borland C++ Compiler5.5 [3.3] 言語:C [4] 期限:2008年5月1日15:00まで [5] その他の制限:まだ配列、関数の定義程度までしかやってません ホントに基礎からよくわかりません お願いします
727 :
デフォルトの名無しさん :2008/04/30(水) 01:52:31
すいません 726なんですがおそらく使用するヘッダはstdio.hだけです
>>726 関数の定義までしてるなら後は呼び出すコードを書くだけじゃないか。
>>726 便乗で非再帰。簡単なものしか書けない自分に絶望。
#include <stdio.h>
#define N 100
int gcd(int num1, int num2){
int tmp;
while(num2 != 0){
tmp = num1%num2;
num1 = num2;
num2 = tmp;
}
return num1;
}
int gcdary(int *a, int n){
int i, ret = a[0];
for(i = 1; i < n; i++)
ret = gcd(ret, a[i]);
return ret;
}
int main(void){
int a[N], n;
for(n = 0; n < N; n++)
if(scanf("%d", &a[n]) != 1)
break;
printf("gcd : %d\n", gcdary(a, n));
return 0;
}
731 :
デフォルトの名無しさん :2008/04/30(水) 02:43:15
>>728-730 ありがとうございます!
何とか理解できてきたので参考にさせていただきますm(__)m
732 :
デフォルトの名無しさん :2008/04/30(水) 15:14:03
733 :
デフォルトの名無しさん :2008/04/30(水) 19:48:45
VC++って数値か文字か判定する便利関数ないの? DELPHIはあるのに。 作らなきゃダメなのか…
734 :
デフォルトの名無しさん :2008/04/30(水) 20:19:16
文字列をコピーする関数を作成せよという問題が出て、 下のように回答したら×を付けられました。 void x_strcpy(char *dst, const char *src) { do { *dst = *src; } while (*src++ != '\0'); } 教授からの指摘は、次のとおりです。 「*src が '\0' を評価した後に ++ されて src の領域外に出ている。アクセス違反が起きる」 ポインタによる領域外の値は、その領域への参照(評価時など含む)、または書き込みしなければ無害ですよね? char *s = "abc"; として s += 10000; としても、s を参照(評価)、書き込みしなければ問題ないですよね?
dstがインクリメントされてない方がきになる
736 :
デフォルトの名無しさん :2008/04/30(水) 20:28:30
>>735 さん。
>>734 です。
>dstがインクリメントされてない方がきになる
すみません。投稿ミスです。
★再掲載。
文字列をコピーする関数を作成せよという問題が出て、
下のように回答したら×を付けられました。
void x_strcpy(char *dst, const char *src)
{
do {
*dst++ = *src;
} while (*src++ != '\0');
}
教授からの指摘は、次のとおりです。
「*src が '\0' を評価した後に ++ されて src の領域外に出ている。アクセス違反が起きる」
ポインタによる領域外の値は、その領域への参照(評価時など含む)、または書き込みしなければ無害ですよね?
char *s = "abc"; として
s += 10000; としても、s を参照(評価)、書き込みしなければ問題ないですよね?
はあ?
すまん勘違い
>>733 Delphiの何のことなのかを添えて質問系のスレで聞けば回答が来ると思うよ。
潔くてよろしい、10点あげる
>>736 その教授の論だとよく使われる
while(*dst++=*src++);
もアクセス違反になるのかよw
src範囲外にアクセスしないことが明白なら問題ないだろ。
>>736 少なくとも標準規格では、ポインタが
配列の最後の要素の次を指すのは問題ないとなっている。
(もちろんそこから逆参照しない限り)
それ以外の外れた場所を指すポインタはまずかったはずだが、
未定義だか処理系依存だかまでは覚えていない。
教授に「後学のため、実際に問題になった例を教えてください」とでも詰め寄れ
746 :
デフォルトの名無しさん :2008/04/30(水) 21:17:36
>>743 さん。
>>736 です。
>その教授の論だとよく使われる
>while(*dst++=*src++);
>もアクセス違反になるのかよw
>src範囲外にアクセスしないことが明白なら問題ないだろ。
上のように書いた生徒も×を貰っていました。
理由は同じく、'\0'を評価したあとにポインタが範囲外を指している。アクセス違反が起きる。
void x_strcpy(char *dst, const char *src)
{
do {
*dst++ = *src;
} while (*src++ != '\0');
}
src が "hello" で dst のサイズが 6 * sizeof(char) のときでも
while(*dst++=*src++); のあとに *dst にアクセスしなければ問題ないコードですよね?
そんな教授は大学に抗議してクビにさせろ
748 :
デフォルトの名無しさん :2008/04/30(水) 21:35:49
>>747 さん。
>>736 です。
教授のホームページには
世の中の while(*dst++=*src++); は間違いであると書いてあります。
指摘してみます。
>教授からの指摘は、次のとおりです。 >「*src が '\0' を評価した後に ++ されて src の領域外に出ている。アクセス違反が起きる」 領域外を指している状態、と、アクセス違反が起きること、は等しくないと説明してやれよw 領域外を指している状態で何か書き込めば別だがな 上記の例ではありえないだろ
750 :
デフォルトの名無しさん :2008/04/30(水) 21:38:50
>>748 >>744 氏の言う通り、攻め所は「Cの規格で最後の要素の次の要素を指す
ポインタの存在は認められている」だな
ちゃんと○をもらって報告するように
752 :
デフォルトの名無しさん :2008/04/30(水) 21:43:34
ヌルぽの時代が終わって次は教授の時代だな。
753 :
デフォルトの名無しさん :2008/04/30(水) 21:46:45
>>744 さん。
>>751 さん。
>>736 です。
ありがとうございます。
>
>>744 氏の言う通り、攻め所は「Cの規格で最後の要素の次の要素を指す
> ポインタの存在は認められている」だな
C言語の規格書を検索していましたが有償なんですね。。。
その瞬間は参照しなくても、将来そのコードを再利用・保守する自分or他人がうっかり参照するかもしれない。 それ自体はバグじゃなくても、将来のバグを誘発or拡大する可能性のあるコードは避けるべきだ。 ・・・という主張なんだろう。 考え方としては重要だけど、 オブジェクト指向が浸透した今となってはちょっと神経質すぎるなw この関数に関して上記みたいな問題が起きたら、 わざわざ人が作った関数分解して変なバグ埋め込んだお前が悪い、ってことになるだけだし。
あった。ANSIやISOにも同じ規定があるはず。 JIS X3010:2003 6.5.6 加減演算子 …… さらに,式Pが配列要素の最後の要素を指す場合, 式(P)+1はその配列オブジェクトの最後の要素を一つ超えたところを指し, 式Qが配列オブジェクトの最後の要素を1つ超えたところを指す場合, 式(Q)-1はその配列オブジェクトの最後の要素を指す。 ……
757 :
デフォルトの名無しさん :2008/04/30(水) 21:50:20
>>755 > 要は、EOFはもうそれ以上入力がないということを示す
なんでそんな偉そうなんだか正直分からない。
天下の大学教授にいちゃもんつけるとはキチガイ丸出しだなw
ナンバーサインは自分が確信を持ったことに対しては # 偉そうに答えるからです
760 :
デフォルトの名無しさん :2008/04/30(水) 21:52:36
>>758 C言語のことに関しては、
大学教授よりCの委員会の中の人のほうが偉いのです。
大学教授の大抵は社会性ゼロだから、たまにガツンといってやらんと
764 :
デフォルトの名無しさん :2008/04/30(水) 21:56:40
765 :
デフォルトの名無しさん :2008/04/30(水) 22:00:07
767 :
デフォルトの名無しさん :2008/04/30(水) 22:05:00
しかしこいつ、規格の読み方もわからんのに何でJISなんて持ちだすんだろ。 不思議だ。
768 :
758 :2008/04/30(水) 22:06:44
Iteratorでpast-end を使うってC/C++基本中の基本だが、
天下の教授にいちゃもんつけようとする
>>764 は単位取れないなw
高脳は正しいと判ってても我を通さずにうまくやるが、低脳は猪突猛進だからな
なっ、なんですか、あなた達は!?高学歴の私が英語のことに対して 何か間違ったんですか?英語ではコロン、セミコロン、ピリオドの上限関係は 決まってんだYO! # お前ら日本人に英語は似つかないぜ?ハーフの俺だけにしとけ、 # このスレで英語について語るのは、な?
たとえばintの配列を表示するとき for(i=0; i<sizeof a / sizeof(int); i++) printf("%d ", a[i]); とか書くじゃない? その教授の論法で言うなら、ループ終了時のiの値は配列外をさすからアクセス違反で禁止 しなければいけなくなると思うんだけど、そういう点はどう考えてるんだろ。
...微妙にスレ(板?)を間違ってるコメントが混じってるなw >教授のホームページには >世の中の while(*dst++=*src++); は間違いであると書いてあります。 工学のため、そのページを教えてください
>770 その例だとちょっと違うのでは? int *p=&a[0]; for(i=0; i<sizeof a / sizeof(int); i++,p++) printf("%d ", *p); じゃね?
773 :
デフォルトの名無しさん :2008/04/30(水) 22:29:35
>>768 外から凸できる手段があれば、764に代わって凸してもいいんだが。
775 :
デフォルトの名無しさん :2008/04/30(水) 22:34:58
乱数って例えば、1と2と5しか発生しないようには出来ますかね?
1,2,5の配列作って添え字を乱数で得れば?
pow(rand()%3, 2) + 1;
rnd[] = {1,2,5}; num = rnd[rand()%3];
>775 0,1,2の乱数で場合わけ白よ
>>444 ,
>>445 遅くなりましたが、細かい指摘ありがとうございました。そして質問です。
[1] 授業単元:Cプログラミング言語(修正
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6389.txt [3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:CPad for Borland
[3.3] 言語: (C)
[4] 期限:5/01まで
[5] その他の制限:
入力はgetcharで行い、バブルソートについてはstrcpyなど使用。
@先ほどの方に解いていただいた問題で、右シフトのことなど忘れていたので、
いじらさせてもらったのですが、このやり方だとなぜか左シフトのときに
unsignedの中を飛び出しているようで、255以上の数字と16進が表示されてしまってます。
自分にはよくわからないのですが、どうすればよいでしょうか;
Aこちらも前に質問させていただいたものなのですが、Aのプログラムを
fgetsではなく、文字数制限のないgetcharで表すにはどうすればいいでしょうか?
Bこちらも少し前に質問させていただいたのですが、クイックソートではダメと言われ
クイックソートをバブルソートに変えようと思うのですが、どのようにすればよいでしょうか?
修正ばかりで期限も明日までという問題ですが、よろしくお願いします。
>>780 Bについて
バブルソートの関数作ればいいんじゃね?
誰かこの問題を教えて貰えませんか? よろしくお願いします。 [1] 授業単元:C言語 [2] 問題文: AとBとCの「合計」、「平均」、「%」を表示させなさい A=20.8 B=10.4 C=5.2 合計(?) 平均(?) Aは全体の?%です Bは全体の?%です Cは全体の?%です [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual stdio 2005 [3.3] 言語: (C言語) [4] 期限:無期限 [5] その他の制限:(C言語検定3級程度しか習ってません)
784 :
デフォルトの名無しさん :2008/05/01(木) 00:00:58
[1] 授業単元:構造体変数を使ったデータの入れ替え [2] 問題文: 5日分の気温データ(月・日・最高気温・最低気温)を入力し、 最高気温の高い順に並び替えるプログラムを作成せよ。 [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン: [3.3] 言語:C++ [4] 期限:2008年5月1日22:00まで [5] その他の制限: 教授から出されたヒント ・並べ替え(ソート)の方法はいろいろあるが、バブルソートが簡単 ・バブルソートの基本は、「比較」「交換」の2重ループ たぶんこんなのを使います(+_+)↓ #include <iostream.h> struct PersonalData{ int month ; // 月 int day ; // 日 double high ; // 最高気温 double low ; // 最低気温 }; よろしくお願いします(:_;)
>>783 全部一気には書き込めないので3回に分けます
#include <stdio.h>
#define _A 20.8
#define _B 10.4
#define _C 5.2
#define NUM 3
void CalculateTotal( double a, double b, double c, double *pTotal );
void CalculateAverage( double total,int num, double *pAverage );
void CalculateRatio( double total, double rate, double *pRatio );
int main( void ) { /* まずはベースとなる3つの小数の宣言 */ double A = _A; double B = _B; double C = _C; /* 回答を入れるための変数を宣言しておく */ double total = 0; double average = 0; double ratioA = 0; double ratioB = 0; double ratioC = 0; /* 合計の計算 */ CalculateTotal( A, B, C, &total ); /* 平均の計算 */ CalculateAverage( total, NUM, &average ); /* Aの割合の計算 */ CalculateRatio( total, A, &ratioA ); /* Bの割合の計算 */ CalculateRatio( total, B, &ratioB ); /* Cの割合の計算 */ CalculateRatio( total, C, &ratioC ); /* ここに好きな出力文を入れてください */ return( 0 ); }
787 :
最後 :2008/05/01(木) 00:09:16
/* 合計を求める関数 */ void CalculateTotal( double a, double b, double c, double *pTotal ) { *pTotal = a + b + c; } /* 平均を求める関数 */ void CalculateAverage( double total, int num, double *pAverage ) { *pAverage = total / num; } /* 第二引数が第一引数に占める割合を求める関数 */ void CalculateRatio( double total, double rate, double *pRatio ) { *pRatio = ( rate / total ) * 100; } /* なんか勘違いしてるようなら教えてね */
>>783 #include <stdio.h>
int main(void)
{
int i;
double a[3], sum = 0;
for(i=0; i<3; i++) {
printf("%c=", 'A' + i);
scanf("%lf", a+i);
sum += a[i];
}
printf("合計%f\n平均%f\n", sum, sum / 3);
for(i=0; i<3; i++) printf("%cは全体の%.2f%です\n", 'A' + i, a[i]*100/sum);
return 0;
}
>>780 @配列に格納しろと言っておきながら、配列つかってねぇーじゃん。
なにこれ?
必要な冗長性ってのもあるよね
791 :
780 :2008/05/01(木) 00:40:50
>>782 その今のプログラムからのバブルソートの作り方がよくわからなくて;
>>789 char型「変数」でしたね、失礼しました。
>>768 んー、そうでしょうかね。やっぱり、そうでしょうね。
>>764 はここで不明点を解消できたので、
あとは、教授の人柄を見極めた上での対応が求められますね。これは結構難易度の高い問題ですね。
>>780 Aどこかで見たことあると思ったらおれ作ったやつだ
なんか改悪されてるんで他の人よろしく
あと、fgets嫌いならはじめ出題するときからgetcharのみってすりゃ手戻りしないのに
>>780 B
この関数を追加して、
void bubble_sort( char name[][NAME_LEN + 1], int num )
{
int i, j;
char t[NAME_LEN + 1];
for( i = 0 ; i < num-1 ; i ++ )
for( j = i+1 ; j < num ; j ++ )
if( strcmp( name[i], name[j] ) > 0 )
{
strcpy( t, name[i] );
strcpy( name[i], name[j] );
strcpy( name[j], t );
}
}
mainの中から呼ぶように。
// ソート
bubble_sort( name, num );
//qsort( name, num, sizeof(*name), strcmp );
795 :
デフォルトの名無しさん :2008/05/01(木) 02:23:35
[1] 授業単元: [2] 問題文(含コード&リンク):数字を5個入力し、最後に入力した数から順に出力するプログラムを作れ。 (入力時、出力時両方に配列とfor文(while文でもよい)による繰り返しを使うこと) [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005 [3.3] 言語: (C) [4] 期限: (5月1日夜まで)
>>795 スタックとか指定ないよね?
#include <stdio.h>
#define N 5
int main(void)
{
int i;
int num[5];
for(i=0;i<N;i++){
printf("数値
%d入力>",i+1);
scanf("%d",&num[i]);
}
printf("\n");
for(i=N-1;i>=0;i--){
printf("数値%d:%d\n",i+1,num[i]);
}
return 0;
}
797 :
796 :2008/05/01(木) 02:31:37
>>780 @ 前スレ913,936,955のちょこっと改造版
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void binary(unsigned char n, char *s) { int i; for (i = 0; i < 8; i++) { *s = (n & 0x80) ? '1' : '0'; s++; n <<= 1; } *s = '\0'; }
void print(unsigned char n) { char b[9]; binary(n, b); printf("%3d, %02x, %s\n", n, n, b); }
void _gets(char *s, int size) { int c; while ((c = getchar()) != '\n') { if (size > 1) { if (!isdigit(c)) { puts("エラー"); exit(0); } *s++ = c; size--; } } *s = '\0'; }
void main() { char s[4]; unsigned char n; _gets(s, sizeof(s)); if (s[0] == '\0') { puts("エラー"); exit(0); } n = atoi(s); if (n < 0 || n > 255) { puts("エラー"); exit(0); } print(n); print(n << 1); print(n >> 1); print(~n); }
799 :
デフォルトの名無しさん :2008/05/01(木) 04:54:45
796さんありがとうございました。ほんとに助かります。
800 :
デフォルトの名無しさん :2008/05/01(木) 05:06:20
[1] 授業単元: [2] 問題文(含コード&リンク):乱数で値を設定し、その数を当てる簡単なゲームを作れ。 コンピュータが乱数で答えを設定し、人間がその数を当てる。 数字を入力すると、答えが入力した数より大きいか、小さいかを ヒントとして出力し、正解が出るまで繰り返す。 答えの数の範囲は各自設定すること。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005 [3.3] 言語: (C) [4] 期限: (5月1日夜まで)
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int n, ans; srand(time(NULL)); ans = rand() % 100 + 1; while(1) { printf("input number(1-100):"); scanf("%d", &n); if(n < ans) printf("too small.\n"); else if(n > ans) printf("too big.\n"); else break; } printf("correct!\n"); return 0; }
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6391.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5月6日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
できるだけ簡単なもので・・。
全部じゃなくても構いません。できるだけでいいのでよろしくお願いします。
>>713 さんありがとうございました。助かりました。
804 :
デフォルトの名無しさん :2008/05/01(木) 16:44:35
[1] 授業単元: [2] 宅急便の料金が次の様に決まっているとき、 金額計算をするプログラムを作れ。 (何を入力、出力とするかは各自で考えること。 入力待ちの時には適切なメッセージを表示すること。) 縦横奥行きの合計が60cm以内で、かつ重量が 2kg 以下の時 800円 縦横奥行きの合計が80cm以内で、かつ重量が 5kg 以下の時 1100円 縦横奥行きの合計が120cm以内で、かつ重量が 15kg 以下の時 1500円 お急ぎ便の場合は 500円加算される。 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: Microsoft Visual Stdio2005 [3.3] 言語: (C) [4] 期限: (5月1日夜まで)
[1] 授業単元: ガソリン値下げ隊 [2] 問題文(含コード&リンク):セルフで暫定税率前の価格で購入できる精算機を作れ [3] 環境 [3.1] OS: 精算機 [3.2] コンパイラ名とバージョン: 給油ノズル [3.3] 言語: ジャパニーズ [4] 期限: 5月1日0時まで
>>804 #include <stdio.h>
int main(void)
{
int size, weight, price;
char ch;
printf("縦横奥行きの合計を入力してください(cm):");
scanf("%d", &size);
printf("重量を入力してください(kg):");
scanf("%d", &weight);
if(size > 120 || weight > 15) {
printf("お取り扱いできません\n");
return 0;
}
else if(size > 80 || weight > 5) price = 1500;
else if(size > 60 || weight > 2) price = 1100;
else price = 800;
printf("お急ぎ便ですか?(YorN)");
scanf(" %c", &ch);
if(ch=='Y'||ch=='y') price += 500;
printf("料金は%d円です\n", price);
return 0;
}
>806 "YorN"って言ってんだからちゃんと判断しろよw (N以外でスルーすんな)
>806 サイズや重量が0でも料金計算していいのかYO! (if文の判定順を逆にすんな)
どうでもいい
>(if文の判定順を逆にすんな) どゆこと?
ナンバーサインの次は括弧かよ・・・かっこわりぃ〜 なんつって
812 :
デフォルトの名無しさん :2008/05/01(木) 17:44:05
Yes or No で Yes 以外は無効とするやり方なんて、前々から普通にあったけどな。 そうガミガミするなって。やるならやる、その意思表示がされないなら無しとする、そうだろ?
相手にするな
GUIな人にはそれがわからんのですよ...
>>802 【課題1】
int rn(int x) { return (48109 * x + 2531011) % 32768; }
>2 つの一様乱数x, y(但し、ともに0 以上1 未満の実数)
どうせ同じ事だし…だめ?
820 :
817 :2008/05/01(木) 18:40:34
821 :
ベーコン :2008/05/01(木) 19:59:22
[1] 授業単元:プログラミング演習 [2] 問題文:a〜zで構成されたランダムな文字列がファイルに書かれてある。 この文字列の中から任意の文字列を検索するプログラムを作成し、以下の問いに答えよ。 1.programという文字列は何個あるか。 2.以下の文字は、それぞれ何行目の何番目の文字から始まるか。 university, puroguramingu, など。 ※ファイルはテキストファイルで与えられており、中身は本当に適当にa〜zを 並べられたもので、画面いっぱいみっちりとアルファベットで埋めてあります。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C [4] 期限:20年5月10日まで [5] その他の制限:なし よろしくお願いします。
どれ、下民がBM法を実装する様でも眺めるとするか
できない人は黙っててw
知らないならレスしないでください
>>822 >>824 うぜーよお前、別スレで言い負けして悔しいのぅ悔しいのぅ
コピペに反応して、EOFに関してナンバーサインに加担してたアホw
826 :
◆mt9EVUH7Ww :2008/05/01(木) 20:30:02
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
↓以下URLを参照して下さい。
http://foghorn.cadlab.lafayette.edu/cadapplets/MazeRouter.html Maze Router:ある2端子を入力して配線経路を導く配線アルゴリズム
を作成せよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Microsoft .NET Framework SDK
[3.3] 言語: C言語
[4] 期限: 2008年5月10日
[5] その他の制限:できるだけ簡単なもので・・。
ご多忙中のところお手数おかけします。
以上、宜しくお願い致します。
827 :
デフォルトの名無しさん :2008/05/01(木) 20:30:42
以前ここで 「速度と距離の入力して時間を求めるプログラミング」を聞いたものですが 言語がc++じゃなくcでした。 自分なりにやってみたのですがわかりません。 #include <stdio.h> int main (void) { int v,d; /* v=velocity,d=distance;*/ puts("速度と距離を入力してください。"); printf("速度[km/h]:"); scanf("%d, &v); printf("速度[km]:"); scanf("%d, &d); 〜時間〜分という表示のさせかたがわかりません。 教えてください。
829 :
デフォルトの名無しさん :2008/05/01(木) 20:49:57
>>827 printf("%d時間%d分", d / v, d % v * 60 / v);
832 :
デフォルトの名無しさん :2008/05/01(木) 21:01:10
>>829 本当にありがとうございました。
助かりました!
833 :
822 :2008/05/01(木) 21:06:48
>>821 ごめん。途中でめんどくさくなった。
#include <stdio.h>
#include <string.h>
#include <limits.h>
static int table[UCHAR_MAX + 1];
void maketable(const char *ptn){
int i, len = strlen(ptn);
for(i = 0; i < UCHAR_MAX; i++) table[i] = len;
for(i = 0; i < len; i++) table[(int)ptn[i]] = --len;
}
char *bm(const char *str, const char *ptn){
int i, j, k, slen = strlen(str), plen = strlen(ptn);
for(i = 0; i <= slen - plen; i++){
for(j = plen - 1; j >= 0; j--) if(str[i + j] != ptn[j]) break;
f(j == -1) return (char*)(str + i);
i += table[(int)str[i + j]] - 1;
}
return NULL;
}
int main(int argc, char *argv[]){
FILE *fp;
int cnt = 0, plen;
char buf[2048], ptn[] = "program", *p = buf;
if(argc < 2 || (fp = fopen(argv[1], "r")) == NULL) return 1;
fgets(buf, sizeof(buf), fp);
fclose(fp);
maketable(ptn);
while((p = bm(p, ptn)) != NULL) puts(p), p++, cnt++;
printf("cnt: %d\n", cnt);
return 0;
}
835 :
デフォルトの名無しさん :2008/05/01(木) 21:28:05
はじめまして。大学2年生です。 プログラミングの授業の中で課題が解けませんでした。 [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1000個までの整数あるいは小数を打ち込み、 その平均と標準偏差を表示することのできるプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Microsoft Microsoft Visual Studio .NET 2003 [3.3] 言語:C言語 [4] 期限:[2008年5月8日hh:5まで] [5] その他の制限:特になし よろしくお願いします。 お手数かけまして、すいません。
>>835 #include <stdio.h>
#include <math.h>
#define MAX_COUNT 1000
double average(double values[], int count);
double stdevp(double values[], int count);
int main(int argc, char *argv) {
int count = 0;
double values[MAX_COUNT];
while (fscanf(stdin, "%lf", &values[count]) != EOF) {
count++;
if (count == MAX_COUNT) {
break;
}
}
printf("Average = %lf\n", average(values, count));
printf("Std.Dev. = %lf\n", stdevp(values, count));
return 0;
}
837 :
836 :2008/05/01(木) 22:43:25
double average(double values[], int count) { double sum = 0; int i; for (i = 0; i < count; i++) { sum += values[i]; } return sum / count; } double stdevp(double values[], int count) { double avg = 0; // 平均 double dev = 0; // 偏差 double sum = 0; // 偏差の2乗の和 double var = 0; // 分散 int i; avg = average(values, count); for (i = 0; i < count; i++) { dev = values[i] - avg; sum += dev * dev; } var = sum / count; return sqrt(var); }
838 :
836 :2008/05/01(木) 22:45:54
>>835 gccで動いた。VS向けにいじってくれ。
>>835 #include <stdio.h>
#include <math.h>
#define N 1000
int main(void)
{
double d, a, s = 0, ss = 0, sigma;
int i;
for(i=0; i<N; i++) {
scanf("%lf", &d);
s += d;
ss += d * d;
}
a = s / N;
sigma = sqrt((ss - a*s)/N);
printf("平均%f\n標準偏差%f\n", a, sigma);
return 0;
}
うpロダ使えYO! ('A`)
843 :
780 :2008/05/01(木) 23:43:22
>>793 問題文の方にはなかったのですが、getcharに直せと言われてしまったのです;
>>794 うまく直せました、ありがとうございます。
>>798 わざわざ作っていただいたのに申し訳ありません;
制限の方にatoi、gets不可と書くのを忘れていました。
こちらの不手際ですのでスルーしていただいて構いません;
それでは期日が本日中なので、
もし余裕のある方がいれば
>>780 の@・Aをよろしくお願いします
[5.2] その他の制限:
入力はgetcharで行い、atoi,gets,fgets,scanfは不可。
後8分。学校のサーバーか何かに、時間までに提出するのかな? まぁ、後だし後だしはダメぽよ。自分でその辺は修正できるんじゃないの? 所詮、入力受付の形式なんだから。
[1] 授業単元: プログラミング演習基礎 [2] 問題文(含コード&リンク):ある数が偶数であったら2で割る,奇数であったら3倍して1を足す. この処理を求めた答えに対して繰り返し実行すると,最終的に答えが1となる. この処理を繰り返し実行し,答えが1になった時点で処理を停止する関数を作成し, 10までの範囲でもっとも繰り返し回数が多かった数と繰り返し回数を出力するプログラム を作成しなさい. [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:cygdrive [3.3] 言語:C言語 [4] 期限:[2008年5月4日まで] [5] その他の制限:特になし 自分である程度作りましたが、うまくでません。 どなたか修正お願いします。 以下プログラム
846 :
845 :2008/05/02(金) 00:34:51
#include <stdio.h> int main(void) { int no, n2; for (no = 2; no <= 10; no++) { unsigned long counter = 0; n2=no; while( n2 != 1 && n2 >= no){ counter++; /*偶数*/ if( n2 % 2 == 0 ) { /* 偶数なら2で割る */ n2 /= 2; } /*奇数*/ else{ if( n2 % 2 != 0 ){ n2 = n2*3+1; } } } printf("%d no keisan kaisuu ha %lu desu\n", no,counter); } return 0; }
>>845 #include <stdio.h>
int f(int n)
{
int i;
for(i=0; n!=1; i++) {
if(n&1) n = n * 3 + 1;
else n >>= 1;
}
return i;
}
int main(void)
{
int i, max, imax;
max = f(1);
imax = 1;
for(i=2; i<=10; i++) {
int temp = f(i);
if(temp > max) {
max = temp;
imax = i;
}
}
printf("もっとも回数が多いのは%dで%d回\n", imax, max);
return 0;
}
while (n2 != 1 && n2 >= no) が、明らかにおかしい。
だからいい加減、うpロダ使えYO! ('A`)
アップローダー使う使わないは当人の自由でお前が決めることじゃない
>>851 使えない低レベルが必死にくだらない抵抗かよw 必死だなw 惨めだなw
お前何者だ?このスレの主?管理者?何偉そうに?汚いゴミクソース書いて
低レベルっぷりをさらして偉そうにしてんじゃねーよカスw
どうせお前あれだろ、EOF議論で負けたクズw
>>1 > 気に入らない質問やその他や発言はスルーの方向で。
> 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
日本語が読めない奴って、ほんっと困るよな。
管理者でもないのにうpロダ使えって言うほうがクズだろw
EOFで負けたのってお前の方だろwww
本人だけはいつでも勝ってるつもりのヤツにまともな議論なんかできないよ。
848程度のソースだったらいちいちあげる必要もないと思うが 大して長くもないし、内容も難しいわけじゃないし
>>860 本人だけはいつでも正しいつもりのヤツなんで、勘弁してやってください。
お前らにはEOFよりEOLが似合ってるよ 人生の終演へどうぞ goto EOL
>>858 あっ、バカが釣れましたwwwwwwww
EOFがキーボードから入力でない、お前にとって入力って何?発言低レベル乙w
いつまで引きずってんのぉ〜、負け犬ポチ?w
>>860 いや、だからそれが主観的な意見ってことだろ?あれを使わなきゃいけないって
話でもない。が、間違った、訂正だの、連発されると質問の書き込みが流れる。
まぁ、このスレに2年以上前から来ているが、さすがに出尽くした議論なんで
あとは適当に使って下さいなと。
主観的っていうならアプロダ使えってのも主観的だろ? しかも、実際に解答してる人間に対して文句つけるだけでレス流してるし。
>>865 すいません、彼はちょっとでも自分が否定されると見境がなくなる低能なんです
>>1 > 気に入らない質問やその他や発言はスルーの方向で。
> 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
日本語が読めない奴が多いのかよ、このスレは・・・レベルが低いなぁ・・・人間性に於いても。
そういや、自分が間違っていても、維持でも認めようとせずに噛み付いてきた奴
大学生時代にもいたっけなぁ・・・あまりにみっともなかったんで、もう間違っていても
あぁ〜はいはい、お前が正しいですよで、自分が間違っていたことで済ませたよ。
もちろん、こちらが提示したのは紛れもなく揺ぎ無い事実、あるいは標準化などを参照にした
事実だったのにも関わらず・・・
このスレでもそうやって済ませてくれると助かる
>>865 > しかも、実際に解答してる人間に対して文句つけるだけでレス流してるし。
お前が言うなよ・・・よくこういうことがいえるよな、基地外って
>>867 お前もだろ。低能とか、完全に議論で負けてファビョった方だろ?gdgd言ってねーで
とっとと宿題に答えろよ?あと
>>1 読め。俺はしばらくROMってる。
どうせ答えがなきゃ困るのは質問者。答えてクソースを出して恥をかくのは回答者。
そして俺はそのアイデアを盗むと。アディオース。
>>870 反論として成り立ってないように見えるのは、おれが低能だからだろうか?
なんだかんだ言って
>>870 が頭痛いでFA、長文で流してるし
874 :
780 :2008/05/02(金) 02:34:24
>>844 今日中というのは明日の朝一までのことでした。
自分には入力形式1つ変えるのでも、変えたあとの周りの修正がわからないので;
875 :
845 :2008/05/02(金) 02:53:42
>>848 ありがとうございます。
参考にまりましたが、
プログラムの構造がよく分かりません。
#include <stdio.h>
int main(void)
{
int no, n2;
for (no = 1; no <= 6200; no++) {
unsigned long counter = 0;
n2=no;
while( n2 != 1 && n2 >=1){
counter++;
/*偶数*/
if( n2 % 2 == 0 ) {
/* 偶数なら2で割る */
n2 /= 2;
}
/*奇数*/
else{
if( n2 % 2 != 0 ){
n2 = n2*3+1;
}
}
}
printf("%d no keisan kaisuu ha %lu desu\n", no,counter);
}
return 0;
}
から課題どうりに作ることはできませんでしょうか?きちんと理解したいので・・・
>>845 スレ違いだけど一応教えておいてやる
それ数論で未解決の問題だ
「コラッツ予想 プログラム」でググルとかなり他人のをあされるかと思う
>>875 >for (no = 1; no <= 6200; no++) {
なにこの6200って
878 :
845 :2008/05/02(金) 03:00:26
>>877 すみません。
6200ではなく10でした。
879 :
デフォルトの名無しさん :2008/05/02(金) 03:06:03
test
880 :
デフォルトの名無しさん :2008/05/02(金) 03:14:48
881 :
845 :2008/05/02(金) 03:15:30
>>876 #include <stdio.h>
int main(void)
{
int no, n2;
for (no = 1; no <= 10; no++) {
unsigned long counter = 0;
n2=no;
while( n2 != 1 && n2 >=1){
counter++;
/*偶数*/
if( n2 % 2 == 0 ) {
/* 偶数なら2で割る */
n2 /= 2;
}
/*奇数*/
else{
if( n2 % 2 != 0 ){
n2 = n2*3+1;
}
}
}
printf("%d no keisan kaisuu ha %lu desu\n", no,counter);
}
return 0;
}
これで一応それぞれの回数は求めることができましたが、最大の計算回数と
その値を求める方法が分かりません。
さっきからやってますが、ぜんぜんうまくいきません・・・
>881 こんな感じ? unsigned long maxCounter = 0; int max; int no, n2; for (no = 2; no <= 10; no++) { unsigned long counter = 0; n2=no; while( n2 > 1){ counter++; if( n2 % 2 == 0 ) { n2 /= 2; }else{ n2 = n2*3+1; } } if(maxCounter<counter){ maxCounter=counter; max=no; } } printf(">> %d no keisan kaisuu ha %lu desu\n", max, maxCounter);
883 :
845 :2008/05/02(金) 03:50:32
>>882 ありがとうございます!
でも
if(maxCounter<counter){
maxCounter=counter;
の意味がいまいち理解できません・・・
>>845 行ギリギリorz
#include<stdio.h>
int main(void)
{
int i, tmp, cnt=0, keisankaisu[11] = {0}, max = 0;
for(i=2;i<=10;i++) { //2-10を規則にしたがって計算
tmp = i;
while(1) {
printf("i = %d, tmp = %d, cnt = %d\n", i, tmp, cnt); //確認のため表示、消してもおk
if(tmp == 1) { break; } //1なら脱出
if(tmp % 2 == 0) { tmp = tmp / 2; cnt++; } //偶数なら割る2
else if(tmp % 2 == 1) { tmp = tmp * 3 + 1; cnt++; } //奇数なら*3+1
}
printf("%2dの計算回数は%d回\n\n", i, cnt); //それぞれの結果表示
keisankaisu[i] = cnt; //計算回数後で使うから別変数へ
cnt = 0;
}
for(i=2;i<=10;i++) { //計算回数最多を検査
if(max < keisankaisu[i]) { max = i; }
}
for(i=2;i<=10;i++) { //それぞれの最終結果表示
printf("%2dの計算回数は%d回\n", i, keisankaisu[i]);
}
printf("計算回数が最も多かったのは%2dの%2d回\n", max, keisankaisu[max]);
return 0;
}
885 :
デフォルトの名無しさん :2008/05/02(金) 04:14:05
>>876 1が現れるなら、偶数の出現回数は62%以上と思う
無限列の場合としても62%以上と思う
> for(i=2;i<=10;i++) { //計算回数最多を検査 > if(max < keisankaisu[i]) { max = i; } > } ...大丈夫か?
888 :
デフォルトの名無しさん :2008/05/02(金) 05:26:02
>>876 1から始めて、2倍するか、1を引いて3で割るという事を繰り返す。
後者は必ずしも成功しないが奇数が出現するのはこちらのみ。
奇数の出現は低い。
2進数は2倍するか、1を足すと全ての数を生成出来る。
このあたりから出来そうにないか
889 :
886 :2008/05/02(金) 05:28:57
バグだろ
(keisankaisu[max] < keisankaisu[i]) のミスだろ 一応最後のところではちゃんとしてるから単なるミスだと思うぜ
普通に動作するが 2の計算回数は1回 3の計算回数は7回 4の計算回数は2回 5の計算回数は5回 6の計算回数は8回 7の計算回数は16回 8の計算回数は3回 9の計算回数は19回 10の計算回数は6回 計算回数が最も多かったのは 9の19回
偶然正しい結果が出てるだけ
893 :
デフォルトの名無しさん :2008/05/02(金) 07:06:55
>>876 数字の大きさと、計算回数に関係があるとして、
任意の整数に対して回数の上限が求まればいいとおもう。
894 :
835です。 :2008/05/02(金) 08:51:28
895 :
生ハム :2008/05/02(金) 08:51:32
[1] 授業単元:プログラミング演習 [2] 問題:ある英語の文章が規則に従って変換されてファイルに保存されています。 その文章をファイルとして読み込み、正しい英文に復元し、ファイルに出力する プログラムを作成せよ。です。規則を解読したところ、単語の文字数の分だけ (ASCIIコード表でいう)引数?が下げられています。つまり本文でaは、 ファイルではb,ofはqh,TheはWkhで表示されています。また、zはaに戻ります。 willはamppです。数字やピリオド等はそのままです。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C [4] 期限:2008年5月10日まで [5] その他の制限:プログラムでポインタを用いて文字列を定義し、既存の文字列操作 関数(strxxx(),例えばstrlen()など)は使わずに、自分で作成すること。 よろしくおねがいします。
>>895 読み込みファイル名は?
書き込みファイル名は?
ファイルに保存されているってのはどんなん?
ピリオドの後は必ず改行?
最大文字数は?
>>896 なぁ〜にぃ〜、やっちまったなっ!
男は黙ってぇ〜 クソース 男は黙ってぇ〜 クソミソース
gdgd言ってねーで、本来重要となる部分以外はエスパーしとけ、次っ!
898 :
デフォルトの名無しさん :2008/05/02(金) 11:46:04
899 :
デフォルトの名無しさん :2008/05/02(金) 12:00:55
>>876 これで解決すると思う
有限回の試行で元の数字より小さくできる
という事を証明すれば、少しずつ小さくしていって有限回で1になるよ
900 :
生ハム :2008/05/02(金) 13:42:58
>>896 ファイル名は自分で決めるみたいなので、読み込みファイル:file1
書き込みファイル:file2でお願いします。保存されているのを詳しく書きますと、
最初にタイトル→一行空ける→本文(段落ごとに1行空ける)という感じの繰り返しです。
最大文字数は13です。また、ピリオドの後は続けて次の文があります。
ピリオドの後の文字は大文字です。改行は文の途中でも適当にしてありますが、
単語の途中で改行はしてないです。
よろしくお願いします。
>>900 ちょっwwwwww 先にそういう条件は入れておいてくれYO!
もう作っちまったけど、書き換えマンドクセッからもううpしねっ
うpってる間にレスついてるし・・・
904 :
生ハム :2008/05/02(金) 13:55:48
>>901 ありがとうございます!頑張って理解してみます。
>>902 すみません、最初から書いておくべきでした(><)
>>904 とりあえず動かして正常に動くか確認してみてください
>正しい英文に復元し
ああああああああああ 逆!!!! orz
>>901 18行目 fclose(NULL); になる
>>908 あ、ごめん
上書き確認するコード入れてたときの残りだ
もうだめorz
打つ出し脳
なんだなんだ、やっぱり東大卒の教授の下で適切に指導を受けた 俺の力を借りなきゃダメなのか。けど、基地外低脳のうざい罵倒レスがきもいから 二度と力を貸してやらねーよw これをネタに金儲けすることにしたから、アイデアを簡単に提供できるかってw まっ、アイデアも何も、とっくに現代では発見され、わかりきっている手法に過ぎないがな。
あ、 fclose(fr); fclose(fw); return 0; } ゴメン・・・
>>895 #include <stdio.h>
#include <ctype.h>
int main(void)
{
FILE *fin, *fout;
int i, ch, cnt = 0;
char buff[64], temp;
if((fin=fopen("file1", "r"))==NULL) return 0;
if((fout=fopen("file2", "w"))==NULL) return 0;
while((ch=fgetc(fin))!=EOF) {
if(isalpha(ch)) buff[cnt++] = ch;
else {
for(i=0; i<cnt; i++) {
temp = buff[i];
if(isupper(temp)) temp -= temp - 'A' < cnt ? cnt - 26 : cnt;
else temp -= temp - 'a' < cnt ? cnt - 26 : cnt;
fputc(temp, fout);
}
fputc(ch, fout);
cnt = 0;
}
}
fclose(fin);
fclose(fout);
return 0;
}
あ、isalphaは作らなくてよかったのね 最近勘違い多いなorz
まぁもうアルゴリズムはわかったろ
>プログラムでポインタを用いて文字列を定義し ってあるのに皆ポインタ使ってない
配列も実際はポインタ>< すぐに変えられるでしょ
そうなんですか そういえば ss[i]=*(pss+i) ですもんね char *ss って感じのポインタを毛嫌いしてたので この期にやってみようって思ったらなんとかできた ってくらいのLv・・・
配列とポインタの違いもわからんとは、やはり・・・いや、すまん。 俺は京大卒の教授の指導があるから、そんなことは安易に言わないよw
教授が京大卒だからってその生徒が頭いいとは限らないってわからない?w
やめとけって、ヤツは単なるかまってちゃん
>>920 うわっ、妬み僻み。ポインタと配列の違いが分からないのを無視して
相手の素性をたたき始めた。もう終わってるわ、こいつ。
自分が気に入らない、あるいは自分基準で貶めた奴には
絶対に負けねーって魂胆だろ。
> 配列も実際はポインタ><
恥ずかしくて大学の授業じゃこんなこと言えねーわw
プリントアウト(印刷)をコピーとか言っちゃうレベルのタブー。
授業中に言ったら、名前を聞かれて成績に影響する減点を受けますよw
#include <stdio.h> int main(void) { int a[2]={1,2},b[2]={3,4}; int *ip; size_t i,as=sizeof(a)/sizeof(a[0]),bs=sizeof(b)/sizeof(b[0]); printf("\na : "); for(i=0; i<as; i++) printf("%d ",a[i]); printf("\nb : "); for(i=0; i<bs; i++) printf("%d ",b[i]); printf("\nsizeof a : %d / sizeof b : %d / sizeof *ip : %d \n",sizeof(a),sizeof(b),sizeof(ip) ); printf("\na : %p / b : %p / *ip : %p \n",a,b,ip ); ip=a; printf("\nip=a; / ip : %p / a : ",ip); for(i=0; i<as; i++) printf("ip[%d] %d ",i,ip[i]); ip=b; printf("\nip=b; / ip : %p / b : ",ip); for(i=0; i<bs; i++) printf("ip[%d] %d ",i,ip[i]); *ip=a[1]; // ipはこの時点でbの先頭を指している。そこにa[1]の値を代入。 printf("\n*ip=a[1] / ip : %p %d / b[0] : %d \n",ip,*ip,b[0]); // すると、bの先頭の要素がa[1]と同じ値に。 printf("\na : "); for(i=0; i<as; i++) printf("%d ",a[i]); printf("\nb : "); for(i=0; i<bs; i++) printf("%d ",b[i]); return 0; }
ここで、int型の配列として宣言した識別子a,bのアドレスを交換しようとして無理。 しかし、int型の”ポインタ”はその同じ識別氏を用いて、a、bの値を参照することが出来た。 aはaの中身、bはbの中身、所詮ポインタの実態はアドレスなのさ、ふっ。 部屋の番号と位置は変更できなくても、中の家具、住民の移動は可能ということさ、ベイビー?
925 :
719 :2008/05/02(金) 15:24:38
すいません、無期限と書いていましたが、先ほど期限を指定されたので 更新します 期限 2008年5月9日 12時
アプロダつかえよw
927 :
839 :2008/05/02(金) 17:01:45
928 :
886 :2008/05/02(金) 17:39:06
>891 ループを for(i=10;i>=2;i--) { //計算回数最多を検査 でやってみw
[1] 授業単元: 研究遂行上必要になりました。授業じゃありません。 [2] 問題文(含コード&リンク): 16ビットグレースケールPNGファイルの 任意の画像位置(i, j)におけるグレースケール値(0-65535) [3] 環境 [3.1] OS: VineLinux [3.2] コンパイラ名とバージョン: gcc-3.3.2 [3.3] 言語: C/C++/どちらでも可 [4] 期限 とくになし [5] その他の制限: 今まではjpg/bmpのRGBデータをimlibを使って抜いていました 今回もlibpngで簡単にできると思っていたんですが、そんなことなかったです。。。 サンプル画像はあぷろだにおきました(DL後、.txtを.pngにしてください) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6407.txt よろしくお願いします。
931 :
ベーコン :2008/05/02(金) 18:05:02
返事遅れてすみません。
>>822 ありがとうございます!コンパイルはできましたが実行すると結果が0となります;
実行方法が間違っているんですかね・・。
>>834 ありがとうございます!動作確認できましたw非常に丁寧なプログラムでとても感謝してます!
今度は頑張ってアルゴリズムの理解に努めます!
934 :
生ハム :2008/05/02(金) 18:48:26
>>901 ありがとうございます。コンパイルはできましたが実行するとSegmentation faltに
なっちゃいました(><)
>>910 ありがとうございます。実行した結果、英文の変換はされてましたが途中の1行のみ
正しく変換されていて、後はめちゃくちゃでした(;o;)
>>913 ありがとうございました。一部やってみたら綺麗に復元されていました!
>>651 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg){
case WM_LBUTTONDOWN:
座標取得
case WM_LBUTTONUP:
座標取得
いんばりでーと
case WM_RBUTTONDOWN:
座標取得
case WM_RBUTTONUP:
座標取得
case WM_PAINT:
びぎん
if(左ボタン)
movetoびぎん座標
linetoえんど座標
if(右ボタン)
なんか矩形かくコマンド
えんど
case WM_DESTROY:
PostQuitMessage(0);
}
return でふぉるとぷろしーじゃ;
}
>>934 英文をうpしてもらってもいい?
自分でも勉強になるし
>>895 >>934 5/10までか、まだ時間があるな。さてと・・・俺のきしょいクソースを見たいとな?
ならば見せて進ぜよう、10日までに。まぁ、今日中に作り終わる予定だが。
変換と復元、2つのライブラリはすでに完成した。後は、単語をどのように読み込むか?
>>900 の条件を取り込んで書くが、いくつか疑問が。
変換するのは小文字のみ?大文字も同じように変換?それとも大文字はそのまま?
> ピリオドの後の文字は大文字です。
まぁ、ピリオドの前の単語で区切るから気にならんが、まさか、ピリオドを含んで
後ろの単語の文字数も含める、なんてことはなかろうな?
>>895 変換前:This is a pen. It is red.
変換後:Xlmw ku b tir. Kv ku vih.
って事?
>>913 に満足してるんだからいまさら書く必要ないだろ。
他の残ってるやつといてやれよw
>正しい英文に復元し、ファイルに出力する だから逆でしょ 入力:Xlmw ku b tir. Kv ku vih. 出力:This is a pen. It is red.
カエサル暗号大人気だな
>>941 またお前か、主観野郎w なんで必要性をお前基準で決めてんのぉ〜?
お前このスレの主か?管理者か?絶対的権力者か?全知全能の神か?w
>>895 情報が少なすぎる
textの1行は最大何文字?
単語は13文字ってあるけども
>>895 ポインタ使って、ついでに短めにしておいた。
#include <stdio.h>
#include <ctype.h>
main() {
char*p,*q,s[99];
int c;
FILE*f1,*f2;
if((f1=fopen("file1.txt","r"))&&(f2=fopen("file2.txt","w")))
while((c=fgetc(f1))!=EOF) {
for(p=s; isalpha(*p++=c); c=fgetc(f1));
for(q=s; q<p-1; q++) fputc((((*q&31)+27+s-p)%26)|(*q&224),f2);
fputc(*q,f2);
}
}
>>942 > 入力:Xlmw ku b tir. Kv ku vih.
入力:Xlmw ku b shq. Kv ku uhg.
ではあるまいか
>>948 すぐ終了するとはいえ、ファイル閉じてないのがちょっと気持ち悪い。
952 :
生ハム :2008/05/03(土) 03:33:38
>>937 本文のうpの仕方がいまいちわかりません・・
一応アップローダー==ラウンジに書き込みしましたが。
938>>
変換は大文字・小文字両方です。アルファベットのみ変換です。
>ピリオドを含んで 後ろの単語の文字数も含める、なんてことはなかろうな?
それはないと思います。ただピリオドの後続けて英文がある場合と、
コンマの後は1マス空けてあります。
>>940 942さんのおっしゃる通りです。
>>946 数えてみたところ一番長いやつで、61文字。スペース含めれば69文字でした。
>>948 ありがとうございます!ですがGWが終わるまでコンパイルできる環境にないので
動作確認が遅れます↓すみません。。
913と948で問題なく変換できるね。
と思ったけど、948だとzに復号されないな
>>948 なぁ〜にぃ〜っ!やっつまったな!(・∀・)ニヤニヤ
>>900 の条件と異なるかもしれないが
>>913 は入力がアルファベットで終了すると最後の単語が出力されない
>>948 は入力がアルファベットで終了するとEOF(0xFF)が出力される
書き込んでから気づいてたけど、.で終了だから別にいいかって思ってた。 どうしても気になるなら while(1) { ch = fgetc(fin) /*中略*/ if(ch==EOF) break; fputc(ch, fout); cnt = 0; } にでも修正してくれ。
ほんま、EOF野郎はしつこくて鬱陶しいな。こいつ、日ごろよほど 他人に相手にされていなくて、こんなところで自分が相手にされていると 勘違いしよってからに。お前なんて誰も相手にしねーよバーかw
960 :
948 :2008/05/03(土) 05:06:13
This is a pen. it is a pen too. この場合 pen. はピリオドも含めての文字数? p+4なのかp+3なのかどっち?
>単語の文字数の分だけ 単語にはピリオド含まないだろ
Ken's family.の場合は?
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク):() アルファベット小文字からなる文字列がある. この文字列を圧縮する記法として,文字列 s に対し (s)n := s...s (s の n 回の繰り返し) を導入する.圧縮はネストしていてよい.たとえば以下のようになる. (ab)2 = abab (b)10 = bbbbbbbbbb ((ab)3c)2 = (abababc)2 = abababcabababc 圧縮された文字列 ctext,自然数 i, j (i ≦ j), (圧縮されていない)文字列 pattern が与えられる. ctext を展開した文字列の i 文字目から j 文字目までに pattern が含まれるかどうかを判定せよ. 含まれる場合は YES,含まれなかったり,i, j が 不正な位置を参照している場合は NO と出力せよ. なお,圧縮後の文字列 ctext の長さは 10000 文字以内 (展開したときの文字列長は制限しない), j - i ≦ 100000,pattern の長さは 10000 文字以内とする. 例:ctext = ((ab)3bc)4, i = 3, j = 15, pattern = cabababb ctext は展開すると abababbcabababbcabababbcabababbc であり, 3 文字目から 15 文字目までは ababbcabababb. この中には pattern が含まれているので YES と出力. [3] 環境 [3.1,2] OS,コンパイラ: おまかせ [3.3] 言語: どちらでも可 [4] 期限: 2008年5月6日 [5] その他の制限: 特になし
965 :
デフォルトの名無しさん :2008/05/03(土) 10:01:47
途中までやった 実行はしてない #include <string> #include <iostream> #include <vector> #include <stack> using namespace std; int getsu(string &x,int n){ int i;n++; for(i=n;i<x.size() ;i++)if(x[i]<'0' || x[i]>'9')break; string y=x.substr(n,n-i); return atoi(&y[0]);} fnc(string &x, string &y){ stack <int > num; int n,iti=0; y=""; for(n=0;n<x.size();n++){ if(x[n]=='(' ){num.push(iti);continue;} if(x[n]==')' ){ int k,l,d;k=num.top(); num.pop(); l=getsu(x,n); d=iti-k; for(int i=0;i<l;i++)y+=y.substr(k,d);iti+=d*l;continue;} y+=x[n];iti++;} } main(){ string ctext = "((ab)3bc)4",tmp; fnc(ctext,tmp); }
966 :
デフォルトの名無しさん :2008/05/03(土) 10:26:45
>>964 #include <string>
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int suketa(string &x,int n){
int i; n++; for(i=n;i<x.size() ;i++)
if(x[i]<'0' || x[i]>'9')break;
return i-n;}
tenkai(string &x, string &y){
stack <int > num;
int n=0,iti=0; y="";
for(;n<x.size();){
if(x[n]=='(' ){num.push(iti);n++;continue;}
if(x[n]==')' ){
int k,l,d,m;k=num.top(); num.pop(); l=suketa(x,n);
m=atoi(&x.substr(n+1,l)[0])-1; d=iti-k;
for(int i=0;i<m;i++)y+=y.substr(k,d);
iti+=d*m;n+=l+1;continue;}
y+=x[n];iti++;n++;}}
string find(string x,string y,int i,int j){
int m=x.find(y);
if(m==-1 || i>m)return "NO";
if(j-i>=y.size())return "YES"; return "NO";}
main(){
string ctext = "((ab)3bc)4",pattern ="cabababb",tmp;
tenkai(ctext,tmp); cout<<find(tmp,pattern,3,15);}
>>964 #include<stdio.h>
#include<string.h>
int decode_internal(const char *data, char **buf, int start, int end, int *current){
int i, loopnum, loop=0, n;
for(i=0;data[i];i++){
if(data[i]=='('){
i+=decode_internal(data+i+1, buf, start, end, current);
}else if(data[i]==')'){
loop++;
sscanf(&data[i+1], "%d%n", &loopnum, &n);
if(loop>=loopnum) return i+1+n;
i=-1;
}else{
*current+=1;
if(start<=*current && *current<=end){ *(*buf)++=data[i]; *(*buf)='\0'; }
}
}
return i;
}
int decode(const char *data, char *buf, int start, int end){
int work=0;
return decode_internal(data, &buf, start, end, &work);
}
int main(void){
static char buf[100000+1]="";
char *pattern="cabababb";
decode("((ab)3bc)4", buf, 3, 15);
printf("%s\n", strstr(buf, pattern)?"YES":"NO");
return 0;
}
>>965 >>966 他人にどうこう言うくせに、自分が糞なソースを堂々とここに書き込んでんじゃん
こいつ、かなりの基地外だぜ。恥さらしというのはこういう奴のことを言うんだよな。
どうせ、アップローダーが使えない初心者だろw
(f)99999999999999999999999999999999999999999999999
>>969 使える人にしてみても、あのうpろだ見にくいよ
ハ,,ハ ('(゚∀゚∩_ おいらをどこかのスレに送って! /ヽ 〈/\ お別れの時にはお土産を持たせてね! /| ̄ ̄ ̄|.\/ | モツ煮 |/  ̄ ̄ ̄ 現在の所持品:たばこ・スーパーマリオブラザーズ・練炭・とうきびチョコ・ジアース・ブラゲ豚 ・Keron kawaii 七輪 ブラウザゲー ブラゲスレ行きチケット(片道) うまか饅頭 ○=俺 School Days未開封 School Days開封済 うんこ インギー アーライ! kotsは神 スカイラーク全部 いちごましまろ Muran 最強の銃 ハッピー☆マテリアル5月Ver アレテイル ヒロポン ふたなり画像.zip PS2 ジャクムの兜昇華繚乱命中30%10連品 マーシャルグラブ攻撃21 ホーンテイルのネックレス卵3連品 ギアノスの鱗 プレマリン パキシル80mg RIOのハメ撮りビデオ Lady メリーの死神の鎌 みんなのうらみ かのうじ 支那産農薬入り餃子 Vista(笑) 「3DMark Vantage」(笑) ダウングレード権 WindowsAero(苦笑)
うpろだが見やすい必要はどこにも無いだろ どうせうpしてリンクコピーするだけだし
おk うpした あれリンクどこだ PageDown PageUp・・・ あ、これか ってのがめんどう
まあええやん
ええんやけどね
なんだかんだ言ってもおまいら、俺のクソミソースなアッーー!を見たいんだろ? まぁ、今日中にうpってやるから、待ってろや、な?
じつは
>>619 も解かれて無いのか。
現実的な計算時間で答えが出る回答は出てないみたいだ。
982 :
デフォルトの名無しさん :2008/05/03(土) 19:00:25
>>979 高校レベルの順列・組み合わせでできるとは思う。重複ありで文字を並べたときの場合の数を求める
現実的な計算時間で答えが出るソースplz 人のものにけちつけるんだから当然出せるよね?
984 :
デフォルトの名無しさん :2008/05/03(土) 19:02:15
>>982 出来る出来ないはソース上げてから言ってね
987 :
デフォルトの名無しさん :2008/05/03(土) 19:05:59
s_1 = ab ならば、abを少なくとも一つ含むものの場合の数が求まればよい
>>987 それはいいのだが、s_1からs_mまでの重複を除外しないといけないよね。
本当に高校レベル?
989 :
デフォルトの名無しさん :2008/05/03(土) 19:13:32
>>986 まず包含関係や、結合で作れる文字を除く。
そして、たとえば4桁で、aabを含むものを求めようとする。
A=aabとおき、{a,b,A}からなる2桁の文字を求める。
、
990 :
デフォルトの名無しさん :2008/05/03(土) 19:17:12
>>988 たとえば、A=aabとB=abbの10桁とすると、AとBを少なくとも一回含むものの個数を数えて
AとBが同時に含まれる個数を引く。
s1 と s2 で作れる文字列と s3 と s4 で作れる文字列が合流したら ちゃんとそれも除かなきゃいけないよね。 m ≦ 100 だから、そっちで組み合わせ爆発起こしても無理だけど大丈夫?
>>990 それを引くのが大変だって言う話じゃないの?最大100個あるわけだし
993 :
デフォルトの名無しさん :2008/05/03(土) 19:22:52
関心無いので、やりたい人がやればいい やれば出来る程度はおもう。
無理無理
>>990 それただの総当りより処理増えてるだろw
996 :
デフォルトの名無しさん :2008/05/03(土) 19:29:02
{Si}を少なくとも一回は含む数は、 ΣSi を少なくとも一回は含む数 - ΣSiとSjを同時に含む数 では?
997 :
デフォルトの名無しさん :2008/05/03(土) 19:29:51
>>995 文字列を生成して具体的にチェックするのでない。
ここ何スレですか生め
梅
オートマトンスレです梅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。