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


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

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



1 名前:デフォルトの名無しさん [2008/04/15(火) 23:07:41 ]
あなたが解けない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++の宿題を片付けます 104代目
pc11.2ch.net/test/read.cgi/tech/1202135539/

162 名前:149 mailto:sage [2008/04/20(日) 20:15:42 ]
外部に公開する必要のないシンボルや、どうでもいいテンポラリな変数は先頭_で始めてます。

163 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:21:12 ]
>>162
アンダースコアで始まる名前は処理系のために予約されていることになってるから
使わないほうがいいと思うよ

164 名前: ◆wIggSzRFEU [2008/04/20(日) 20:26:38 ]
1 情報

2 人数a人のクラスで野球チーム(9人)をbチーム作成した。
このとき残りのメンバーでバレーチーム(6人)を何チーム作れ、何人あまるかを出力する。

3 Windows
テラタームを使ってます


4 2008年4月21日06時

5 scanfを用いるみたいです・・・
難しい関数は習ってません

よろしくお願いします。

165 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:28:17 ]
プログラムの問題なのか?算数の問題じゃなくて?

166 名前: ◆wIggSzRFEU [2008/04/20(日) 20:29:59 ]
そうです・・・

167 名前:149 mailto:sage [2008/04/20(日) 20:32:57 ]
>>163
そのような話は聞いたことがないのですが、それは処理系依存の話でしょうか?
よく見る他人のソースがlinuxのkernelソースだったもんで普通に使ってました。

168 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:33:06 ]
>>164
#include<stdio.h>

int main(void)
{
int a, b, c; // a:クラスの人数 b:野球チーム数 c:バレーチーム数

printf("クラスの人数を入力してください : ");
scanf("%d", &a);
if(a<0) return 1;

for(b=0;b*9<=a;b++)
{
c=(a-b*9)/6;
printf("野球チーム数:%d バレーチーム数:%d あまり人数:%d\n", b, c, a-b*9-c*6);
}

return 0;
}

169 名前:デフォルトの名無しさん [2008/04/20(日) 20:35:14 ]
>>168
ありがとうございます!

170 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:36:20 ]
bも入力するんじゃないの?



171 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:41:53 ]
野球チーム一つ分の人数を数値から引いて、
その数でバレーチームが何人作れて、
何人余るかじゃないの?

172 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:44:54 ]
>>167
処理系のために予約されてるんだから、当然規格で決まってる
ただまぁアンダースコアで始まるすべての名前が予約されてるわけじゃないけど

173 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:59:16 ]
>>123です
>>157さんのプログラム拝見させて頂きました
恐らく>>64での課題とまとめたソースだと思うのですが
既に>>64を実行してとっているデータ(>>132のような)
を読み込んで演算を行うようにしたいのですが
どうすればいいでしょうか?

あとオーバーフローチェックのところのLLONG_MAXが使用されてなく
エラーが出てしまいます

174 名前:デフォルトの名無しさん [2008/04/20(日) 21:00:54 ]
>>170
>>171

すみません
おっしゃるとおりです;

175 名前:デフォルトの名無しさん [2008/04/20(日) 21:15:18 ]
>>164をお願いします・・

176 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:15:32 ]
>>167
すまん、ググってみたが確かなソースにたどり着けなかった

177 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:21:58 ]
>>175
aとbを入力する場合
#include <stdio.h>

int main(void)
{
int a, b;

scanf("%d", &a);
scanf("%d", &b);

a -= b * 9;
if(a < 0) return 0;

printf("チーム数:%d\nあまり:%d\n", a / 6, a % 6);

return 0;
}


178 名前:デフォルトの名無しさん [2008/04/20(日) 21:24:15 ]
>>177
ありがとうございます

179 名前:デフォルトの名無しさん [2008/04/20(日) 21:27:15 ]
>>177
if を使わないではできませんか?

180 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:30:10 ]
#include<stdio.h>
void main (void)
{
int a,b,c,d,e;
printf("人数入力:");
scanf("%d",&a);
printf("野チーム数:");
scanf("%d",&b);
c=a-(b*9);
d=c/6;
e=c%6;
printf("人数:%d 野数:%d バレ数:%d 余:%d",a,b,d,e);
}
だめ?



181 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:42:33 ]
if文削除すればいいだけだろ。
野球チーム数多すぎた場合変なことになるけど。

182 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:05:37 ]
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
キーボードからABCDと円周率を入力して「ABCD3.14と」表示させるプログラム
変数は1つで
[3] 環境
[3.1] OS:問わず
[3.2] コンパイラ名とバージョン:VC++6.0
[3.3] 言語:C++だけど基本範囲?
[4] 期限:[2008年04月21日23:59まで]
[5] その他の制限:基本領域なのでstdio.hのみ

よろしくお願いしますm(__)m

183 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:08:50 ]
C++なのにstdio.hでいいんだな?別にやっちゃいけないわけじゃないけどいいんだな?

184 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:11:23 ]
C++ならcstdioだろうな。

185 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:12:41 ]
それより問題文が意味不明なのだが

186 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:24:21 ]
>ABCDと円周率
と入力すると
>ABCD3.14と
になるように変換すればいいんだろ
円周率という文字を3.14に置き換えて、「と」を後ろにすればいいんじゃないかな?

187 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:31:52 ]
>>182
できた。

#include <stdio.h>
int main()
{
char buf[100];
scanf("%s", buf);
puts("ABCD3.14と");
return 0;
}

188 名前:182 mailto:sage [2008/04/20(日) 23:58:08 ]
>>183-187
素早いレスサンクス。

>>183-184
stdioで桶です

>>185-186
プロセスとしては
起動>入力「ABCD」>入力「3.141592653」で
出力「ABCD3.14」
入力ミスで「」のなかに と を入れてしまいますたorz

>>187ので通るかどうか…多分先生笑顔で×くれてきそう(涙

189 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:00:25 ]
なんてくだらない設問なんだ。

190 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:04:44 ]
>>188
文字列と小数に関する入力・出力の課題というわけだな。
しかし、
> 変数は1つで
この条件はマジ?



191 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:22:16 ]
>>182
#include <stdio.h>
void main() { char buf[16]; gets(&buf[0]); gets(&buf[4]); buf[8] = '\0'; puts(buf); }

192 名前:182 mailto:sage [2008/04/21(月) 00:31:51 ]
>>190
マジですorz

193 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:33:39 ]
>>182
できた。

#include <stdio.h>
int main()
{
char buf[100 + sizeof(float)];
scanf("%s", buf);
scanf("%f", buf+100);
printf("%s%.2f\n", buf, *(float*)(buf+100));
return 0;
}

194 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 02:19:26 ]
>>182
これで基本?
#include<stdio.h>

int main(void)
{
char buf[100+1];

setvbuf(stdout, NULL, _IOFBF, 1024);

fprintf(stderr, "入力「ABCD」>", buf);
scanf("%100s", buf);
printf("%s", buf);

fprintf(stderr, "入力「3.141592653」>", buf);
scanf("%lf", buf);
printf("%.2f\n", *(double*)buf);

fflush(stdout);

return 0;
}

195 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 08:35:07 ]
139 名前:デフォルトの名無しさん 投稿日:2008/04/20(日) 14:42:29
>>138
普通、EOFは入力できないのだが。 < 出来るんだが・・・

141 名前:デフォルトの名無しさん 投稿日:2008/04/20(日) 15:03:54
いいえ、それは一部の環境において入力を閉じる行為です。  < 話が分かってない・・・

196 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 08:37:55 ]
EOFっていったら普通Ctrl-Dで入力だな

197 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 08:44:35 ]
EOFがキーボードから入力できないとしても、どのファイルには
ファイルの終わりを意味するEOFコードが記録されていますし
それを入力受付として使うことも可能ですが何か?w
これだから初心者、素人は・・・ナンバーサイン野郎の妄想に惑わされるなよ。

198 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 08:49:57 ]
あと、そいつが言っているのはEOF対策として、freadが指定したFILEストリームから
指定したポインタへ取り込まないという性質についてだろ?だったら最初から
EOFが 入力 出来ないという勘違いは言わなきゃ良かったんだよ。
言いたいことが相手に的確に伝えられない、誤解を生じさせて損をして生きている奴って
世の中普通にいるしなw こんなところでだから、見ず知らずの人に理解してもらおうと
必死になったんだろうけど、それを相手のエスパーで理解してもらわなきゃ通じないって
どんだけコミュニケーションが下手なんだよ、ナンバーサイン君は?

199 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 11:35:31 ]
ナンバーサイン君って誰?

200 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 12:01:24 ]
いちいち蒸し返すなよ



201 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 12:22:47 ]
[1] 授業単元: プログラミング実習
[2] 問題文
数学関数を使って,0以上10未満の範囲で平方根(sqrt)の対応表を出力しなさい.小数点の刻みを0.01とすること.
[3] 環境
 [3.1] OS:Windows/Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 4/22

202 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 13:45:07 ]
#include <stdio.h>
#include <math.h>

int main(void)
{
double a;

for(a=0; a<10; a+=0.01) printf("√%.2f = %f\n", a, sqrt(a));

return 0;
}

って書くと減点されるんだろうな。

203 名前:デフォルトの名無しさん [2008/04/21(月) 14:56:39 ]
>>202
負の方が表示されないからな。

>>201
#include <stdio.h>
#include <math.h>

int main()
{
int i;

for(i=0;i<1000;i++)
printf("√%.2f = %f, -%f\n",i/100.0,sqrt(i/100.0),sqrt(i/100.0));

return 0;
}

204 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 15:03:24 ]
>>203
負?フッ

205 名前:デフォルトの名無しさん [2008/04/21(月) 15:25:35 ]
sqrt()2回とかw

206 名前:182 mailto:sage [2008/04/21(月) 15:30:31 ]
>>192-194
作成ありがとうございます。
先生に出したら一つめの方がやり直し、二つ目は「同時に表示できてないな(藁」
とあっさり×&デコピンを頂戴致しました(泣
文字列と小数を同時ディスカ・・・orz

207 名前:デフォルトの名無しさん [2008/04/21(月) 15:35:03 ]
>>182は何を意図した問題なのかさっぱりわからん。

208 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 15:35:07 ]
>>206
#include <stdio.h>

struct hoge{
char str[100];
double value;
};

int main(void){
struct hoge foo;

scanf("%s", foo.str);
scanf("%lf", &foo.value);
printf("%s%.2f\n", foo.str, foo.value);

return 0;
}

209 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 15:42:37 ]
エスパーktkr

