[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 01/02 08:08 / Filesize : 214 KB / Number-of Response : 711
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題片付けます 131代目



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/

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++だから合法みたいなレスが
いっぱいついてどうしようかと思った。

177 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:50:11 ]
>>175
いや、べつに main() のプロトタイプを書いてもいいんですよ。無意味ですが。

178 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:52:44 ]
>>177
え?
どう書くの

179 名前:170 mailto:sage [2009/10/21(水) 20:54:10 ]
やっぱり >>172 が間違ってるのかも
もう数学なんて分からん orz

180 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 21:43:26 ]
>>178
「プロトタイプ」の意味、理解してる?



181 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:30:10 ]
[1] 授業単元:C言語とアルゴリズム
[2] 問題文:
 キーボードから自然数を入力し1から入力した数までの自然数の中から、
3の倍数と3のつく数字をすべて出力するプログラムを作成しなさい。ただし、
3の倍数と3のつく数字を入力したときに真(非0)、それ以外の場合は偽(0)を返す関数
(関数名は任意)を作成し、それをmain関数内から呼び出して使用すること

{実行例}
自然数を入力して下さい.
100
1から100までで3の倍数と3のつく数字は以下の通りです.
3 6 9 12 13
15 18 21 23 24
27 30 31 32 33
34 35 36 37 38
39 42 43 45 48
51 53 54 57 60
63 66 69 72 73
75 78 81 83 84
87 90 93 96 99

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで

182 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:55:13 ]
#include <stdio.h>

int f(int n)
{
if(n % 3 == 0) return 1;

while(n) {
if(n % 10 == 3) return 1;
n /= 10;
}

return 0;
}

int main(void)
{
int i, n, cnt;

printf("自然数を入力して下さい.");
scanf("%d", &n);

printf("1から%dまでで3の倍数と3のつく数字は以下の通りです. \n", n);

for(i=1,cnt=0; i<=n; i++) if(f(i)) printf("%d%c", i, ++cnt % 5 ? ' ' : '\n');

return 0;
}

183 名前:162 mailto:sage [2009/10/21(水) 23:08:13 ]
>>170
考えて頂いてありがとうございます。

結局点が選ばれる確率を1/4πとして,極座標表示での微小領域に点が入る確率の積分が1になることを利用し,
微小領域の確率を変形して無理やり乱数を使える形にしました。省略しすぎた説明ですいません。

結局 ( theta, phi ) = ( arccos(r1), 2*pi*r2 ) という式を導きました。
但し,r1:[-1, 1],r2:[0, 1]で,theta:[0, pi],phi:[0, 2*pi]で考えています。

184 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:51:24 ]
>>178
難しく考えすぎ。

#include <iostream>

int main( );

int main( )
{
std::cout << "Hello World" << std::endl;

return 0;
}

185 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:07:52 ]
>>175
プロトタイプ宣言がどうとか、独自の環境なら話は別。
もう少し言葉の意味を理解する頭を持ってくれよ。
ANSI、ISO準拠では条件もしっかり明記されている。
main関数を プログラムの開始 とする。
自分でソースの中から開始の関数を指定できるなら
もはやISO、ANSI準拠にあらず、ご自由にどうぞ。
で、ANSI、ISO準拠の 標準スタイル ではC言語は引数がないなら
int main(void)としている。従うか従わないから各個人の任意にお任せ。
int main()でも良いじゃないか?どうぞどうぞ。別にそれが
間違っているなんて誰も言ってませんよ?

186 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:09:21 ]
>>181
世界のアツナベキターーーーー!

