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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2011/03/31(木) 15:35:33.04 ]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
codepad.org/ ←遅い時間は重い事があります
ideone.com/
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 146代目
hibari.2ch.net/test/read.cgi/tech/1296387672/

357 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:33:10.46 ]
ちゃんとあっちで答えたのにあちらは無視か
とんだクソ野郎だ

358 名前:デフォルトの名無しさん mailto:sage [2011/04/22(金) 23:59:14.25 ]
>>357==◆QZaw55cn4c

359 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 00:02:49.56 ]
>>357のいうあっちはそっちじゃねーだろw

360 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 00:45:01.36 ]
>>345
宿題じゃないなら gmp 使うだけでいいんじゃね
速いし精度に制限なしでデバッグ済み
LGPL だからライブラリとして変更無しで使えば面倒もない

361 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 01:51:22.68 ]
>>360
宿題じゃなくても、アルゴリズムで実現したい。
そんなのプログラム習いたてなんだから当たり前。

プログラムを凝れないのにそんな便利なもの使いたくもない。
そんなの当たり前の事。

そもそもプログラム初心者がプログラム自体の仕組みを知りたがってる何て
当たり前の事。


362 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 01:53:24.02 ]
そこまで言うならコードの一つも書いてやればいいのにな

363 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 01:56:39.85 ]
あの糞コテがコード書いてくれるよ

364 名前:361 [2011/04/23(土) 02:00:49.47 ]
プログラムのイロハも分からない僕はそういう便利なものには一切興味がなく
むしろ一生どうでもいいかもしれません・・ごめんなさい・・


365 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 02:05:47.01 ]
>>364
興味がないなら、なおのことライブラリを使ったほうがいいよ
信用できるライブラリを使ってればデバッグも楽



366 名前:361 [2011/04/23(土) 02:11:43.46 ]
>>365
便利なものを使うなら、壮大なスケールで独創的なものを作り上げる時に
必要となるが、今は"計算"を実装する事を目的としてる。よって今欲しい
のは"アルゴリズム"

以上。

367 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 02:16:39.57 ]
>>366
欲しいものは検索ワードということだな
多倍長演算 アルゴリズム

368 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 02:17:58.00 ]
>>366
簡単なものは
class xx{
uint dp;
vector<uint> arr;
];
でarrに万進数値をいれdpで小数点の位置を記憶する
あとは+,-,*,-,&,!..やtostringを実装するぐらい

ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97
小学校の算数レベルのアルゴリズムを使ったものである

といわれるように面白みのあるものではないよ
パフォーマンスを求めるならここで聞くより
gnumpなどのソースを参考にした方がいい

369 名前:366 [2011/04/23(土) 02:32:34.05 ]
>>368
ありがとう。何かややこしそうだな。

ゲーム作る人は、計算とかどうしてんのかな。
doubleの範囲内ですむ計算が多いのかな。

370 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 03:07:25.40 ]
というより、精度の問題だから。
コンピュータで実数を扱う意味を考えたらいい。

ちなみに、XNAという、箱○上で動くゲームを作るためのXNA Frameworkでは、
Vector3が、xyzの値をそれぞれfloatで持ってたりする。

三次元の点を山ほど扱う場合、floatをdoubleにするだけで、
それにかかるメモリ容量は単に倍になる。

371 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 18:53:49.19 ]
説明文:引数:1〜12の整数で、返値:月の名前の文字列へのポインタ
     引数が12を超えた場合はNULLを返す関数

codepad.org/yKd6MXH6

エラーが出てしまいます。アドバイスをお願いします。

372 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 19:03:46.49 ]
>>371
char c;

char *c;

373 名前: ◆QZaw55cn4c mailto:sage [2011/04/23(土) 19:13:05.87 ]
>>371
hibari.2ch.net/test/read.cgi/tech/1295273862/497
mon() を二通り作ってみました。納得のいく方法でどうぞ。

374 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 20:24:55.20 ]
>371