210 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 15:52:59 ]
>>206
>>194 は同時に表示するはずだが…



211 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 17:23:33 ]
>>208
変数3つ使ってるじゃん

212 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 17:24:59 ]
>>211
三つってどれ?

213 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:46:48 ]
>>173
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6296.c
要望どおりに変更してみたが、ちゃんとチェックしてないので手痛いミスがあるかもしれん

>>あとオーバーフローチェックのところのLLONG_MAXが使用されてなく
>>エラーが出てしまいます
いまんいち意味がわからない
コンパイルできないなら、その部分削除したらいいよ
ためしにカッコつけて入れてみただけだから

214 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:50:32 ]
>>212
char
double
struct hoge

215 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:12:55 ]
それは変数じゃなくて型名

216 名前:154 mailto:sage [2008/04/21(月) 20:13:52 ]
>>111
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6298.txt
プログラミングにあたっては、次を参照しました。
ja.wikipedia.org/wiki/%E9%96%8B%E5%B9%B3%E6%B3%95
この説明にそって書いたのですが、どうやらわかりにくくなってしまったようです。
>>159
>ここ、宿題スレ。
#これは失礼。では宿題をときながらではいかが?
>getchar() が使われているんだが???
#たしかに getchar() の返り値を int で受けていない、EOF をチェックしてない、など些細ですがまずいところはありますね。
>>197
>どのファイルにはファイルの終わりを意味するEOFコードが記録されていますし
#いいえ、記録しておく必要はありませんし記録していません。
#>>139 の記述がおおむね正しいのです。
>>200
>いちいち蒸し返すなよ
#ごめんなさい。宿題解きながらということで、ご勘弁ください。

217 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:18:12 ]
>>216
バカか・・・んじゃどうしてプログラムはEOFを検出して動作したんだ?ん?
お前は入力は 印字可能な文字 のみだと思ってんの?w
コンピュータ、電子計算機がやっている基本だよ、入出力って。
その中に人間が決めた定義、その中にEOFも改行コードなども
印字不可能でも存在するデータがあるんだがw
いい加減失せろ、ナンバーサインバカw

218 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:19:01 ]
蒸し返すな!値を返せ!by return

219 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:20:18 ]
www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=o5t&q=EOF+%E5%85%A5%E5%8A%9B&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
普通にEOFの入力が可能です、ありがとうございました。

220 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:22:51 ]
リダイレクトも知らなさそうだな、ナンバーサインは・・・



221 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 20:24:03 ]
そんなことよりコナン観ようぜ

222 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:27:20 ]
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文:jubilo.cis.ibaraki.ac.jp/~isemba/PROGRAM/CPROG/214.pdf
6.課題を全て
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限:4月27日まで
[5] 問題のプログラムの赤枠を埋める感じでお願いします。
どなたかよろしくお願いします。

223 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:40:10 ]
ここに投稿したことたぶんバレるぞ

224 名前:デフォルトの名無しさん mailto:age [2008/04/21(月) 22:22:31 ]
[1] 授業単元:OSプログラミング入門
[2] 問題文:OSにおけるセキュリティーホールを検出するプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限:4月27日まで
[5] セキュリティーホールが発見された場合は自動で修正するように
機能を付けること

225 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:31:51 ]
ねーよw

226 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:03:20 ]
ゲイツ自重wwwwwwww

227 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:05:39 ]
#include<stdio.h>
int main(void)
{
int a = 5, b = 3;
double d;

d =(int)(((double)a / b) + 0.5));
printf("%f\n", d);
return 0;
}
これで何故かエラーがでるんですがどこがおかしいのでしょうか?

228 名前:111 mailto:sage [2008/04/21(月) 23:07:21 ]
>>154
丁寧なレスありがとうございます。
本当に助かりました。
せっかくなので頑張って解読してみます!



229 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:10:51 ]
>>227
VIPで聞けばいいじゃん
あとどんなエラーが出てるのか位書かないと答えようが無い
まあどうせ)とかだろうけど

230 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:11:18 ]
d =(int)(((double)a / b) + 0.5));

) が一個余分



231 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:12:21 ]
7行目にステートメント;がないといわれます。

232 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:37:24 ]
>>206
じゃあ次は>>191を提出してみましょう

233 名前:デフォルトの名無しさん [2008/04/21(月) 23:42:01 ]
[1] 授業単元: C++
[2] 問題文
サイコロのプログラムをつくりなさい
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: borland C++ 5.5.1 for win
 [3.3] 言語: C++
[4]特になし、長いので分けて書きます。
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
Class Dice{
int face;
int value;

public:
Dice(int f)
{
face=f;
srand((unsigned)time(NULL));
value=rand()%face+1;
}
Dice()
{
face=6;
srand((unsigned)time(NULL));
value=rand()%face+1;
}


234 名前:デフォルトの名無しさん [2008/04/21(月) 23:45:11 ]
>>233の続きです
void throwDice()
{
srand((unsigned)time(NULL));
value=rand()%face+1;
}
int read()
{
return value;
}
}
int main()
{
Dice d6;
Dice d10(10);
d6.throwDice(6);
d10.throwDice();
cout<<"6面体の目:"<<d6.read()<<endl;
cout<<"10面体の目:"<<d10.read()<<endl;
return 0;
}
エラー2141 dice2.cpp5:宣言の構文エラーとでます
ソースの問題でしょうか?
お願いします


235 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:48:31 ]
>>233
Classじゃなくてclass
小文字だよ。

236 名前:デフォルトの名無しさん [2008/04/22(火) 00:04:22 ]
throwDice()にsrand()はいらないだろ。

237 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:07:19 ]
素早く振ると同じ目ばかり出るよな。
さらに言えば、コンストラクタでもsrandしないほうがいい。
mainで1回だけやればいい。

238 名前:デフォルトの名無しさん [2008/04/22(火) 00:11:39 ]
Main関数で5つの整数を読み込み,
その平均(double)を
画面に出力するプログラムです
また5つの引数を受け取り,
平均を返す関数mean_calc5(・・・)
を呼び出し,返された平均値をmain関数で画面出力すること

C言語です  お願いします



239 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:16:12 ]
>>238
>1

240 名前:デフォルトの名無しさん mailto:¥sage [2008/04/22(火) 00:16:23 ]
>>235
ありがとうございます。
またうっかりミスです。
>>236
>>237
ご指摘ありがとうございます。
<問題>の部分で省略したのですが
オブジェクト指向で
物体としてのサイコロをプログラムで作りなさいという項目
があったので、あえてコンストラクタでsrandをいれました。
実際のサイコロも置いた瞬間に目がででいるという事だそうです




241 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:19:27 ]
>>222
当方で確認した環境は WindowsXP, 処理系はcygwin(gcc 3.4.4) です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6299.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6300.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6301.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6303.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6304.txt
最後の2つは、私は出題者の狙いをはっきりとは汲み取ることができませんでしたので、もしかするとはずれているかもしれないこと、ご容赦ください。

>>217
>その中にEOFも改行コードなども印字不可能でも存在するデータがあるんだが
##では、実際にファイルを覗いて見てください。
##1) すべてのファイルに共通の EOF がありますか?
##2) あなたの環境の include\stdio.h にある EOF はどう define されていますか?それがすべてのファイルの末尾におかれていますか?
##私の環境では #define EOF (-1) ですが、すべてのファイルの末尾 1 バイトが -1 = 0xffというわけではありません。
##3) ^D や ^Z の値が -1 なのでしょうか?
>>198
>freadが指定したFILEストリームから指定したポインタへ取り込まないという性質についてだろ?
##getchar()≒getc(stdin) or fgetc(stdin) ですから、getchar() も fread() と同じくストリームを見ています。stdin だろうとファイルだろうと同じことなんですが。
##で、>>154 で示したとおり、stdin には EOF は格納されていません。
>>220
##リダイレクトに関係する関数, pipe() や dup() あるいは dup2() (POSIX) は fd です。今はCライブラリ関数の fp を問題にしています。
>>218
>蒸し返すな
##宿題を解きながら、ですのでご勘弁を。

242 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:24:12 ]
ん、リダイレクトに pipe() はかんけいないですね。しつれい。

243 名前:173 mailto:sage [2008/04/22(火) 00:28:15 ]
>>213
お手数かけてスミマセン
どうもありがとうございました!

244 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:30:42 ]
>srand
は乱数関数の"初期化"だ

乱数関数を実行して値を取得するのが
>実際のサイコロも置いた瞬間に目がででいる
という事だ


245 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 01:18:48 ]
>>238
#include <stdio.h>

void Main( int* data, int num )
{
int i;
for( i = 0 ; i < num ; i ++ )
{
printf( "値%d:", i+1 );
scanf( "%d", data+i );
}
}

double mean_calc5( int v0, int v1, int v2, int v3, int v4 )
{
return ((double)v0 + v1 + v2 + v3 + v4) / 5;
}

int main()
{
int data[5];
Main( data, 5 );
printf( "平均値=%f\n", mean_calc5( data[0], data[1], data[2], data[3], data[4] ) );
return 0;
}

246 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 02:16:19 ]
入力を閉じることを「EOFを入力する」と表現することがあると、
146が認めればすむだけのことに思える。

ちなみに、DOSやCP/Mには、テキストファイルの終わりに0x1Aの1バイトを置く風習があった。
support.microsoft.com/kb/405482/ja
DOSでのC処理系の実装では、テキストモードでファイルを読み取るとき、
0x1Aが現れたら(後ろにまだデータがあっても)ファイルの終わりとし、
getcでEOF(もちろん値は-1)を返したり、fgetsでNULLを返すという風にしていた。
(もちろんバイナリモードではやらない)
標準入力からも、Ctrl+Zで0x1Aを入力可能で、あとはファイルの場合と同じ。

そして、Windowsでは、ファイルに0x1Aを置く習慣も廃れ、
また、コンソール(標準入力)でのCtrl+Zは、0x1Aの入力ではなく、
OSがストリームの終わりに達したという扱いに変換するようになっているというのは
Win32コンソールを触ったことがあれば想像の通り。

247 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 02:42:06 ]
スレ違いウザイ

248 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 06:04:25 ]
>>246
入力 の意味を理解してから出直せ、ボケ初心者

249 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 06:09:41 ]
>>248
おまえが考えてる入力の意味ってなに?