187 名前:デフォルトの名無しさん [2009/10/22(木) 00:41:34 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問1
行列のかけ算を使って幅20、高さ140の長方形の横に3.3倍、縦に0.4倍の拡大率で表示をするプログラムを作成せよ。

問2
サンプルプログラムを参考にして、画面の中心に幅80、高さ50の長方形を原点を中心にπ/8だけ回転させた長方形を描くプログラムを作成せよ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9995.txt

問3
画面上に描かれた長方形がキー入力によって原点を中心に回転するアニメーションを実現するプログラムを作成せよ。キーの「1」と「3」で回転角度が増減するようにせよ。

 [3.1] WindowsXP
 [3.2] Turbo c++ 4.0
 [3.3] C++
[4] 今週の金曜日まで
お願いいたします。

188 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:45:45 ]
>>185
int main() { return 0; } は完全に ANSI 準拠ですけれども、何がおっしゃりたいのでしょうか?

>>184
int main(void);
int main() { return 0; }
ではなかろうかと。プロトタイプには void が必要となるのが ANSI 準拠です。

189 名前:188 mailto:sage [2009/10/22(木) 00:47:27 ]
>>184
失礼、C++ で書いてありましたね。ごめんなさい。

190 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:11:06 ]
>>185
ああ、そういうこと?
K&Rなんかは、合法だが標準じゃないスタイルで記述された、それだけの話か。

標準じゃないからといってint main()がひたすらに叩かれる理由がよく分からんけど、とりあえず理解した。



191 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:25:22 ]
こいつに触っちゃダメ

192 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:57:43 ]
こいつ?そいつ?

193 名前:デフォルトの名無しさん [2009/10/22(木) 12:56:02 ]
>>191
お前に触れない方が良いことは分った。理解力のない池沼めw

194 名前:デフォルトの名無しさん [2009/10/22(木) 12:58:51 ]
>>188
> 何がおっしゃりたいのでしょうか?
分らないならレスするなよ、バカw
準拠ですけれども?意味不明。前提条件もあってのことだが???
だから敢えて細かく説明されてんじゃん。いい加減、この手の話は
過去ログで決着がついているから、後は自分で調べろ。

> int main() { return 0; }
激しく意味不明な指摘w

195 名前:デフォルトの名無しさん [2009/10/22(木) 13:05:54 ]
>>185はプロトタイプ宣言についてじゃないぞ?
ANSI、ISO準拠のmain関数の記述の「標準スタイル」についてだぞ?
mainに関係なくプロトタイプ宣言にvoidが必要だのって、そういう話じゃない。
int main(void)かint main()か?だから上の方でC言語 int main() (笑)とか
言われてたんだろ。
後で必死に反発したつもりなのか、C++が読めない「文盲」なんて
人を見下す差別用語を平気で使うならず者が出てくるし。
C++なんて突っ込むから #include <stdio.h> についてさらに突っ込まれてやんの。
もう支離滅裂。話の主題、論点が分らないならレスしないで構わんよ。
自分が無知だとばれますよ?

196 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:17:12 ]
>>194
そりゃそこだけ抜けば意味不明な指摘になる
プロトタイプのとこだとおもうよ

ANSI-Cにおけるint main(){return 0;}は合法であるという旨のレスをいくつかしたんだけど
>>176の通り、C++なら大丈夫だよ!というのが混ざってくるから話がこじれたんじゃないか?
C++は関係ない、で捨てようにも、「C++なら」ってことはCではダメだという風に取れちゃうし。

197 名前:デフォルトの名無しさん [2009/10/22(木) 13:26:15 ]
ISO、ANSI準拠では プログラムの開始をmain関数 としているわけだが
それをプロトタイプ宣言とか言い出したら意味不明だわw
いい加減、プロトタイプ宣言から離れろ

198 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:37:53 ]
なんだ、いつもの話をずらして粘着する人か

199 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 15:59:01 ]
HANDLE a;
…ハンドル取得…
HDC b = (HDC)a;

これってダメなんだっけ?w

200 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:06:52 ]
>>199
aは何のハンドルですか?



201 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:07:36 ]
フォントです

202 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:53:18 ]
>>201
フォントのハンドルをHDCにキャストするのは、ダメです。
使い方が間違っています。