これこそテーブルを利用すべき関数と思う。
ttp://ideone.com/LLYwH

375 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 20:31:09.45 ]
>>373
ひょっとしてそれはギャグでやってるのか?マジでやってるならかなり恥ずかしいぞ

** 回答例 **
#include <stdio.h>

char *table[] = {"NULL", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};

char *mon(int i){
return table[i];
}

int main(){
int i;

printf("数字を入力:");
scanf("%d",&i);
if(i < 1 || i > 12) i = 0;

printf("%s\n", mon(i));
return 0;
}



376 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 20:48:17.08 ]
>>373
関数にマイナスの値投げたらどうなるの?

377 名前:374 mailto:sage [2011/04/23(土) 20:57:25.50 ]
NULLが返る条件を間違えていました。

そのあたりは読み替えてください。

378 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:04:27.97 ]
なんつーか
if(i < 12) {
中略
if(i == 12)
}
に気づかないバカがコードいじることに恐怖を感じる


379 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:08:05.22 ]
>>375
>>371 で示されたコードに対して最小限の変更になるようにしました。そうすればとりあえずの問題点を理解してもらえると思ったからです。
テーブル引きや switch も意図的に使いませんでした。

>>373
確かに穴がありました。元のソースをそっくりパクってしまった弊害がでました。

380 名前: ◆QZaw55cn4c mailto:sage [2011/04/23(土) 21:13:08.09 ]
>>371
いろいろ指摘がありましたので、元のソースコードには沿っていますが、幾分書き換えました。
ともあれ納得のいく方法でどうぞ。
codepad.org/952jR9RF

381 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:25:43.82 ]
>>380
書き換えなくていいから巣に引っ込め低脳

382 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:26:24.65 ]
>>372-380
ありがとうございます

383 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:30:36.89 ]
>>382
礼は言わない方が良い
モリタポ取られるぞ

384 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:32:29.25 ]
[1] 授業数学の問題をC言語で解く
[2] 問題
整数xを0から100000までの整数として,xが3つの素数の和で表現できるなら
その三素数を出力するプログラムを作成せよ。複数組み合わせの場合最初に
見つけたものを出力せよ。
[3.1] 7
[3.2] gcc
[3.3] C
[4] 期限:25日9:00
[5] その他制限: 純粋Cライブラリ。

385 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:34:34.53 ]

x=31→(13,11,7)



386 名前: ◆QZaw55cn4c mailto:sage [2011/04/23(土) 21:34:44.10 ]
>>383
hibari.2ch.net/test/read.cgi/tech/1295273862/325

387 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:35:16.03 ]
>>386
いいから書き込みすんな

388 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:35:29.22 ]
>>382
こいつは2chを個人的な金儲けの道具にしようとしていて、みんなに嫌われてる。

それでも止めようとしない。多分精神の病気なんだろう。

389 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 21:37:42.08 ]
重度の自己愛性人格障害だな
それが原因で就職も出来ずニート生活を続けている
しかも2chですら嫌われ者

390 名前:デフォルトの名無しさん mailto:sage [2011/04/23(土) 22:27:20.94 ]
>>384
#include <stdio.h>

#define N 100000

char sieve[N] = {0, 0, 1};

int main(void)
{
int i, j, x, y;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i; j < N; j += i) sieve[j] = 0;

scanf("%d", &x);

for(i = 2; i * 3 <= x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i; j * 2 <= y; j++) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;
}}}

return 0;
}

391 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:03:13.14 ]
おれ思うんだけど
>>371みたいなコードを書く奴が
>>375みたいなコードを提出すると先生怪しむんじゃないのか
学校でよたよたしながらやっている初心者のコードじゃないよな
他の学生のコードに比べてスマートすぎて先生にマークされそうだよな

392 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:04:49.61 ]
>>391
375 はある意味 371 よりもダメだからいいんじゃね

393 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:08:38.00 ]
>>392
すまん
>>375>>374の間違いだ、orz