250 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 06:17:08 ]
>>249
自分で調べろよw 基本はデータを読み込む、取り込む。それが文字だろうと数値データだろうと
デジタル機器においては、入出力されるデータは全て数値データ、もっと追求すると
2進法で記録された0と1の組み合わせだよ。その0と1の組み合わせを人間が都合よく
解釈、理解できるように実装されたコンピュータで扱いっているが、EOFが値として
どのように定義されていうと思う?-1と記されて言る資料がほとんどだろ?
EOFがファイルの終わりというのは、人間が都合よく定義した決まりごとであって
所詮は数値データに過ぎないんだよ、これくらい大学に通った奴なら普通に分かるw

っつか、お前はナンバーサインじゃないだろ?何そんな知ったかの肩を持って
このスレにこんな時間まで粘着して、自分の無知を晒してんの?w



251 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 06:22:05 ]
www.google.co.jp/search?hl=ja&q=EOF%E3%80%80%E5%85%A5%E5%8A%9B&lr=&btnG=Google+%E6%A4%9C%E7%B4%A2
EOFの入力は可能です、ありがとうございました。
この粘着はgetcharやfread、fgetc、fgetsなどの ライブラリ の動作について
いちいち話をするが、それらがプログラムの動作において EOF を検出して
どう動作するかについて話をしているが、完全に思い違い。
指定したポインタ、変数へ格納するかどうか?についても話をしているんだろうけど
EOF、すなわちファイルの終わり、それを検出してファイルに書き出す、あるいは
ファイルを読み込んでいるという基本的な処理の例があるにもかかわらず
まだ EOF が入力されないという大ボケをかますプログラマ以前に
コンピュータを扱う技術者としては相応しくない知ったか。いるよな、こういう
聞き分けのない、自分が思ったことをいつまでも相手に理解してもらおうという奴。
完全に筋の通る理論で論破されているのにw

ちなみに、標準入力からはキーボードによる入力でも可能だし、リダイレクトや指定の
ライブラリによるファイルの読みは可能。誰かさん、墓穴を掘ったがファイルの終わりが
全てのファイルにあるのか?って突っ込み、痛すぎ・・・原則として、ファイルの終わりを
示すコードは存在するよw 存在しない例外とも言えるファイルを持ち出そうと必死になるが
本題を崩すなよ。

EOFが入力されるかどうか?についてだろ。すでに昔から存在する事実を
何をいまさら、かじり始めた青二才が必死に反論してんだ?????
頼むからこんなところに来る、自分に反論する人だけに対して
わけのわからん理論で反論せんで、大学の教授にでも質問しろよw

ちなみに、自分は通っていた大学には東大、京大卒の教授が何人もいましたよ。

252 名前:249 mailto:sage [2008/04/22(火) 06:24:37 ]
>>248が何を食いついてるのかよく分からなかった
EOFに関して>>246>>250ともおかしなこと言ってる訳じゃないのに
議論がかみ合わないのは不思議だと思いますた

253 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 06:37:24 ]
ttp://ja.wikipedia.org/wiki/%E5%85%A5%E5%8A%9B
ttp://yougo.ascii.jp/gh/65/006526.html
初心者は用語集でも見てろってw
こういう視野の狭い奴って、自分にとっての入力はこうだって話を始めて
広義を無視して異例でも話をしようとするから困る。あれだろ、路上じゃ
違反者がいれば自分もその違反をしても、自分だけしか取り締まらない
警察にいちゃもんをつける奴w ほかにもいるから取り締まれ、そうでなきゃ
警察は怠惰だとか当り散らすんだろw ちゃんと最初から基本ルールを守れよ、理解しろよw

これ以上は、汎用電子計算機の基本的な仕組みを学ばずに、コードを記述して
プログラムを作っただけで知ったような口を聞いている奴らは放置な。
後ナンバーサインはマジで無視しとけ。こんな奴がもし講師だったら、
とんでもない学校だ。生徒だってことで。

EOFが入力されなかったら、どうやってEOFを検出してファイルの読み込みを
やめたのか、説明せよw 以上終了とか言ったら、もう学校を辞めて
今からでも進路を変更しろ。人生を大きく左右するぞ、いい加減な人生の
舵取りは。

254 名前:249 mailto:sage [2008/04/22(火) 06:41:57 ]
> EOFが入力されなかったら、どうやってEOFを検出してファイルの読み込みを
> やめたのか、説明せよw
ja.wikipedia.org/wiki/End_Of_File

ところでナンバーサインって何?

255 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 06:48:52 ]
文字も画像も映像も、人間が都合よく解釈、理解できるようにしたプログラム、ソフトによって
表現が可能な機能を実装したコンピュータで展開していうんであって、所詮はどれも
数値データだよ。今こうやって文字を入力していうが、それも元を正せば、人間が
文字として解釈できる形に、使用している環境の文字コード体系に応じて
文字として見えるだけだよ。所詮、数値データ。EOFだけ何か特別扱いせんでも・・・
まさか、それらのデータが最初から色がついている、文字の形をしている、音声として
存在しているとでも思ったの?ファイルのダンプくらい、プログラムの授業でもやらんのか?
教本にも普通に載っているぞ、そんなの。

256 名前:249 mailto:sage [2008/04/22(火) 06:56:43 ]
>>255
おれ国語の読解力あんまいい方じゃないんで確認なんだけど、
これおれに対するレスじゃないよね?
>>253へのレスなら納得なんだけど

257 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 07:53:21 ]
>ところでナンバーサインって何?
行頭の'#'のことでしょ。尤も、>253の言う「ナンバーサイン」氏こと>139、>144と>216、>246では使い方が違う罠。
どうやら、「ナンバーサイン」氏は特定個人ではなく、>253の脳内にのみ存在している抽象人格のようだ。


258 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:12:23 ]
EOFが無いファイルって、どうやってOSはファイルを個別のものと
認識、管理してんだよ・・・どこのIT土方の意見だ、EOFが入力できない
なんて言っている奴は?所属、肩書きを示してみろ?

259 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:23:45 ]
横槍でスマンけどEOFってOSのファイルシステム管理が
勝手に入れるもんだと思ってるんだけど。
いちいちアプリ実装者が最後にEOF書く必要が無い、
ということは普通fread()(あんま使ったことないからしらんけど)などで
EOFを検出する必要もない(=fread()内で勝手に止めるからでEOFを受け取ることはできない)
ってことなんじゃないの?
たかだかその程度で何を荒れとるのかと思ったのでw

260 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:38:18 ]
>>258
今時、ファイルシステムはファイルの大きさをバイト単位で持っており、
その場合はファイル上に必ずしもEOFが実在する必要はない。

たからEOF入力なんて存在しないなどというつもりはないけど気になったので。



261 名前:249 mailto:sage [2008/04/22(火) 09:56:14 ]
>>258>>259
windows系ファイルシステムは知らないけど、Linuxのext3ではEOFなんて
全く関知してないと思う(たぶんwindowsも)。
getchar()などでEOFが返ってくるのは、ライブラリ(libc)がopenされたファイルの終了を検知してるから。
ライブラリ側がEOFの面倒を見てくれるので、アプリ開発者はライブラリ提供のヘッダファイルをincludeすれば問題ないです。
もし、OSがEOFを管理してて個々のアプリがEOFをハンドルしなければならないなら、
アプリ毎にOSのヘッダをincludeしなければならないんじゃないかな。

262 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 10:02:28 ]
朝から元気なのは結構だがスレ違いなので続けるなら他所へ行ってください

263 名前:249 mailto:sage [2008/04/22(火) 10:02:35 ]
>>261
> getchar()などでEOFが返ってくるのは、ライブラリ(libc)がopenされたファイルの終了を検知してるから。

自己レスです。
ファイルの終了と言うのはファイル自身にEOFコードが存在するという意味ではないです。
バイナリエディタでファイルの途中に0xFFを書き込んでも、int c; while ((c = getchar()) != EOF) してる限り、
途中の0xFFはスルーされるはずです。
char c; while ((c = getchar()) != EOF) だと途中の0xFFが当然のことながら、EOFになりますね。

264 名前:デフォルトの名無しさん [2008/04/22(火) 10:53:07 ]
[1]プログラミング演習
[2]3つのポインタ型変数と3つの変数が
char c, *pc;
int i, *pi;
double d, *pd;
と定義され、
pc = &c;
pi = &i;
pd = &d;
と初期化されたポインタに対して
pc++; pi++; pd++;
加算したときに,格納されている値が(つまり格納しているアドレスが) 何バイト増えたか表示するプログラムを作成せよ.
[3.1]問わず
[3.2]borland
[3.3]C
[4]4/23

お願いしますm(._.)m

265 名前:デフォルトの名無しさん [2008/04/22(火) 11:40:03 ]
printf("%d,%d,%d\n", sizeof(char), sizeof(int), sizeof(double));

266 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:02:52 ]
EOFがあるとかないとかどうでも良いんじゃい。
EOFの入力がプログラムへ可能か?って話は
可能だって結論が出てんだろが。何他人を装って
分が悪くなるとうざってぇみたいなことを言ってんだ?
お前がEOFの入力が出来ないと食い下がってきたんだろが。

267 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:25:23 ]
Linux = EOFが入力できる
Win = EOFが入力できない
というわけで
Linux > 越えられない壁 >>>>>>>>>>>>>>>>>> Win
てことだ

268 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:19:09 ]
>>267
標準入力からEOFをいれる方法
Linux Ctrl+D
Windows Ctrl+Z

269 名前:デフォルトの名無しさん [2008/04/22(火) 13:33:14 ]
>>268
Wordでそれをやってみろ。
ドザは知識がなさすぎる。

270 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:41:14 ]
ならemacsでやってみたら?
標準入力からって書いてあるだろう。



271 名前:デフォルトの名無しさん [2008/04/22(火) 13:46:48 ]
>>270
できないと思ってるのかw

272 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:54:23 ]
はいはい、できなくはないですよ。論点はそこじゃない。

273 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:59:29 ]
一般人に使われないlinuxをちょっと齧って
windowsユーザーを馬鹿にしたくなる年頃なんだろう。
煩わしいコマンドをターミナルに打ち込んで「俺玄人wwwwwwうはwwwww」とか本気で思ってそう。

274 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 14:11:30 ]
どんなOSを使ったことがあるかとかどうでも良いわ。
俺は大学でUNIXは普通に使ってたよ。ってか、使えないと授業にならねーし。

