1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:55:25 ] あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう. ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 102代目 pc11.2ch.net/test/read.cgi/tech/1197132472/
132 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:03:39 ] こういうのって再帰使って処理するほうが楽だと思うんだけど。 tmp->nextがNULLじゃ無いんじゃない?
133 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:05:50 ] NULLが0な処理系ならmemsetでNULLになってね? それより、俺は返り値の意味があるのかとかmallocの前の*は何なのかとか気になるけど。
134 名前:デフォルトの名無しさん [2008/01/17(木) 01:11:41 ] >>132 指摘ありがとうございます。 tmp->nextがNULLじゃ無いんじゃない? ってのは while(pos -> next != NULLのことでしょうか? >>133 mallocの前の*は、単なる消し忘れでした。
135 名前: ◆gDKJL3vNys mailto:sage [2008/01/17(木) 01:18:59 ] >>127 ありがとうございます! これからコンパイルして動作確認してみます 色々本当にありがとうございました
136 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:22:32 ] LEDを赤く光らせたり青く光らせたりすると面白そう
137 名前:134 [2008/01/17(木) 01:41:51 ] すいません。 自己解決しました。 なんかホントに的外しな質問をしてしまいましたw
138 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:54:44 ] 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):正数nとbを10進数としてキーボードから入力すると、 nをb進数で表示するプログラムを作成せよ。 実行例 24[enter] 8[enter] 24(10) = 30(8) [3] 環境 [3.1] OS:window [3.2] コンパイラ名とバージョン:BCC [3.3] 言語:C [4] 期限:1/17 [5] その他の制限:特にありません
139 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:55:52 ] b進数の範囲は?
140 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:57:06 ] >>139 すみません、2~36でお願いします
141 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:14:42 ] >>138 #include<stdio.h> const char *s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; void conv(int n,int b){ if(n>0){ conv(n/b,b); putchar(*(s+n%b)); } } int main(void){ int n,b; scanf("%d",&n); scanf("%d",&b); printf("%d(10)=",n); conv(n,b); printf("(%d)\n",b); return 0; } てきとー。おやすみなさい。
142 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 04:45:59 ] [1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク):文字列として入力した式(一行)を計算し、その値を表示するプログラム。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン:Visual Studio 8 [3.3] 言語:C [4] 期限:1/18 [5] その他の制限:少なくとも2つの2桁の整数に対する計算(四則演算)ができること。 どうかよろしくお願いしますm( _ _ )m
143 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:46:29 ] 【時間切れ】 (1/16) >40 【未解決問題】 pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c) >>142 1/18 pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18 >>86 1/22 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>79 無期限
144 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:51:33 ] [1] 授業単元:画像処理 [2] 問題文(含コード&リンク):円周上の点の複数の座標から円の中心(a,b)や半径rを求める [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition [3.3] 言語: C++ [4] 期限: 無期限 [5] その他の制限: 特になし
145 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:57:26 ] >>144 点は3つでいいのかな?
146 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:07:47 ] >>145 100個ぐらいからです・・・。 まったくわからないんです。よろしくお願いします。。。
147 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:17:34 ] 円を特定するには、一直線上にない異なる3点で必要十分じゃね?
148 名前:144 mailto:sage [2008/01/17(木) 09:21:01 ] すいません。問題間違いました。 正しくは、100個の座標からそれが円であるかどうか(完璧にきれいな円でなくてもよい)を判定するプログラムの作成でした。 よろしくお願いします。。。
149 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:25:05 ] 判定方法は提示してもらわんとねぇ。
150 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:28:13 ] >>149 すいません!ハフ変換を使って判定します。 色々と足りないところだらけで申し訳ありません。。。
151 名前:デフォルトの名無しさん [2008/01/17(木) 12:52:31 ] [1] 授業単元: プログラミング入門 [2] 問題文 (1)走行距離10kmまでは基本料金の6000円。10kmを超えた場合は、超えた距離に対して1kmあたり50円が加算される。 (2)深夜料金10時以降5時までは最終的な料金を2割増しする20キロを超えると1割引とする。 (3)迎車を使用した場合は400円として(1)〜(3)を入力して料金を出力するプログラムを作れ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition [3.3] 言語: C [4] 期限: 1月17日 [5] その他の制限:関数まで(初期の簡単なプログラムです)
152 名前:デフォルトの名無しさん [2008/01/17(木) 12:53:06 ] 151続き (1)までのプログラム #include<stdio.h> main() { int run,price; printf("走行距離(km)を入力せよ:"); scanf("%d",&run); if(run<=10) { printf("料金は6000円です\n"); } else { price=(run-10)*50+6000; printf("料金は%d円です\n",price); } } (2)と(3)お願いします。
153 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:09:10 ] 「2割増しする20キロ」とか、「(1)〜(3)を入力」とか、随分ややこしいな。
154 名前:デフォルトの名無しさん [2008/01/17(木) 13:19:22 ] 最初に乗ったキロと深夜かどうかなどの入力をさせてやろうとしたんですが・・・。できなくてとりあえず(1)までやってみました。ややこしくてすいません。
155 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:32:41 ] 落ち着け、>153は皮肉だ。 以下、問題を列挙 ・深夜料金の適用条件 例えば乗車時刻が21:59だったら? 或いは4:59だったら? ・迎車との関係 例えば呼んだのが21:59だったら? また、迎車時刻を指定されることはある? ・消費税の考慮 ・タクシー料金にしては論外に高い初乗り料金
156 名前:デフォルトの名無しさん [2008/01/17(木) 13:39:10 ] >155 指摘ありがとうございます。 判定条件が指定されてないので、今回は乗車時刻が22時〜5時に一秒でもかかっていたら深夜料金として計算します。 迎車は有無のみで課金します。もし迎車を使用して深夜であれば最終的な料金は乗った距離の値段×深夜割増+迎車料金で出します。 消費税は考慮しません。確かに問題文法外な値段ですね^^;教授が意地悪なので・・・。 以上の点宜しくお願いします。
157 名前:デフォルトの名無しさん [2008/01/17(木) 15:41:20 ] #include <stdio.h> #include <malloc.h> #define buffer_size 10 int main(int argc ,char *argv[]) { FILE *fp; fpos_t *start_fpos,*end_fpos; char *buffer; int n,option; option=getopt(argc,argv,"rw"); switch(option){ case 'w': fp=fopen(argv[1],"w"); buffer=(char *)malloc(buffer_size); printf("文字列を書き込んでください\n"); scanf("%s",buffer); fprintf(fp,buffer); free(buffer); break; } fclose(fp); return 0; } 指定したバッファサイズが入力文字数よりも小さい場合、 セグメンテーションエラーがでます。 #defineを変えないでmallocを使い書き加えるには何の関数を使えばいいですか? ヒントをくださいませんか?よろしくお願いします。
158 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:47:11 ] >>157 buffer=(char *)malloc(buffer_size*100);
159 名前:デフォルトの名無しさん [2008/01/17(木) 15:57:02 ] [1] 授業単元: C言語入門 [2] 問題文 キーボードから入力された文字列に指定した文字が何個 含まれているか表示するプログラムを作りなさい。 動作例: キーから文字を数文字入力してください= alpha-dog 調べる文字を入力してください= a 入力された文字列の中に a は、2 個ありました。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition [3.3] 言語: C [4] 期限: 1月17日 [5] その他の制限:
160 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:20:20 ] >>159 #include <stdio.h> int main(void) { int i,num=0; char str[100],ch; printf("文字列を入力してください:"); gets(str); printf("探す文字を入力してください:"); scanf("%c",&ch); for(i = 0;str[i];i++)if(str[i]==ch)num++; printf("%c は %d 個見つかりました",ch,num); return 0; }
161 名前:157 [2008/01/17(木) 16:42:11 ] 正確な文字数でメモリ確保する方法ないですか? ヒントください。
162 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:47:01 ] 文字列が入力されるまで長さがわからないなら、事前にその文字数分確保する方法はないだろ。 多目に確保するのがどうしてもイヤならリストにでもしろよw
163 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:09:18 ] >>161 scanfを使わない
164 名前:デフォルトの名無しさん [2008/01/17(木) 18:10:39 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):整数をm個入力してソートし、その後(2分)検索をn回行うプログラムを作りなさい(mとnは入力して決める)。ただし、できるだけポインタを利用した関数を作成して用いなさい。 [3] 環境 [3.1] OS: (Windows Vista) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C) [4] 期限: [2008年1月18日12:00まで] [5] その他の制限: お願いします。
165 名前:デフォルトの名無しさん [2008/01/17(木) 18:18:26 ] >>161 多めに確保して、改めてmallocで宣言するくらいだな。
166 名前: ◆cPUZU5OGFs mailto:sage [2008/01/17(木) 18:56:26 ] 前スレ986の2分木の者です。 何とか解決出来たので>>143 のリストから削除お願いします。 もし取り掛かってる方いましたらありがとうございました。
167 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:53:12 ] コンパイルは通るのですが、「メモリが"written"になることはできませんでした」というエラーが出てばっかりで、やりきれない気持ちでいっぱいになりました。 forループと複雑な計算を大量にしていると起こりやすい気がするのですが、その場合に考えられる特定の原因ってありますか?
168 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:56:50 ] ポインタじゃねえの?
169 名前:デフォルトの名無しさん [2008/01/17(木) 19:59:44 ] [1] 授業単元: プログラミング1 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.txt [3] 環境 [3.1] OS: Windows、Unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2008年1月17日21:00まで [5] その他の制限: 図があるためリンクを押すとzipを開くようになっています。 問題と図は無題.bmpです。ウイルスではありません。 お願いします。
170 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:59:52 ] >>168 試しにforループ内のiを逐一表示してみたのですが、i++なのに何故か途中でとんでもない数字に飛んだりします。 ポインタの扱いを間違っているって事ですか?
171 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:00:11 ] >>167 文章は読めたのですが、「こいつは一体何がいいたいんだ?」という疑問が出てばっかりで、 やりきれない気持ちでいっぱいになりました。 ソースを晒せばすぐに原因が分かる気がするのですが、それをしない特定の理由ってありますか?
172 名前:デフォルトの名無しさん [2008/01/17(木) 20:00:19 ] >>169 すみません、URLをまちがえました
173 名前:デフォルトの名無しさん [2008/01/17(木) 20:01:11 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.zip
174 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:09:58 ] >>142 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5791.cpp
175 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:17:50 ] >>169 #include <stdio.h> #include <stdlib.h> int route(int m, int n) { if (m == 1 || n == 1) return 1; else return route(m - 1, n) + route(m, n - 1); } int main(int argc, char *argv[]) { if (argc != 3) return 1; int m = atoi(argv[1]), n = atoi(argv[2]); printf("%d", route(m, n)); return 0; }
176 名前:デフォルトの名無しさん [2008/01/17(木) 20:23:58 ] >>175 実行してみたのですがなにも起こりませんでした・・・
177 名前:167 mailto:sage [2008/01/17(木) 20:26:46 ] >>171 やりきれない気持ちにさせてしまい申し訳ありません。私が分からないだけでよくある話かと思い、気軽に質問してしまいました。反省します。 プログラムが変な挙動をして強制終了する部分は下リンク先の大きなforループ内です。iが100を超えた瞬間にpointnの数値がオーバーフローします。プログラム自体は3ファイルに分かれていて長いので、ここに原因がなければ諦めます。 [1] 授業単元: 応用プログラミング [2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5792.txt [3] 環境 [3.1] OS: windowsXP [3.2] gcc32 [3.3] cpp
178 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:31:59 ] >>177 症状が再現する最小のソースを示すのが礼儀だぞ。 widthやheightがどんな値を取るかもわからないでどうして答えられると思う?
179 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:34:28 ] なんでiが100超えるん?
180 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:36:16 ] >>179 ばっふぁおーばーふろー があれば簡単さw
181 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:36:50 ] >>176 引数に1以上与えればなんか出るはずなんだがな
182 名前:デフォルトの名無しさん [2008/01/17(木) 20:40:12 ] >>181 すみません、こちらのミスでした。 ちゃんと実行できました。 ありがとうございました
183 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:42:47 ] >>179 バッファオーバーフローのテスト コンパイラが自動変数をどこに配置するかによっても結果が変わるので 必ずしも何かが起こるとは限らない /* 最適化をオフにしてコンパイルしてね */ #include <stdio.h> int main(void){ int x=123; int y[1]={456}; int z=789; printf("x=%d z=%d\n", x, z); y[1]=0; printf("x=%d z=%d\n", x, z); return 0; }
184 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:47:55 ] point[100]なんだからiが100になっちゃいかんだろ。
185 名前:183 mailto:sage [2008/01/17(木) 20:50:44 ] >>177 i が pointn の数値以上になるということは //後略 の部分に問題がある可能性が高いよ >>179 ごめん勘違いしてた
186 名前:167 mailto:sage [2008/01/17(木) 20:52:22 ] >>178 最小に纏め上げるのが困難なもので…。 >>184 それでした。直した結果完璧に動きます。恥ずかしすぎる…。 みなさんご迷惑おかけしました。すれ汚しすみません。ありがとうございました。
187 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:59:58 ] 別にまとめる必要すらないだろ。 まあ大方、全体を見せたくないとか言うんだろうが
188 名前:デフォルトの名無しさん [2008/01/17(木) 21:13:50 ] >>167 pointn = (int)((rand()/(double)(RAND_MAX+1.0f))*100);//コア数 これだろ、、おかしいの。
189 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:19:01 ] >>174 文字列の式は固定ではなく、手動での入力なのです・・・。 自分の説明が不足していました、すみません。 あげていただいたプログラムを参考に、自分でももう少し頑張ってみます。
190 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:23:10 ] >>188 それ自体は0-99の乱数を発生させるだけで、おかしくなくね? キャストはなくてもいいけど、あってまずいもんでもないし。
191 名前:デフォルトの名無しさん [2008/01/17(木) 21:33:53 ] >>190 ぉぉぅ、たしかに普通に見間違えた。 >>167 なんでもないから>>188 は普通にスルーしてくれ。 かき乱してすまん。
192 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:34:26 ] これだから情報を小出しにする奴は嫌いだ。。 どうせ原因は他にあるのに。
193 名前:デフォルトの名無しさん [2008/01/17(木) 21:39:10 ] 自分でここに原因があるって思って見つけられないときは 大方別のところに原因がある。 長かろうが短かろうが、主題さえはっきりしてれば別段読み解くのは難しくない。 てことで>>167 ソースplz
194 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:41:21 ] もう終わってるんだけどw
195 名前:デフォルトの名無しさん [2008/01/17(木) 23:56:16 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5794.txt [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語: C [4] 期限:1月22日 [5] その他の制限: 特にないです
196 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:07:14 ] 【時間切れ】 (1/17) >>151 【未解決問題】 >>164 1/18 12:00 >>142 1/18 >>172 (手動入力) pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18 >>86 1/22 >>195 1/22 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>79 無期限 >>144 無期限 問題文>>148
197 名前:デフォルトの名無しさん [2008/01/18(金) 00:07:39 ] >インターネット上でファイルの転送に利用されるプロトコルは?(20点) >[1] FTP, [2] POP, [3] PPP, [4] SMTP << 1 >正解です。 これってPOP&SMTPもファイル転送で使わね?添付ファイルてきな意味で。
198 名前:デフォルトの名無しさん [2008/01/18(金) 00:13:10 ] >>144 は最小二乗法の式作ってとくところからだな
199 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:24:39 ] >>197
200 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:26:58 ] >>pc11.2ch.net/test/read.cgi/tech/1199515728/824 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5795.cpp
201 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 08:06:12 ] >>164 #include <stdio.h> #include <stdlib.h> int cmp( const void * l, const void * r ) { return *((int*)l)-*((int*)r); } int main( int argc, char ** args ) { int m, n, i, * data; printf( "input m :" ); scanf( "%d", &m ); printf( "input n :" ); scanf( "%d", &n ); data = ( int * )calloc( m, sizeof( int ) ); if ( ! data ) { puts( "no memory."); exit(1) ; } for ( i = 0; i < m; ++i ) scanf( "%d", &data[ i ] ); qsort( data, m, sizeof( int ), cmp ); for ( i = 0; i < n; ++i ) { int * p, q; printf( "search for >" ); scanf( "%d", &q ); p = bsearch( &q, data, m, sizeof( int ), cmp ); if ( p ) printf( "%d found at %d, %d\n", q, 1 + ( p - data ), data[ ( p - data ) ] ); else printf( "not found.\n" ); } free( data ); return 0; }
202 名前:デフォルトの名無しさん [2008/01/18(金) 10:28:31 ] [1] 授業単元:プログラミング [2] 問題文:問題@ 商品番号・商品名・個数・単価を対象とする構造体の配列を利用し、 データを入力して、一覧表を表示するプログラムを作りなさい。ただし、 各データごとに金額を、最後に合計金額を出しなさい。 問題A 上の問題の構造体の配列を利用し、データを入力した後、商品番号を 並び替えを行い、その結果を一覧表として表示するプログラムを 作りなさい。 [3] 環境 [3.1] OS: (WindowsVISTA) [3.2] コンパイラ名とバージョン: (borland) [3.3] 言語: (C) [4] 期限: ■■緊急■■本日1月18日正午まででお願いします。 [5] その他の制限: 特にありません。
203 名前:デフォルトの名無しさん [2008/01/18(金) 12:42:14 ] [1] 授業単元:プログラミング [2] 問題文:文字列を逆順にコピーする関数xcopyをポインタを用いて作り、確認のためのプログラムを作りなさい。ただし、xcopy(char*to,char*from)とします。なお、対象とするデータは通常の英数字とします。 [3] 環境 [3.1] OS: (Windows VISTA) [3.2] コンパイラ名とバージョン: (borland) [3.3] 言語: (C) [4] 期限: 1月18日 [5] その他の制限: 前102代目に書き込んだんですが見れなくなってしまったのでもう一度お願いします。
204 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:50:39 ] >>203 昔のスレからの拾い物 700 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/06(木) 20:47:06 [1] 授業単元:C言語 [2] 問題文 要素数がnoであるint型の配列v2の並びを逆順にしたものを配列v1に格納する関数、 void intary_rcpy(int v1[],const int v2[],int no) {/…/} を作成せよ [3] 環境 [3.1] OS:Windows XP [3.2] VS2005 [3.3] 言語:C++ [4] 期限: 12月7日(金)の午前中まで よろしくお願いします 702 名前:デフォルトの名無しさん[sage] 投稿日:2007/12/06(木) 21:00:46 >>700 #include <algorithm> void intary_rcpy(int v1[],const int v2[],int no){std::reverse_copy(v2, v2+no, v1);}
205 名前: ◆vLIz8KOkPM [2008/01/18(金) 12:54:05 ] [1] プログラミンぐ演習 [2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5798.txt [3.1] Linux [3.2] gcc [3.3] C言語 [4] 今日15時まで エラーの内容がわかりません…どなたか修正してください…
206 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:56:36 ] >>203 void xcopy(char *to, char *from) { char *p = from; while(*p) p++; while(p--!=from) *to++ = *p; *to = '\0'; }
207 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 13:54:06 ] >>205 とりあえず その30行目を穴が開くまで読み返せ new[ length ] = ’\0’; single quotationが全角だ
208 名前:デフォルトの名無しさん [2008/01/18(金) 14:32:38 ] [1] 授業単元: プログラミング基礎 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5799.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: [2008年01月18日23:59まで](本日中) [5] その他の制限: B_1は自力でいけましたが2に手が出ません;
209 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:20:22 ] >>208 B_2 #include <stdio.h> #define N 20 void place_queen(int *x, int n, int k) { int i, j; if(k == n){ for(i = 0; i < n; i++) printf("%d ", x[i]); putchar('\n'); return; } for(i = 0; i < n; i++){ for(j = 0; j < k; j++) if(i == x[j] || k - j == i - x[j] || k - j == x[j] - i) break; if(j == k){ x[k] = i; place_queen(x, n, k + 1); } } } int main(void) { int n, x[N]; printf("Input n : "); scanf("%d", &n); place_queen(x, n, 0); return 0; }
210 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:43:55 ] >>208 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5800.txt
211 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:13:00 ] >>208 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5801.txt
212 名前:211 mailto:sage [2008/01/18(金) 18:20:51 ] >>208 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5802.txt ごめん、こっちで。
213 名前:208 [2008/01/18(金) 21:00:56 ] みなさんありがとうございます><; 参考にさせていただきました。非常に助かります 申し訳ないのですが、 もしよろしかったらこちらの方もお願いできませんか? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5803.txt
214 名前:デフォルトの名無しさん [2008/01/18(金) 22:01:12 ] [1] 授業単元: プログラミング中級 [2] 問題文(含コード&リンク):random1.txt、random2.txtという名前の2つのファイルを 作成し、それぞれに0〜100の範囲の乱数(整数)を20個ずつ書き込みなさい。 これら2つのファイルの内容を1行ずつ比較し、大きいほうの数をmax.txtに 書き込みなさい。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: わかりません。 [3.3] 言語: C++ [4] 期限:無期限ですが、なるべく早く知りたいです。
215 名前:214 [2008/01/18(金) 22:02:59 ] 途中まではやってみました・・ #include<stdio.h> #include<stdlib.h> int main(void) { FILE *fout, *fout2, *fout3, *fin, *fin2; int buf,buf2; char filename2[]="random1.txt"; char filename3[]="random2.txt"; char filename4[]="max.txt"; int i; printf("ファイルrandom1.txtを作成しました。\n"); printf("ファイルrandom2.txtを作成しました。\n"); printf("ファイルmax.txtを作成しました。\n");
216 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:03:22 ] >>213 良さそうな教授だなーとちょっと羨ましく思った。そんな俺は非情報学部。
217 名前:214 [2008/01/18(金) 22:03:42 ] 続きです fout=fopen(filename2,"w"); srand(time(NULL)); for(i=0;i<20;i++){ buf=rand()%101; fprintf(fout,"%d\n",buf); } fout2=fopen(filename3,"w"); for(i=0;i<20;i++){ buf2=rand()%101; fprintf(fout2,"%d\n",buf2); } fin = fopen(filename2, "r"); if(fin == NULL){ printf("%dをオープンできません\n", filename2); exit(1); }
218 名前:デフォルトの名無しさん [2008/01/18(金) 22:07:50 ] [1] 授業単元:CプログラミングT [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5805.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:分かりません [3.3] 言語:C++ [4] 期限:2008年1月19日 09:00 [5] その他の制限:特にありません よろしくお願いします!
219 名前:214 [2008/01/18(金) 22:08:01 ] fin2 = fopen(filename3, "r"); if(fin2 == NULL){ printf("%dをオープンできません\n", filename3); exit(1); } fout3=fopen(filename4,"w"); while(1){ if (fscanf(fin,"%d",buf)==EOF) break; if (fscanf(fin2,"%d",buf2)==EOF) break; if(buf>buf2){ fprintf(fout3,"%d\n",buf); } else fprintf(fout3,"%d\n",buf2); } fclose(fout); fclose(fout2); fclose(fin); fclose(fin2); fclose(fout3); return 0; }
220 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:16:02 ] >>214 すこしせこいがこれじゃだめかね #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { FILE *fran1, *fran2, *fmax; char filename1[] = "random1.txt"; char filename2[] = "random2.txt"; char filename3[] = "max.txt"; int i, buf1, buf2; if ((fran1 = fopen(filename1, "w")) == NULL || (fran2 = fopen(filename2, "w")) == NULL || (fmax = fopen(filename3, "w")) ==NULL) { printf("ファイルが作れません\n"); return -1; } printf("ファイルrandom1.txtを作成しました。\n"); printf("ファイルrandom2.txtを作成しました。\n"); printf("ファイルmax.txtを作成しました。\n"); srand(time(NULL)); for (i = 0; i < 20; ++i) { buf1 = rand()%101; buf2 = rand()%101; fprintf(fran1, "%d\n", buf1); fprintf(fran2, "%d\n", buf2); fprintf(fmax, "%d\n", (buf1 >= buf2) ? buf1 : buf2); } fclose(fran1); fclose(fran2); fclose(fmax); return 0; }
221 名前:デフォルトの名無しさん [2008/01/18(金) 22:30:26 ] れいぷれいぷ
222 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:35:46 ] 長くなるんならアップロードしろ
223 名前:デフォルトの名無しさん [2008/01/18(金) 22:36:53 ] すいません 丸投げじゃないんですが、 どこで聞いてもわからないのでわかるかたいたらおねがいします・・ ”数値を文字列として入力して、一桁ずつを配列にいれて和・差・積を出す” って問題で、ここでプログラム作ってもらったんですがわかんないとこがあって、、 ↓これ、積の計算らしいんですけどどういう意味ですか(∵)? int i, j, carry; // 最大100桁になるので2N桁を0に初期化 for( i = 0 ; i < 2 * Max_Length ; i++ ) a[i] = 0; for( i = 0 ; i < Max_Length ; i++ ) { carry = 0; for( j = 0 ; j < Max_Length ; j++ ) { a[i+j] += b[i] * c[j] + carry; carry = a[i+j] / 10; a[i+j] -= carry * 10; 詳しく説明できるかたいたらお願いします、、
224 名前:デフォルトの名無しさん [2008/01/18(金) 22:37:47 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5806.txt [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語: C 言語 [4] 期限:1月22日 [5] その他の制限:
225 名前:214 [2008/01/18(金) 22:43:53 ] >>220 さん ありがとうございます。 ただ、 fprintf(fmax, "%d\n", (buf1 >= buf2) ? buf1 : buf2); がよくわかりません。。 ?や:の使い方習っていなんです。 bufとbuf2を比較して表示するところがどうしてもできません。
226 名前:220 mailto:sage [2008/01/18(金) 22:47:35 ] if (buf1 >= buf2) { fprintf(fmax, "%d\n", buf1); } else { fprintf(fmax, "%d\n", buf2); } こういうこと。使い方は三項演算子でぐぐれ。
227 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:47:48 ] >>225 if (buf1 >= buf2) fprintf(fmax, "%d\n", buf1); else fprintf(fmax, "%d\n", buf2);
228 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:05:12 ] >>223 情報を小出しにしない方がいい(・3・)YO 筆算と同じ手順と考えたらいい
229 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:43:09 ] [1] C言語入門 [2] 文字列の入れ替え [3] 環境 [3.1] Windows XP [3.2] bcc55 [3.3] C言語 [4] 1週間後 [5] 最初と最後の文字を入れ替える 動作例 文字を入力しる:12345 52341 お願いします。
230 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:04:48 ] 【時間切れ】 (1/18) >142 >202 >213 ? 【未解決問題】 >>218 1/19 9:00 >>86 1/22 >>195 1/22 >>224 1/22 >>229 1/25 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>79 無期限 >>144 無期限 問題文>>148
231 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:05:09 ] [1] 授業単元:プログラミング [2] 問題文: グレゴリウス暦の定義を利用して入力された日は何曜日か計算しなさい 西暦1年1月1日は月曜日とする 1年は通常365日ですが閏年は366日 4で割り切れる年は閏年 100で割り切れる年は閏年ではない 400で割り切れる年は閏年 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語: C [4] 期限:1月21日 [5] その他の制限: 変数名、関数名の命名規約を作成 goto文は使用しない 開発途中でのreturn プログラム途中でのexitはしない事 よろしくお願いします。
232 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:05:10 ] 142ですが、課題のほうは一応どうにかなったので報告。 取り組んでいただいた方、ありがとうございました。