394 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:19:26.05 ]
>>393
375 は const をどういう意図で使ってるのか微妙

395 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:19:49.13 ]
374 だった



396 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:28:21.96 ]
>>394
C++だからじゃね?Cだと代入出来るけどC++だとエラーになる

397 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:29:38.04 ]
だよなw
const char *mon(int i)
static const char *monthTbl[] = {
じゃね?せめて。

398 名前:デフォルトの名無しさん [2011/04/24(日) 01:30:27.57 ]
>>390
ありがとうございます・・・・

本当に分かりやすいコードですね・・
ただ、2とか3とかそういう簡単なのが2個くらい占めますね。


157 = 43 31 83

とかだったら少し感動するんですが・・・

399 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:30:34.23 ]
>>397>>394-395へのレス。

400 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:37:37.45 ]
>>384
いいね

401 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:39:13.37 ]
>>398
どうでもいい
xを出力すればいいだけだろ

402 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:43:44.09 ]
>394>397

static const char *monthTb
だとmonthTbがReadOnly

static char *const monthTb
だとmonthTbが指している先がReadOnly

403 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:46:44.99 ]
static char *constでいいよな

404 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:47:05.33 ]
>>402
節子、それ逆やw

405 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:47:42.72 ]
>>402
逆だろ



406 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:49:34.32 ]
const char *
const char へのポインタ

char *const
char へのコンストポインタ

407 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:49:41.25 ]
>>398 割と大きめの数字が出力されるかな?
--- a.c 2011-04-24 01:48:25.688130470 +0900
+++ b.c 2011-04-24 01:48:53.978128063 +0900
@@ -13,10 +13,10 @@ int main(void)

scanf("%d", &x);

- for(i = 2; i * 3 <= x; i++) {
+ for(i = x/3; i >= 3; i--) {
if(sieve[i] == 0) continue;
y = x - i;
- for(j = i; j * 2 <= y; j++) {
+ for(j = y/2; j >= i; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;

408 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:52:02.75 ]
i >= 2か、、、すんません

409 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 01:54:54.57 ]
なるべく平均化したいなら
>for(i = 2; i * 3 <= x; i++)
for(i = x / 3; i < x; i++)

>for(j = i; j * 2 <= y; j++)
for(j = i; j > 0; j--)

あんまり意味があるとも思えないけど

410 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 02:09:07.37 ]
それだと性能面でリグレッションしてるけどな

411 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 02:10:10.34 ]
>>375
関数の中でインデックスチェックしろよ。

412 名前: ◆QZaw55cn4c mailto:sage [2011/04/24(日) 06:43:53.19 ]
>>398
hibari.2ch.net/test/read.cgi/tech/1301553333/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

>>388
金儲けじゃありません。モリタポ儲けかもしれませんが。

>>389
自己愛性人格障害ってなんですか?

>>402
であってると思います。

413 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 06:47:49.75 ]
コードが頭悪すぎて吹いたw

414 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 08:36:56.22 ]
>複数組み合わせの場合最初に見つけたものを出力せよ。

415 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 08:38:03.43 ]
「抜くな!おい、そっちはサーバーの電源だ」



416 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:42:47.89 ]
>>412
>金儲けじゃありません。モリタポ儲けかもしれませんが。

auction.moritapo.jp/
これがある以上、モリタポ儲けではなく金儲けと言われても文句は言えない。

417 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:44:39.98 ]
>>412
>自己愛性人格障害ってなんですか?

★自己愛性人格障害の特徴 20人目★
toki.2ch.net/test/read.cgi/utu/1302215246/

ただし俺に文句を言うなよ
精神科医の診断が必要だ
だが素人目に見てもお前はひどすぎる