275 名前:デフォルトの名無しさん [2008/04/22(火) 14:50:53 ]
論点=ドザはクリックしかできない

276 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 14:57:34 ]
やっぱりヤツがいると荒れるな。

277 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:01:48 ]
そうだな、論点ズレまくりのナンバーサインがいると。以後放置よろ。

278 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:13:17 ]
EOFをファイルデータとして持ってたのは昔のメインフレームくらいじゃないの?
今はほとんどファイルシステムで管理してるでしょ

279 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:16:21 ]
またそれかよ・・・EOFが何なのかなんてどうでも良いんだよ。
入力されることがあるかないか?ナンバーサインがズレてんのは
getcharとfreadのライブラリの性質に話を持ち込んで、キーボードからの
EOF入力さえも否定したから悪いんだよw
普通にEOF入力なんてあるわ、とっくの昔からw

280 名前:デフォルトの名無しさん [2008/04/22(火) 15:19:44 ]
>>258



281 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:20:57 ]
ヒント:印字可能な文字(データ)しか入力できないという考えがすでに素人以下

282 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:32:17 ]
どっちもそこら辺で勘弁してやれよ。

283 名前:デフォルトの名無しさん [2008/04/22(火) 15:38:17 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6305.txt

よろしくお願いします。

284 名前:249 mailto:sage [2008/04/22(火) 15:45:10 ]
>>279
キーボードから直接EOFコードを入力できると言ってるように聞こえるので一言。
もし、そうじゃなかったらごめん。

アプリがライブラリのgetchar()を呼ぶと、kernelはユーザーの入力待ちになる。
ユーザーがたとえば "test string^D" を入力すると、kernelは^Dを入力の終了と判断し、
ライブラリに "test string" を返す。アプリはライブラリからそれを一文字ずつ取り出して使う。
もしここで "test string" を入力せず、単に^Dだけ入力した場合、kernelは\0をライブラリに返す。
ライブラリは入力がなかったという意味でEOFをアプリに返す。

要は、EOFはもうそれ以上入力がないということを示す、
ライブラリとそれを利用するアプリの取り決めになっています。

285 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:50:46 ]
相手にしたらダメな人だから

286 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:54:26 ]
ヒント:改行もタブも印字不可能でもキーボードからの入力が可能。
便宜上出力で指定する場合に \n や \t など、印字可能な文字で代用しているものがある。
所詮テキストファイルにしても、バイナリーデータにしても数値データの塊に過ぎない。
バイナリに関しては、変数の型を指定することで、数値データを適切にプログラムが
解釈するようにコードを記述する際に宣言をしている。

287 名前:デフォルトの名無しさん [2008/04/22(火) 16:31:03 ]
お前らスレタイ読め。
C/C++でEOFは「もうそれ以上入力がない」という意味では「ない」。
アフォはひたすらクリックしてればいいんだよ。
妄想披露スンナ。
これだからドザは(ry

288 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:35:12 ]
>>287
> もうそれ以上入力がない
いつ誰がそんなことを言ったんだよ?w お前こそ黙っとれw

289 名前:デフォルトの名無しさん [2008/04/22(火) 16:37:39 ]
言ってなくても書いてあるだろが。
掲示板でどうやって言うんだよ。
ドザは駄目だな。

290 名前:デフォルトの名無しさん [2008/04/22(火) 16:38:59 ]
「引数として配列のポインタとデータの個数を用いて、引数に与えられた整数の2乗を引数に値を返す関数を作成し、1^2から10^2まで表示せよ」

5時間悩んでも出来ませんでした。よろしくお願いします。



291 名前:249 mailto:sage [2008/04/22(火) 16:43:49 ]
>>287
「もうそれ以上入力がない」というのは語弊があるかもしれないですね。
アプリがgetchar()で次の文字を取りに行ったとき、入力がなかったときライブラリがEOFを返します。

以下、ちょっと補足。
Linuxの場合、端末から入力された^Dは、kernelでは16進の0x04になります。
で、ライブラリに返すときこれを\0で上書きします。
^Dは入力の終了を示すものであり、EOFではないです。
興味ある人は drivers/char/n_tty.c とかglibcのソースを見るといいです。

292 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:45:28 ]
そろそろ自演でスレ伸ばすの止めようぜ?

293 名前:デフォルトの名無しさん [2008/04/22(火) 16:49:40 ]
>>291
アフォか。
規格書読め。
これだからドザは。

294 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:51:31 ]
>>290
#include <stdio.h>

void f(int *p, int n) { while(n--) p[n] = p[n] * p[n]; }

int main(void)
{
int a[10], i;

for(i=0; i<10; i++) a[i] = i + 1;
f(a, 10);
for(i=0; i<10; i++) printf("%d ", a[i]);

return 0;
}


295 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:52:36 ]
なんだ、249をNGにしていたから気づかなかったが、まだ勘違いバカが
粘着しているのかw お前が黙ってりゃ一番解決するんだよ。
スレ板読めや、基地外。自分にとってそれはこういう意味ですとか
このように解釈しました、そう解釈した理由を こじつけ で勝手に作るなよw
お前はISO関係者か?コンピュータの設計者か?これらはすべて
国際的に決められた標準化に基づいて構成されてんだよ。
思い違いを正当化するために、自分の知識の貧弱さを露呈しなくて良いから
黙ってろや、どこぞの学校の講師か知らんが、貴様の元では学びたくないな。
生徒だったらどんな講師に学んだんだと?w

296 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:55:36 ]
#include <stdio.h>

int main(void)
{
char ch;

while( ( ch=getchar() ) != EOF );
printf("%d %c / EOF : %d %c ",ch,ch,EOF,EOF);

return 0;
}

これをコンパイルして、Ctlr-zでEOFを検出させてみろw
そしてEOFとして定義されているマクロの値を調べてみましょう。
EOFが入力されたことが一目瞭然です、ありがとうございました。
さてと、これ以上は無駄なんで、以後放置よろ。


297 名前:デフォルトの名無しさん [2008/04/22(火) 16:58:56 ]
>>296
はい0点

298 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:02:33 ]
では次ぎ、テキストでもバイナリーデータでも、当然画像でも音声データでも良い。
>>296 のプログラムにリダイレクトでファイルを入力させてみろ。
ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、そのときのコード、値と
EOFが一致しました、本当に、本当に、重ね重ね、ありがとうございますた!

299 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:03:45 ]
>>296
少なくとも変数 ch は int 型でないといけない

300 名前:デフォルトの名無しさん [2008/04/22(火) 17:07:05 ]
>>294
どうもありがとうございます!!



301 名前:249 mailto:sage [2008/04/22(火) 17:07:17 ]
>>293
Cの規格書JISX3010ちらっと見てみたけど、7.19.1にこう書いてありました。
「EOFは、ファイルの終わり(end-of-file)、すなわちストリームからもうそれ以上の入力
がないことを示すために、幾つかの関数から返される、」

302 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:07:28 ]
良いか、ボケ共、入力は何も 文字データ だけじゃねーんだよ。
標準入力で人間がキーボードから行う入力と言えば文字データが思い浮かぶが
プログラムへのデータの入力は、文字だろうと所詮デジタルデータ、
数値データに過ぎんのだよ。それが使用している環境の
文字コード体系で印字可能な文字は視覚的に見えるんであって
バイナリーデータのような数値データの塊でも、入力できるんだよ。
そしてEOFも。なんでEOFが入力できないのか、もう説明しなくて良い。
とっくの昔からEOFの入力なんてされてたんだよ、当たり前のように。
でなきゃ、プログラムはどうやってファイルの終わりを認識してたのだね?ん?
怒らないから、そんな秘密の情報があるなら、おいちゃんの耳元でそぉ〜っと言ってごらん?

303 名前:デフォルトの名無しさん [2008/04/22(火) 17:07:35 ]
>>298
0点。
規格書読め。

304 名前:デフォルトの名無しさん [2008/04/22(火) 17:09:57 ]
>>301
アフォか。
エラーを示すために-1を返す関数が一つ以上あれば、-1はエラーか。
ドザはほんとに駄目だな。

305 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:10:27 ]
>>299
はぁ?なんで?1バイトずつ読み込まないでどうすんだ???
お前、もしかして・・・変数の型を誤解してないか?wwww

306 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:12:01 ]
>>303
−100点。お前が説明しろ、ボケ低レベルへたれプログラマーwwwwww
東大、京大卒の教授の元で指導を受けた俺と、それ未満の講師に
コードの入力だけ教わったお前とは格が違いすぎ。
説明と言う説明がお前は出来てないだろ、目の前にあるものの
来本部部は同じだと言うのにw

307 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:14:16 ]
>>305
EOF != 0xFF
おk?

308 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:15:36 ]
299 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 17:03:45
>>296
少なくとも変数 ch は int 型でないといけない

↑このアフォーの思い違いを説明せよ 配点-100点wwww

では >>296 のコードを
int ch;
に変更して実行してみましょう。あららっ!?結果は同じ -1 が検出されましたwwwww
だから何について説明しているか分からない低レベルは黙ってろって。
お前らとは使用していた施設のレベルからして違うんだよ!
大学にあった施設は企業レベル、いやそれ以上。だからお前らとは
見てきたものが違い過ぎるんだよwwwww

309 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:18:30 ]
ぷぷっ、こいつ、EOFが int 型だと思ってるよwwwwwwwwwwwwwwwwwww
-1なんて1bitでも表現できんだよ!char型は1バイト、すなわち標準的な環境では
8bitなので、十分EOFの検出は可能です、ありがとうございましたwwww
そもそも、ACSIIコードとShift-JISの仕組みが分かっていれば、下らない突っ込みなんてしねーよ。
全角で2バイト必要な文字は、それに応じた文字コードが割り振られてんだがw
お前、Shift-JISで日本語の全角文字をすべて表示するコードを書いてみろや!
結局、そんなものは基本の拡張に過ぎないと気づくからw

んで、EOFが入力できない説明をしてくれよ。俺はそれを求めてんだが?

310 名前:デフォルトの名無しさん [2008/04/22(火) 17:18:31 ]
kusakabe先生の教えを守って書き込みしたらスレが伸びる伸びる



311 名前:デフォルトの名無しさん [2008/04/22(火) 17:19:35 ]
>>309
> ぷぷっ、こいつ、EOFが int 型だと
規格書読めよ。

312 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:21:21 ]
>>305
Cには、データベースなんかで見かけるNull値ありの型がないから、
getcharなどはNull値相当をEOFに割り当てて、
Null値ありcharをただのintで代用しているという考え方が近いと思う。