203 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 16:55:38 ]
>199
typedef struct hcd {
 foo_t foo;
} *HDC;
typedef struct handle {
 struct hcd hdc;
 bar_t bar;
} *HANDLE;
typedef struct font {
 struct handle handle;
 baz_t baz;
} *FONT;
とかなっているんだったら、いいでそ
もしかしてHDCって、Windowsのあれかな。

typedef void *HANDLE;
typedef struct hdc {
 foo_t foo;
} *HDC;
typedef struct font {
 struct hdc hdc;
 bar_t bar;
} *FONT;
こんなのでもいいわ。
もう、typedef void *HANDLE, *HDC, *FONT;でもいいわ。
どういう風に宣言なり定義なりされているのかわからないと何とも言えない。

204 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 17:30:19 ]
HDCとかHANDLEとかWindowsのあれでしょ
Windowsのスレへどうぞ
void*をむやみにキャストしてもだめということだろうが


205 名前:デフォルトの名無しさん [2009/10/22(木) 21:57:18 ]
[1] プログラミング演習
[2]以下のプログラムの図形を画面の中心に平行移動をしてから表示するように改造せよ。
結果として画面の中央(320, 240)を中心とした回転移動の角度をキー入力によって増減するようにせよ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9998.txt
 [3.1]WindowsXP
 [3.2] turbo c++ 4.0
 [3.3] c++
[4] 明日中

よろしくおねがいします。

206 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 22:11:56 ]
>>199
大体の流れとして。

HDC hdc;
PAINTSTRUCT ps;
hFont = CreateFont(…);
hdc = BeginPaint(hWnd, &ps);

SelectObject(hdc, hFont);

じゃないの。それぞれ宣言場所違うけどね。
デバイスコンテキストハンドル2つ生成してSelectObjectすればそれっぽいんじゃないか?。

207 名前:デフォルトの名無しさん [2009/10/22(木) 23:55:47 ]
Visual StudioでC++をやり始めたんですが
実行してもすぐに
コマンドプロンプトが閉じてしまって結果が見れません
対処法を教えてください。

208 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:01:21 ]
僕の肛門も出すものを出したら直ぐに閉じてしまいます ><;

209 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:01:29 ]
右クリック→設定 で
「終了後に自動的に閉じる」のチェックを外す。

210 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:13:56 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
[1 2 0] [3 2 0 1] [3 4 0 2 1]みたいな同じ数字を使わない任意の長さでランダムな数列の作成するプログラム。

[3] 環境
 [3.1] OS: vista
 [3.2] コンパイラ名とバージョン: gcc ?
 [3.3] 言語: C
[4] 期限: 来週の木曜日

rand()、switchでごり押しくらいしか思いつかないです…



211 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:20:49 ]
>>210
カードシャッフルのアルゴリズムと同じ

212 名前:デフォルトの名無しさん [2009/10/23(金) 00:23:11 ]
>>211
論より証拠。口先よりソースコード。

213 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:46:22 ]
>>210

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int c, char **v)
{
int n,*a,i;
if (c<2)return 0;
a=malloc((n=atoi(v[1]))*sizeof(int));
if (a==NULL)return 1;
srand(time(NULL));

for (int i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (int i = 0; i < n; ++i) {
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


214 名前:デフォルトの名無しさん [2009/10/23(金) 00:46:40 ]
>>209
207なですがどこで右クリックすればいいのか
教えてもらえないでしょうか。

215 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 00:51:33 ]
>>214
.pif ファイル。
つーか、単に main の最後に getchar() か何か付け足して、
エンターで終了ってことにしとけば良いんじゃね?

216 名前:213 mailto:sage [2009/10/23(金) 00:54:49 ]
これで出来てる?
携帯だから自分で確認できないんだが。


217 名前:デフォルトの名無しさん [2009/10/23(金) 00:55:53 ]
>>215さんありがとうございました
今日から勉強始めて
まったく分からない状況だったので助かりました

218 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 01:54:50 ]
int main(int c, char **v)  (笑)
srand(time(NULL));  (苦笑)
for (int i = 0; i < n; ++i) a[i] = i; (爆笑)
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]); (大爆笑)
putchar(8); (失笑)