418 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:48:38.79 ]
・ 「理屈っぽい」とよく指摘される。
・ 他人から叱られたり文句を言われる回数が他の人に比べて明らかに多い。
・ 他人のせいにする意図は全くないのに「他人のせいにするな」とよく言われる。
・ 先輩後輩の上下関係や縦社会が苦手、理解不能。
・ 他人の話が聞こえない。耳が悪いのではなく、脳で理解できていない。
・ 皆に合わせて行動しようとしても、気がつけば一人で暴走しているか取り残されているしかない。
・ 他の人と一緒に行動したくても、一緒にいるのが苦痛にしか感じられない。
・ 他の人に対して無関心。
・ どうでもいい雑学的なムダ知識は豊富だが、常識として必要な知識が欠けている。
・ ファッションに無頓着。
・ 仕草や行動、言動を周囲の人たちから笑われたりからかわれることがよくある。
・ どこへ行っても嫌われる。
・ どこへ行っても浮いてしまう、孤立してしまう。
・ 「言葉がきつい」「言葉に棘がある」「毒舌」などと指摘されたことがある。
・ 場の空気を読めない。
・ 先を読んで行動できない。
・ 同性の友達さえ少ない(1〜2人)、または1人もいない。
・ 「視野が狭い」とよく指摘される。
・ 一つの物事に夢中になると周囲が見えなくなる。
・ 発言を曲解、誤解されることが他の人に比べて圧倒的に多い。
・ 何でもすぐに本気にする、ムキになる。
・ 意外と多くの分野の知識を持っている。が、どれも中途半端でそれを仕事にするなどもってのほか。
・ 皺だらけの服や時代遅れの服でも平気で着る。
・ ファッションや身だしなみに無頓着。
・ 「自分勝手」「わがまま」と指摘されることが他の人に比べて明らかに多い。
・ 「幼稚」「精神年齢が低い」と指摘されることが他の人に比べて明らかに多い。
・ 「性格を直せ」「自分を変えろ」と言われる回数が他の人に比べて明らかに多い。
・ 他人と話していると、相手が怒ったり不愉快になることがよくある。
・ 「お前みたいな奴は初めて見た」と言われたことがある。
・ 「お前みたいな奴は社会では通用しない」と言われたことがある。
・ 学生時代からクラスでは孤立していた。

419 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:49:55.80 ]
・ 一つの作業に集中して取り組んでいる時に話しかけられたりするなどの割り込みを受けると、再び集中するのが困難。
・ 仕事をしている時や他の人と行動している時でも、自分の好きな分野関連のものが目に入ると注意力が全部そちらに行ってしまう。
・ 集中しようとしても、頭の中でいろいろな考えがぐるぐると回ったり、
集中する対象の関連の言葉から全く別のことを連想して考えがあちこちに飛んでしまうことが日常的にある。
・ 一つの物事に取り組んだり夢中になると周囲が見えなくなることが日常的にある。
・ 自傷行為(リストカット、頭を壁などに繰り返しぶつける、自分で自分を殴る等)をしたことがある。
・ 興味のない分野に対する抵抗感が激しい。
・ 新しい分野に取り組んだり、新しい仕事を覚えたりすることに対して抵抗感が激しい。
・ 他の人と一緒に食事するのが苦痛。
・ どうでもいい事にこだわる。
・ 「常識」「普通」「しきたり」といったことに反感を覚える。
・ 「非常識」「常識が無い」と指摘されることが他の人に比べて明らかに多い。


420 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 11:54:10.40 ]
>>418>>419
おお!まさに ◆QZa w55cn4c そのものだ

これってアスペルガー症候群か?

421 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 13:10:03.38 ]
412 名前: ◆QZaw55cn4c [sage] 投稿日: 2011/04/24(日) 06:43:53.19
>>402
であってると思います。

422 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 14:57:49.13 ]
#include <stdio.h>

#define N 100000

char sieve[N] = {0, 0, 1};

int main(void)
{
int i, j, k, x, y;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;

scanf("%d", &x);

for(i = x / 3; i < x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i >= y ? y - 1 : j; j > 0; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d = %d + %d + %d\n", x, i, j, y - j);
return 0;
}}}

