08/04/23 01:24:42
>>316
当方の環境はWindowsXP, 処理系はcygwin(gcc 3..4.4) です。
課題 1:URLリンク(kansai2channeler.hp.infoseek.co.jp)
課題 2:URLリンク(kansai2channeler.hp.infoseek.co.jp)
課題 3:URLリンク(kansai2channeler.hp.infoseek.co.jp)
課題 4:URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>346 ですでに回答がありますので、お友達にでも贈ってください。
358:264
08/04/23 01:31:22
ありがとうございます!
359:348
08/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:デフォルトの名無しさん
08/04/23 01:55:39
>>359
何度もありがとうございます。本当にありがとう。
361:デフォルトの名無しさん
08/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
08/04/23 04:08:45
自己解決しました 符号無しにすれば正常に読み取れるみたいです
363:デフォルトの名無しさん
08/04/23 05:47:26
誰か>>361-362を解説してくれ
364:デフォルトの名無しさん
08/04/23 06:42:28
>>357とか、かなり前に散々既出で決まった、ISO準拠の
int main(void) あるいは int argc , char*argv[] を使ってない
EOFについて噛み付いてきた新入りって何モノ?
初心者、素人臭が漂いすぎ・・・
365:デフォルトの名無しさん
08/04/23 06:45:23
すみません、335お願いします・・・
366:デフォルトの名無しさん
08/04/23 06:58:49
>>336
EOFがキーボードから入力できるかの話だろ
もはや何の話を(ry
367:デフォルトの名無しさん
08/04/23 07:19:49
ドザが二匹いてどっちもドザだからまともな議論にならないだけだな。
368:デフォルトの名無しさん
08/04/23 08:01:37
ドザってなに?
369:デフォルトの名無しさん
08/04/23 08:19:08
# <これをNGにすると、#includeで引っかかってしまうが
# < これをNGにすると、奴の脳内レスを排除できますw
370:デフォルトの名無しさん
08/04/23 08:23:20
>>364
課題2, 課題3, 課題4 では int argc, char*argv[]を使っています。
371:デフォルトの名無しさん
08/04/23 08:24:27
#define NAME_F 11
for (j = 0; j < NAME_F - strlen(member[i]->name); j++)
↑ん~~~、ん~~~、やっぱ きんもぉ~☆
372:デフォルトの名無しさん
08/04/23 08:29:31
これから理論的に反論できないキチガイのレスが続きますが一切放置で
373:デフォルトの名無しさん
08/04/23 08:39:51
>>372 自己紹介乙。それをやっているのはお前だから、こいつを放置よろ。
374:デフォルトの名無しさん
08/04/23 08:42:59
まぁ、別に問題とは言わんが、これは主観的な意見にもなるかもしれんが
#defineなど定義などは、上にまとめておいて、管理しやすくするのも良い。
あと・・・毎回 strlen で値を算出してたら、回数が少ない場合は気にならないが
繰り返す上では無駄が生じるよ。だったら、そのために変数を定義して
使った方が良いんじゃない?以上、京大、東大卒の教授の下で指導を受けた元生徒より。
375:316
08/04/23 09:39:59
ありがとうございました。
大変助かりました。
376:デフォルトの名無しさん
08/04/23 11:33:22
>>374
そこまで自己主張するならコテ&トリップつければいいのに
377:デフォルトの名無しさん
08/04/23 11:35:29
>>376
しつけぇ、お前がトリップつけろ。側NGにしてやるから
378:偽者of京大、東大卒の教授の下で指導を受けた元生徒
08/04/23 12:03:46
ドザとか目的も無くスラング使いたがる奴はDQN率が高い
379:デフォルトの名無しさん
08/04/23 12:09:00
死刑判決受けた元少年みたいだな
とりあえずお前をNGに追加した、サンクス
380:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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京大、東大卒の教授の下で指導を受けた元生徒
08/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:デフォルトの名無しさん
08/04/23 17:16:07
>入力された
384:偽者of京大、東大卒の教授の下で指導を受けた元生徒
08/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:デフォルトの名無しさん
08/04/23 20:40:37
マネージャパン、月刊アスキー、週刊アスキーの3誌は共同で6月にFXのシステムトレーグランプリ「シストレFXグランプリ」を開催。
詳細WEBページは5/15開設予定で(www.fx-gp.com)、5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
主催はマネージャパン、月刊アスキー、週刊アスキー、協賛はクリック証券。
URLリンク(system-trading.jp)
386:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 00:23:27
>>387
3番は
pa = a;
for(i = 0;i < sizeof(a)/sizeof(int);i++){
printf("%d",*(p+i));
}
を期待してるんだと思う
389:デフォルトの名無しさん
08/04/24 00:34:37
>>388
なるほど。
んじゃ1、2を踏まえて
for(~)
printf("%d", *pa);
pa++;
ってのもありかな
390:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 11:44:53
もうすぐ午後やで・・・
392:デフォルトの名無しさん
08/04/24 11:49:43
r、ノVV^ー八
、^':::::::::::::::::::::::^vィ 、ヽ l / ,
l..:.::::::::::::::::::::::::::::イ = =
|.:::::::::::::::::::::::::::::: | ニ= 元 そ -=
|:r¬‐--─勹:::::| ニ= 生 れ =ニ
|:} __ 、._ `}f'〉n_ =- 徒. で -=
、、 l | /, , ,ヘ}´`'`` `´` |ノ:::|.| ヽ ニ .な. も ニ
.ヽ ´´, ,ゝ|、 、, l|ヽ:ヽヽ } ´r ら ヽ`
.ヽ し き 元 ニ. /|{/ :ヽ -=- ./| |.|:::::| | | ´/小ヽ`
= て っ 生 =ニ /:.:.::ヽ、 \二/ :| |.|:::::| | /
ニ く. と 徒 -= ヽ、:.:::::::ヽ、._、 _,ノ/.:::::| | /|
= れ.何 な -= ヽ、:::::::::\、__/::.z先.:| |' :|
ニ る と ら =ニ | |:::::::::::::::::::::::::::::::::::.|'夂.:Y′ト、
/, : か ヽ、 | |::::::::::::::::::::::::::::::::::::_土_::| '゙, .\
/ ヽ、 | |:::::::::::::::::::::::::::::::::::.|:半:|.ト、 \
/ / 小 \ r¬|ノ::::::::::::::::::::::::::::::::::::::::::::::::| \
393:デフォルトの名無しさん
08/04/24 11:50:52
>>392
粘着うぜーw どうせなら元生徒じゃなくて、教授に頼めよw
394:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 12:00:07
あぁ~~、作り始めたが間に合わなかったか・・・もう午後だから無理ぽ?
396:デフォルトの名無しさん
08/04/24 13:13:11
>>394
きみとほとんど同じくらいの初心者が作ったものでよければ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
397:デフォルトの名無しさん
08/04/24 13:32:24
>>396
ありがとうございます
間に合いました
398:デフォルトの名無しさん
08/04/24 13:35:17
[1] 授業単元:C++概論
[2] 問題文 URLリンク(kansai2channeler.hp.infoseek.co.jp)
このヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成せよ
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: わかりません
[3.3] 言語:C++
[4] 期限: 2008/04/27
[5] その他の制限: 特に制限はありません。C++初心者なのですが、いきなりヘッダファイルのみ渡されて
まず何をすればよいのかすらわからない状況です。よろしくお願いします。
399:デフォルトの名無しさん
08/04/24 13:51:36
>>398
こんなの宣言しかないのじゃ誰もできないだろ
他に条件とかファイルとか指定されて無いのか?
それとも各クラスを適当に実装して動作確認しろってことか?
400:デフォルトの名無しさん
08/04/24 14:00:21
>>399
恐らくこれを利用して座標、ベクトル、行列の演算を一通り出来るようにしろと言うことだと思います。
課題の出され方が漠然としすぎていて手付かずの状態なので、方針だけでもご教授いただけたら幸です。
401:デフォルトの名無しさん
08/04/24 15:30:09
>>395
居残り確定っぽいんですが、参考にしたいので
お時間があったらお願いします。
402:デフォルトの名無しさん
08/04/24 15:38:42
>>401
俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。
403:デフォルトの名無しさん
08/04/24 16:24:33
うわっ、なんかあれこれやってたらきんもぉ~ソースってレヴェルじゃねーぞっ
になったんで、期待せんでくれ・・・
404:デフォルトの名無しさん
08/04/24 17:06:00
いちいちそんなこと書かなくていいから。
ほんとレス乞食はうぜーな。
405:デフォルトの名無しさん
08/04/24 17:08:27
>>390 >>401 うわぁ~~~~
URLリンク(kansai2channeler.hp.infoseek.co.jp)
406:デフォルトの名無しさん
08/04/24 17:08:56
>>404
んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw
407:デフォルトの名無しさん
08/04/24 17:17:31
>>406
お前のうんこ見なくてすむかと思うとほっとしたよ。
あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない?
速攻NGにするから。
408:デフォルトの名無しさん
08/04/24 17:18:44
自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ~?
必死だなw
409:デフォルトの名無しさん
08/04/24 17:20:03
>>407=>> 249
名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41
>>248
おまえが考えてる入力の意味ってなに?
↑こいつうぜー
410:デフォルトの名無しさん
08/04/24 17:30:52
それが同一人物に見えるのはお前だけだからw
411:デフォルトの名無しさん
08/04/24 17:31:22
>>409
反論できてねーだろwwwww顔真っ赤すぎて超うけるwwwww
412:390
08/04/24 17:33:08
一応自分でこんな感じに作ったのはいいんですが、
キャストと配列への格納がうまくいかずお手上げ状態です
URLリンク(kansai2channeler.hp.infoseek.co.jp)
413:デフォルトの名無しさん
08/04/24 17:43:10
>>412
もうちょっと速ければ見せてもらえたのに。
元生徒もうへそ曲げちゃったから。。。
414:デフォルトの名無しさん
08/04/24 17:50:20
>>404
そいつにレスしているお前も同じだろ・・・お前が 言 う な
415:デフォルトの名無しさん
08/04/24 17:52:58
>>83-88のコピペに反応しているお前が言うなレス乞食の
>>404が痛すぎ・・・
>>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。
失せろ、答えないくせに粘着する無能
416:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 18:06:47
>>390 >>401
URLリンク(kansai2channeler.hp.infoseek.co.jp)
418:デフォルトの名無しさん
08/04/24 18:07:51
>>416 お前を通報しておく。用がないなら来るな、見るな、書くな、鬱陶しい
419:デフォルトの名無しさん
08/04/24 18:13:07
>>417
設問ちゃんと読んだら?
420:デフォルトの名無しさん
08/04/24 18:53:23
>>390 >>401
URLリンク(kansai2channeler.hp.infoseek.co.jp)
421:デフォルトの名無しさん
08/04/24 18:58:32
>>390 >>401
URLリンク(kansai2channeler.hp.infoseek.co.jp)
422:デフォルトの名無しさん
08/04/24 19:55:47
>>412
21:00 まで待てますでしょうか?
423:422
08/04/24 20:57:17
>>412
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
提示されたソースをもとに、考え直してみました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
424:デフォルトの名無しさん
08/04/24 20:59:53
>>423
ソースコード見てないけど納期を守るお前がすばらしい
うちの会社来ないか?
425:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 21:31:07
>>425
> DATAに格納せよ。
の意味をおしえてください。DATA という名前のファイルに順に記録していけばいいのでしょうか?
427:デフォルトの名無しさん
08/04/24 21:42:23
[1] 授業単元:CプログラミングⅡ
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] Windows
[3.2] Visual C++ 6.0
[3.3] C
[4] 期限:2008年4月26日まで
[5] その他の制限: 関数と再帰法を使って完成させるそうです,関数辺りが全く分からないので,よろしくお願いします.
428:デフォルトの名無しさん
08/04/24 21:48:11
>>427
倫理的によくないと思います。
429:デフォルトの名無しさん
08/04/24 21:56:58
>>428
・・・・・・課題なので仕方ないんですよ.
430:デフォルトの名無しさん
08/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
08/04/24 22:08:28
>>144
ありがとうございましたっ・・・と言いたいのですが、またクレームがきてしまいました;
>>149
いえいえ、わざわざ作っていただいたので、参考にさせていただきます。
>>150,152,155
ありがとうございましたっ、なんとか解決できそうです。
432:デフォルトの名無しさん
08/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
08/04/24 22:16:02
プログラム機能仕様に、
「一覧ファイル(infile.csv)を開き、char型配のDATAに学籍番号を読み込む。」とありました。
説明不足で申し訳ないです。
434:425
08/04/24 22:18:30
>>426
アンカーつけ忘れました。すいません
435:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 22:26:45
>>435
これで何とか間に合いそうです.完璧な回答ありがとうございました!
437:426
08/04/24 22:32:59
>>434
今ひとつ、はっきりしません。
問題を全部さらしていただくとありがたいのですが。
438:デフォルトの名無しさん
08/04/24 22:36:17
[1] 授業単元:Cプログラミング言語
[2] 問題文(含コード&リンク):
①URLリンク(kansai2channeler.hp.infoseek.co.jp)
②URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:CPad for Borland
[3.3] 言語: (C)
[4] 期限:明日まで
[5] その他の制限:txt参照
連投ですいません。前回質問させていただいたのですが、また質問させてもらいます。
①で有効範囲外に数字以外が入ると、エラーを起こしてしまい
数字以外を無視するということができなかったのですが、どうすればいいでしょうか?
@プログラムとして見づらいとこのことで、少し修正もできればよろしくお願いします。
そして②の方なのですが、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:デフォルトの名無しさん
08/04/24 23:13:22
>>438
① URLリンク(kansai2channeler.hp.infoseek.co.jp)
440:デフォルトの名無しさん
08/04/24 23:20:36
>>425
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
とりあえず、「char 型配列 である DATA に順に格納する」ことにして作成しました。
プログラムの最後で、char DATA[] の中身を画面に出力させています。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
441:425
08/04/24 23:27:06
>>437
えっと、作業をチームで分担していて自分は学籍番号検索処理を任されています。
全体的なプログラム内容は、一覧ファイル(infile.csv)に生徒の情報(グループ名、学籍番号、名前など)を登録していくことです。
その際、学籍番号は入力必須で、検索機能を使うことで重複していないか確認するというものです。
現在、手元にプログラム設計書のプログラム機能仕様書しかないのでとりあえずこれを書き出します。(機能仕様書は講師の方に一応okをもらいました)
概要:学籍番号欄に入力されたデータ(char型配列)が学生の一覧ファイルに入っているかの判定処理。
関数名:int GKS(char *value) //学籍番号のみをMAIN関数から受け取って使う。
戻り値:int error_no //初期値0のエラー判定フラグ
引数:*value //ブラウザから学籍番号欄に入力されたchar型配列データ。
詳細:①MAIN関数からvalueを受け取る。
②一覧ファイル(infile.csv)を開き、char型配列のDATAに読み込む。
②-1 temp.csvを開く。
③infile.csvの学籍番号とvalueを比較する。
③-1 valueと一致するデータがある場合、該当する全データ(グループ名、学籍番号、名前等)をtemp.csvに書き込む。
③-2 valueと一致するデータがない場合、int型error_noに”1”を格納する。
④一覧ファイル、temp.csvを閉じる。
⑤MAIN関数に、error_noを渡す。
プログラミング初心者で説明できることもこのくらいしかなく申し訳ないです。
分からなければそれはそれで結構ですので分かった場合のみ解答お願いします。
今日中と書きましたが2時頃まで待ちます。もしくは明日の朝に確認します。
442:デフォルトの名無しさん
08/04/24 23:28:10
>>439
横から口出してもうしわけないけど
欲を言えばinputIntの戻り値はenumにするともっとまとまると思うよ。
キレイなコードごちそうさまでした。
443:デフォルトの名無しさん
08/04/24 23:33:31
ケツから押し込むようで申し込みたいんだけど
欲を言えばisdigitでも使っておk
444:デフォルトの名無しさん
08/04/24 23:34:42
>>438
んー、これの一部は、私が書いたものですね。
①では、cnt が 0~7 の間のときに数字以外のものが入力されたら err = 1 とすればいいのではないでしょうか。
②では cnt は使わなくてもいいと思います。
またまた同じことを言うのはもうしわけありませんが、
同じような処理(二進数を表示する)は、サブの関数にするのがわかりやすいと思うのですが、いかが?
「n を左にシフトさせる -> 表示する -> また右にシフトして元に戻す。」
とするくらいならば、
「n を左にシフトさせた結果をサブの関数に渡す。サブの関数は渡された値を表示する。」と考えるのです。
メインでは n の値自身は変化しないので、「元に戻すためにシフトする」必要がなくなると思います。
全ビットを反転させる演算子は ^ ではなくて ~ です。
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
① URLリンク(kansai2channeler.hp.infoseek.co.jp)
② URLリンク(kansai2channeler.hp.infoseek.co.jp)
445:439
08/04/24 23:37:31
>>438
②
問題点を挙げるので、それぞれ理解してください。
・入力処理で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つもいらない(実害無し)
ということで、はいデバッグ済みのソース
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>442
それは思ったが、当人のレベルを考えて控えた・・・。
446:425
08/04/24 23:37:32
>>440
ありがとうございます!明日これでやってみます。
説明不足でほんとすいませんでした。
447:デフォルトの名無しさん
08/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) です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
448:TT
08/04/25 01:46:08
「Continue文」を使った宿題が出ました
内容が「60点以上を合格とし、合格者の平均点を出力する」です
誰かソースを教えて下さいm(_ _)m
449:デフォルトの名無しさん
08/04/25 01:49:20
>>1を読んで書き直し
450:デフォルトの名無しさん
08/04/25 02:07:32
>>436
内部はやっぱり頭悪いなw
451:デフォルトの名無しさん
08/04/25 05:00:29
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年4月25日22:00まで
[5] その他の制限:先生が言ってたヒントでは問1は二重ループを、
問2はメモリの動的確保を使えばいいということです。
自分でもかなり考えたのですが結局どうやればいいのか分かりませんでした…。
よろしくお願いします。
452:デフォルトの名無しさん
08/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;
}