313 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:23:21 ]
お前さぁ、負の値が2進数、デジタルデータの世界でどのように表現されているか知らんのぉ?
まぁ、これは大学でやった実験では普通に扱いましたよ、論理回路も含めて。
なんで変数の型に、敢えて unsigned があると思ってんの?
8bitで扱える値の幅、パターンの数、負の値がどのように記録されているかも
C言語でもコードを書いて調べることが出来るんだがねぇ。
んで、EOFが入力できない説明を求む。それ以外の御託はいらねー

314 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:27:12 ]
>>309
-1単体は1ビットでも区別可能だけど、
ここでは、(unsigned) charの値と区別できないといけないから、
charよりビット数の多い(はずの)intなんだろ。

315 名前:デフォルトの名無しさん [2008/04/22(火) 17:28:43 ]
>>313
先生の教えに背いて教えてやってもいいんだが、完全にお前の理屈を否定することになるぞ。
どうやらここにはドザしかいないようだから、味方してやってもいいんだが?

316 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:32:37 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6305.txt

困っています。よろしくお願いします。
Windows
gcc
C
です。

317 名前:デフォルトの名無しさん [2008/04/22(火) 17:37:29 ]
さて、ドザかまっててもしょうがないから宿題やるか。

318 名前:249 mailto:sage [2008/04/22(火) 17:48:49 ]
>>296>>298
これ実行すると、ファイルの終了に達していなくても、ファイルの途中にたまたま0xFFが現れたら
そこでwhileループ抜けるよね。
> ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、
whileループを抜けたのはファイルの終わりを検出したわけではないです。

319 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:50:15 ]
騒いでる奴らはそろそろ専用スレ立てろや

320 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:54:41 ]
ビット演算子の意味も分かってなさそうだな。こりゃダメだ・・・
所詮、文字コードでしかプログラムの意味が分からんのだろ。
高度でもない、当たり前なことを知っている人は、”汎用”電子計算機に対して
制御を行うコードを書いているという、当たり前な頭はあるんだよ。
そんなの大学に通わなくても、それ関連の仕事をしている人は
当たり前に見ている。人間なんて、所詮見た目が良かろうが
DNAによって動物細胞の塊が人それぞれ違った形に形成されていると
医療関係に属する人が知っているように。萌え〜なんていっている奴は、
2次元にしろ3次元にしろ、そういう人達から見ると不思議に思えるんだろうね。
だって、所詮動物細胞、0と1の組み合わせのデジタルデータなんだもの、みつを。



321 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:54:52 ]
>>296
jpegファイルはいきなり0xFFで始まるんですが、読み込めないということですか?わかりません><

322 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:01:55 ]
>>320
最後おちゃらけて見せて、興奮を隠そうとしなくてもいいよ
わかるわかる

323 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:10:28 ]
>>296はcharがunsignedの環境なら無限ループだな

324 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:11:11 ]
ビット演算なんて、もはや遺伝子組み換えレベルの操作なのさ〜♪

325 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:33:29 ]
もうね、鸚鵡返しのように 規格書 とか言うだけで、具体的に該当する
事項を示さないアホは何?w 自分が言いたいこと、思ったことを
相手に理解してもらえないって言っているだけじゃん。お前が言いたいことがあるなら
具体的に示せよ、低レベル講師め。お前んとこの学校はどこだ?
通報しておいてやるよ、EOFが入力できないなんていい加減なことを、
ありもしない規格書を持ち出して事実を捻じ曲げているとw

頼むから大学レベル未満のお前、EOFが入力されないという
話が拗れた根本の説明をしてみろや?どうやってEOFを検出して
終了するコードが実行されたのか、摩訶不思議アドベンチャーで
ゴクウも界王拳をスーパーサイヤ人になってからお前にお見舞いするだろうよw

326 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:38:44 ]
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa9.html
面白い記事が見つかりましたよ、ほらw
お前が勘違いしていたEOFが特殊な文字コードってやつ、
所詮は人間が勝手に 定義 した数値に過ぎないということがはっきりしただろ?
俺はEOFがファイルの終わりを示すとは一言も言っていないんだよw
何度も言っただろ?文字を入力したとしても所詮は 数値データ に過ぎないと。
プログラムが、コンピュータがそれを認識するために 人間が定義した に過ぎないと。
人間が好き勝手にルールを決めてしまうと、世界で共通ではなくなり
インターネットの世界でも混乱が起こるんだよ。ウェブページだって
規格が違ってブラウザが国ごとによって違ってたら面倒だろ?

規格書とか言うお前、お前はISOの内容は知っているようだが
標準化の意味は理解していなかったようだな。所詮それも
人間が定義 したに過ぎないということを。

327 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:45:33 ]
さてと、int型がなぜ2^32 すなわち 2^8^4 の値として扱われているか?
結局は4バイト分のデータを1つの変数として取得して扱っているからだよ。
誰だよ、EOF != 0xFF なんて話をしたのは?俺はそんなこと一言もいってないよw
EOF にはしっかりと -1 と定義されているとは言ったが。なんで8ビットのみで話が進んでるの???
だから俺は、人間が勝手に数値の前にマイナス - という符号を付けて
表現したものではなく、2進数において 負の値をどのように表現しているか について問い正したんだが?
悪いがこれについては 実験で その詳細を知ることが出来たんでね。
コンピュータを構成している基本部分なんて、単純なもんだよw

328 名前:249 mailto:sage [2008/04/22(火) 18:57:07 ]
>>326
> 俺は
と言われてもお前がどれを書き込んでいて、どれにレスしてるのかわからない。

Ctrl-DやCtrl-Zは単にユーザーが入力の終了を示すだけです。
アプリがgetchar()を発行したとき、ライブラリ側にアプリに渡せる文字がなければEOFを返します。
入力ファイル中に0xFFが含まれていて、それをchar型変数で受ければ
ファイルの途中であっても同じくEOFとして判定されます。
この場合、feof()関数でストリームの終了かどうか判定できると思います。

一応念のため、Cの規格書ならここで見れます。
www.jisc.go.jp/」→「JIS検索」で「X3010」を入力

329 名前:デフォルトの名無しさん [2008/04/22(火) 18:59:20 ]
だから相手にしちゃダメなんだって。
半年ぐらい前までしょっちゅう暴れてたキチガイなんだから。

330 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:05:40 ]
だからよぉ、所詮整数型にしろ文字にしろ、人間が都合よくデジタルデータの塊を
数値や文字として扱うために 変数の型を宣言 したプログラムによって
解釈できるように処理させてんだよぉ。どんなファイル、データにろ
ビット すなわち 2進数の1桁 レベルに話を持ち込めば、0と1の組み合わせの
塊に過ぎんと何度も言っておろうにw

それはともかく、EOFが入力できないという理由を説明してくれ、規格書でw



331 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:07:21 ]
>>328
> ユーザーが入力の終了を示すだけ
それを326に言わせればEOFの入力となるんだろ。それくらい察してやれ。

332 名前:249 mailto:sage [2008/04/22(火) 19:14:18 ]
>>329
そうですか、キチガイですか。
そんな気はちらっとしてたんですけどね。
とりあえずいい暇つぶしになったんで、相手してくれてありがとう>キチガイ

彼がこの後何を言ってくるか楽しみにしてますwww

333 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:02:35 ]
多分このスレで一番レベルの高いおれから言わせてもらうと
自演くさい

334 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:54:32 ]
>>316
とりあえず動く程度のものでしかないけど課題1
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6306.txt

335 名前:デフォルトの名無しさん [2008/04/22(火) 22:17:54 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6307.c
[1] 授業単元: Cプログラミング
[2] 問題文:
@任意の2ノード間の最短路を求めるアルゴリズムを実行するプログラムを作成せよ。
A任意の2ノード間の最短最大路を求めるアルゴリズムを実行するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:リンク先のソース(経路選択の部分がない)を使用すること。

また、ソース中のdistance.txtの内容は、
0 1 1
0 3 1
1 2 1
1 3 1
2 4 1
2 5 1
3 4 1
3 7 1
4 5 1
4 7 1
5 6 1
5 8 1
6 8 1
7 8 1
7 9 1
8 9 1

です。よろしくお願いします。

336 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:33:05 ]
getcharの戻り値にEOFがあるだけの話だろ
もはや何の話を必死にしたいのかさっぱりだな

337 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:54:19 ]
【質問テンプレ】
[1] 授業単元:ネットワークプログラミング
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6309.txt
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ:gcc
 [3.3] 言語: C言語
[4] 期限: 4月25日まで
[5] その他の制限: 特になし

よろしくお願いします。

338 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:03:35 ]
>>337
stdoutを別のファイルにするだけじゃね?

339 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:06:50 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: CPad for Borland C++Compiler(これでいいのかな?)
 [3.3] 言語: C言語
[4] 期限: 4月29日まで
[5] その他の制限:正直大学一年目の後期にさらっとならっただけで、それもだいぶ忘れてます
         だから質問の内容がちょっと変かもしれませんが、よろしくお願いします

340 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:10:07 ]
>>316
続いて課題2

ところでこれって課題4まで終了した後のソースコードを提出しないといけないの?
だったら俺が細切れに上げてるのは割と意味が無いな



341 名前:340 mailto:sage [2008/04/22(火) 23:11:07 ]
>>316
ミスった
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6310.txt

342 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:32:10 ]
>>339
>自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる
スレ違い。
# まさかと思うが、調べるプログラムを作れとは言わんだろうな。

343 名前:デフォルトの名無しさん [2008/04/22(火) 23:35:06 ]
すいません、264お願いします・・・

344 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:40:14 ]
#include <stdio.h>

int main (void) {
char c, *pc;
int i, *pi;
double d, *pd;
pc = &c;
pi = &i;
pd = &d;
pc++; pi++; pd++;
printf("pc=%dbyte\npi=%dbyte\npd=%dbyte",
(unsigned int)pc-(unsigned int)&c,
(unsigned int)pi-(unsigned int)&i,
(unsigned int)pd-(unsigned int)&d)
}

345 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:43:14 ]
>>264
#include <stdio.h>
static int diff(void * lhs, viod * rhs) {return ((char *) lhs) - ((char *) rhs);}
int main()
{
char c, *pc;
int i, *pi;
double d, *pd;
pc = &c;
pi = &i;
pd = &d;
pc++; pi++; pd++;
printf("%d, %d, %d\n", diff(pc, & c), diff(pi, & i), diff(pd, & d));
return 0;
}