printf("not exist.");

return 0;

423 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 15:00:23.74 ]
>for(j = i >= y ? y - 1 : j; j > 0; j--) {
for(j = i >= y ? y - 1 : i; j > 0; j--) { だった

424 名前: ◆QZaw55cn4c mailto:sage [2011/04/24(日) 19:45:20.37 ]
>>402
確かめてみると逆でしたね。間違えて覚えておりました。
codepad.org/t2Cl9Bzf

すみません。

425 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:33:01.11 ]
>>425
バーカ低脳



426 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:37:06.58 ]
that's why he's called, 'loopy'

427 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:37:11.89 ]
うるせーバカ

428 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 20:49:15.84 ]
>>424
アホは来るな

429 名前: ◆QZaw55cn4c mailto:sage [2011/04/24(日) 23:53:40.71 ]
>>154
ふむ、いろんな人がいるんですね。私なら私のコードにケチを付けていただける方はウェルカムなんですけれどもね。
私の考えを表明するのも、それを受けてそれ以上のものが得られればいいなと思ってのこと。(それをナルシストとかいわれてもねえ。)
あと、>>152 は、私の >>143 を書き直したもの(だと思われるの)ですが、その書き直し方はないだろう、というのが >>153 の趣旨になります。まあどうでもいいですが。

430 名前:デフォルトの名無しさん mailto:sage [2011/04/24(日) 23:59:49.22 ]
>>429
他人の書いたプログラムソースを許諾無しにまるまるコピーは良いんですか?

431 名前: ◆QZaw55cn4c mailto:sage [2011/04/25(月) 00:35:30.41 ]
>>430
前に私はそれをしてしまって、非難 GO! GO! でした。ライセンスがあればそれに従いますし、特にライセンスがないところでも、引用元を明記するのがマナーですね。
私のコードに限って言えば、コピーレフトですら明示していません。責任はそちらもちで好きにしてください。

432 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 00:36:54.89 ]
>>429
その割にはずいぶん生半可な知識でプログラムを書いておられますなあ>>424

433 名前: ◆QZaw55cn4c mailto:sage [2011/04/25(月) 00:42:32.98 ]
>>432
すみません。

434 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 02:01:18.08 ]
ゴミしか書けないんだから、こっちに書かないで自分のスレに引きこもってろよ

435 名前: ◆QZaw55cn4c mailto:sage [2011/04/25(月) 08:37:22.30 ]
>>509-512
>>1 の表現がどのようであれ、結果として私のもとに渡るのはモリタポであり円ではありません。
したがってモリタポ儲けであり金儲けではありません。>>465でも確認されました。



436 名前:435 mailto:sage [2011/04/25(月) 08:38:33.22 ]
誤爆失礼いたしました。

437 名前:435 mailto:sage [2011/04/25(月) 08:51:26.05 ]
412 : ◆QZaw55cn4c :2011/04/24(日) 06:43:53.19
>>398
hibari.2ch.net/test/read.cgi/tech/1295273862/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。

438 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 12:01:34.05 ]
問題と解答のコードだけ載ってるスレに戻してくれ。

439 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 13:10:49.94 ]
そもそも素数の調べ方がクソな上にループにもムダが多すぎ

440 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 13:41:39.08 ]
金儲けスレへのリンク貼るなよ

441 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:14:25.20 ]
#include <stdio.h>

#define MAX_LINE 30
#define MAX_NUM 20

typedef struct {
int code;
char name[MAX_LINE];
char type[MAX_LINE];
char maker[MAX_LINE];
int price;
}PARTS;

int main(int argc, char *argv[]) {
FILE *fp;
PARTS parts[MAX_NUM];
int i, num, id;

if (argc != 2) {
fprintf(stderr, "使用方法: %s FILENAME\n", argv[0]);
return 1;
}

if ((fp = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "ファイル %s がオープンできません\n", argv[1]);
return 1;
}


442 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:15:13.07 ]

