- 1 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:18 ]
- あなたが解けない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++の宿題片付けます 130代目 pc12.2ch.net/test/read.cgi/tech/1250204272/
- 76 名前:デフォルトの名無しさん [2009/10/19(月) 23:29:15 ]
- >>48△
- 77 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:09:57 ]
- ファイルがバイナリかテキストかを判別する
プログラムはどうしたらいいですか?
- 78 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:16:34 ]
- バイナリモードで開いてテキストじゃない文字があればバイナリファイル
- 79 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:21:45 ]
- テキストファイルはバイナリファイルの部分集合
- 80 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:21:54 ]
- [1] 授業単元:c言語
[2] 問題文 問1 文字を一文字入力して、文字コードが一個次の文字を表示するプログラムを作成せよ。 問2 文字を一文字入力して、入力文字が a-z の範囲のときのみ、次のアルファベットを表示すプログラムを作成せよ。ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した場合は入力した文字をそのまま表示すること。 例: aを入力 → b を出力 bを入力 → c を出力 zを入力 → a を出力 3を入力 → 3 を出力 $を入力 → $ を出力 Aを入力 → A を出力 問3 文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか別して、判別結果を表示するプログラムを作成せよ。 [3] 環境 Windows, 言語:C++ [4] 期限:12月1日 1回やってもらったんですがわからないんでお願いします。
- 81 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:24:31 ]
- cなのかc++なのか、それが問題になるかも知れないし、環境もWindowsだけではちょっと。
って期限ながっっっ
- 82 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:29:40 ]
- >>80
問1 #include <stdio.h> int main() { char a; scanf("%c",&a); printf("%c\n", a+1); return 0; }
- 83 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:45:10 ]
- >>77
制御コードの割合。 #include <stdio.h> #define BOUND 0.02 double bincnt( char *q , unsigned int size) { unsigned int bin=0, ascii=0, n; unsigned char *p=(unsigned char*)q; for(n=0; n<size; n++) { if( p[n] < 32 && p[n] !=9 && p[n] !=10 && p[n] !=13 && p[n] !=27 ) bin++; else ascii++; } return (double)bin/ascii; } #define STRLEN 25 int main() { double x; char ch[STRLEN+1] = "abcdefghijk0123456789ABCD"; printf("Input = %s\n", ch); x = bincnt( ch, STRLEN); if( x > BOUND ) printf("Binary\n"); else printf("Not Binary\n"); getchar(); }
- 84 名前:デフォルトの名無しさん [2009/10/20(火) 00:50:00 ]
- >>80
問2 #include <stdio.h> int main() { char a,b; scanf("%c",&a); if(a == 'z') printf("a\n"); else if(a >= 'A') printf("%c\n",a); for(b = 'a'; b < 'z'; b++){ if(b == a) printf("%c\n", a+1); } return 0; }
- 85 名前:84 [2009/10/20(火) 00:54:07 ]
- else if(a >= 'A')
printf("%c\n",a); じゃなくて else if(a < 'a' || a >= 'z') printf("%c\n",a); だった
- 86 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:01:57 ]
- >>80
問3 #include <stdio.h> int main() { char a,b; int c= 0; scanf("%c",&a); for(b = 'A'; b <= 'Z'; b++) if(b == a) c = 1; for(b = '0'; b <= '9'; b++) if(b == a) c = 2; for(b = 'a'; b <= 'z'; b++) if(b == a) c = 3; switch(c){ case 1: printf("大文字です\n"); break; case 2: printf("数字です\n");break; case 3: printf("小文字です\n"); break; default: printf("それ以外です\n");break; } return 0; } そして俺の宿題はわけわかめ
- 87 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:10:55 ]
- >>86
今見たら終わってる・・・w 本当にありがとうございます(´;ω;`)
- 88 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:30:46 ]
- 前スレにも同じ問題あったな
- 89 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:41:32 ]
- >>84
forにしなくてもelseでいいんでない? ぱっと見動くように見えるからいいけど。 それと、多分'a'から'z'までが連続している保証はないというツッコミも来るだろうけど、 宿題だからでスルーしてもいいと思う。
- 90 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:39:34 ]
- int main() (笑)
- 91 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:42:37 ]
- なにかおかしいかな?
引数ちゃんと書けってこと?
- 92 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:48:57 ]
- いや、問題ないよ
>>90の勘違いじゃないかな
- 93 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:59:15 ]
- >>92
int main() (笑)
- 94 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:06:15 ]
- >>93
- 95 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:06:28 ]
- わからん。
int main(void) と書かないとダメとか程度の低い勘違いをしてるんじゃないよな?
- 96 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:13:51 ]
- >言語:C++
これが読めない文盲なんだろ。
- 97 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:14:19 ]
- アワレだな
- 98 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:23:17 ]
- >>96
>>84 問2 #include <stdio.h> int main() (笑)
- 99 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:29:34 ]
- 96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++ これが読めない文盲なんだろ。 文盲(笑) 差別用語(笑) 池沼レベルの発言(苦笑)
- 100 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:38:52 ]
- Cでint main()がダメだという人って多いよね。
どこでそんな知識得たの?
- 101 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 03:58:05 ]
- >>80
[1] 授業単元:c言語 言語:C++ 問2 #include <stdio.h> int main() (笑)
- 102 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:03:44 ]
- Xeno091017 正式版
koreawatcher.at.infoseek.co.jp/janexeno.htm ・正式版として最初のリリース。 ・Jane終了時の挙動のみ091015試作品から変更された。 ─────────────────────── 予告どおり、正式版をリリースしました。×ボタンのツールチップ ヒントに関して、真魚のソースを参考にして修正を試みました。 JaneNidaの開発は事実上終了です。2chの仕様変更などで 対応するかもしれません。
- 103 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:04:03 ]
- > [1] 授業単元:c言語
> 言語:C++ (苦笑)
- 104 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:40:11 ]
- 96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++ これが読めない文盲なんだろ。 >>80 > [1] 授業単元:c言語 これが読めない文盲なんだろ。
- 105 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:58:56 ]
- >>90
int main() (笑)?
- 106 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 05:19:56 ]
- 相変わらずすごい粘着力だw
- 107 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 07:35:21 ]
- Cならint main(void){}
C++ならint main(){}またはint main(void){}お好みで。
- 108 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 08:31:11 ]
- #include <stdio.h>
int main() (笑)
- 109 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 08:33:12 ]
- ビルダで言われるがままにしか作ったことないんだろ。
逆に可哀相な奴なんだから気にすることない。
- 110 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:01:57 ]
- 96 名前:デフォルトの名無しさん 投稿日:2009/10/20(火) 03:13:51
>言語:C++ これが読めない文盲なんだろ。 #include <stdio.h> < はい注目! >>96はこれが見えない文盲なんだろ。
- 111 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:40:57 ]
- 別にそれでもC++としてコンパイルできるけど。
- 112 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:01:36 ]
- C++でstdio.hをインクルードしてもまったく問題ないと思うけど
>>113はどう思う
- 113 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:13:26 ]
- 単に質問者が間違えただけだろ
いちいち揚げ足とんな>>90
- 114 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 12:53:25 ]
- >>81で早々にツッコミ入ってるのに
- 115 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:05:36 ]
- >>53
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9996.txt
- 116 名前:デフォルトの名無しさん [2009/10/20(火) 17:14:46 ]
- >>63
期限は10/21の16:00でお願いします。
- 117 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:20:30 ]
- 特定のプラットフォーム限定のコード書いてコンパイラの独自機能
使いまくりなのに、標準を気にするなんておかしいね。 ターゲットようのコンパイラに通りゃなにやったって正義。
- 118 名前:C初心者 [2009/10/20(火) 18:36:06 ]
- Unix、C言語のみで、はじめにユーザーに整数入力を要求し、
その入力された整数を次の一行にその整数とHexに変換されたもの を出力、その次の行には、はじめに入力された整数を少数にして それをまたHexに変換。 もしユーザーが数字以外を入力した場合にエラーと表示させ、 ”0”と打ち込めば終了。 というプログラムです。一行目はきちんと出てくるのですが、 入力された値を2行目で少数に変換し、それをまたHexにかえる というのがわかりません。 こんな感じで出したいのですが、、 >1 1 0x00000001 1.00 0x3F800000 > どうぞよろしくお願いいたします。
- 119 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 19:37:27 ]
- >>118 template 無いから、これでいいか。
#include <stdio.h> int main(void) { union{ float a; unsigned char c[4]; } data; int i, b; b = 1; data.a = b; for(i=3;i>=0;i--) { printf("%02X", data.c[i]); } }
- 120 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:17:13 ]
- >>90 >>93 >>98 >> 101 >>105 >>108
pc12.2ch.net/test/read.cgi/tech/1250204272/940 >ANSI以前との互換性のために、ANSI-Cではプロトタイプ宣言の時だけは引数にvoidを >明示しないとならないことになっている。 >定義ではvoidの明示は不要。 >C++ではプロトタイプ宣言でも関数定義でもvoidの明示は不要。 > >つまり、ANSI-Cで引数の無いmain関数のプロトタイプを書く場合だけは、引数の型を >voidとするのが正式。それ以外の場所は省略しても正式。
- 121 名前:C初心者 [2009/10/20(火) 20:23:21 ]
- >119さん
返信ありがとうございます。初心者過ぎてコードが読めないんですが、 forループの中ではHexのみをプリントアウトするようになっていますか? scanfでユーザーの入力を読み込んで、それを整数からHEXへ、少数から Hexへ変換して表示させるにはどうしたらよいのでしょうか。 それが、unionというものをまだ習っていないので、出来れば使いたくな いのですが、sizeof(int), sizeof(float)を使ってどのように変換したら 良いのでしょうか? printf("> %d", n); if("%d" == char) //CHARではCharを読むことは出来ないんですね? printf("error"); else if ("%d" == "0"); //これも違いました、、、 return 0; else{ printf("%10d 0x%08x", n, n); printf("%10.2f 0x%08X", f, n); } よろしくお願いいたします。
- 122 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:29:07 ]
- >>121
何かしたいのかがわからん
- 123 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:40:58 ]
- >>120
なんでそんな、この宿題スレの過去ログでも争って結論が出たのを 今更蒸し返してんの?w C言語とC++についてもISO、ANSI準拠の標準スタイルについて 説明されていたよ。で、あんたはC++で#include <stdio.h>とするのね?w
- 124 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:43:24 ]
- >>123
するだろ? C++の規格のどこかにCのライブラリを用いてはならないって書いてあった?
- 125 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:45:45 ]
- >>124
このキチガイさんは<cstdio>って書いて欲しいんだよ
- 126 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:46:53 ]
- >>120
なんか引っかき回してすまないんだが、 mainのプロトタイプってどこかに書かれてる? 無いなら、最初に出てきた時、つまりmainの定義を以て宣言とする挙動になるはずだよね。
- 127 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:48:57 ]
- ANSI-Cにおいて、int main()が非合法であるかの確認をしたいです。
- 128 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:54:16 ]
- >>126
宣言のときなんていってなくね? プロトタイプ宣言の時なんだから実体の定義を伴う宣言とは別だろ
- 129 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:55:20 ]
- >>118 unionを知らなくても、FILE*は知ってるだろう。もしscanfの使い方知りたいなら別のスレいけ。
#include <stdio.h> int main(void) { int i, b; float a; unsigned char c[4]; FILE *fp; b = 1; a = b; fp = fopen("a.txt", "wb"); if(fp == NULL) {puts("ERR"); return 1;} fwrite(&a, 4, 1, fp); fclose(fp); fp = fopen("a.txt", "rb"); if(fp == NULL) {puts("ERR"); return 1;} fread(&c, 4, 1, fp); fclose(fp); for(i=3;i>=0;i--) { printf("%02X", c[i]); } return 0; }
- 130 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:07:21 ]
- >>128
void hoge(void); void hoge() {} int main() { hoge(1); return 0; } このコードの1行目が無ければコンパイルできるじゃん。 それは、関数の定義内容を元にプロトタイプ宣言と見なしているってことじゃないの?
- 131 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:08:41 ]
- C++です。
x[0] = rand()%6; x[1] = rand()%6; x[2] = rand()%6; y =x[0] + x[1] + x[2]; z[y] = z[y]+1; 変数がわかりにくくてすみません。 xの配列に0〜5の値を保存して合計してyに入れます。 それからzの配列(15こぶん)に入れたいのですが、うまくできません。 たとえば、yが3のとき、z[3]に入れたいのですが・・・。 最終的にどの値が何回出たか表示するためにzの配列に保存しています。 この部分の記述は間違っていないでしょうか??
- 132 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:10:15 ]
- >>131
いいよ。 z[y]++; にしてもいい。
- 133 名前:132 mailto:sage [2009/10/20(火) 22:11:49 ]
- あ。zは0-15までの16個ぶん必要だよ。
- 134 名前:>>118 mailto:sage [2009/10/20(火) 22:24:40 ]
- >>131
// C言語です。 #include <stdio.h> #include <stdlib.h> int main(void) { int i, x[3], y, z[15]; srand(time(0)); for(i=0;i<15;i++) z[i] = 0; for(i=0;i<100;i++) { x[0] = rand()%6; x[1] = rand()%6; x[2] = rand()%6; y = x[0]+x[1]+x[2]; z[y] = z[y] + 1; } for(i=0;i<15;i++) printf("%2d %2d\n", i, z[i]); return getc(stdin); }
- 135 名前:>>118 mailto:sage [2009/10/20(火) 22:26:23 ]
- int i, x[3], y, z[16];
- 136 名前:>>118 mailto:sage [2009/10/20(火) 22:29:08 ]
- for(i=0;i<16;i++) z[i] = 0;
for(i=0;i<16;i++) printf("%2d %2d\n", i, z[i]); ソーリー
- 137 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:30:33 ]
- >>132
ありがとうございます。 この場合変数の宣言はどのようにするのがよいのでしょうか?
- 138 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:32:05 ]
- >>137
今まで通りでいいよ。
- 139 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:34:23 ]
- C言語です
「キーボードから数を入力して、当たればHIT、はずれはMISSEDを表示し、はずれた場合に限り 正しい数はなんであったかも表示する」 という課題なのですが、自分で↓のようなプログラムを作ったのですがうまくいかずどこがいけないのかがわかりません・・・ どうかよろしくお願いします #include <stdio.h> #include <stdlib.h> int main(void) { int x,y; srand(time(0)); x=(rand()%3)+1; printf("imput number=?"); scanf("%d",&y); if(x=y) printf("HIT"); else { printf("MISSED\n"); printf("correct number=x"); } return(0); }
- 140 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:34:54 ]
- >>134
>>138 できました!ありがとうございます。 配列の宣言部分がおかしかったようです。
- 141 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:35:41 ]
- >>139
if(x=y)って大入試気になってね?
- 142 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:36:10 ]
- 代入式!ええい・・・糞IMEめ
- 143 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:39:08 ]
- そこを直しても、ミスったときの表示はおかしいけどな
- 144 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:40:50 ]
- 惜しかったなぁ。
まぁ、ここまで作れたならそれは大丈夫でしょう。
- 145 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:42:19 ]
- 代入式・・・?
>>141-144 すみません初心者で・・・
- 146 名前:デフォルトの名無しさん [2009/10/20(火) 22:44:50 ]
- >>145
x = yだとxにyの値が入っちゃうので x == yにしないといけないよって言う話
- 147 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:45:02 ]
- >>145
=でつないじゃったら右を左に入れるだから ==じゃないとだめよ
- 148 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:46:11 ]
- あとはずれた場合に正解を表示させないとね
- 149 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:48:07 ]
- >>146-147
そうでしたか!なるほど・・・ どうもありがとうございます! >>148 そっちにも問題がありそうですねorz ちょっと試行錯誤してみます!
- 150 名前:デフォルトの名無しさん [2009/10/20(火) 22:50:39 ]
- >>149
まぁ'='と'=='の勘違いは誰もが通る道だから 気にしなくていいよ
- 151 名前:139 mailto:sage [2009/10/20(火) 22:56:39 ]
- >>150
ありがとうございます! 無事にプログラムが完成しました! #include <stdio.h> #include <stdlib.h> int main(void) { int x,y; srand(time(0)); x=(rand()%3)+1; printf("imput number=?"); scanf("%d",&y); if(x==y) puts("HIT"); else { printf("MISSED\n"); printf("correct number=%d",x); } return(0); } こうしなければいけなかったのですね 大変お世話になりました!
- 152 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:56:59 ]
- その上気づきにくい、、、が、コンパイラが警告出してくれてると思うよ。
警告 : 条件文書くとこで代入してるけど、これ意図して書いてる? みたいなの。
- 153 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:58:01 ]
- おめでとう。imputはご愛嬌。
- 154 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:03:19 ]
- >>152
英語が苦手で警告文を解読するのも一苦労です・・・ >>153 ぶはw これは恥ずかしいです・・・
- 155 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:48:47 ]
- C++のソースコードを書きます(キリッ)
#include <stdio.h> int main() { return 0; } できますた!C++コンパイラでコンパイルして下さい!(キリッ)
- 156 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:53:45 ]
- >>155
問題なくコンパイルできますね。(g++, bcc32)
- 157 名前:デフォルトの名無しさん [2009/10/20(火) 23:54:45 ]
- >>155の何が面白いのか真剣にわからない
- 158 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:08:41 ]
- 宿題の答えくれなくて自暴自棄になってるんだと思う。
- 159 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:10:19 ]
- この粘着はCスレによく出没する頭のおかしい人だから、スルーしてください。
- 160 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:26:52 ]
- [1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): 問1、符号無し整数xを右にnビット回転した値を返す関数 unsigned right(unsigned x,int n) { } を作成せよ [3] 環境 [3.1] mac [3.2] gcc?(よくわかりません) [3.3] C言語 [4] 期限: 2009年10月22日(木) よろしくお願いします。
- 161 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:30:49 ]
- 右シフトしたのと左シフトしたのの和でいこう。
- 162 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:43:35 ]
- 乱数を使って半径rの球面上に一様に点をうつ方法を分かりやすく教えてください。
指向性を考える必要があるため割と難しい問題だと感じます。
- 163 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:46:34 ]
- >>162
質問スレでどうぞ (ヒント:極座標[0,2π]x[0,π])
- 164 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:48:33 ]
- >>162
極座標使ったら簡単じゃねーの?
- 165 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:51:53 ]
- >>160
unsigned right(unsigned x, int n) { reutrn x >> n | x << (sizeof(unsigned) * 8 - n); }
- 166 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 01:26:01 ]
- C++でsetwやsetprecisionで指定した桁数を解除するためにはどうしたらいいんでしょうか?
- 167 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 07:30:33 ]
- >>162
多分 [0, 4πr^2) の一様乱数を座標に変換するのがいいとは思うんだけど難しいね
- 168 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 18:24:38 ]
- >>126
main() のプロトタイプをわざわざかくのであれば、それは int main(void); のでしょうが、普通はプロトタイプなぞかかずに int main() { return 0; } と main() を定義しますよね。main() の定義であれば int main() と買いて、規格に沿っていない記法とはならないわけです。
- 169 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:00:39 ]
- >>168
C++ならそうだね
- 170 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:14:41 ]
- >>162 合ってるかどうか自信は無い
#include<stdio.h> #include<stdlib.h> #include<math.h> double uniformed_rand(void) { return (double)rand()/(RAND_MAX+1); } int main(void) { double theta, phi; double r=5.0, x, y, z; int i; for(i=0;i<100;i++) { phi=asin(uniformed_rand()*2-1); theta=uniformed_rand()*2*M_PI; x=r*cos(theta)*cos(phi); y=r*sin(theta)*cos(phi); z=r*sin(phi); printf("x=%f y=%f z=%f\n", x, y, z); } return 0; }
- 171 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:17:35 ]
- >>168
んだから、プロトタイプが書かれていない場合はint main()をプロトタイプだと見なすんじゃないのって話 で、そうなればvoidの省略は許されないよね。 どこかで int main(void); という宣言がされていれば、定義時はint main()で問題ないよね。 その上で、int main()の定義がANSI-Cにおいて完全合法であるからには、どこかで宣言されているか、 またはmainが特殊であるかのいずれかだと思うんだ。
- 172 名前:170 mailto:sage [2009/10/21(水) 19:22:02 ]
- >>170 は間違ってた
- 173 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:43:42 ]
- >>171
プロトタイプ宣言は「実体と伴わない関数の宣言」だろ int main()って書かれてその後に実体がそのまま書かれてるなら「実体を伴う関数の宣言」なのだからプロトタイプじゃないだろ。
- 174 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:48:50 ]
- >>173
そっか。プロトタイプじゃないか。 プロトタイプ宣言はされてるのかなぁ
- 175 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:51:27 ]
- あ、プロトタイプ宣言があっては困るか。
つまるところint main()は完全合法ってことになるのね
- 176 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 19:57:02 ]
- ANSIから外れた記述であるわけは無かろうと思っていたのに、C++だから合法みたいなレスが
いっぱいついてどうしようかと思った。
|

|