346 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:44:01 ]
>>316
課題3
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6311.txt

課題2にミスあり
提出するなら、main関数のreturn 0;の前の行に
fclose(fp);
を追加してくだしあ

347 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:44:06 ]
[1] 授業単元:ネットワークシステム基礎演習
[2] 問題文(含コード&リンク):(
ファイルbdata.txtには1から1000000までの異なる数が999999個入っている。つまり1から1000000までの数字のうち1つだけない。その数字を見つけなさい。
プログラムは
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp
で始まり、これ以外の変数は使用してはいけない。
また、以下の方法でプログラムを書くこと。
方法)簡単のため。1から100までの数のうち、1つがない場合を例として方法を説明する。もちろん最後まで実行しないとわからないことだが、説明の都合上、存在しない数は48だとする。
(1)ファイルを先頭から最後まで読み、1〜50の数と51〜100の数の個数を数える。
(2)1〜50の数が49個しかないので、求めている数は1〜50の数のどれかである。
(3)ファイルを先頭から最後まで読み、1〜25の数と26〜50の数の個数を数える。
(4)26〜50が24個しかないので、求めている数は26〜50までの数のどれかである。
中略
(5)ファイルを先頭から最後まで読み、48〜49の数と50〜50の数の個数を数える。
(6)48〜49の数が1個しかないので、求めている数は48〜49までの数のどれかである。
(7)ファイルを先頭から最後まで読み、48〜48の数と49〜49の数の個数を数える。
(8)48〜48までの数が0個なので、求めている数は48である。
)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年04月23日23:00まで]
[5] その他の制限:

348 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:18:51 ]
>>347
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;

fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;

count1=0;
while(fscanf(fp, "%d", &data)==1) count1+=data;

fclose(fp);

if(N%2) count2=(N+1)/2*N;
else count2=N/2*(N+1);

printf("%d\n", count2-count1);

return 0;
}

349 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:28:15 ]
>>348
>if(N%2) count2=(N+1)/2*N;
>else count2=N/2*(N+1);
は場合分けする必要が無いだろ
答えは出るし効率もいいけど指定された解法じゃない

350 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:30:17 ]
>>348
ありがとうございます。
本当に助かりました。



351 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:40:45 ]
いや、助かってないでしょw
解法が違う以外にも、intが32bitじゃ足りないし。

352 名前:348 mailto:sage [2008/04/23(水) 00:52:43 ]
>>347 解法無視してたので訂正版
>>351 >>349 の指摘している場合分けのおかげで正しい答えがでる
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;

fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
min=1; max=N;
while(min<max){
mid=(min+max)/2;
count1=count2=0;
fseek(fp, 0L, SEEK_SET);
for(i=0;i<N-1;i++){
fscanf(fp, "%d", &data);
if(data>=min && data<=max){
if(data<=mid) count1++;
else count2++;
}
}
if(count1<mid-min+1) max=mid;
else min=mid+1;
}
fclose(fp);
printf("%d\n", max);

return 0;
}

353 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:53:42 ]
347です。確かに348さんのやつで、それらしき解答が出るのですが、
初心者の私にはソースを読んでも理解できませんでした。
どなたか助けてください。


354 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:57:09 ]
理解できないならあきらめるしか無いと思うが

355 名前:351 mailto:sage [2008/04/23(水) 01:03:00 ]
ああなるほど、オーバーフローしても差は正しくなるってことか。

>>353
まず、値の総和を計算している。
1〜Nまで全部揃っているなら、総和はN*(N+1)/2になるはず。
しかし1個だけ値が足りない、総和はその値の分だけ少なくなる。

356 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:23:20 ]
347です。
355さんの説明で348のソースを理解できました。ありがとうございます。
352の改訂版のfseek(fp, 0L, SEEK_SET);
のfseek関数を知らないので,ググったらファイルの位置指示子の設定とあったのですが、
この役割をどなたか教えていただけませんか。
また、fseek関数を使わない方法はないのでしょうか。

357 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:24:42 ]
>>316
当方の環境はWindowsXP, 処理系はcygwin(gcc 3..4.4) です。
課題 1:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6312.txt
課題 2:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6313.txt
課題 3:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6314.txt
課題 4:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6315.txt
>>346 ですでに回答がありますので、お友達にでも贈ってください。

358 名前:264 [2008/04/23(水) 01:31:22 ]
ありがとうございます!

359 名前:348 mailto:sage [2008/04/23(水) 01:33:42 ]
>>356
#include<stdio.h>
#define N 1000000
int main(void){
int min,max,mid;
int count1,count2;
int data,i;
FILE *fp;

min=1;
max=N;
while(min<max){
mid=(min+max)/2;
count1=count2=0;
fp=fopen("bdata.txt", "r");
if(fp==NULL) return 1;
for(i=0;i<N-1;i++){
fscanf(fp, "%d", &data);
if(data>=min && data<=max){
if(data<=mid) count1++;
else count2++;
}
}
fclose(fp);
if(count1<mid-min+1) max=mid;
else min=mid+1;
}
printf("%d\n", max);

return 0;
}

360 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:55:39 ]
>>359
何度もありがとうございます。本当にありがとう。




361 名前:デフォルトの名無しさん [2008/04/23(水) 04:00:39 ]
すみません 質問良いですか?

class split { public: char a : 1; char b : 2 ; char c : 5;}

char x[1000];
split *z;

z=&x[10];

z->a;

とすればxの値を部分的に読み取れますか?

362 名前:361 [2008/04/23(水) 04:08:45 ]
自己解決しました 符号無しにすれば正常に読み取れるみたいです

363 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 05:47:26 ]
誰か>>361-362を解説してくれ

364 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 06:42:28 ]
>>357とか、かなり前に散々既出で決まった、ISO準拠の
int main(void) あるいは int argc , char*argv[] を使ってない
EOFについて噛み付いてきた新入りって何モノ?
初心者、素人臭が漂いすぎ・・・

365 名前:デフォルトの名無しさん [2008/04/23(水) 06:45:23 ]
すみません、335お願いします・・・

366 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 06:58:49 ]
>>336
EOFがキーボードから入力できるかの話だろ
もはや何の話を(ry

367 名前:デフォルトの名無しさん [2008/04/23(水) 07:19:49 ]
ドザが二匹いてどっちもドザだからまともな議論にならないだけだな。

368 名前:デフォルトの名無しさん [2008/04/23(水) 08:01:37 ]
ドザってなに?

369 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:19:08 ]
# <これをNGにすると、#includeで引っかかってしまうが
# < これをNGにすると、奴の脳内レスを排除できますw

370 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:23:20 ]
>>364
課題2, 課題3, 課題4 では int argc, char*argv[]を使っています。



371 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:24:27 ]
#define NAME_F 11
for (j = 0; j < NAME_F - strlen(member[i]->name); j++)
↑ん〜〜〜、ん〜〜〜、やっぱ きんもぉ〜☆

372 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:29:31 ]
これから理論的に反論できないキチガイのレスが続きますが一切放置で

373 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:39:51 ]
>>372 自己紹介乙。それをやっているのはお前だから、こいつを放置よろ。

374 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:42:59 ]
まぁ、別に問題とは言わんが、これは主観的な意見にもなるかもしれんが
#defineなど定義などは、上にまとめておいて、管理しやすくするのも良い。
あと・・・毎回 strlen で値を算出してたら、回数が少ない場合は気にならないが
繰り返す上では無駄が生じるよ。だったら、そのために変数を定義して
使った方が良いんじゃない?以上、京大、東大卒の教授の下で指導を受けた元生徒より。

375 名前:316 mailto:sage [2008/04/23(水) 09:39:59 ]
ありがとうございました。
大変助かりました。

376 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 11:33:22 ]
>>374
そこまで自己主張するならコテ&トリップつければいいのに

377 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 11:35:29 ]
>>376
しつけぇ、お前がトリップつけろ。側NGにしてやるから

378 名前:偽者of京大、東大卒の教授の下で指導を受けた元生徒 mailto:sage [2008/04/23(水) 12:03:46 ]
ドザとか目的も無くスラング使いたがる奴はDQN率が高い

379 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:09:00 ]
死刑判決受けた元少年みたいだな
とりあえずお前をNGに追加した、サンクス

380 名前:デフォルトの名無しさん [2008/04/23(水) 12:50:57 ]
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
課題1
1、3つのポインタ型変数と3つの変数が
char c, *pc;
int i, *pi;
double d, *pd; と定義され、
pc = &c;
pi = &i;
pd = &d;
と初期化されたポインタに対して
pc++; pi++; pd++;
加算したときに、格納されている値が(つまり格納しているアドレスが)何バイト
増えたか表示するプログラムを作成せよ。

2、完成させたプログラムを実行し、その結果について、3つのポインタ型変数を
それぞれ加算したときの増分されるバイト数が異なる理由を(実行結果を引用してもよい)
説明せよ。

3、適当な配列int a[5]={1,-2,3,4,5};を定義し、その内容をポインタ変数 int *pa; を用いて
表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 2008年4月23日22:00まで
[5] その他の制限: なし



381 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:43:58 ]
[1] 授業単元:プログラミング実習第一
[2] 問題文(含コード&リンク):
配列のすべての要素の最大公約数を求める関数gcdpを実装し、それを用い入力された10個の最大公約数を表示するプログラムを作りなさい。
[3] 環境
[3.1] MacOSX
[3.2] gcc
[3.3] 言語: C
[4] 期限: 4月25日18:00まで
[5] その他の制限:必ず配列を使うこと。ポインタは習ってないので使わないでください。

382 名前:偽者of京大、東大卒の教授の下で指導を受けた元生徒 mailto:sage [2008/04/23(水) 16:51:51 ]
>>381
#include<stdio.h>

int gcd(int a, int b){
int c;

while((c=a%b)) a=b,b=c;
return b;
}

int gcdp(int arr[], int arrsize){
int i, ret;

ret=arr[0];
for(i=1;i<arrsize;i++) ret=gcd(arr[i], ret);
return ret;
}

int main(void){
int arr[]={60, 70, 80, 90, 25, 100, 10, 75, 30, 35};

printf("%d\n", gcdp(arr, 10));

return 0;
}

383 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:16:07 ]
>入力された