i = 0;
while(fscanf(fp, "%d %s %s %s %d",
&parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
&parts[i].price
) != EOF) {
i++;
}
fclose(fp);
num = i;

while(1){
printf("# ID: ");
if (scanf("%d", &id) == EOF) {
printf("\n");
break;
}



443 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:15:32.46 ]
for(i = 0; i < num; i++){
if (parts[i].code == id) {
printf("%03d %-20s %-20s %-20s %5d\n",
parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
parts[i].price
);
break;
}
}
if (i == num) {
printf("ID %3d の商品はありません。\n", id);
}
}

return 0;
}


課題の回答にて少しわからないのでお願いします
最初のwhile文でscanfをつかって構造体を利用するところで
&がついてるところとそうでないところがあるのはなぜなのでしょうか?

444 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:27:55.01 ]
scanfの書式と構造体メンバのデータ型見比べて味噌

445 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:35:13.21 ]
>>443
char型の配列名はそれが既にポインタに変換されるから、&は不要
int型はアドレスを渡さないと代入出来ないから&が必要



446 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:38:03.13 ]
>>441
さっぱりわからんけど
scanfする時[]あるのには&つけない、
[]ないのには付けるって決まりあるんじゃない
[],&って何か知らんけど

447 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 15:45:54.78 ]
配列名を関数に渡す時、ポインタとして渡されているんだよ。
char array[]をfoo(char *p)へ、foo(array)と渡すような時に。
関数の中じゃそれを char *として扱ってる。

同様に、printfにparts[i].nameを渡す時、char *として渡っているようなイメージ。
(実際にはconst char *としてると思うけど)
parts[i]ってカッコつきでアクセスしてるから余計な事を考えてしまうのかもしれないけど、

PARTS part;でpart.nameを渡してるのと、肝心の部分は同じ。

448 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 16:19:19.99 ]
なるほどありがとうございます
型の違いで自分でポインタとして代入しないといけないんですね
よくわかりました

449 名前:デフォルトの名無しさん mailto:sage [2011/04/25(月) 17:02:14.91 ]
ちなみに配列に&を付けても構わない

int main(void)
{
char *p, buf[128];

p = &&&&&buf;

return 0;
}

もコンパイルエラーにならない

しかしこれはお勧めしない
配列とポインタの関係を理解するのがあやふやになるからである

450 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 00:03:07.76 ]
理解がちょっとおかしいですね
charだと&がなくてもポインタでいけるが正しいですね

>>449
もし配列でやる場合の&が重なってるのはそのとき使用する配列の数ってことなんですかね?
まぁおすすめされてないのでそこはちゃんと勉強しますが

451 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 00:09:31.57 ]
int a[]でも&なしでいけるよ。

452 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 00:58:11.20 ]
>>449
コンパイラはなに使ってるの?


453 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 01:24:33.95 ]
449.c: In function 'main':
449.c:5:7: error: expected identifier before '&&' token

454 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 01:42:30.97 ]
>>449
VS2010でもエラーが出る

c:\documents and settings\******\my documents\visual studio 2010\projects\Learn1\array2\array2.cpp(10): error C2059: 構文エラー : '&&'

455 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 02:03:44.17 ]
char hoge[n];の時
hogeと&hoge[0]は等しい、それだけの話



456 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 05:38:15.10 ]
規格書は小さな穴が一杯開いているみたいね。規格書の規約を全部守っても、コンパイラ書く場合は独自にルールを
決めてしまわないと書けないってことみたい。でないと同じソースを与えても、コンパイルするたびに結果が異なるなんて
ことになりかねないし。
規格書など大まかな部分しか信頼できないというのはこういう理由なんだね。

457 名前:デフォルトの名無しさん mailto:sage [2011/04/26(火) 08:29:04.11 ]
>>455
「3つの例外を除いては」という条項を付加しておきます。






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

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

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