219 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 02:18:55 ]
修正

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;
srand(time(NULL));

for (i = 0; i < n; ++i) a[i] = i+1;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


220 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 02:29:22 ]
問題よくみたら0からだった。
修正しといてくれ。



221 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 02:32:41 ]
つーことで修正

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;

srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


222 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 04:31:04 ]
前から抜くより、後ろからの方が足し引きすくないよ。

for(i=n; i; ) {
k = rand() % i--;

223 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 04:55:38 ]
じゃあ修正
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;

srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i=n; i;){
k = rand() % i--;
printf(i?"%d ":"%d", a[k]);
a[k] = a[i];
}
putchar(']');
return 0;
}


224 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 05:03:45 ]
個人的には
for (i = 0; i < n; i++){
k = rand() % (n-i);

a[k] = a[n-i];
}
とするのが好きだな。

225 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 05:07:10 ]
a[k] = a[n-i-1]じゃね?

226 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 05:17:47 ]
おぉーーっと、ここでうpロダ君のロングパス!

227 名前:C初心者 [2009/10/23(金) 06:26:19 ]
>129, 135, 136さん
御礼が遅くなりました。
ありがとうございました。

228 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 06:48:23 ]
>>223
ループの中で場合わけするなら、]もつけちゃえばいいのに。

229 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 08:10:48 ]
>>210
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, n, *p;

srand(time(NULL));

scanf("%d", &n);
p = malloc(n * sizeof(int));

for(i=0; i<n; i++) {
j = rand() / (RAND_MAX + 1.0) * (i + 1);
p[i] = p[j];
p[j] = i;
}

printf("[%d", p[0]);
for(i=1; i<n; i++) printf(" %d", p[i]);
printf("]\n");

free(p);

return 0;
}

230 名前:デフォルトの名無しさん [2009/10/23(金) 11:44:38 ]
【質問テンプレ】
[1] 授業単元:プログラミング言語C
[2] 問題文:
以下のプログラムの『考える』ところを直し、キーボードから1を入力したらRed2ならGreen、3ならBlueの文字列が画面表示されるようにせよ。またそれ以外の数字が入力されたら『終了します』と画面表示されプログラムが終了するようにせよ


#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;

scanf("%d",&input);


if(考える)            {
printf("%s\n", colors[考える]);
};
return 0;

}
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:VC ++
 [3.3] 言語: C
[4] 期限:早く出せば点数が上がるので出来るだけ早くお願いします
[5] その他の制限:


よろしくお願いします



231 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 11:49:39 ]
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
scanf("%d",&input);
if(1 <= n && n <= 3) {
printf("%s\n", colors[n - 1]);
}else {
printf("終了します\n");
}
return 0;
}


232 名前:デフォルトの名無しさん [2009/10/23(金) 11:54:19 ]
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;

while(1){
scanf("%d",&input);
if(input>0&&input<4){
printf("%s\n", colors[input-1]);
}else{
printf("終了します\n")
break;
}
}
return 0;
}

233 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:36:50 ]
int main() (笑)

234 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:41:02 ]
>>230

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3"};
char b[80];

gets(b);
for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else{
printf("終了します\n");
}
return 0;
}


235 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:56:45 ]
>>230

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=0;input<11;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else if(input<10){
printf("終了します\n");
}
return 0;
}


236 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:05:54 ]
つまんね

237 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:08:44 ]
こうだろ。

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=3;input<11;input++)if(strstr(b,nums[input]))printf("終了します\n"),return 0;

for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}
return 0;
}


