1 名前:デフォルトの名無しさん [2010/05/26(水) 07:45:28 BE:94671825-S★(522522)] あなたが解けない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++の宿題片付けます 135代目 pc12.2ch.net/test/read.cgi/tech/1269438098/
2 名前:デフォルトの名無しさん [2010/05/26(水) 12:04:44 ] [1] 授業単元:プログラミング演習 [2] 問題文:単価と数量を入力するごとに金額を表示し、データ入力終了後合計金額と、千円札のみで払う場合の枚数と釣り銭を表示しなさい。なお、入力データのの終わりは単価0とする。 実行例 300 2 <ーーデータ入力 300*2=600円 <ー表示 250 5 250*5=1250円 100 1 100*1=100円 1500 2 1500*2=3000円 350 4 350*4=1400円 0 0 <ーーデータの終わり 合計金額 6350円 <ーー合計表示 1000円札 7枚 <ーー1000円札の枚数表示 釣り銭 650円 <ーー釣り銭の金額表示 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4]期限:26日PM10:00 [5]その他制限: printf int while scanf float for 今まで習ったのはコレくらいです。今回もよろしくお願いします。
3 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 12:40:38 ] >>2 前スレまだ残っているが。0 0の時の出力はない方がいいなら、 if ( tanka != 0 ) を、小計出力の前に置けばいい。 int main() { int tanka, kosu, shokei; // 単価 個数 小計 int maisu, gokei = 0; // お札枚数, 合計 do { scanf("%d", &tanka); scanf("%d", &kosu); shokei = tanka * kosu; gokei += shokei; printf("%d * %d = %d 円\n", tanka, kosu, shokei); } while ( tanka != 0 ); printf("合計金額 %d円\n", gokei); maisu = gokei/1000 + 1; printf("1000円札 %d枚\n", maisu); printf("お釣り %d円", maisu*1000 - gokei); }
4 名前:デフォルトの名無しさん [2010/05/26(水) 22:48:48 ] >>3 ありがとうございます!! 新レスについ、スレしてしまいました;;
5 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 23:39:12 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 以下の実行結果になるようおねがいします 文字列を入力してください adlkjgeiakdalf 確認したい文字を入力してください a 文字(a)の数は3文字です [3] 環境 [3.1] OS: Windows [3.2] gcc 3.4 [3.3] 言語:C [4] 期限:できる限り早くおねがいしますorz [5] その他の制限: 一次元二次元配列まで習いました
6 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 00:21:54 ] >>5 ttp://ideone.com/cppym
7 名前:デフォルトの名無しさん [2010/05/27(木) 00:37:35 ] 前スレで同じ質問したのですが 行列の積を計算するプログラムのコードを提出という課題が学校で出たのですが 前スレでは初期化していない事と添え字がずれていると指摘されたのですが、それを直しても下の実行結果でした n (n<=10) の値を入力して下さい。 2 行列aの1行1列の値を入力して下さい。 1 行列aの1行2列の値を入力して下さい。 2 行列aの2行1列の値を入力して下さい。 3 行列aの2行2列の値を入力して下さい。 4 行列bの1行1列の値を入力して下さい。 1 行列bの1行2列の値を入力して下さい。 2 行列bの2行1列の値を入力して下さい。 3 行列bの2行2列の値を入力して下さい。 4 c[0][0] = 10551303 c[0][1] = 4106 c[1][0] = 15 c[1][1] = 29
8 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 00:52:18 ] >>7 ちゃんと↓のまま試した? codepad.org/ZsuxxDc6 そのまま試していれば、この添え字にはならないと思うんだけど c[0][0] = 10551303 c[0][1] = 4106 c[1][0] = 15 c[1][1] = 29
9 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 11:31:31 ] 質問中に大変申し訳ありません。 ここに気付かずに重複スレ立ててしまいました。すみません。 pc12.2ch.net/test/read.cgi/tech/1274926862/ 前スレの消化速度はおおよそ2ヶ月でしたが、削除依頼すべきか、再利用するのか。 これまでのケースを知りませんので、ご意見を伺いたく思います。
10 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 12:05:08 ] >>008 #include<stdio.h> int main (void) { int i,j,k,n; int a[10][10],b[10][10],c[10][10]; printf("n (n<=10) の値を入力して下さい。\n"); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("行列aの%d行%d列の値を入力して下さい。\n",i,j);scanf("%d",&a[i-1][j-1]);}} for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("行列bの%d行%d列の値を入力して下さい。\n",i,j);scanf("%d",&b[i-1][j-1]);} } // for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { for(k=0;k<=n;k++){ for(i=0;i<n;i++) { for(j=0;j<n;j++) { c[i][j] = 0; for(k=0;k<n;k++){ c[i][j] += a[i][k] * b[k][j];}}} // for(i=0;i<=n;i++){for(j=0;j<=n;j++){ for(i=0;i<n;i++){for(j=0;j<n;j++){ printf("c[%d][%d] = %d\n",i,j,c[i][j]);}} return 0; } >>009 が、おせっかいな人=あわて者 982 が焦ったということで。
11 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 15:24:48 ] >>9 落ちてなければ次スレとして使えばいいさ 検索で飛んでくる人はどっちにいくか知らないけどw
12 名前:デフォルトの名無しさん [2010/05/27(木) 18:16:43 ] RGBで虹色のグラデーションを作るプログラムを3行以内で教えてくだしあ><
13 名前:デフォルトの名無しさん [2010/05/27(木) 19:16:30 ] 虹色の7色っていうのは何らかの規則性があるのでしょうか 自分で1つ1つ色を指定していなかくてはいけないのですか??
14 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 19:18:36 ] 国によって虹の色の考え方は違う
15 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 19:43:46 ] >>12 なんとか三行になったぞw int f(int x){int y;x%=1024;y=x/256;z=x%256;if(y==0)return 0;if(y==1)return z; if(y==2)return 255;return 255-z;} long col(int x){if(x<0||896<x)return 0;return f(x+512)<<16+f(x+256)<<8+f(x);}
16 名前: ◆/91kCCQXBo mailto:sage [2010/05/27(木) 20:11:37 ] >>015 1/30 でバンドになるから、30*30で表示してみた。いいぞ。 #include <stdio.h> int f(int x){ int y, z; x%=1024;y=x/256;z=x%256; if(y==0)return 0; if(y==1)return z; if(y==2)return 255; return 255-z; } long col(int x){ if(x<0||896<x)return 0; return (f(x+512)<<16) + (f(x+256)<<8) + f(x); } int main(void){ int i, j; printf("Content-type: text/html\n\n"); /* ここから3行 */ printf("<html><body><table width=200 height=200>\n"); for(i=0;i<30;i++){ printf("<tr>\n"); for(j=0;j<30;j++) printf("<td bgcolor=\"#%06LX\"></td>", col(i*30+j)); printf("</tr>\n");} printf("</table></body></html>\n"); /* ここまで */ }
17 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 20:33:16 ] >>16 そりゃ三日三晩考え抜いたからな
18 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 22:51:06 ] 7行プログラムスレでやれw
19 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 23:28:09 ] >>6 ありがとうございます!!助かりました
20 名前:9 mailto:sage [2010/05/28(金) 07:33:53 ] 先日のうっかり者です。 ここはスレ立てに関していい意味で緩いようですので、再利用不可の単発でもないので残すことにいたします。 もしも落ちていなければ、次スレにでも隔離スレにでも何なりと使ってください。以上です。 質問メインのスレでお騒がせしいたしました。それでは失礼いたします。
21 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 11:21:43 ] いいってことよ
22 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 11:52:21 ] ↑自演
23 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 12:00:29 ] スレタイって主以外でも変えられるのかな。できないとすると使い物にならないけど。
24 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 12:06:23 ] 主が立てた人って意味なら主でも変えられないよ
25 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 17:23:50 ] なんかインターネット創成期みたいな会話だな
26 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 18:19:59 ] インターネット創成期にこんな高度な会話してる人がいたらびっくりするね
27 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 19:11:17 ] >>23 馬鹿?
28 名前:デフォルトの名無しさん [2010/05/29(土) 08:34:07 ] 猫、以下の話だが↓この結果が #include<stdio.h> main(){ int i; for(i=1;i<6;i++) printf("%*d\n",i,i); } ↓こうなるように誰かお願いします。 @ @ @ @ @ @ @ @ @
29 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 09:43:46 ] // 描画 #include <stdio.h> #define N 6 int main(void){ int i; for(i=1; i<N; i++) printf("%*d\n", i, i); for(i-=2; i>0; i--) printf("%*d\n", i, i); return 0; }
30 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 11:58:25 ] 無駄にループを一つにしてみた。 #include <stdio.h> int main(void) { int i, j = 1; for(i=1; i > 0; i += j) { if(i==5) j = -1; printf("%*d\n", i, i); } return 0; }
31 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 12:35:17 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10625.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2010年6月2日まで [5] その他の制限:なし 2問ありますが、よろしくお願いします。
32 名前:デフォルトの名無しさん [2010/05/29(土) 13:06:45 ] >29 >30 ありがとうございます。数字が@に変身すると、もっとありがとうなんですが。 がんばって立派な大学生になります。
33 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 13:09:27 ] >>31 【1】 (1) print_g(&t); (2) x = (t->a.x + t->b.x + t->c.x) / 3; (3) y = (t->a.y + t->b.y + t->c.y) / 3; 【2】 (1) return 1; (2) return car(head) * fact(cdr(head));
34 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 13:16:32 ] >>32 printf("%*d\n", i, i) → printf("%*c", i, '@');
35 名前:デフォルトの名無しさん [2010/05/29(土) 13:52:28 ] >34 まじ、ありがとうございました。
36 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 14:06:54 ] [1]授業単元:プログラミング演習 [2]問題文:たしてちょうど15になる7個の自然数の組合せをすべて列挙し、、 すべての組合せを表示し終えた後にそれらの組合せが全部でいくつあるの かも出力するプログラムを作れ。 [3] [3.1]OS:windows7 [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C++ [4]期限:2010年6月1日まで [5]できればfor文orwhile文(他の文が一部混ぜっていてもいい) お願いします。
37 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 14:08:59 ] 元のスレの答えで十分だろ
38 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 14:14:27 ] test
39 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 14:22:22 ] qb5.2ch.net/operate/ テストするな
40 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 14:47:34 ] >>36 for文も使ってある #include <stdio.h> void hoge(int *count, int result[], int left_num, int min_num, int rest){ int i; if(rest<=1) { result[0]=left_num; for(i=0;i<7;i++) printf(" %d", result[i]); printf("\n"); *count+=1; return; } for(i=min_num;i<=left_num/rest;i++) { result[rest-1]=i; hoge(count, result, left_num-i, i, rest-1); } } int huga(void){ int count=0, result[7]; hoge(&count, result, 15, 1, 7); return count; } int main(void){ printf("%d\n", huga()); }
41 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 15:01:03 ] >>40 ありがとうございます。
42 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 23:48:19 ] >>33 ありがとうございました。
43 名前:デフォルトの名無しさん [2010/05/30(日) 00:27:48 ] [1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10627.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2010年5月31日8:30まで [5] その他の制限:step通りに作成 よろしくお願いします。
44 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 11:39:25 ] >>43 5目並べなのか10目並べなのかはっきりしてほしい
45 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 11:43:18 ] どこをどう読んだら10目並べなんてものが出てくるのかw
46 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 11:44:56 ] >>45 これ [step1]'十','−’,'|’などの文字を使って五目並べをするための10行10列の格子枠をキャラク タモードで表示する。関数化(関数名waku)しておく。(注意:この格子枠を表示するのが 難しければ、列を表す最上端の数字1〜1Oと、各行の左端に行を現す数字1〜10を表示 すること) 1 2 ・・・・・10 +−−−+−−−+・・・ 1 | + 2 |
47 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 11:53:38 ] 五目並べをする盤のサイズが10*10なだけにしか読めないが。
48 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 12:00:06 ] そうだな、ルールを勘違いしてた
49 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 15:56:54 ] >>43 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10629.txt
50 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 16:03:12 ] AとBとでループ2つってのは微妙
51 名前:デフォルトの名無しさん [2010/05/30(日) 16:08:01 ] >>49 ありがとうございました。
52 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 16:26:57 ] >>49 斜めの判定の実装で悪戦苦闘しているうちに先越された! くやしい! でも感じちゃう。
53 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 16:34:29 ] >>49 そう思ったなら自分で改造してみるのがプログラマってもんでしょう! …負け惜しみじゃないですよ^q^
54 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 16:35:13 ] アンカミス… >>53 は>>50 宛です
55 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 16:45:00 ] 案外すぐ直せたので直しました void main() { int x, y, player = 1; char buf[32]; waku(0, 0, 0); for (;;) { do { printf("%sさん次の手を入力しなさい\n", koma[player]); fgets(buf, MAX_BUF, stdin); } while (inputToVector(buf, &x, &y)); waku(x, y, player); if (narabi(x, y, player)) { printf("%sさんの勝ち\n", koma[player]); break; } player = 3 - player; } }
56 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 16:53:04 ] 質問1に答えやすくしてるのかと思ったけどそうじゃなかったのか
57 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 17:08:08 ] 最初はそのつもりだったけど>>50 に指摘された時点ではすっかり忘れてたw
58 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 16:59:42 ] [1] 授業単元:C言語プログラミング [2] 問題文:10進数を2進数に変換するプログラムをC言語でつくれ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日の昼 [5] その他の制限: 制限はありませんが基本的な構造でお願いします
59 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:19:47 ] >>58 codepad.org/oV6Eztkq
60 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:27:04 ] >>59 ありがとうございます。 制限に書き忘れましたができればビット演算子は無しでお願いします。
61 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:34:16 ] どこにビット演算子が
62 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:55:43 ] >>59 短くしてみたw codepad.org/4clJto84 再帰でリバースを排除 これで提出はしない方がいいと思うけど
63 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 18:19:35 ] >>62 さらに 負号で負数にも対応 codepad.org/A6omw7NU むしろ ビット演算子を使った場合(この環境では負数は2の補数表現であることがわかる) codepad.org/I4sjhz4A
64 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 18:41:54 ] 簡単な問題だとレスがたくさん付くなw
65 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 18:49:24 ] たくさんも何も一人しか答えてないんじゃ?
66 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 18:51:42 ] >>62 再帰呼び出しの必要のない時は使わないのが吉
67 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:00:42 ] >>64 そうそう、これが「4元1次方程式を解け」とか「ルンゲ・クッタ法で」とかだったら、とたんに放置されてしまうんですよね。
68 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:01:39 ] 放置+void main()議論でごまかす
69 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:06:22 ] >>68 void main() 議論は宿題がでなかった時期に燃えたのでは?
70 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:21:35 ] >>69 よく見るとそうだな でも、数独議論でごまかすはあったようなきがする
71 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 19:42:49 ] 数独は英語が読めないバカだったかバブルソートも知らないアホだったかが スレを流そうとしてたんじゃねーの?w
72 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 20:43:55 ] C++の宿題出してくれ
73 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:02:19 ] 自分自身を出力するソースコードをお願いします
74 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:06:26 ] ググればみつかるだろ
75 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:44:04 ] [1] 授業単元:C言語プログラミング [2] 問題文:コマンドライン引数に指定された文字列それぞれが 16進数表記で表された0以上100万以下の整数であ るをことをチェックした後、それを12進数に 変換したものを表示するプログラムをつくれ 16進数表記の先頭の0xはなくても良いがあってもエラーに してはならない。16進数表記になっていない、あるいは 指定された範囲に無い場合はその旨表示する。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual C++.NET 2008 [3.3] 言語: C [4] 期限: 明日の夕方 [5] その他の制限: stdio.hをincludeできる。 そこで定義されている関数のみ標準関数として使用できる 標準関数以外で定義して使用できるものは1個に限るものとする。 グローバル変数は使用してはならない 各関数のローカル変数は2個まで使用できる。配列は使えない。 構造体、共用体 else文を使ってはならない。
76 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:48:53 ] 制限めんどくさくてやる気しないw
77 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:49:14 ] やってみようと思ったが制限が厳しすぎて一気にやる気がなくなった まぁ、可能なんだろうけど
78 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:50:59 ] 意訳すると 「やる気がない」=「できない」
79 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:54:24 ] >標準関数以外で定義して使用できるものは1個に限るものとする。 これって自作関数1個しか作っちゃいけないってことか? メイン一つと自作関数一つ、それぞれローカル変数2個だけってかなり厳しくないか?
80 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:55:38 ] main定義したら終わりじゃね
81 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 21:57:20 ] 仮引数ってローカル変数扱いだから、メインで他の変数宣言しちゃだめじゃんw
82 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:01:55 ] >>058 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10632.c
83 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:05:12 ] >>80 暗黙のうちに、main関数以外で自作できるのは1つだけ でいいんぢゃね? あと引数は、C言語教室的にはローカル変数とは区別されるだろ? {}の中で定義される変数のことなんだろから
84 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:07:34 ] #include<stdio.h> int main(int argc, char *argv[]){ long x, y=0; if(argc<2){ printf("\nエラー:コマンドライン引数を指定してください\n"); return 1; } if(sscanf(argv[1], "0x%lx", &x)!=1){ if(sscanf(argv[1], "%lx", &x)!=1){ printf("\nエラー:十六進数ではありません\n"); return 2; } } if(x<0 || 1000000<x){ printf("\nエラー:値が範囲外です\n"); return 3; } y+=(x/(1*12*12*12*12*12))%12<<20; y+=(x/(1*12*12*12*12))%12<<16; y+=(x/(1*12*12*12))%12<<12; y+=(x/(1*12*12))%12<<8; y+=(x/(1*12))%12<<4; y+=(x/(1))%12; printf("%lx\n", y); return 0; }
85 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:07:45 ] ずいぶん厳しい制限だなぁこれ。
86 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:11:41 ] >>84 文字列は一つじゃないみたいだけど
87 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:12:36 ] strtolってstdlibか まんどくせ
88 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:18:31 ] >>86 y使い回せばよくね
89 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:19:04 ] #include<stdio.h> long func(long x){ long y=0; y+=(x/(1*12*12*12*12*12))%12<<20; y+=(x/(1*12*12*12*12))%12<<16; y+=(x/(1*12*12*12))%12<<12; y+=(x/(1*12*12))%12<<8; y+=(x/(1*12))%12<<4; y+=(x/(1))%12; return y; } int main(int argc, char *argv[]){ long i, x; for(i=1;i<argc;i++){ if(sscanf(argv[i], "0x%lx", &x)!=1){ if(sscanf(argv[i], "%lx", &x)!=1){ printf("\nエラー:十六進数ではありません. %s\n", argv[i]); continue; } } if(x<0 || 1000000<x){ printf("\nエラー:値が範囲外です. %ld\n", x); continue; } printf("%s -> %lx\n", argv[i], func(x)); } return 0; }
90 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 22:20:47 ] sscanf()って前の一部が条件満たすと読み込めちゃうんだよな。
91 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:11:12 ] >>75 codepad.org/NrlIZHVT >>90 の問題にも対応したぞ
92 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:17:17 ] [1] 授業単元:応用プログラム〜C言語講座 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10633.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限: 2010年6月1日15時まで よろしくお願いします
93 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:45:53 ] これが12進数じゃなくて8進数とか6進数とかだったら お手上げだな
94 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:49:53 ] >>93 なんでそう思うの?
95 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:54:04 ] >>092 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10634.c
96 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:54:44 ] 先程はありがとうございました。 たびたび申し訳ありません。 [1] 授業単元:C言語プログラミング [2] 問題文:引数に与えられた10進数を2進数に変換し表示するするプログラムをC言語でつくれ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日の昼 [5] その他の制限: 制限はありませんが基本的な構造でお願いします
97 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:59:32 ] >>96 ありがとうございます
98 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:02:17 ] 安価ミスです >>95 ありがとうございます
99 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:03:50 ] >>096 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10635.c
100 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:06:54 ] >>96 codepad.org/ybmsbexu
101 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:15:44 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): n元連立1次方程式を解き,掃き出し法により求まる係数マトリクスの逆行列と解ベクトルを表示するプログラムを作れ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語:C++ [4] 期限: 2010年6月3日15:00頃まで [5] その他の制限: 出来るだけ基本的な方法でお願いします。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10637.txt 時間がなくなってきたので質問させていただきました。 自分なりにC++を扱うホームページの逆行列のプログラムを参考に、あまり分からないながら作ったのが下のプログラムです。 メモリやn次元の定義等は講義中で習っていないので良くわからないのですが、解を代入して求める未知数ベクトルを算出する作業が思うようにいきません。 URLのプログラムをうまい具合に変えて問題文の条件を満たすプログラムにして頂けると助かります。 またinclude<iostream>やcout、cinは授業の方では扱っていないので include<stdio.h>の形でprintfやscanfを用いて作って頂けたら幸いです。
102 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:21:46 ] C++の授業でiostreamでなくstdio.hを使わせるってのはどうなんだろう せめてstdio.hでなくcstdioじゃないかいな