384 名前:偽者of京大、東大卒の教授の下で指導を受けた元生徒 mailto:sage [2008/04/23(水) 17:18:42 ]
>>382 のmain関数訂正
int main(void){
int i, arr[10];

for(i=0;i<10;i++) scanf("%d", &arr[i]);
printf("%d\n", gcdp(arr, 10));

return 0;
}

385 名前:デフォルトの名無しさん [2008/04/23(水) 20:40:37 ]
マネージャパン、月刊アスキー、週刊アスキーの3誌は共同で6月にFXのシステムトレーグランプリ「シストレFXグランプリ」を開催。
詳細WEBページは5/15開設予定で(www.fx-gp.com)、5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
主催はマネージャパン、月刊アスキー、週刊アスキー、協賛はクリック証券。

ttp://system-trading.jp/news/index.php?ID=39

386 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:39:29 ]
>>335@
while(fin==0){ /* finフラグが立つまで繰り返す */
/* tmp_nodeを経由する方が距離が小さくなるノードを探して最短距離と前ノード表を更新 */
/* まだ最短距離が確定していないノードの中から次の探索ノードを選ぶ */
tmp_dist = dist[tmp_node];
for(i=0; i < NODE_NUM; ++i){
a = graph[tmp_node][i]; /* tmp_nodeからiまで距離 */
if(a == MAX || tmp_node == i || chk[i] == 1) continue;
b = tmp_dist + a; /* 始点からのtmp_node経由のiまでの距離 */
if(b < dist[i]){
path[i] = tmp_node;
dist[i] = b;
}
}
j = NODE_NUM; /* 未確定ノードの内、始点から最短距離のノード */
c = MAX; /* 始点からの距離 */
for(i=0; i < NODE_NUM; ++i){
if(chk[i] == 1 || dist[i] == MAX) continue;
if(dist[i] < c){
j = i;
c = dist[i];
}
}
if(j != NODE_NUM){
chk[j] = 1;
tmp_node = j;
continue;
}
fin = 1; /* 終点ノードへの最短距離が確定したら終了 */
}

387 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:40:23 ]
>>380
1.
printf("1byte, 4(or 2)byte, 8byte");

2.
確保するメモリサイズが違う

3.
pa = a;
for(int i = 0; i < sizeof(a); i++)
  printf("%d", pa[i])

コード書き始めて期限切れに気付いたからてきとーにしといた

388 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:23:27 ]
>>387
3番は
pa = a;
for(i = 0;i < sizeof(a)/sizeof(int);i++){
  printf("%d",*(p+i));
}
を期待してるんだと思う

389 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:34:37 ]
>>388
なるほど。
んじゃ1、2を踏まえて
for(〜)
printf("%d", *pa);
 pa++;
ってのもありかな

390 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:35:48 ]
[1] 授業単元:文字列操作、配列
[2] 問題文(含コード&リンク):
不規則な文字列が延々と続いてるファイルを読み込み、main関数から区切る文字または文字列を取得し
区切り毎に2次元配列に格納して格納した回数を戻り値として返す関数を作成せよ。
 文字列中に \n があった場合は削除し、
 区切りの文字・文字列が連続した場合は配列には \0 を返すものとする。
 配列の行数または列数のどちらかを512とする。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 本日午前中
[5] その他制限: strtokを使わないこと

まったくわからんです、お願いします・・・



391 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:44:53 ]
もうすぐ午後やで・・・

392 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:49:43 ]
                   r、ノVV^ー八
                 、^':::::::::::::::::::::::^vィ       、ヽ l / ,
                 l..:.::::::::::::::::::::::::::::イ      =     =
                    |.:::::::::::::::::::::::::::::: |     ニ= 元 そ -=
                  |:r¬‐--─勹:::::|     ニ= 生 れ =ニ
                 |:} __ 、._ `}f'〉n_   =- 徒. で -=
  、、 l | /, ,         ,ヘ}´`'`` `´` |ノ:::|.|  ヽ ニ .な. も ニ
 .ヽ     ´´,      ,ゝ|、   、,    l|ヽ:ヽヽ  } ´r ら   ヽ`
.ヽ し き 元 ニ.    /|{/ :ヽ -=- ./| |.|:::::| |  |  ´/小ヽ`
=  て っ 生  =ニ /:.:.::ヽ、  \二/ :| |.|:::::| |  /
ニ  く. と 徒  -= ヽ、:.:::::::ヽ、._、  _,ノ/.:::::| | /|
=  れ.何 な  -=   ヽ、:::::::::\、__/::.z先.:| |' :|
ニ  る と ら =ニ   | |:::::::::::::::::::::::::::::::::::.|'夂.:Y′ト、
/,  : か   ヽ、    | |::::::::::::::::::::::::::::::::::::_土_::|  '゙, .\
 /     ヽ、     | |:::::::::::::::::::::::::::::::::::.|:半:|.ト、    \
  / / 小 \    r¬|ノ::::::::::::::::::::::::::::::::::::::::::::::::| \

393 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:50:52 ]
>>392
粘着うぜーw どうせなら元生徒じゃなくて、教授に頼めよw

394 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:00:07 ]
[1] 授業単元:プログラミング1
[2] 問題文
整数3つを入力して2番目に大きい値を出力せよ
[3] 環境
 [3.1] OS: Windowsxp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 本日2時まで
[5] その他の制限:
どうかお願いします

395 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:00:07 ]
あぁ〜〜、作り始めたが間に合わなかったか・・・もう午後だから無理ぽ?

396 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:13:11 ]
>>394
きみとほとんど同じくらいの初心者が作ったものでよければ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6319.txt

397 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:32:24 ]
>>396
ありがとうございます
間に合いました

398 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:35:17 ]
[1] 授業単元:C++概論
[2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6321.txt
このヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語:C++
[4] 期限: 2008/04/27
[5] その他の制限: 特に制限はありません。C++初心者なのですが、いきなりヘッダファイルのみ渡されて
まず何をすればよいのかすらわからない状況です。よろしくお願いします。

399 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:51:36 ]
>>398
こんなの宣言しかないのじゃ誰もできないだろ
他に条件とかファイルとか指定されて無いのか?
それとも各クラスを適当に実装して動作確認しろってことか?

400 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 14:00:21 ]
>>399
恐らくこれを利用して座標、ベクトル、行列の演算を一通り出来るようにしろと言うことだと思います。
課題の出され方が漠然としすぎていて手付かずの状態なので、方針だけでもご教授いただけたら幸です。



401 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 15:30:09 ]
>>395
居残り確定っぽいんですが、参考にしたいので
お時間があったらお願いします。

402 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 15:38:42 ]
>>401
俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。

403 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 16:24:33 ]
うわっ、なんかあれこれやってたらきんもぉ〜ソースってレヴェルじゃねーぞっ
になったんで、期待せんでくれ・・・

404 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:06:00 ]
いちいちそんなこと書かなくていいから。
ほんとレス乞食はうぜーな。

405 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:08:27 ]
>>390 >>401 うわぁ〜〜〜〜
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6323.c

406 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:08:56 ]
>>404
んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw

407 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:17:31 ]
>>406
お前のうんこ見なくてすむかと思うとほっとしたよ。

あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない?
速攻NGにするから。

408 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:18:44 ]
自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ〜?
必死だなw


409 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:20:03 ]
>>407=>> 249
名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41
>>248
おまえが考えてる入力の意味ってなに?

↑こいつうぜー

410 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:30:52 ]
それが同一人物に見えるのはお前だけだからw



411 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:31:22 ]
>>409
反論できてねーだろwwwww顔真っ赤すぎて超うけるwwwww

412 名前:390 mailto:sage [2008/04/24(木) 17:33:08 ]
一応自分でこんな感じに作ったのはいいんですが、
キャストと配列への格納がうまくいかずお手上げ状態です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6324.txt

413 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:43:10 ]
>>412
もうちょっと速ければ見せてもらえたのに。
元生徒もうへそ曲げちゃったから。。。

414 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:50:20 ]
>>404
そいつにレスしているお前も同じだろ・・・お前が  言 う な

415 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:52:58 ]
>>83-88のコピペに反応しているお前が言うなレス乞食の
>>404が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能

416 名前:デフォルトの名無しさん mailto:age [2008/04/24(木) 17:57:52 ]
414 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:50:20
>>404
そいつにレスしているお前も同じだろ・・・お前が  言 う な
415 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:52:58
>>83-88のコピペに反応しているお前が言うなレス乞食の
>>404が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能

顔真っ赤wwwww

417 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:06:47 ]
>>390 >>401
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6325.c

418 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:07:51 ]
>>416 お前を通報しておく。用がないなら来るな、見るな、書くな、鬱陶しい

419 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:13:07 ]
>>417
設問ちゃんと読んだら?

420 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:53:23 ]
>>390 >>401
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6326.c



421 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:58:32 ]
>>390 >>401
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6327.c

422 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:55:47 ]
>>412
21:00 まで待てますでしょうか?

423 名前:422 mailto:sage [2008/04/24(木) 20:57:17 ]
>>412
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
提示されたソースをもとに、考え直してみました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6328.txt

424 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:59:53 ]
>>423
ソースコード見てないけど納期を守るお前がすばらしい
うちの会社来ないか?

425 名前:デフォルトの名無しさん [2008/04/24(木) 21:24:38 ]
[1] 授業単元:プログラミング実習
[2] 問題文:一覧ファイル(infile.csv)に「グループ名,学籍番号,名前」の順でデータが入っています。学籍番号のみをDATAに格納せよ。
[3] 環境
 [3.1] OS: Windows 2000
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語:C
[4] 期限: 本日中(4/24)
[5] その他の制限: 特に制限はありません。C初心者で全く分かりません。時間があまりないですがよろしくお願いします。


426 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:31:07 ]
>>425
> DATAに格納せよ。
の意味をおしえてください。DATA という名前のファイルに順に記録していけばいいのでしょうか?

427 名前:デフォルトの名無しさん [2008/04/24(木) 21:42:23 ]
[1] 授業単元:CプログラミングU
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6329.txt
[3] 環境
 [3.1] Windows
 [3.2] Visual C++ 6.0
 [3.3] C
[4] 期限:2008年4月26日まで
[5] その他の制限: 関数と再帰法を使って完成させるそうです,関数辺りが全く分からないので,よろしくお願いします.

428 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:48:11 ]
>>427

倫理的によくないと思います。

429 名前:デフォルトの名無しさん [2008/04/24(木) 21:56:58 ]
>>428
・・・・・・課題なので仕方ないんですよ.