238 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:37:15 ]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input, i;
char buf[1024];
char *num[] = {"0","1","2","3","4","5","6","7","8","9"};
char *num2[] = {"零","一","二","三","四","五","六","七","八","九"};
fgets(buf, 1024, stdin);
input = atoi(buf);
for(i = 0; i < 10; i++) if (strncmp(buf, num[i]) == 0) input = i;
for(i = 0; i < 10; i++) if (strncmp(buf, num2[i]) == 0) input = i;
if (input <= 0 || input >= 4) printf("終了します\n");
printf("%s\n", colors[input]);
return 0;
}

239 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:43:12 ]
__declspec(dllimport) extern int printf(const char *s, ...);
__declspec(dllimport) extern int scanf(const char *s, ...);
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input;
char b[80];
gets(b);
input = atoi(b);
if (input <= 0 || input >= 4) printf("終了します\n");
else printf("%s", colors[input - 1]);
return 0;
}

240 名前:210 mailto:sage [2009/10/23(金) 13:47:52 ]
>>211
ありがとうございます。
検索ワードが思い浮かばず困っていた面もありました。
時間はあるのでじっくりググって煮詰めようと思います。

>>213=>>219=>>221=>>223
>>229
ありがとうございます。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10000.txt
自分でも布団の中で考えn個の中から1つを選ぶ、n-1個の(ryみたいな感じでやってみましたが比べると無駄が多い…
参考に改善しようと思います。






241 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:52:09 ]
knuthやfisher-yatesでググると参考になる。

242 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:05:23 ]
putchar(8) って何? バグ?

243 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:11:29 ]
asciiコードぐらい自分で調べろよw

244 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 14:23:37 ]
さぁとっととリストの課題こいや〜!麻呂のミートクソースをお見舞いしてやんよでおじゃる?
カレンダー出力も来るでおじゃる!

245 名前:デフォルトの名無しさん [2009/10/23(金) 16:45:24 ]
いやっほー!

246 名前:麻呂専用 mailto:sage [2009/10/23(金) 16:55:35 ]
[1] C言語中級
[2] 8X8のオセロの全局面をリスト構造で列挙しそれを適当なファイルに保存するプログラム
次の問いの答えも添付すること
(1)先手必勝、後手必勝かの決定
(2)平行初期値と通常初期値(回転対称、鏡映は同一視)それぞれの
場合において到達可能な葉は全部の場合の何パーセント程度であるか?

[3] Windows 2000/Visual-C++ 6.0/C言語(厳守)
★置く場所が無い場合に限りパスが認められる。
★FileMappingやVirualAllocateのWindowsの機能を利用し、
メモリがパンクしないように留意すること。メモリの搭載は128M程度
を仮定する。
[4]来週月曜日迄(厳守)

247 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:21:25 ]
全文を書くと大変なことになるのと(300行以上)、
どこから、どこまでを引っこ抜いてきて書けばいいかが分からないので、とりあえず下記を抜粋しました。
この部分で文法的に間違ってる文章はありますでしょうか?
nはdefine済みです。よろしくお願いします。

int i, l, s, c, k, d[n];

srand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(rand() * n);
c = i;
for(l=0; l<10; l++){
s = floor(rand() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}


248 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:28:02 ]
>>1
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)

249 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 19:09:34 ]
【質問テンプレ】
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10001.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
うpろだお借りしました。
10001.txtの中の
int i, l, s, c, d[n];

init_genrand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(genrand_real2() * n);
c = i;
for(l=0; l<10; l++){
s = floor(genrand_real2() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}
for(c=0; c<n; c++){
printf(" %d\n", d[c]);
}
}
が手間取っている部分です。どうしてもうまく動作しません。
よろしくお願いします

250 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 19:42:46 ]
>>249
何がどうなって欲しいの?



251 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 20:10:44 ]
プログラム全体でやっていることは、
隣接行列を作る。
強連結か判定。
ページランクの測定。
です。
>>249では有向グラフで出発点をランダムにとり、
そこからランダムウォークをして、何回か移動したとき、各点にどれだけ移動したかを測定しようとしています。


252 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 20:25:40 ]
ランダムウォークじゃなくて全部歩くべきなんじゃないの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<214KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef