1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ] 入門者向けの俺に聞けスレです。 なんでもきいてよね
910 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:00:03 ] 全部写すよ #include typedef struct { int max_dist; /* 上限距離(km) */ int unit_dist; /* 単位距離(km) */ int unit_cost; /* 単位距離ごとの運賃(円) */ } COSTUNIT; void make_fare_table(int, double *, COSTUNIT *, int **); int calc_fare(double, COSTUNIT *); void make_fare_table(int num, double *dist_list, COSTUNIT *cost_list, int **fare_table) { int idx0, idx1; double dist; for (idx0 = 0; idx0 < num; idx0++) { fare_table[idx0][idx0] = 0; dist = 0.0; for (idx1 = idx0 + 1; idx1 < num; idx1++) { dist += dist_list[idx1-1]; fare_table[idx0][idx1]=fare_table[idx1][idx0] =calc_fare(dist, cost_list); } } }
911 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:01:17 ] int calc_fare(double dist, COSTUNIT *cost_list) { int fare = 0, idx = 0; int lower_limit; /* 区間の下限(直前の区間の上限距離) */ int upper_limit; /* 区間の上限(現在の区間の上限距離) */ lower_limit = 0; upper_limit = cost_list[0].max_dist; while (upper_limit!=0 && dist > (double)upper_limit) { fare += ceil((double)(upper_limit-lower_limit) / (double)cost_list[idx].unit_dist) * cost_list[idx].unit_cost; lower_limit = upper_limit; upper_limit = cost_list[++idx].max_dist; } fare += ceil((dist - (double)lower_limit) / (double)cost_list[idx].unit_dist) * cost_list[idx].unit_cost; return fare; }
912 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:09:20 ] 試しに入れたメインはこれ main(){ COSTUNIT cost_list[4]; cost_list[0].max_dist=20; cost_list[0].unit_dist=5; cost_list[0].unit_cost=100; cost_list[1].max_dist=100; cost_list[1].unit_dist=10; cost_list[1].unit_cost=180; cost_list[2].max_dist=500; cost_list[2].unit_dist=50; cost_list[2].unit_cost=850; cost_list[3].max_dist=0; cost_list[3].unit_dist=100; cost_list[3].unit_cost=1650; double dist_list[10]={3.0,5.5,10.0,3.8,8.2,7.6}; int **fare_table[30][30]; make_fare_table(4,dist_list,cost_list,fare_table); }
913 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:14:32 ] >>910 写し間違いじゃないのなら、問題が間違ってる。
914 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:17:41 ] つか、俺試験受けたこと無いけど、まさか「誤りを探せ」という問題じゃ ないだろうな。
915 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:21:02 ] うそーん。マジ?
916 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:23:22 ] >>914 ちがうよ。ここみてよ ttp://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H17a2/pm10.html
917 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:33:29 ] >>916 問題が間違ってる。特にfare_table[m][n]のm != nだとありえない度うp。
918 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:33:34 ] for(i=0;i<30;i++)fare_table[i]=(int*)malloc(30*sizeof(int)); なヨカン
919 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:37:40 ] どうも・・・ でも普通間違ってる問題出すか!?仮にも国家試験だろう! 他の問題からベンキョします
920 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:49:23 ] >>918 fare_table[m][n]で、m != nダヨ。
921 名前:920 mailto:sage [2006/07/17(月) 17:51:32 ] いや、問題を読み違えてた。スマソ。 >>918 で正解な予感。 int *fare_table[30]で、実引数はfare_table。 動かしてないけど。
922 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:10:02 ] >>918 ,921 それで出てきました。アリガトン
923 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:32:06 ] 乗数演算子って無いの?
924 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:44:38 ] >>923 ない。 www.kouno.jp/home/c_faq/c14.html#7
925 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:45:01 ] fscanfで文字を読み込んだ場合、ファイル位置表示子は移動しますか?
926 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 19:50:26 ] >>925 「位置表示子」とはなんぞ? 読み出しオフセットが気になるならftell()でもして味噌。
927 名前:デフォルトの名無しさん [2006/07/17(月) 22:05:12 ] 問題1.キーボードから63以下の2つの整数を変数a,bに入力して、a+bの結果がアスキーコードの対応する文字・記号となって出力されるプログラムを作れ。 問題2キーボードから英字1つを入力し、その英字より2つ前の英字(または数字、記号)を出力するプログラムを作れ すみませんまったくの初心者です 宿題でまったくわかりません
928 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 22:05:56 ] >>927 C/C++の宿題を片付けます 66代目 pc8.2ch.net/test/read.cgi/tech/1151477344/l50
929 名前:デフォルトの名無しさん [2006/07/17(月) 23:17:58 ] すれ違いでしたか ありがとうございます。
930 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:26:53 ] typedef struct letter { char c; struct letter *follow; struct letter *other; char *trans; } LETTER; LETTER *p_root; void main(){ LETTER *p = p_root; って書いたら、 p には何が入ってるんですか?
931 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:30:31 ] >>930 *p_rootに入っていた内容。初期化してないから何が入ってるかわからない。
932 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:44:43 ] p_root->c='m'; p_root->follow->c='a'; p_root->other->c='n'; p_root->trans=NULL; だったら?
933 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 12:56:13 ] プログラムから別のプログラムを立ち上げる方法を教えてください。 ブラウザで例えるとmp3などのURLをクリックすると再生プレイヤーが立ち上がるような感じで、 そのmp3のURLを渡して起動させたいのですが よろしくお願いします。
934 名前:デフォルトの名無しさん [2006/07/18(火) 13:36:38 ] 野球チームがnチームあり,1日にm試合ずつ消化して,総当たり戦を行うものとする. 各チーム名はA, B, C,...Zのようにアルファベットの頭文字で表されるものとする. nは26以下,mは4以下とするとき,以下のような試合の日程表をつくりなさい. 全試合が終了するのに必要な日数と全試合数も表示すること. Number of Teams -> 4 Number of Games per Day -> 4 -------- Schedule ---------- Day 1 Game 1 : A vs B Game 2 : A vs C Game 3 : A vs D Game 4 : B vs C Day 2 Game 1 : B vs D Game 2 : C vs D --------------------------- Total Number of Days : 2 days Total Number of Games : 6 games --------------------------- 誰か作ってくれ・・・ わからん・・・
935 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 14:43:07 ] >>934 留年しろ。
936 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:01:43 ] >>932 pはポインタ。p_rootもポインタ。 その値は代入によって同じになっているはず。 つまり、p->c == p_root->c && p->follow->c == p_root->follow->c && p->other->c == p_root->other->c && p->trans == p_root->transということ。 >>933 環境依存でよければ、例えばWindowsならShellExecute()辺りが向いているかもしれない。 しかし、その程度のことも調べられないようなら手を出さない方が無難だとも思う。 >>934 宿題スレにでも逝ってみたら?
937 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:20:11 ] >>933 ありがとうございます。 これを足がかりにもう少し調べて見ます。
938 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:20:42 ] >>937 は>>936 あてです。すみません。
939 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:58:56 ] >>936 次にね while( p!=NULL ){ p=p->other; } って書いてあるんですよ。 このpって何を示してるの? pのメンバ全部のこと示してる? ちなみにこれも基本情報の過去問だけど… www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H18a2/pm10.html ↑ここ
940 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 17:17:26 ] >>939 LETTER型のオブジェクト
941 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 17:17:33 ] pは構造体先頭を指している。
942 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 18:03:43 ] p->cのことでええんかな? どうも〜
943 名前:デフォルトの名無しさん [2006/07/18(火) 18:17:53 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2392.txt Cでシェルを実装し、パイプラインをpipeシステムコールを使ってできる ようにしたいのですが、3つ以上のコマンドを繋ぐことができません。 どのようにすればよろしいでしょうか?
944 名前:936 mailto:sage [2006/07/18(火) 19:00:14 ] >>939 だからpはポインタなんだってばさ。ポイントしている先があるかないかのチェックをしているわけだね。 だから>942は間違い。>941もおかしいな、先頭のみを指しているわけではないのだから。 つーか、ポインタの勉強してきなさいよ。 >>943 コメントもろくにないソースをいきなり読まされる身になってくれ。 つーか、どこが入門レベルなんだか。
945 名前:943 mailto:sage [2006/07/18(火) 19:30:15 ] >>944 すいません、実行後に標準入力からコマンドを入力し、そのコマンドをgetcl関数で スペース毎にでargmv[0],argmv[1]...に格納し、exec_one_command関数で実行。 その中にパイプがあればパイプの処理をするという仕様です。 自分でやったところはexec_one_command内でgetclでできたコマンドからパイプを 見つけてそれをNULLに置き換え、パイプの数に応じてexecvpで実行していくという ところです。 なんとかして完成させたいのですが、ここじゃ不味いですか('A`) どこいけばいいでしょうか・・・
946 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:07:28 ] >>944 すいません どこでベンキョしてくればいいでしょう お勧めの本とかページとかあります?
947 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:08:56 ] void funcB() { return; } void funcA() { funcB(); printf(); } こういう場合ってprintf()って作動しますか?
948 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:11:12 ] するよ
949 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 23:20:14 ] >>947 funcA()を呼べばね。 >>946 書籍スレにでもどうぞ。 >>945 ここでもいいけど、みての通りここだとレスつかないねぇ。 pipeなんて非標準だし、環境依存OKスレかUnixプログラミングスレ辺りかね。
950 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:36:41 ] >>944 先頭指してなかったら、キャストもせずに、->演算子使えるわけないじゃん。
951 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:51:03 ] >>950 アホ?
952 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 01:02:50 ] p->otherはstruct letter* だから>>941 を間違いってのはアレだよな
953 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 07:50:03 ] for(;;)とwhile(1)はどっちがはやいんですかね?
954 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 08:03:07 ] >>953 大丈夫、お前よりもよっぽど賢いコンパイラにとって、それらはどちらも同じと解釈されるから気にするな。 #まぁ、前者を推奨するがな。
955 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:10:13 ] 大昔の頭の悪いコンパイラだと for(;;) の方が早いとか聞いた気もするが、 今のコンパイラならどっちでもいいな。
956 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:12:34 ] (;;)
957 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:52:47 ] (;o;)
958 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:03:37 ] (;A;)
959 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:14:25 ] ('A')
960 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:46:03 ] ("ω")
961 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 11:29:39 ] ( ; _ ; )
962 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 16:27:56 ] (T-T)
963 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:36:00 ] (:-D)
964 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:42:05 ] :-D~~
965 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:24:10 ] >>863 void SASSERT_(int(*p)[1]) { } #define SASSERT(b) SASSERT_((int(*)[(b) ? 1 : -1])0) は、単に #define SASSERT(b) ((void)(int(*)[(b) ? 1 : -1])0) でいいことに今頃気づいた。
966 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 00:37:15 ] K&R本の1.5.2 文字のカウント のプログラムをちゃんと打って、シグウィンでコンパイルしても 実行したら全くカウントしてくれないのですが、 どうしてでしょうか?誰か教えて下さい。
967 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 02:24:54 ] >>966 そのプログラムを貼れ。
968 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 07:27:35 ] #include <stdio.h> /* 入力される文字をカウント;第1版 */ main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc); }
969 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 08:29:16 ] 入力を終了しないからいつまで経っても表示されないだけに一票。
970 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 09:21:38 ] でもこっちはちゃんとできるんですよ。 #include <stdio.h> /* 入力された文字を複写;第2版 */ main() { int c; while((c = getchar()) != EOF) putchar(c); }
971 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 10:54:10 ] いやだから・・・。
972 名前:デフォルトの名無しさん [2006/07/21(金) 11:50:37 ] ST.c: 関数 `function2' 内: FLIST.c:75: 警告: 引数 2 個の `strcat' を渡しますにより、キャストなしで整数からポインタを作りました :wq! 上記の警告がでました。問題の75行目 strcatは以下です。 strcat(strLine,ctime( &buf.st_mtime ));/*警告箇所*/ st_mtimeはファイル情報を取得する処理【stat関数】のメンバでbufの変数定義は struct stat buf;、strLine変数はchar strLine[255];としております。 警告を回避するキャストの方法を教えてください。環境はLinux redhatです。
973 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 12:24:15 ] >>972 #include <time.h> してないってことはない?
974 名前:デフォルトの名無しさん [2006/07/21(金) 12:40:43 ] レスありがとうございました。インクルード記述はあります。 プラットホームをUnixからlinuxに移した際に リコンパイルで警告がでました。
975 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:04:56 ] >>974 その周辺ロジックだけのプログラム作っても再現する? こちらでは問題ないのだが。 以下、テストコード。 -- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> int main(int argc, char ** argv) { char strLine[255]; sprintf(strLine, "%s:", argv[1]); struct stat buf; stat(argv[1], & buf); strcat(strLine,ctime(&buf.st_mtime)); puts(strLine); return 0; }
976 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:32:38 ] >>968 それは何か入力後に EOF を渡す必要がある。 これは Cygwin だとどうなっているのか分からないが、 UNIX 系 OS だとデフォルトでは Ctrl+D でできるのが 普通だ。Windows のコマンドプロンプトや MS-DOS プロンプトでは Ctrl+Z だ。どちらかを入力してみれば できるんじゃないだろうか。
977 名前:968 mailto:sage [2006/07/21(金) 15:13:46 ] >>976 ありがとうございます。Ctrl+Zで出来ました。
978 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 15:18:18 ] 結局>969じゃん。
979 名前:968 mailto:sage [2006/07/21(金) 16:38:45 ] 間違えました。Ctrl+Dでした。 >>978 入力を終了しなくても出来そうだな、とか 馬鹿な考えを起こしていたもので...m(_ _)m
980 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 14:43:42 ] > 賢いコンパイラにとって、それらはどちらも同じと解釈されるから while(1) だと警告がでる for(;;) だとでない
981 名前:デフォルトの名無しさん [2006/07/23(日) 12:03:52 ] プロトタイプ宣言のない関数’printf'の呼び出し(関数main) という警告文が出るけどなに?
982 名前:デフォルトの名無しさん [2006/07/23(日) 12:07:13 ] >>981 #include <stdio.h>がないとか printfがpirntfになってたりとかじゃないかな?
983 名前:981 [2006/07/23(日) 12:10:28 ] >>982 その辺は確認しているのだけど そのへんが問題なのかな?
984 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:33:16 ] こういう場合、ソースを貼り付けたら一発で分かったりすることも多い。
985 名前:981 [2006/07/23(日) 12:46:51 ] #include <sudio.h> int main( ) { int n=500+ 150; printf("%d", n); return 0; } こんな感じなんだけど諸兄の 意見はいかがですかね?
986 名前:デフォルトの名無しさん [2006/07/23(日) 12:48:02 ] int a; char s[3] = "FF" ↓ a == 255 みたいなイメージで、文字データとして16進の形でcharの配列に入ってるものをint形の変数に代入する方法ってない?
987 名前:デフォルトの名無しさん [2006/07/23(日) 12:48:41 ] 1はツンデレ
988 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:52:46 ] >>985 1行目で既に破綻が
989 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:59:38 ] >>986 strtol
990 名前:981 [2006/07/23(日) 13:00:32 ] >>988 ありがと。いまきずいた(汗
991 名前:986 mailto:sage [2006/07/23(日) 13:04:15 ] >>989 さんくす、助かった
992 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 18:01:34 ] よくコンパイルまで行ったな。
993 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:40:46 ] おまいら日本語よりC言語のほうが意思疎通出来るんだな(w
994 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:55:00 ] 次スレは>>995 が立てるそうです。
995 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 18:38:56 ] 次スレはいらない。
996 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 09:49:42 ] 入らなかったら拡張しろ
997 名前:デフォルトの名無しさん [2006/07/25(火) 16:42:16 ] 1000
998 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:11:33 ] スマン…まさか携帯から立つとは思わなかったんだ… 次スレ C言語なら俺に聞け(入門篇) ぱぁと2〜 pc8.2ch.net/test/read.cgi/tech/1153818463/ スレタイについては反省していない
999 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:21:20 ] >>998 乙
1000 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:29:03 ] >>998 おまえというやつは・・・乙
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。