430 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:05:19 ]
#include <stdio.h>

int num_of_pairs(int year)
{
int y, num;
if(year < 1)
return 0;
else if(year == 1)
return 1;
else {
num = 0;
for(y = 1; y < year; y ++)
num += num_of_pairs(y);
return num;
}
}

int main()
{
int y, num = 0, num_last;
for(y = 1; y <= 10; y ++) {
num_last = num;
num = num_of_pairs(y);
printf("\n%d年目のつがい数は%d", y, num);
if(num_last)
printf("で、前年の%f倍、", (double)num / num_last);
}
printf("\nかな?\n");
return 0;
}



431 名前:143 mailto:sage [2008/04/24(木) 22:08:28 ]
>>144
ありがとうございましたっ・・・と言いたいのですが、またクレームがきてしまいました;

>>149
いえいえ、わざわざ作っていただいたので、参考にさせていただきます。

>>150,152,155
ありがとうございましたっ、なんとか解決できそうです。

432 名前:デフォルトの名無しさん [2008/04/24(木) 22:15:19 ]
>>430
回答ありがとうございました,しかし実行したら

1年目のつがい数は1
2年目のつがい数は1で、前年の1.000000倍、
3年目のつがい数は2で、前年の2.000000倍、
4年目のつがい数は4で、前年の2.000000倍、
5年目のつがい数は8で、前年の2.000000倍、
6年目のつがい数は16で、前年の2.000000倍、
7年目のつがい数は32で、前年の2.000000倍、
8年目のつがい数は64で、前年の2.000000倍、
9年目のつがい数は128で、前年の2.000000倍、
10年目のつがい数は256で、前年の2.000000倍、
かな?
と表示されました,10年目のつがいの数は55になるはずなので
ちょっと違っているみたいです.つがいの数はフィボナッチ数になる
らしく
1,1,2,3,5,8,13・・・と続くみたいなんです,すみません.

433 名前:425 [2008/04/24(木) 22:16:02 ]
プログラム機能仕様に、
「一覧ファイル(infile.csv)を開き、char型配のDATAに学籍番号を読み込む。」とありました。
説明不足で申し訳ないです。

434 名前:425 [2008/04/24(木) 22:18:30 ]
>>426
アンカーつけ忘れました。すいません

435 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:24:13 ]
>>432
そっか、各世代がまた産むからと思って、足しすぎた。
num_of_pairs(year - 2)が生まれる全数だね。

int num_of_pairs(int year)
{
if(year < 1)
return 0;
else if(year == 1)
return 1;
else
return num_of_pairs(year - 2) + num_of_pairs(year - 1);
}

436 名前:デフォルトの名無しさん [2008/04/24(木) 22:26:45 ]
>>435
これで何とか間に合いそうです.完璧な回答ありがとうございました!

437 名前:426 mailto:sage [2008/04/24(木) 22:32:59 ]
>>434
今ひとつ、はっきりしません。
問題を全部さらしていただくとありがたいのですが。

438 名前:デフォルトの名無しさん mailto:age [2008/04/24(木) 22:36:17 ]
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
@kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6330.txt
Akansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6331.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン:CPad for Borland
 [3.3] 言語: (C)
[4] 期限:明日まで
[5] その他の制限:txt参照

連投ですいません。前回質問させていただいたのですが、また質問させてもらいます。
@で有効範囲外に数字以外が入ると、エラーを起こしてしまい
数字以外を無視するということができなかったのですが、どうすればいいでしょうか?
@プログラムとして見づらいとこのことで、少し修正もできればよろしくお願いします。

そしてAの方なのですが、nを使用してとのことで>>144さんのやり方をしたのですが、
どうもa自体を使うなとのことだったので、少しいじってみたのですが、
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main )
警告 W8066 wa_prc19.c 31: 実行されないコード(関数 main )
と出てしまい、書き方が悪かったせいで、反転作業が常に0に;
そして、先ほどの@とは逆に、
例)255asdと書くとそのまま255で処理してしまい、不正入力として扱わない。
  256はエラーだが、2550は255の処理をする。
といった感じになってしまってます。

今日中で申し訳ないのですが、よろしければよろしくお願いします。

439 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:13:22 ]
>>438
@ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6332.txt

440 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:20:36 ]
>>425
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
とりあえず、「char 型配列 である DATA に順に格納する」ことにして作成しました。
プログラムの最後で、char DATA[] の中身を画面に出力させています。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6333.txt



441 名前:425 [2008/04/24(木) 23:27:06 ]
>>437
えっと、作業をチームで分担していて自分は学籍番号検索処理を任されています。
全体的なプログラム内容は、一覧ファイル(infile.csv)に生徒の情報(グループ名、学籍番号、名前など)を登録していくことです。
その際、学籍番号は入力必須で、検索機能を使うことで重複していないか確認するというものです。
現在、手元にプログラム設計書のプログラム機能仕様書しかないのでとりあえずこれを書き出します。(機能仕様書は講師の方に一応okをもらいました)

概要:学籍番号欄に入力されたデータ(char型配列)が学生の一覧ファイルに入っているかの判定処理。
関数名:int GKS(char *value) //学籍番号のみをMAIN関数から受け取って使う。
戻り値:int error_no //初期値0のエラー判定フラグ
引数:*value //ブラウザから学籍番号欄に入力されたchar型配列データ。
詳細:@MAIN関数からvalueを受け取る。
A一覧ファイル(infile.csv)を開き、char型配列のDATAに読み込む。
A-1 temp.csvを開く。
Binfile.csvの学籍番号とvalueを比較する。
B-1 valueと一致するデータがある場合、該当する全データ(グループ名、学籍番号、名前等)をtemp.csvに書き込む。
B-2  valueと一致するデータがない場合、int型error_noに”1”を格納する。
C一覧ファイル、temp.csvを閉じる。
DMAIN関数に、error_noを渡す。

プログラミング初心者で説明できることもこのくらいしかなく申し訳ないです。
分からなければそれはそれで結構ですので分かった場合のみ解答お願いします。
今日中と書きましたが2時頃まで待ちます。もしくは明日の朝に確認します。


442 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:28:10 ]
>>439
横から口出してもうしわけないけど
欲を言えばinputIntの戻り値はenumにするともっとまとまると思うよ。

キレイなコードごちそうさまでした。

443 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:33:31 ]
ケツから押し込むようで申し込みたいんだけど
欲を言えばisdigitでも使っておk

444 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:34:42 ]
>>438
んー、これの一部は、私が書いたものですね。
@では、cnt が 0〜7 の間のときに数字以外のものが入力されたら err = 1 とすればいいのではないでしょうか。

Aでは cnt は使わなくてもいいと思います。
またまた同じことを言うのはもうしわけありませんが、
同じような処理(二進数を表示する)は、サブの関数にするのがわかりやすいと思うのですが、いかが?
「n を左にシフトさせる -> 表示する -> また右にシフトして元に戻す。」
とするくらいならば、
「n を左にシフトさせた結果をサブの関数に渡す。サブの関数は渡された値を表示する。」と考えるのです。
メインでは n の値自身は変化しないので、「元に戻すためにシフトする」必要がなくなると思います。
全ビットを反転させる演算子は ^ ではなくて ~ です。

当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
@ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6335.txt
A kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6336.txt

445 名前:439 mailto:sage [2008/04/24(木) 23:37:31 ]
>>438
A
問題点を挙げるので、それぞれ理解してください。
・入力処理でunsigned charに入れると、256以上が入らないので、エラーチェックができない。
・不正文字のチェックがif(cnt<3)の中に入っているので、4文字目以降をチェックしていない。
・unsigned charの上限は255なので、if(n>255)の条件は絶対に成立しない。(警告の原因)
・nを直接左シフトすると、右シフトしても左端のビットは戻ってこない(必ずビットは0)。
・n^=n は、n=n^nと等価。n^nは必ず0になる。^は排他的論理和。
・printfの引数にnは3つもいらない(実害無し)

ということで、はいデバッグ済みのソース
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6334.txt

>>442
それは思ったが、当人のレベルを考えて控えた・・・。

446 名前:425 [2008/04/24(木) 23:37:32 ]
>>440
ありがとうございます!明日これでやってみます。
説明不足でほんとすいませんでした。

447 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:00:56 ]
>>441
では、GKS() 自体については私はくわからないので、すみませんが考えていただくことにして、
「GKS() を動作させる準備として、配列 DATA[][] に infile.csv の学籍番号データを読み込んでおく」プログラムを up します。

DATA は、DATA[i][1024]にして、
一人目の学籍番号は DATA[1][0]〜DATA[1][学籍番号の桁数 - 1] に記録、
二人目の学籍番号は DATA[2][0]〜DATA[2][学籍番号の桁数 - 1] に記録、
...
i 人目の学籍番号は DATA[i][0]〜DATA[i][学籍番号の桁数 - 1] に記録,

としました。

確認した環境は WindowsXP, 処理系は cygwin(3.4.4) です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6337.txt

448 名前:TT mailto:s_040095@hotmail.co.jp [2008/04/25(金) 01:46:08 ]
「Continue文」を使った宿題が出ました
内容が「60点以上を合格とし、合格者の平均点を出力する」です
誰かソースを教えて下さいm(_ _)m

449 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:49:20 ]
>>1を読んで書き直し

450 名前:デフォルトの名無しさん [2008/04/25(金) 02:07:32 ]
>>436
内部はやっぱり頭悪いなw



451 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 05:00:29 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6339.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年4月25日22:00まで
[5] その他の制限:先生が言ってたヒントでは問1は二重ループを、
         問2はメモリの動的確保を使えばいいということです。

自分でもかなり考えたのですが結局どうやればいいのか分かりませんでした…。
よろしくお願いします。

452 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 05:41:34 ]
>>451
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int myStrstr(char *strA, char *strB){
int i, j, pos;
pos = -1;
for(i=0; strA[i] != '\0'; ++i){
if(strA[i] == strB[0]){
for(j=1; strB[j] != '\0' && strA[i+j] == strB[j]; ++j);
if(strB[j] == '\0'){
pos = i;
break;
}
}
}
return pos;
}
char* strDouble(char *strA){
char *p;
int i;
p = (char*)malloc(sizeof(char) * (strlen(strA) * 2 + 1));
if(p == NULL) return NULL;
for(i=0; strA[i] != '\0'; ++i){
p[i*2] = strA[i];
p[i*2+1] = strA[i];
}
p[i*2] = '\0';
return p;
}






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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