C/C++の宿題を片付けます 104代目at TECH
C/C++の宿題を片付けます 104代目 - 暇つぶし2ch237:デフォルトの名無しさん
08/02/13 15:30:21
>>231
URLリンク(kansai2channeler.hp.infoseek.co.jp)

238:デフォルトの名無しさん
08/02/13 16:19:12
>>230
URLリンク(kansai2channeler.hp.infoseek.co.jp)

239:デフォルトの名無しさん
08/02/13 20:12:05

チョンのあやかり創価学会

偽善者が政治活動、公明党

ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや

カルトキチガイ・創価騙されバカ信者

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党


240:デフォルトの名無しさん
08/02/13 20:44:17
>>232
>>238
期限間近のものを本当にありがとうございました。

241:デフォルトの名無しさん
08/02/13 20:48:28
>>232は荒らしだから礼は言わなくてよし。

242:デフォルトの名無しさん
08/02/13 21:01:17
>>241
今、実行できる環境がないのですが>>232はなぜ荒らしなのでしょうか。

243:デフォルトの名無しさん
08/02/13 21:08:23
表面上問題文で要求された結果は返すけど、
拡張性が無く再利用できないアルゴリズム。
fclose()してない。
こんなの宿題で提出されたら俺なら赤点つける。

244:デフォルトの名無しさん
08/02/13 21:14:18
>>243
荒らしのプログラムにも気付けない自分が情けないです…
詳しい説明ありがとうございました。

245:デフォルトの名無しさん
08/02/13 22:04:07
宿題丸投げしてる時点で情けないけどな

246:デフォルトの名無しさん
08/02/13 22:20:41
>>243
>>232読んでみたがこれで十分だろ
題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな
拡張性について指定がない以上、こういうのも一つの解としてありだろ

247:デフォルトの名無しさん
08/02/13 22:28:18
学生の宿題なんだからむしろ質素な方がいいと思うのですが
>>243さんは一体何のつもりなんでしょうか(苦笑

248:デフォルトの名無しさん
08/02/13 22:36:48
ここはIDが出ないから自演が楽でいいなw

249:デフォルトの名無しさん
08/02/13 22:42:48
>>246
題意満たしてるか?

250:デフォルトの名無しさん
08/02/13 22:42:52
自演以外でいちいち擁護する奴なんていないしなw

251:デフォルトの名無しさん
08/02/13 22:43:53
>>249
何か条件抜けてるか?

252:デフォルトの名無しさん
08/02/13 22:48:30
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \   
     |┃     |    (__人__)     |     俺なら赤点つける
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \



253:デフォルトの名無しさん
08/02/13 22:48:33
>>235


254:デフォルトの名無しさん
08/02/13 22:54:02
>>251
合格者がちょうど100人の時にカウントがずれる。
<にすべき比較を<=にしてるという初心者のようなミス。
fclose()していない。

仮にあれが荒らしじゃないとすれば、無能であるという自覚の無い初心者。
ある意味荒らしよりたちに負えない。

255:デフォルトの名無しさん
08/02/13 22:55:30
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \   表面上問題文で要求された結果は返すけど、
     |┃     |    (__人__)     |     拡張性が無く再利用できないアルゴリズム。
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

256:デフォルトの名無しさん
08/02/13 22:57:38
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \   題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな
拡張性について指定がない以上、こういうのも一つの解としてありだろ
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

257:デフォルトの名無しさん
08/02/13 22:59:46
     |┃三        / ̄\
     |┃         |     | ←これなに?
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \ 
     |┃     |    (__人__)     | 
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

258:デフォルトの名無しさん
08/02/13 22:59:47
>>232はダメだろ。
211回数えてるぞ。

259:デフォルトの名無しさん
08/02/13 23:03:02
最近オプーナAAをよく見かけるな

260:デフォルトの名無しさん
08/02/13 23:03:27
データ210個あるって言ってるのに配列101個分しか用意してないし。
何したいのかわからん。

261:デフォルトの名無しさん
08/02/13 23:04:31
受験生全員が100位タイ以内に収まる場合にずっこける希ガス

262:デフォルトの名無しさん
08/02/13 23:05:02
穴だらけじゃんwwwwwwwwwww

263:デフォルトの名無しさん
08/02/13 23:06:28
>>260
それはお前がバカ

264:デフォルトの名無しさん
08/02/13 23:06:59
>>260
それは点数による度数分布だからおk
0~100以外の点数が来たらNGだが

265:デフォルトの名無しさん
08/02/13 23:07:17
feofでend-of-fileの判定。

266:デフォルトの名無しさん
08/02/13 23:13:22
まとめ
>>232
・今回与えられたデータではたまたま正常に動く
・不正なデータ(100点を超えたりマイナスだったり)に対する備えが無い
・偏ったデータ(全員が100点とか)で無限ループ
・100位以内が丁度100人の時に計算がずれる
・ファイルから点数を直接読み出してないから拡張性が無い
・↑のデータを利用して他の関数を書いてるから再利用できない
・fclose()してない

>>238
・パーフェクト

>>230は好きな方選んで提出したらいいんじゃね?
自力で組めなかったんだし粗悪なプログラムで赤点補習した方が将来のためかもしれないしね。

267:デフォルトの名無しさん
08/02/13 23:14:52
>>266
バカがまとめんなよw
>>232で出る答えは間違ってるし、全員100点でも無限ループなんてしない。

268:デフォルトの名無しさん
08/02/13 23:21:10
>>266
>>238も人数が210人未満のときに間違える。

269:デフォルトの名無しさん
08/02/13 23:22:04
>>232の実行結果
合格者数:105人
合格者平均点:77.7723810点

>>238の実行結果
Success:104
Average:77

270:デフォルトの名無しさん
08/02/13 23:33:34
どうして>>232の答えは間違うんでしょうか?

271:デフォルトの名無しさん
08/02/13 23:34:26
>>270
プログラムが間違ってるからだね。

272:デフォルトの名無しさん
08/02/13 23:37:40
>>270
ループ終了条件をfeofで判定してるため、最後の数を二重に数えてるから。

273:デフォルトの名無しさん
08/02/13 23:37:52
烏賊じゃないんだ

274:デフォルトの名無しさん
08/02/13 23:40:35
まあ>>238のプログラムも入力部分を関数化しろって条件満たしてないんだけどな。

275:デフォルトの名無しさん
08/02/13 23:50:30
>>237
ありがとうございますm(_ _)m

276:デフォルトの名無しさん
08/02/13 23:56:49
>>272
ありがとうございます。

while(!feof(fp))
{
fscanf(fp, "%d", &temp);
data[temp]++;
}



while(fscanf(fp, "%d", &temp) != EOF)
{
data[temp]++;
}

みたいにしたらいいのかな。

277:デフォルトの名無しさん
08/02/13 23:58:10
そうだね

278:デフォルトの名無しさん
08/02/14 00:10:08
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++2005 ExpressEdition
 [3.3] 言語:C
[4] 期限:2月15日
[5] その他の制限:特にないです

279:デフォルトの名無しさん
08/02/14 00:14:35

チョンのあやかり創価学会

偽善者が政治活動、公明党

ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや

カルトキチガイ・創価騙されバカ信者

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党

カルト・キチガイ・偽善政治活動・公明党


280:デフォルトの名無しさん
08/02/14 00:18:58
条件なのにできるってなんかおかしくね?

281:デフォルトの名無しさん
08/02/14 00:40:44
>>276
fscanfを使うなら、
while (fscanf(...) == 1)
とするべき。

282:デフォルトの名無しさん
08/02/14 00:50:47
>>278
「double max(double a,double b)関数をとり、引数aとbの大きいほうを返す関数」は、
double max_caller(double (*f)(double, double), double a, double b){
return (*f)(a, b);
}
でよろしいか?

283:デフォルトの名無しさん
08/02/14 07:06:31
>282
いいですよ。

284:デフォルトの名無しさん
08/02/14 09:53:12
>>281
なるほど、それだと読み込みエラーとかでもループを抜けられるんですね。
勉強になりました。ありがとうございました。

285:デフォルトの名無しさん
08/02/14 11:39:45
>>278
URLリンク(kansai2channeler.hp.infoseek.co.jp)
チェックあまりしてない。甘いところはご愛嬌。

286:デフォルトの名無しさん
08/02/14 12:09:39
>>278
問題2
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これもチェックあまりしてない。甘いところはご愛嬌。

287:デフォルトの名無しさん
08/02/14 18:04:30
「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」
って課題が出たんですけど、誰か教えてください。

288:デフォルトの名無しさん
08/02/14 18:19:45
>>287
>>1からやり直し

289:デフォルトの名無しさん
08/02/15 12:03:39
すいません。書き直します。宜しくお願いします。

[1] 授業単元: 一般情報処理C
[2] 問題文(含コード&リンク):「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:c
[4] 期限:2008/2/19
[5] その他の制限:なし

290:デフォルトの名無しさん
08/02/15 14:45:36
急ですみませんが、(1)だけでもいいので、出来る方いらっしゃいましたらよろしくお願いします。

[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
崖から鉛直上向きに投げた石の4秒後の鉛直方向位置を求めたい.
(1)オイラー法によりその位置を求めるプログラムを作成し,4秒後の
位置を求めなさい.
(2)理論解との位置の誤差を0.1m以下にするには時間きざみΔtを
いくらにすればよいか考察しなさい.
[3] 環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語:C
[4] 期限:2008/2/15 15:50まで
[5] その他の制限:

291:デフォルトの名無しさん
08/02/15 15:11:20
>>290
(1)だけ。
初速に関する条件がなかったけど入力させる形でよかった?
#include <stdio.h>
#include <stdlib.h>

#define GRAVITY (-9.80665)
#define DELTA_T (0.1)

int main(void)
{
char temp[32];
double v0, velocity, time, y;

printf("初速度を入力してください:");
do{
fgets(temp, sizeof(temp), stdin);
v0 = atof(temp);
}while(v0 <= 0);

for(time = 0; time < 4; time += DELTA_T)
{
velocity = v0 + time * GRAVITY;
y += velocity * DELTA_T;
}
printf("4秒後の位置は %f(m) です", y);
return 0;
}

>>289
一口に酔歩って言っても定義はいくつもあるんだけど、
何の前提条件も無しでその問題文がだされたわけ?

292:デフォルトの名無しさん
08/02/15 17:34:59
>>291
えっとその前の課題が「二次元格子上での酔歩におけるnステップによる平均移動距離を、m回のシュミレーションによる統計平均から計算せよ。また、その標準偏差を求めよ」
で、その課題の下に「乱数の発生方法について」とあって、1#include<stdlib.h>によって、stdlib.hヘッダーをインクルードする。2#include<time.h>によって、time.hヘッダーをインクルードする。
3srand((unsigned)time(NULL));によって乱数の種の初期値を現時刻から決める。4rand()/(RAND_MAX+1.0);によって0から1における一様乱数を発生させる。
と書いてあって、その下に上記の課題が書いてあります。

293:デフォルトの名無しさん
08/02/15 20:05:59
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C++
[4] 期限: 2月18日24時まで
[5] その他の制限:考察も書かないといけないので
         注訳等も入れてもらえると幸いです。
         また期限はギリギリの期限ですので出来るだけ
早く対応していただけると非常に助かります。

294:デフォルトの名無しさん
08/02/15 21:59:30
>>293
元のプログラムがてんでダメダメだな。

295:デフォルトの名無しさん
08/02/15 22:13:23
>>294
あれ、引用のコピペ失敗したかな(´・ω・`)、自分で動かした分には元のプログラムは動いたんだけど

296:293 ◆klsLRI0upQ
08/02/15 22:19:36
>>294
サンプルプログラムの原文HTML化したものはありますけど
そちらをうpった方がいいでしょうか?

297:デフォルトの名無しさん
08/02/15 22:26:43
>>295
67行目に変な文字が入ってるけど、ダメってのはそういう意味じゃない。
元のプログラムの作り自体にセンスが感じられないってこと。

298:293 ◆klsLRI0upQ
08/02/15 22:28:41
>>297
なるほど、そういう事ですか><

299:デフォルトの名無しさん
08/02/16 07:24:05
>>293
URLリンク(kansai2channeler.hp.infoseek.co.jp)

300:デフォルトの名無しさん
08/02/16 10:45:37
>299
ありがとうございます

301:_
08/02/17 08:34:24
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \ 
     |┃     |    (__人__)     | 
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

302:デフォルトの名無しさん
08/02/17 11:03:44
                三 |┃┃
            三    |┃┃
                  |┃┃
             ∧∧ ..|┃┃
          三 (  ;). |┃┃ピシャッ!
            /   ⊃.|┃┃

303:_
08/02/17 11:52:13
      .. |┃三    ..   / ̄\
     ..  |┃        |     |
      .. |┃     ..    \_/
   ガラッ.. |┃           ..|        
     三 |┃            |    
  三    |┃  ノ//   ./ ̄ ̄ ̄ \
        |┃三    /  ::\:::/:::: \   
   ∧∧ ..|┃     /  <●>::::::<●>  \ 
三 (  ;). |┃     |    (__人__)     | 
  /   ⊃.|┃三   \    ` ⌒´    / 
 シュー    |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

304:_
08/02/17 11:52:33
                三 |┃┃
            三    |┃┃
                  |┃┃
             ∧∧ ..|┃┃
          三 (  ;). |┃┃ピシャッ!
            /   ⊃.|┃┃

305:デフォルトの名無しさん
08/02/17 12:15:33
【質問テンプレ】
[1] 授業単元: コンピュータ実習
[2] 問題文:(下記のコードに書き加えてファイルに出力しなさい)
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: 今日
[5] その他の制限: なし
#include <iostream>
#include <string>
#include <fstream>

class write{
private:
string input;
public:
string input(){
cout<<文字列をファイルに書き込みたい;
cin>>input;
return input;
}};

int main(){
write ob;
//書き込み処理

//書き込み処理終了
return 0;
}


306:デフォルトの名無しさん
08/02/17 15:57:43
//書き込み処理
fstream("ファイル", ios::out) << ob.input();
//書き込み処理終了

307:デフォルトの名無しさん
08/02/17 16:06:25
>>306
ofstream使えよ。

308:デフォルトの名無しさん
08/02/17 17:48:53
[1] 授業単元: Cプログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 明日まで

問題はC言語のシグナルの送信に関するものです。
よろしくお願いします。


309:デフォルトの名無しさん
08/02/17 18:10:27
シグナルハンドラとしてSIG_IGNを使う。
あと、シグナルハンドラの中では、非同期シグナルセーフな関数以外は呼び出さない方がいい。

310:デフォルトの名無しさん
08/02/17 21:55:38
[1] 授業単元:C言語II
[2] 問題文(含コード&リンク)
  シェルを実装していますが、分からないのは入出力リダイレクションの処理です。
  たとえばプロンプトから

  $ cat 123 > textout

  と、入力して 引数の'>'(もしくは'<') で入出力を切り替える処理を考えています。
  どうすればいいのでしょうか?
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4.4
 [3.3] 言語:C
[4] 期限: 2008年2月29日

311:デフォルトの名無しさん
08/02/18 00:26:19
>>308
とりあえずsignal.hなるものの存在を初めて知った

で、<unistd.h>は「unix standard」。
ここまで来ると、Windowsの人間はまるでついていけない……


312:デフォルトの名無しさん
08/02/18 02:30:54
>>308 [kill-main.c]
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>

pid_t pid;
void ctrlc(void){
kill(pid,SIGUSR1);
}

int main(){
unsigned int c;
if((pid = fork()) == 0){
execl("kill-child","kill-child",(char *)0);
perror("execl");
exit(EXIT_FAILURE);
}
if(signal(SIGINT,(void*)ctrlc) == SIG_ERR){
perror("sigint");
exit(EXIT_FAILURE);
}
do{
printf("Send signal?(C-c/n)\n");
while((c=getchar()) != EOF)
if(c != '\n')
break;
if(c == 'n')
exit(0);
}while(c != EOF);
}

313:デフォルトの名無しさん
08/02/18 02:32:35
>>308 [kill-child.c]
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void siguser(void){
static int n = 0;
printf("Signal received %d times\n",++n);
if(n == 10)
exit(EXIT_SUCCESS);
}

int main(){
signal(SIGINT,SIG_IGN);
if(signal(SIGUSR1,(void *)siguser) == SIG_ERR){
perror("signal");
exit(EXIT_FAILURE);
}
for(;;){}
}

子まで書き換えないとならないのがミソだな

314:デフォルトの名無しさん
08/02/18 04:08:11
>>312-313
御回答ありがとうございます。
SIG_IGNを使いシグナルを無視させることで無効化するんですね。
勉強になりました!ありがとうございます。

315:デフォルトの名無しさん
08/02/18 14:14:22
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):Cシェルを作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2008年2月19日まで
[5] その他の制限: なし

C言語でシェルを作っているのですが、
>310さんと同じく'>'の入力リダイレクションの処理が分からないです。
自力で途中までは書いているのですが、キー入力の分割処理が上手く行きません。
void parseitファンクション内の処理がおかしいと思われます。

助けて頂けると幸いです。

ソースファイル↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)

316:デフォルトの名無しさん
08/02/18 16:43:12
誰か292頼みます

317:デフォルトの名無しさん
08/02/18 18:15:57
>>316
問題が理解できないのでどうしようもない

まずnステップっていうのがわからない
そもそも、1ステップでどういう動きをするんだ?
ランダムで X 方向 or Y 方向に 1つ動くっていうのか、
それとも、X 方向にランダムでいくつ、Y方向にランダムでいくつって言う風に動くのか

あと表示のしかたも、各ステップ毎のX,Yの値をただ単に並べればいいのか、
図で見せるのかわからない

318:デフォルトの名無しさん
08/02/18 22:56:21
>>315
void parseit 内で、
*params++ = command;
の後のパラメータ分文字を読み飛ばす処理内で、">"の処理をしているのが不味い

a.out > aaa
   ↑
ここでパラメータ分文字を読み飛ばす処理は終了するので、次のパラメータを探す処理に
移ると、次のパラメータは、">"になる

">" の処理もそのままだと、 ファイル名の前後に空白文字が入る可能性がある(問題ないのかもしれないけど)

あと、void parseit 関数の終わりの*params = '\0'; は、 *params = NULL; じゃね

319:デフォルトの名無しさん
08/02/19 00:16:23
>>318
なるほど、そう言うのが原因なんですね。
確かにテストをすると空白らしくものがファイル名と'>'の前(おそらく)に入ってると思われます
となると、やはり新しいファンクションを増やした方がてっとり早いのでしょうか?

320:デフォルトの名無しさん
08/02/19 00:59:51
>>319
横レスになるけど.
先に ">"の前後で文字列を切り分けてからコマンド部分をあらためて切り分ける方法もあるんじゃないかな。

標準関数を使っていいのなら切り分けはこんな感じ↓

char redirect[20]; // リダイレクト先
_Bool test_parse( char *command, char **param )
{
   _Bool ret = false;
   char cmd[256]; // コマンド部
   int result;
   // >の前後で文字列を切り分け
   result = sscanf( command, "%255[^>]%*[>]%19s", cmd, redirect );
   if( result > 1 ) {
      ret = true;
   }
   getToken( cmd, param ); // ここでコマンド部をパラメータと切り分ける関数を別に作って呼ぶ
   return ret;
}

こうするとローカル変数cmdとredirectにそれぞれ>の前後で切り分けた文字が入るはず。
ついでにretで1以外が入っていた場合はredirectにも代入があったことになるからフラグでそれを知らせてます。

321:デフォルトの名無しさん
08/02/19 03:51:32
>>320
レス感謝です。
getTokenでparseitと同様の処理をさせれば良いのでしょうか?

322:デフォルトの名無しさん
08/02/19 06:43:13
>>321
4時か、がんばってるねぇ…

とっくに寝てそうだけど、getTokenでparseitのparamsに入れていく部分の処理を入れればいいと思う。
元のソース見る限りだとredirectは特に同じことをしてなさそうに見えるから。

323:デフォルトの名無しさん
08/02/19 06:54:35
試しに>>320の教えてくれたsscanfを使ってみたのですが、
未だに空白が付いて正しい結果を出しません。
もしかしたらメイン内でやったのがいけなかったのかもしれません。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

324:デフォルトの名無しさん
08/02/19 07:09:34
あー

空白がつくのって
"a.out params > text.txt"
みたいなときに " text.txt"がredirectにはいるってこと?

VC++でコンパイルしたからGCCでは挙動違うのかな?

sscanfの処理を
sscanf( command, "%255[^>]%*[> \t]%19s", cmd, redirect );
って修正してもだめ?

325:デフォルトの名無しさん
08/02/19 07:13:47
すみません>>322の通りにやると文字化けが生じてしまいます。
もしこれが解決出来れば、test_parseファンクションを使えると思うのですが…。
何か解決方法があったら教えてください。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

326:デフォルトの名無しさん
08/02/19 10:37:19
無事に解決できました。
どうやら問題やはcmdの最後の部分に空白があったため、問題が起きていたようです。
なので、最後尾にNULLを追加したらリダイレクションが正常に完了しました。
>>318 >>320 >>322 >>324助言ありがとうございました。

327:デフォルトの名無しさん
08/02/19 10:39:06
>>316
適当解釈。

#include <stdio.h>
#include <stdlib.h>
#define N 10

void suiho(int *x, int *y)
{
int r=rand()%4;
*x+=((r/2)*2-1)*(r%2);
*y+=((r/2)*2-1)*(!(r%2));
printf("(%d,%d)\n",*x,*y);
}

int main(void)
{
int i,x=0,y=0;
srand(time(NULL));
for(i=0;i<N;i++)suiho(&x,&y);
return 0;
}

328:デフォルトの名無しさん
08/02/19 20:29:30
>>327
面白い解釈だ

神龍:どんな問題でも一つだけ聞き流してやろう
ってのが思い浮かんだ

329:デフォルトの名無しさん
08/02/19 21:26:31
誰か終わってないリストチョーライ。

330:デフォルトの名無しさん
08/02/19 22:00:26
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):2問ありますURLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限: 問題文にそって作る

お手数おかけしますが、よろしくお願いします。

331:デフォルトの名無しさん
08/02/19 22:27:31
因数因数って引数だろ、「ひきすう」で変換すればちゃんと出てくるのに・・・
ってもやもやしながら読んでたらばおで噴いたwwwwwww

332:デフォルトの名無しさん
08/02/19 22:37:55
構造体変数名がlist_tっていうのが違和感あるんだが,これって変数が
list_tって名前なんだよな?

xxx_tって普通,型名につける方法じゃないっけ?

333:デフォルトの名無しさん
08/02/19 23:18:56
ば、ばお・・・ごめんなさいorz

>>332
問題文を確認したら構造体変数名はlist_tとありました。
これが誤っているとすると

typedef struct list{

} list_t;

って感じですかね?

334:デフォルトの名無しさん
08/02/20 00:13:00
typedef struct list_t{}list;だろ
_tは普通使わないと思うけど

335:デフォルトの名無しさん
08/02/20 00:15:26
>>334
へぇ 普通はそうなのか
普通って難しいな

336:デフォルトの名無しさん
08/02/20 00:27:17
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2/22
[5] その他の制限: 
よろしくお願いします。

337:デフォルトの名無しさん
08/02/20 01:03:12
[1] 情報セキュリティ
[2] 問題文(含コード&リンク):
C言語プログラムのファイルを読み込んで、バッファオーバーラン
の危険性を検出(修正)するサポートツール。
[3] 環境
 [3.1]Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2月21
[5] その他の制限: なし

338:デフォルトの名無しさん
08/02/20 01:07:57
さらっと書いてるけど>>337は相当むずかしくないか?

339:デフォルトの名無しさん
08/02/20 01:11:45
gets()が検出できればおkだったりしてな

340:デフォルトの名無しさん
08/02/20 01:16:50
つ lint

341:337
08/02/20 01:25:54
* get * sprintf * strcat * strcpy * vsprintf
が検出できれば OKです

342:デフォルトの名無しさん
08/02/20 01:28:57
先に書けよ

343:337
08/02/20 01:33:14
すみません。

344:デフォルトの名無しさん
08/02/20 04:14:35
・getってなんだよ。
・scanfはスルーかよ。

345:デフォルトの名無しさん
08/02/20 04:23:51
>>337
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFMAX 1024

int main(int argc, char *argv[]) {

FILE *fp;
char buf[BUFMAX];
int line = 0;
if (argc < 2 || (fp = fopen(argv[1], "r")) == NULL) {
printf("Usage: a.out [assemble code file]\n");
exit(0);
}

while (fgets(buf, BUFMAX, fp)) {
++line;
if (!strcmp(buf, "\tcall\tscanf\n") ||
!strcmp(buf, "\tcall\tgets\n") ||
!strcmp(buf, "\tcall\tsprintf\n") ||
!strcmp(buf, "\tcall\tstrcat\n") ||
!strcmp(buf, "\tcall\tstrcpy\n") ||
!strcmp(buf, "\tcall\tvsprintf\n")) {
printf("find at line%d: %s", line, buf);
}
}

fclose(fp);
return 0;
}
こんな感じでいいのかな。アセンブリコードに対して検索した方が楽だよな。

346:デフォルトの名無しさん
08/02/20 04:35:42
>>345
その発想はなかったわw

347:337
08/02/20 07:49:57
ありがとうございます

348:デフォルトの名無しさん
08/02/20 11:53:11
>>330
1問目
URLリンク(kansai2channeler.hp.infoseek.co.jp)

構造体変数名はlist_tとする意図が汲み取れないが、それは無視して作った。
構造体のtypedefした名前をlist_tとするの間違いじゃなかろうか・・・

349:デフォルトの名無しさん
08/02/20 12:13:13
>>330
URLリンク(kansai2channeler.hp.infoseek.co.jp)

問題をそのまま書いた方が良いと思うよ・・・

350:デフォルトの名無しさん
08/02/20 19:57:42
>>336
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一応作ってみた
考え方が良く分からんから、まぁたぶん大丈夫だろう的なレベル

351:デフォルトの名無しさん
08/02/20 20:47:15
>>348-349
ありがとうございます。

352:デフォルトの名無しさん
08/02/20 21:23:03
>>350
ありがとうございます

353:デフォルトの名無しさん
08/02/22 00:51:17
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):

・リスト構造
アルファベットの文字列をいくつか読み込み、それを、アルファベット順にソートし、以下のコマンドが入力された場合、それぞれの命令を実行せよ。
条件として、リスト構造が使われていること、サブ関数の呼び出し(単純なものでもよい)が使われていること、malloc関数が使われていること。

p :入力された文字列を表示する。
a :指定された文字列をリストに追加する。(アルファベット順に並ぶように)
d :指定された文字列をリストに削除する。(不要になった記憶領域はfree()を使って開放すること。また、指定された文字列がリストに無い場合は、その旨を表示。)
q :プログラムを終了する。
? :使用可能なコマンドの一覧を表示する。
end:データ入力の終了

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2月26日まで
[5] その他の制限:

こんな感じです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
できればなるべく簡単な方法でお願いします。


354:353
08/02/22 00:54:56
ごめんなさい、訂正です。
× d :指定された文字列をリストに削除する。
○ d :指定された文字列をリストから削除する。

355:デフォルトの名無しさん
08/02/22 02:55:06
>>353
BUFSIZE文字以上の入力があった場合に異常動作を起こす他、色々と問題・手抜きは抱えてるが少なくともその実行例は通る
URLリンク(kansai2channeler.hp.infoseek.co.jp)

356:353
08/02/22 03:24:27
>>355
ありがとうございます。
しかし、まんまコピペでコンパイルが通りませんでした…
そしてNode型とかようわからん件…ごめんなさい低級で
とりあえず自分なりにいじってみます。ダメだったらまたくるかも。



357:デフォルトの名無しさん
08/02/22 03:27:56
>>356
あぁ、VC++2008でコンパイルしたから気付かんかったけど
C99形式のコメント(//~)を使ってるからそれかもしれん
その部分を全部消してみてくれ

358:353
08/02/22 03:50:47
>>357
消してみましたが、やはり同じようです。
とりあえずvistaですが、bccでまんまコピペでコンパイルしてみた結果、以下が表示されました。

list.c:
警告 W8060 list.c 24: おそらく不正な代入(関数 insert )
警告 W8060 list.c 24: おそらく不正な代入(関数 insert )
警告 W8060 list.c 32: おそらく不正な代入(関数 insert )
警告 W8060 list.c 32: おそらく不正な代入(関数 insert )
警告 W8060 list.c 56: おそらく不正な代入(関数 deleteNode )
警告 W8060 list.c 56: おそらく不正な代入(関数 deleteNode )
エラー E2468 list.c 100: void 型の値は許されない(関数 appendProc )
警告 W8019 list.c 100: コードは効果を持たない(関数 appendProc )
エラー E2468 list.c 114: void 型の値は許されない(関数 deleteProc )
警告 W8019 list.c 114: コードは効果を持たない(関数 deleteProc )
エラー E2468 list.c 136: void 型の値は許されない(関数 main )
警告 W8019 list.c 136: コードは効果を持たない(関数 main )
*** 3 errors in Compile ***

359:デフォルトの名無しさん
08/02/22 04:01:06
>>358
コメントを消した状態ならこっちではANSI C準拠の設定でgcc通る(警告は出る)以上分かりかねる
bcc捨ててくれとしか言い様がない

使用したgccは以下
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

360:デフォルトの名無しさん
08/02/22 04:21:12
これはbccのバグっぽい

361:デフォルトの名無しさん
08/02/22 04:24:08
多分三項演算子とfgetsの合わせ技でエラーになってんだろうな
bccだとvoid fgetsで定義されてるとかか?

362:デフォルトの名無しさん
08/02/22 04:26:26
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:本日正午まで(恐らく本日中であればなんとかなります)
[5] その他の制限:
なるべく自分でどうやっているプログラムなのか理解した上で提出した方がいいため、
if文やfor文使いまくりでもいいので、簡単なプログラムにしていただけると助かります。

363:デフォルトの名無しさん
08/02/22 04:37:40
>fgets(buf, BUFSIZE, stdin) ? 0 : exit(1);

364:デフォルトの名無しさん
08/02/22 04:39:46
>>358
fgets(buf, BUFSIZE, stdin) ? (void)0 : exit(1);
これで回避できるみたいだが、よくわからんな。
bccの3項演算子の扱いが謎。

365:デフォルトの名無しさん
08/02/22 04:46:17
voidとそうじゃないものを並べちゃいけないみたいだね。
void同士ならOKらしい。

366:デフォルトの名無しさん
08/02/22 05:53:24
>>362
とりあえず適当
(1)
#include<stdio.h>
void num2roma(int num,const char roma[]){
    const int mod  = num % 10;
    const int div  = num / 10;
    const int mod5 = num %  5;
    int i;
    if(div)num2roma(div,roma+2);
    if(mod5==4){
        putchar(roma[0]);
        putchar(roma[mod/4]);
    }else{
        if(mod5!=mod)
            putchar(roma[1]);
        for(i=0;i<mod5;++i)
            putchar(roma[0]);
    }
}
int main(void){
    int num;
    while(scanf("%d",&num)==1){
        num2roma(num,"IVXLCDM");
        putchar('\n');
    }
    return 0;
}


367:デフォルトの名無しさん
08/02/22 05:54:59
(2)
#include<stdio.h>
int main(void){
    int count[100];
    int i,j,h;
    for(i=0;i<100;++i){
        count[i] = 0;
    }
    for(i=0;i<30;++i){
        if(scanf("%d",&h) != 1){
            break;
        }
        ++count[h/5];
    }
    for(i=0;i<100;++i){
        if(count[i] != 0){
            printf("%d...%d%8d : ",i*5,i*5+5,count[i]);
            for(j=0;j<count[i];++j){
                putchar('*');
            }
            putchar('\n');
        }
    }
    return 0;
}

368:デフォルトの名無しさん
08/02/22 18:01:06
>>362
>>366 はでかいミスがあった それは忘れてこっちを使ってくれ

(2) 3999までの正整数をローマ数字にする int2roman.cpp
URLリンク(kansai2channeler.hp.infoseek.co.jp)

369:デフォルトの名無しさん
08/02/22 19:32:04
ここのスレはソースをはってどこがおかしいか
おしえてくれるスレですか?

かなりながいソースなんですが。

370:デフォルトの名無しさん
08/02/22 19:45:43
>>369
そりゃもう手取り足取り
どれだけ長いソースでも宿題であれば片付けるよ
それが2ちゃんクロリティ

371:デフォルトの名無しさん
08/02/22 19:50:06
ただちょっと専門的な話だから
流れをかいたファイルといろいろこみの
tar.gz形式のファイルでうpします
あとで。

372:デフォルトの名無しさん
08/02/22 19:53:24
>>371
教授から出されたような難解で困難な宿題?

373:デフォルトの名無しさん
08/02/22 23:14:14
[1] 授業単元: 認識
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:月曜日までといいたいところですが
[5] その他の制限:

おねがいします。わからないことがあれば聞きます。


374:373
08/02/22 23:20:53
URLリンク(www12.axfc.net)
こちらです

すいません。

375:デフォルトの名無しさん
08/02/22 23:24:36
>>373
件のファイルが既にありません。
しかも、「実行ファイルを実行せよ」というのはかなり怪しいです。
ウィルスなら誰も手を出しません。

376:373
08/02/22 23:35:20
//としてるとこは全部消してもらってもかまいません。
あとでみたらログチェックしたままのファイルでした

377:デフォルトの名無しさん
08/02/22 23:47:07
誰もがDVIファイル読める環境にあると思うなよw
せめてPDFくらいは・・・
あと実行ファイルは誰も実行せんがな(´・ω・`)

378:373
08/02/22 23:50:28
URLリンク(kansai2channeler.hp.infoseek.co.jp)
すいません。

379:デフォルトの名無しさん
08/02/22 23:53:25
DVIを読むためにいろいろと導入するのが理系の学生だと思うけどなぁ……
でも俺の周りでdvioutとかGhost Scriptとかまで入れてるのは二三人しかいないなぁ……
そもそもTeXすら入れてないってやつが多いし……
Linuxのパッケージ?にはUNIX派生のいろいろが入っているからいいんだろうけど……

380:デフォルトの名無しさん
08/02/23 00:55:59
このスレって理系の学生が答えるスレだったっけ?

381:デフォルトの名無しさん
08/02/23 00:58:44
>>378
そのファイル読んだけど、やってる処理に関する知識を持ってないから全く分からん
その点も説明して貰わんと、分かる人間しか答えられんぞ

382:デフォルトの名無しさん
08/02/23 01:19:49
余計な文消して文消して
コメントをいれるようにしてもう一度うpします。
そっちのほうがわかるとおもうので。

383:373
08/02/23 13:37:46
gaiyou.txtと図をいれてみました。pngもしくはjpg形式です。
お願いします。
URLリンク(www12.axfc.net)

384:デフォルトの名無しさん
08/02/23 16:16:36
チェックしてみようかと思ったが、
コンパイルすら通らずにエラーや警告出まくりなんで止めた。

385:デフォルトの名無しさん
08/02/23 16:21:04
コンパイルはとおるけど

386:デフォルトの名無しさん
08/02/23 17:21:51
>>384
ヘッダファイルをチェックしてみては?
Windowsには無くてLinuxにはある、っていうヘッダがたくさん含まれている可能性もある

387:デフォルトの名無しさん
08/02/23 19:14:26
tarファイルって書いてあるのにgzなのが気になって仕方が無い

388:デフォルトの名無しさん
08/02/23 19:27:17
uploader側で末尾のピリオド以降を拡張子と自動認識されてるんじゃないの

389:デフォルトの名無しさん
08/02/23 19:52:27
それにしてもtar.gzファイルとかtgzファイルとか書き方があると思った

390:デフォルトの名無しさん
08/02/23 23:02:52
宿題がこないね

391:デフォルトの名無しさん
08/02/23 23:08:25
#include <stdio.h>
void main(void)
{
FILE *kadaip;
char buff[256];
int n;
printf("文字を入力してください!\n");
printf("(Enterを入力すると終了)\n");
scanf("%c",&n);
kadaip = fopen("C:\\kadai.txt","w");
if(kadaip != NULL)
{
gets(buff);
while(buff[0] !='\0')
{
buff [256]= fprintf(kadaip,"%c\n",n);
printf("文字を入力してください!\n");
printf("(Enterを入力すると終了)\n");
scanf("%c",&n);
gets(buff);
}
if(buff < 0)
printf("出力エラー!\n");
fclose(kadaip);
}
else
printf("openエラー入力エラー!\n");
}
全然わからなくて、とりあえず作ってみたのがこれです。間違いだらけだと思いますが教えていただけたら嬉しいです。
あと、プログラムの終了条件は文字データの入力がないときです。よろしくお願いいたします。

392:デフォルトの名無しさん
08/02/23 23:09:55
[1] 授業単元:プログラミング
[2] 問題文:キーボードから入力した内容をファイルに保存して表示するプログラムを作りなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual stdio
 [3.3] 言語: C
[4] 期限:2月25日まで
[5]上のものです。間違って先にプログラムの方を投稿してしまいました。
環境等はこちらです。すみませんでした。

393:デフォルトの名無しさん
08/02/23 23:22:40
>>392
#include <stdio.h>
int main(void)
{
FILE *kadaip;
char buff[256];
int n;

kadaip = fopen("C:\\kadai.txt","w");
if(kadaip != NULL)
{
printf("openエラー入力エラー!\n");
return 1;
}
while(1)
{
printf("文字を入力してください!");
printf("(Enterのみを入力すると終了)\n");
gets(buff);
if(buff[0] =='\0') break;
n=fprintf(kadaip,"%s\n",buff);
if(n<=0)
{
printf("出力エラー!\n");
break;
}
}
fclose(kadaip);

return 0;
}

394:393
08/02/24 00:01:01
>>393 が間違ってたので訂正
if(kadaip != NULL)

if(kadaip == NULL)

395:デフォルトの名無しさん
08/02/24 00:04:26
373ですけど
どうですかね?
バグはみつかりましたか?

396:デフォルトの名無しさん
08/02/24 00:58:57
>>394
訂正のとおりに実行してみたら無事にできました。お早い返答ありがとうございました。

397:デフォルトの名無しさん
08/02/24 01:54:24
URLリンク(www.nicovideo.jp)
これか


398:デフォルトの名無しさん
08/02/24 02:00:08
>>397
どれだよw

399:デフォルトの名無しさん
08/02/24 02:09:19
URLリンク(www.akibablog.net)
こちらか

400:デフォルトの名無しさん
08/02/24 13:10:21
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 巡回セールスマン問題の厳密解を求めるプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 2008 Exp
 [3.3] 言語: どちらでも可
[4] 期限: 2/25 12:00 ごろ

動的計画法で求めようとしているのですが、最小コストは求まったものの
そのルートを求める方法がいまいちわかりません。

dist[a][b] には a -> b の距離が入っています (a->b = b->a)
n は巡回頂点数です

URLリンク(kansai2channeler.hp.infoseek.co.jp)

401:デフォルトの名無しさん
08/02/24 15:13:14
>>400
ちょっと質問

ソースとか全然みてないでいうんだが、問題文は「厳密解」になってるけど
動的計画法って「近似解」を求める方法じゃない?

402:デフォルトの名無しさん
08/02/24 15:19:46
>>401
すまn
漏れの勘違いだったorz

403:デフォルトの名無しさん
08/02/25 02:00:32
>>400
URLリンク(kansai2channeler.hp.infoseek.co.jp)

・cost のサイズがでかすぎで手元でコンパイル通らなかったので減らした
・n や dist や CITY_NUM の定義が分からなかったので適当に補間した

以後ソースを挙げるなら定義の部分も含めてくれ
実行可能であることが最も望ましい

404:403
08/02/25 02:01:47
>>403
>コンパイル通らなかったので減らした
これは間違いで、コンパイルは通ったが実行時エラーが出たので減らした

405:デフォルトの名無しさん
08/02/25 17:53:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2月29日正午ごろまで(できれば28日中)
[5] その他の制限:
問題文の例の図がずれて見づらくなっちゃってます。すみません。
←valueの行で∥と∥の間が空白の場所は数値が入っておらず、演算子に対応してる位置だと思ってください。
また、大分長くなってしまってもいいので、なるべく簡単なプログラムでお願いします。
可能であればでいいので、何を目的とした部分なのか程度の注釈をいくつかつけてくださると助かります。

406:デフォルトの名無しさん
08/02/25 20:57:34
[1] プログラミング
[2] 問題文長くなるので下に書くごめんなさい
[3] 環境
 [3.1] OS: Windows2000
 [3.2] すいませんわかりません
 [3.3]C 言語
[4] 期限: ([2008年2月26日まで] できるだけ早くお願いしたいです。
[5] 制限は特になし
機動及びmain関数(kin_main.c)
このプログラミングの実行ファイルの名称は(kintai)のする。起動時に因数として勤怠情報ファイルを引数を与える。
>kintai kin0004
引数なしで機動した場合には、ファイル名を入力するようにメッセージを表示させる。
>kintai
>勤怠情報ファイルパスを指定してください。

このプログラミングのmain関数。初期化処理(kin_init()),勤怠情報記録ファイル読み込み処理(kin_file_read()),
入力情報論理チェック機能(kin_logic_chk()),勤怠計算機能(kin_calc()),標準出力機能(kin_display),CSVファイル生成機能(kin_create_csv()),
を順次に呼び出し。各関数の戻り値がエラーの場合にはその時点でmain関数に戻る。プログラムを終了にするにはmain関数
出なければならない。エラー情報はいかに示す。

エラーディファイン       出力情報                  意味
ERR_INIT 初期化エラー                初期化関数内でエラー
ERR_FILE_ACCESS ファイルアクセスエラー          ファイルアクセスに失敗した場合
ERR_LINE_NUM_OVER 勤怠情報ファイル文字数オーバー  勤怠情報ふぁいるの1行分文字数が所定の値を超える場合
ERR_PARSE 勤怠ファイル構文エラー         勤怠情報記録の構文が誤ってる場合
ERR_TIME_LOGIC 論理チェックエラー             入力された勤怠情報に誤りがある場合
NG 内部処理エラー               上記のエラーに該当しない場合。


丸なげでごめん 

407:デフォルトの名無しさん
08/02/25 21:04:29
>>406
勤怠情報ファイルのフォーマットもなしどうしろと?
丸なげどころか、情報がたりなすぎる

408:デフォルトの名無しさん
08/02/25 21:19:28
>>407
すまんまだはじめたばっかで
フォーマットを検索してもわからん
でもこんな感じになるはずなんだ

  スレリンク(news4vip板)

>>4>>5

409:デフォルトの名無しさん
08/02/25 21:24:18
>>408
見えない
なんで検索しないといけないのかも分からんよ

410:デフォルトの名無しさん
08/02/25 21:26:18
>>406
とりあえずツッコミどころが満載だな……

・CSVファイル生成機能(kin_create_csv())でのエラーは捕まえないの?
・エラーを出すのなら、その逆として「●●の処理は成功しました」と順次表示していくと親切じゃない?
・NG→ERR_internal の方がかっこよくない?
・ERR_TIME_LOGICで、「一ヶ月の勤務日数が32日です」とか
 「終業時刻+残業時間が、退勤時刻を超えてる」とかも出したほうが親切じゃない?

411:デフォルトの名無しさん
08/02/25 21:32:10
int main(int argc,char **argv){
  int Result=0;
  if(argc<2){
    puts("勤怠情報ファイルのパスを指定してください");
  }else{
    FILE *pFile=fopen(argv[1],"rb");
    if(pFile==NULL){
      printf("%s はオープンできないよ\n",argv[1]);
    }else{
      printf("%s をオープンしたよ\n",argv[1]);
      puts("閉じるよ");
      Result=kin_init();
      if(Result<0)printf("kin_init()が %d だと言ってる\n",Result);
すまんこんな感じになると思うんだ

412:デフォルトの名無しさん
08/02/25 21:34:46
>>410
すごい親切だと思うけどどうやるかさっぱりわからん

413:デフォルトの名無しさん
08/02/25 21:36:34
最初のif else 文からしてあやしい。
fopenを二回やることになるぞ

・引数ありで起動した場合
・引数なしで、ファイルパスを指定(入力?)する場合

414:デフォルトの名無しさん
08/02/25 21:47:15
>>411のは昨日やってもらったやつなんだ
引数与えないと起動しないようにするらしい
kintai kin0004.txtをつけるなければきどうしないようにする
0004は日付が入るyymmでyyが西暦の下二桁mmが該当月
.txt入らないと起動しないようにするみたいなです

415:デフォルトの名無しさん
08/02/25 21:53:12
>>414
「ファイル構文」という用語を持ち出すほどだから、
勤怠情報のファイルフォーマットはxmlくらいのものだと思った
CSV出力があるのなら、最初からCSV形式で勤怠情報のファイルフォーマットを策定すればいいんじゃない?

古い諺だが

  データ構造+アルゴリズム=プログラミング

と言うし。

416:デフォルトの名無しさん
08/02/25 21:58:06
>>415
ありがと
でも初心者の俺にはさっぱり意味がわからん


417:デフォルトの名無しさん
08/02/25 22:15:29
もしかして勤怠情報ファイルのフォーマットは決まってないのか?

418:デフォルトの名無しさん
08/02/25 22:32:40
正直フォーマットって言葉がでてこないから決まってないです。
問題文にkintai kin0004.txtだった 。.txtぬけてたすまん

419:デフォルトの名無しさん
08/02/25 23:22:08
週末、勢い込んでカレー作った。
たまねぎ炒めるところから始めて、
かなり気合入れて作った。
たまねぎの量、土日あわせて6玉。
うまかった。
でも今日の屁が死ぬほどくさい。

420:デフォルトの名無しさん
08/02/25 23:27:19
余ったタマネギは犬猫に食べさせちゃだめだよ!!!

でも実験という名目ならいいのかな??

421:デフォルトの名無しさん
08/02/25 23:33:19
だるいから嫌

422:デフォルトの名無しさん
08/02/25 23:33:53
だるいから嫌

423:デフォルトの名無しさん
08/02/25 23:35:56
だるいから嫌

424:デフォルトの名無しさん
08/02/26 00:03:54
だるいから嫌

425:デフォルトの名無しさん
08/02/26 02:25:49
>>405
多少問題文とやり方が違うし、あんま自信ないけど、一応できたのでうp
URLリンク(kansai2channeler.hp.infoseek.co.jp)

426:デフォルトの名無しさん
08/02/26 04:07:54
だるいから嫌

427:デフォルトの名無しさん
08/02/26 07:14:34
>>425
乙です
ありがとう

428:デフォルトの名無しさん
08/02/26 11:45:04
[1] 授業単元: C
[2] 問題文(含コード&リンク):
3次元配列を用いたカレンダー生成プログラム
任意の西暦年数nを与えて、n年のカレンダーを下記の仕様により、作成せよ。
 1)3次元配列day[12][6][7]を使用する。
 2)出力形式は
  1月 2月 3月 4月
  5月 6月 7月 8月
  9月 10月 11月 12月
 とする。
 3)うるう年にも対応させる。
[3] 環境
 [3.1] OS:MacOSX 10.5
 [3.2] コンパイラ名とバージョン:gcc 4.0.1
 [3.3] 言語:Cでお願いします。
[4] 期限:2/27に提出です。
[5] その他の制限:特にありません。できれば、配列に組み込む部分と出力部分には関数を使ってほしいです。
日を配列に組み込むところで、つまってしまい、どうにもならなくなってしまいました。
最終的には理解できるようにしたいので、簡単なコメントなどつけてくれると嬉しいです。
急ぎで申し訳ありませんが、よろしくお願いしますm(_ _)m

429:デフォルトの名無しさん
08/02/26 12:11:46
わざわざ配列に入れる必要なんてないと思うけど

430:デフォルトの名無しさん
08/02/26 12:32:22
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
個人課題 )IDカードを読み込んだら、その番号を"IDList.txt"に出力せよ。

buf[]にはそれぞれ二桁の16進数が入ってるのですが、それを繋げて、
strとしました。このstrに入った値を"IDList.txt"に書き込んでいきたいのです。

略)
sprintf(str, "%02x%02x%02x%02x%02x\n", buf[0], buf[1], buf[2], buf[3], buf[4]);

これ以降をよろしくお願いします。

※カードを読み込むたびにstrは変わります。

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:VS2005pro
 [3.3] 言語:C++
[4] 期限:特になし
[5] その他の制限:特になし
ド素人な課題で申し訳ないのですがよろしくお願いします。

431:デフォルトの名無しさん
08/02/26 13:21:29
>>430
それ本当にC++の授業なのか?
C++の特色のひとつは、Cから格段に進化した文字列操作だぞ

432:デフォルトの名無しさん
08/02/26 13:31:08
>>430
つーかそれ、FILE * fp = fopen("IDList.txt", "w")してsprintf(str, ...)をfprintf(fp, ...)にすればいいだけじゃん。

433:デフォルトの名無しさん
08/02/26 13:55:13
>>431
C++の授業ではないのですが、C言語の授業の延長の授業で、
環境がC++だったんでそのように書きました、申し訳ありません。
確かにやっていることは++は含んで無いのだと思います。
>>432
ありがとうございます。
"a"にしたら望んでいた物になりました。

434:デフォルトの名無しさん
08/02/26 16:43:10
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux /Windows
 [3.2] コンパイラ名とバージョン: (Linux)gcc /(Windows)コマンドプロンプト上でコンパイル
 [3.3] 言語: C
[4] 期限: 2月28日中
[5] その他の制限:長いプログラムになっても構いませんので簡単めなプログラムでお願いします。
設問1と設問3は自分で考えて辿り着いた答を書いてます。違っていたら指摘お願いします。
問2のコメント以下は実際に実行時間を計測して考察しろ的なものだと思うのですが、
どうやればいいのかいまいち分からないため簡単にでいいのでどうやればいいのか教えてください。

435:デフォルトの名無しさん
08/02/26 18:53:38
>>434
これ問題文そのまま「コピペ」してるか?

436:デフォルトの名無しさん
08/02/26 18:59:02
>>434
設問2
URLリンク(kansai2channeler.hp.infoseek.co.jp)

設問3
NULL: 「これ以上前の文字が存在しない」はOK、「次の文字に移る」は、違う
DEL: 「これ以上後の文字が存在しない」はOK、「全文字の並べ替え終了」は、違う
s1 スタックには下→上に、文字が小→大で積まれる
s2 スタックには下→上に、文字が大→小で積まれる
ので、s1,s2のスタックに有効な文字データが無い状態をチェックするために使用している(番兵)

つまり、2.aの処理の場合にNULL文字がなければ、
s1スタックにデータが無いという状態をチェックする文( if (s1が空) { ... } のような文 ) が必要になるが、
番兵(NULL文字)を用いることにより、その必要がなくなる
(番兵については、wikiでもみてね)

437:400
08/02/26 20:51:48
>>403
ありがとうございます。
説明不足で余計なお手数をおかけしてしまい申し訳ありません。

確かに、double では静的確保に成功する配列サイズなのに、
int で同じ添え字の配列を確保しようとすると確かにクラッシュするようです。不思議ですね。
その点は malloc で動的確保することで無事に動作しました。

438:438
08/02/26 21:23:50
>>428 行数制限のため入出力は関数にしなかったが。
#include<stdio.h>
int day[12][6][7];
int z(int y,int m,int d){
if(m<3)y--,m+=12;
return(y+y/4-y/100+y/400+(m*13+8)/5+d)%7;
}
int main(void){
int y,s,m,w,d;
while(1){
printf("y=");
scanf("%d",&y);
//格納
for(m=0;m<12;m++)
for(w=0;w<6;w++)
for(d=0;d<7;d++){
day[m][w][d]=w*7+d+1-z(y,m+1,1);
if(day[m][w][d]<1||day[m][w][d]>(z(y,m+2,1)-z(y,m+1,1)+7)%7+28)
day[m][w][d]=0;
}
//表示
for(s=0;s<3;s++)
for(w=0;w<6;w++,printf("\n"))
for(m=0;m<4;m++,printf(" "))
for(d=0;d<7;d++)
if(day[s*4+m][w][d]>0)
printf("%2d",day[s*4+m][w][d]);
else
printf(" ");
}
return 0;
}

439:デフォルトの名無しさん
08/02/27 00:11:44
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字頻度と文字の連接頻度をカウントするプログラムを作成せよ。
尚、入力ファイルにhamlet3-1をWebからダウンロードして使い、tsv形式で結果を出力せよ。($./a.out hamlet3-1.txt > hamlet.tsv としてプログラムを実行)
‐処理
・入力ファイルを「読み込みモード」でオープンする
・ファイルの銭湯から1文字ずつ読み込みながら小文字にそろえて、'a'~'z'の範囲にある場合は以下の処理を行う。
①'a'~'z'の各文字g亜出現する頻度を計数する。
②連続する2文字の連接頻度をa-a,a-b,...z-zまで計数する。
途中にスペース、改行などアルファベットが入った場合は連接していないとする。
・計数結果を標準出力に出力
hamlet3-1
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2008/02/27 23;59迄
[5] その他の制限:特にありません。
よろしくお願いします。

440:デフォルトの名無しさん
08/02/27 00:17:52
[1] 授業単元:プログラミング演習
[2] 問題文:
空気中でつるされている銅球の温度変化は以下の式で求まる。

Cp・ρ((πd^3)/6)dT/dt=-πd^2((λ/d)Nu)(T-Tair)

周辺空気の温度Tair=300K、流速3m/sのときの銅球の温度変化を計算しなさい。
なお、t=0sで銅球の初期温度はT0=700K、銅球の温度分布は無視し、各物性値は500Kで計算のこと。
(Cp=1.03kJ/kgK、ρ=8813kg/m^3、λ=39.71×10^3W/mK、Nu=11.04)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限: 2008年2月27日15:00
[5] その他の制限:使用したアルゴリズムは全て関数化する。
ルンゲクッタ法を使用

どうしてもわからないのですみませんがお願いします。


441:デフォルトの名無しさん
08/02/27 00:26:00
>>440
微分方程式を解くのか?

442:デフォルトの名無しさん
08/02/27 00:32:01
>>441
そうなんだと思います。

443:デフォルトの名無しさん
08/02/27 01:23:12
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2]コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: 2008年2月27日 12:00

2つの文字列A,Bに入力し、、
それぞれの文字列の先頭から順に一文字づつ抜き出し、
交互に出力するプログラムを作成しなさい。
Str関数を使用しない
例:
文字列Aにabcd
文字列Bに123456
と入力すると
出力結果 a1b2c3d456
が出力されるようにする。

よろしくおねがいします

444:デフォルトの名無しさん
08/02/27 01:29:42
>>439
URLリンク(kansai2channeler.hp.infoseek.co.jp)

445:デフォルトの名無しさん
08/02/27 01:31:44
>>444は間違い。

446:デフォルトの名無しさん
08/02/27 01:38:15
>>439
URLリンク(kansai2channeler.hp.infoseek.co.jp)

こっちが正しい。

447:デフォルトの名無しさん
08/02/27 01:44:13
>>443
#include <stdio.h>

int main(void)
{
char bufA[32], bufB[32];
int i=0;

printf("文字列Aの入力:");
fgets(bufA, sizeof(bufA), stdin);
printf("文字列Bの入力:");
fgets(bufB, sizeof(bufB), stdin);
while(bufA[i] != '\n' && bufB[i] != '\n')
{
putchar(bufA[i]);
putchar(bufB[i]);
i++;
}
if(bufA[i] != '\n') puts(bufA+i);
if(bufB[i] != '\n') puts(bufB+i);
return 0;
}

448:デフォルトの名無しさん
08/02/27 01:46:34
Str関数ってなんだろう。Str関数を作れって意味ではなさそうだし。
str~関数を使えってことかな?

449:デフォルトの名無しさん
08/02/27 02:15:44
>>439
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>444-446
連接の解釈が違うきがする

450:デフォルトの名無しさん
08/02/27 02:22:55
>>449
ああああああ!!!
そうか、そういうことか。

451:443
08/02/27 02:27:24
>>447
すみません、書き忘れてましたorz
配列でなくポインタででした・・
>>448
strのとこはstrcpyとか使わないでということです。


452:!= 447
08/02/27 02:48:15
>>451
bufA[i]←こういうのがあってはいけないってことかな?
ならば、

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

int main(void)
{
char *bufA, *bufB;
int i=0;

bufA=malloc(32);
bufB=malloc(32);
printf("文字列Aの入力:");
fgets(bufA, 32, stdin);
printf("文字列Bの入力:");
fgets(bufB, 32, stdin);
while(*(bufA+i) != '\n' && *(bufB+i) != '\n')
{
putchar(*(bufA+i));
putchar(*(bufB+i));
i++;
}
if(*(bufA+i) != '\n') puts(bufA+i);
if(*(bufB+i) != '\n') puts(bufB+i);
free(bufA);
free(bufB);
return 0;
}

453:440
08/02/27 04:50:45
微分方程式は手計算で解いてみたんですがソースを作ってみても解が出てきません…
どうすればいいかもまったくわからないです…
どのような解法でもいいのでどなたか本当にお願いします。

454:デフォルトの名無しさん
08/02/27 10:02:02
>>440
この温度変化の微分方程式の本質は

  dT(t)/dt = a * T(t) + b

という形になるはず。
この解は、微分しても同じ形の関数T(t)が出てくるので、

  T(t) = c * e^t

のように、指数関数になる、っていうのまではいいのか?

455:デフォルトの名無しさん
08/02/27 10:15:33
>>454
それはよくないんじゃないか?

456:デフォルトの名無しさん
08/02/27 10:18:02
>>453 ルンゲクッタ法を調べる

457:440
08/02/27 10:58:22
>>454
そこまではわかったんですが…どのようにソースを作ればいいのかがわからないです。
ルンゲクッタ法を用いてやってみているんですが解が求まりません…

458:デフォルトの名無しさん
08/02/27 11:01:17
>>446,449
ありがとうございます!

459:デフォルトの名無しさん
08/02/27 11:02:55
>>457
ある程度できてるならソース張って添削してもらった方が早いと思うぞ。

460:デフォルトの名無しさん
08/02/27 11:45:16
>>440
URLリンク(kansai2channeler.hp.infoseek.co.jp)

461:デフォルトの名無しさん
08/02/27 11:47:16
>>454
T(t) = c e^t だったら温度が指数関数的に吹っ飛ぶことになるが

462:440
08/02/27 12:43:05
以下が自分で作成したソースです。
曖昧なところが多々あってすいません。

double Onndo(double t0, double T0, double h,double k)
{
int i;
int x,y,k1,k2,k3,k4,h2;
double K ; /* 解法で得られた値を格納する変数 */
x=t0;y=T0;
h2=h/2.;
for(i=0;i<=y;i++){
k1=f(x,y,k);
k2=f(x+h2,y+h2*k1,k);
k3=f(x+h2,y+h2*k2,k);
k4=f(x+h,y+h*k3,k);
x=t0+(double)i*h;
y+=(k1+2.*k2+2.*k3+k4)*h/6.;
}
K=x;

return K;
}

463:440
08/02/27 12:44:34
>>462

*---- 関数f(x,y)の設定 ----*/
double f(double x, double y,double k)
{
double f;
f=k*(y-300)*x;
return f;
}

/*----- 解の設定 -----*/
double Ans_f(double y,double x,double k)
{
return exp(-k*x);
}

k=(-6*ramu*Nu)/(Cp*ro*d*d);として計算しています。


464:デフォルトの名無しさん
08/02/27 14:31:19
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 28日24:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
まだ講義ではそこまで深くプログラミングを学んでいないため、if文for文など簡単な文を多めに使う感じにしてください。
プログラムでなく考察を要求してるところを横棒で区切りました。
そちらの方にも軽くヒントなどいただきたいです。

465:デフォルトの名無しさん
08/02/27 15:53:39
>>440

Cp……銅の比熱(500K)
ρ……銅の密度(500K)
d……???
λ……熱伝達係数
Nu……ヌッセルト数


流速3m/s はどこで使うの?
d は何?
πd^2((λ/d)Nu) の部分は πdλNu と約分できそうだけど、ホントにこのままでいいの?
それともd^2ってのは二階微分を表してるの?

466:465
08/02/27 16:39:07
>>440
そもそも、その銅球の半径は?
それがd?

467:デフォルトの名無しさん
08/02/27 22:56:46
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
     コマンド ライン引数に指定されたファイルすべてに対して、 改行文字以外の各行を、
逆さまにして表示するプログラムを書いてください。
なお、対象のファイルには英数字などの半角文字のデータのみが入っているものとし、
漢字などの全角文字は含まれていないものとします。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 2008年2月28日 11:00
[5] その他の制限:
     1.文字列の最後の文字から先頭に向かって、順に 1 文字ずつ表示
(ただし、文字列の最後の文字が改行文字の場合、その次から始める)
2. 1 で改行文字があったならば、改行文字を表示

だれかよろしくお願いします

468:デフォルトの名無しさん
08/02/28 00:26:20
// >>467
#include <stdio.h>
#include <string.h>

static void flip(char * str)
{
char * tail = strchr(str, '\n');
if (tail == NULL) tail = strchr(str, '\0');
for (--tail; str < tail; ++str, --tail) {
char foo = * str;
* str = * tail;
* tail = foo;
}
}
static void flipCat(const char * fileName)
{
FILE * fp = fopen(fileName, "r");
char buf[1000];
while (fgets(buf, sizeof(buf), fp) != NULL) {
flip(buf);
fputs(buf, stdout);
}
fclose(fp);
}
int main(int argc, char ** argv)
{
for (int ic = 1; ic < argc; ++ic) {
flipCat(argv[ic]);
}
return 0;
}

469:デフォルトの名無しさん
08/02/28 00:43:38
>>464
URLリンク(kansai2channeler.hp.infoseek.co.jp)

こんな感じかな?
再帰関数を使っているのであんまりサイズが大きい配列だとプログラムが異常終了するかも
あと時間の計測方法は知らん

適当にmain関数を使っていじってみて

470:デフォルトの名無しさん
08/02/28 07:54:50
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):以下の条件を満たしロトのプログラムを作成しなさい。
1 1~42の中から6つの数字と1つのボーナス数字を選ぶことができます。ただし同じ数字を選ぶことはできません。
2 7つの数字は1次元配列の中になければなりません。
3 1つ1つの問題に対して関数定義を作り1つのプログラムで完成させなさい(関数を使う)
4 すべての関数はポインタを使いなさい。

問1 6つの数字と1つのボーナス数字を選ぶプログラム(エラー表示を含む)
問2 選らんだ数字とボーナス数字を1次元配列で表示しなさい
問3 選んだ数字とボーナス数字を小さい順に並べなさい
問4 ランダムに抽選されるプログラムを作り選んだ数字と比較し、以下の中の1つを表示させなさい

Match 6 Jackpot
Match 5 + Bonus Almost - just 1 away
Match 5 Holidays paid for
Match 4 + Bonus Night out
Match 4 Full petrol tank
Match 3 + Bonus Grub at local takeaway
問5 何回数字を選んだか表示しなさい (例)1はx回選ばれました
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限:2008年3月3日まで
[5] その他の制限:ありません

丸投げです。どなたかよろしくおねがいします。



471:デフォルトの名無しさん
08/02/28 09:24:35
>>470 久々に書くと酷いな
URLリンク(kansai2channeler.hp.infoseek.co.jp)

472:470
08/02/28 09:35:36
>>470 ほんとうにありがとうございます。
質問なんですが問4のランダム抽選はどのように表示されますか?

473:470
08/02/28 09:56:40
↑アンカーミスです。。
>>471 ほんとうにありがとうございます。 

474:デフォルトの名無しさん
08/02/28 10:20:39
>>468 ありがとうございます。さっそくやってみたのですが、
test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。
test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。
test2.c(26) : error C2143: 構文エラー : ')' が '型' の前にありません。
test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。
test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。
test2.c(26) : warning C4552: '<' : 演算子にプログラム上の作用がありません。作用
を伴う演算子を使用してください
test2.c(26) : error C2059: 構文エラー : ')'
test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。
test2.c(26) : error C2143: 構文エラー : ';' が '{' の前にありません。
test2.c(27) : error C2065: 'ic' : 定義されていない識別子です。
と表示されるのですが…

475:デフォルトの名無しさん
08/02/28 10:47:43
>>474
int ic;
for (ic = 1; ic < argc; ++ic) {

に変えたら?

476:デフォルトの名無しさん
08/02/28 13:38:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):キーボードから整数の入力を4回繰り返し,それらの値を2次元配列 A の各要素に順に代入し,その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ.
結果例
1行1列の要素? 6
1行2列の要素? 5
2行1列の要素? 4
2行2列の要素? 3
行列A =
6 5
4 3
行列式 = 2

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 本日夕方6時まで

もしよろしければどなたかお願いします。

477:デフォルトの名無しさん
08/02/28 13:50:12
>>476
#include <stdio.h>

int main(void)
{
int a[2][2],i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%d行%d列の要素? ",i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf("行列A =\n%d %d\n%d %d\n",a[0][0],a[0][1],a[1][0],a[1][1]);
printf("行列式 = %d",a[0][0]*a[1][1]-a[0][1]*a[1][0]);
return 0;
}

478:デフォルトの名無しさん
08/02/28 14:10:59
>>477
早すぎるお仕事、ありがとうございました

479:デフォルトの名無しさん
08/02/28 21:18:18
宿題マダー?

480:デフォルトの名無しさん
08/02/28 21:29:27
では300Mのテキストファイルを速くブロックソートするプログラム作ってくれよ
昨日から作ってるけど速くならない

481:デフォルトの名無しさん
08/02/29 00:31:48
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2008年3月1日
[5] その他の制限:

482:デフォルトの名無しさん
08/02/29 00:56:15
>>480
どんな環境でどんなデータに対してどれだけ時間がかかるのが遅いって言うんだ?
基準をplz

483:デフォルトの名無しさん
08/02/29 01:06:59
>>481
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#define BSIZE 128
int main(int argc, char **argv){
int rfd, rdnum
char buf[BSIZE];
if ((rfd = open(argv[1], O_RDONLY)) == -1) {
perror(argv[1]);exit(1);
} else {
printf("ファイルのオープンに成功しました\n");
}
while(1){
if ((rdnum=read(rfd,buf,BSIZE))<1) break;
printf(" %d\n",rdnum);
}
close(rfd);
return 0;
}


484:デフォルトの名無しさん
08/02/29 01:11:21
>>482
全文字列を展開してソートした場合

#include <iostream>
#include <string>
#include <set>
#include <time.h>
using namespace std;

class gou{
public: string str; int num;
gou(string a, int b){str=a; num=b;}
bool operator<(const gou& a)const{return str<a.str;}};

main(){
int sz=20000,n;
string a(sz,'\0');
for(n=0;n<sz;n++)a[n]=rand()&255;

multiset<gou> s;
int cl=clock();
for(n=0;n<sz;n++){ s.insert(gou(a,n)); a=a.substr(1)+a[0];}
cl=clock()-cl; cout<<"20kのブロックーソート "<<(cl+0.0)/1000<<"sec \n";
}

485:デフォルトの名無しさん
08/02/29 01:15:30
>>483
トン

486:デフォルトの名無しさん
08/02/29 02:33:11

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
 1) 3つの「点」からなる構造体「三角形」を作成しなさい。1つの「三角形」を構成する3つの頂「点」の座標を読み込み、三角形の重心を求めなさい。
2) 「三角形」の重心を計算する関数を作成しなさい。この関数を用いて問題1を行いなさい。
3) 2つの「三角形」の「頂点」の座標を読み込み、どちらの「三角形」の中心点が原点に近いか求めなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31
 [3.3] 言語:C++
[4] 期限: 2008年2/29日中
[5] その他の制限: なし
  切羽詰って依頼します。よろしくお願いします。




487:デフォルトの名無しさん
08/02/29 03:54:35
>>486
3)は、「中心点が原点に近いか」じゃなくて「重心が原点に近いか」じゃないの?

488:デフォルトの名無しさん
08/02/29 07:58:42
重心の求め方がわからない?
各座標のx,yをそれぞれ足して3で割るだけじゃん。

489:デフォルトの名無しさん
08/02/29 15:57:25
>>486
URLリンク(kansai2channeler.hp.infoseek.co.jp)

490:デフォルトの名無しさん
08/02/29 17:06:38
>>484 多少は早いんじゃないかと思う。 20kで動かせないからわからないけど
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/time.h>
#include<math.h>
typedef unsigned char byte_t;
int srcsize;
int comp(const void *p1, const void *p2){ return memcmp(*(byte_t**)p1, *(byte_t**)p2, srcsize); }
int main(void){
int n;
byte_t *src, *blockarea, *tmp, **blocklst;
struct timeval stv={0}, etv={0};
srcsize=20000;
src = (byte_t *)calloc(sizeof(byte_t),srcsize);
blockarea = (byte_t *)calloc(sizeof(byte_t),(srcsize*srcsize));
blocklst = (byte_t **)calloc(sizeof(byte_t*),srcsize);
if(src == NULL || blockarea == NULL || blocklst == NULL){ return 1; }
for(n=0;n<srcsize;n++)src[n]=rand()&255;
gettimeofday(&stv, NULL);
memcpy(blockarea, src, srcsize);
blocklst[0] = blockarea;
for(n=1,tmp=blockarea+srcsize; n<srcsize; n++, tmp+=srcsize){
memcpy(tmp, src+n, srcsize-n);
memcpy(tmp+srcsize-n, src, n);
blocklst[n] = tmp;
}
qsort(blocklst, srcsize, sizeof(byte_t*), comp);
gettimeofday(&etv, NULL);
fprintf(stderr, "time %g sec\n", (etv.tv_sec-stv.tv_sec)+abs(etv.tv_usec-stv.tv_usec)/1000000.0);
return 0; }

491:デフォルトの名無しさん
08/02/29 17:30:14
>>490
あっ、インデックス保持してやないや
メモリの解放もわすれてるし・・・
どうも、ボケてるな

492:デフォルトの名無しさん
08/02/29 18:18:41
486です。レス遅くなってしまったがありがとうございました。

493:デフォルトの名無しさん
08/03/02 13:33:08
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
<四則演算機の作成>
テキストファイルから数式を読み出し、計算結果を別ファイル名で出力する。
数式には、+-*/()を含む。計算結果は整数とし、小数点以下は切り捨てる。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2008年3月3日10:00まで
[5] その他の制限:逆ポーランド記法に並び替えて計算するという手順で
プログラムを作成しなさいとの説明がありました。逆ポーランド記法に
並び替えるプログラムで詰まってしまい先に進めらなくなってしまいました。
丸投げなのですがよろしくおねがいします。

494:デフォルトの名無しさん
08/03/02 16:00:36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
<copying-GCをC言語で作成 >
授業で行ったcopying-GCをC言語でせよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2008年3月5日00:00まで
[5] その他の制限:なし
C言語が大の苦手で、今遅れを取り戻そうとしているのですが。
期限が迫り、自分ではやってみるもののまったくわからないのでお願いします。

495:デフォルトの名無しさん
08/03/02 16:09:41
これはひどいwwwww

496:デフォルトの名無しさん
08/03/02 16:17:11
おい、だれかエスパーを呼んでくれ

497:デフォルトの名無しさん
08/03/02 16:36:47
ぎゃぼー俺には解けそうにない

498:デフォルトの名無しさん
08/03/02 17:34:48
この中に誰か授業に行った奴はいないのか!

499:デフォルトの名無しさん
08/03/02 22:22:58
>>494
#include "copying-GC.h"
#include <stdio.h>

int main(void) {
char s1[]="copying-";
char s2[]="GC";
printf("%s\n", copygin-GC(s1, s2));

return 0;
}


500:デフォルトの名無しさん
08/03/02 23:03:31
個人で作成代行してくれるところってある?
雑誌の後ろらへんとか見てみたんだけどなかった、、、かといって会社に頼むとめちゃくちゃ高いし...

501:デフォルトの名無しさん
08/03/02 23:11:24
それが宿題ならここで丸投げすればいい。
そうでないならそもそもスレ違い。

502:デフォルトの名無しさん
08/03/02 23:23:03
宿題だが、難しいから探してる
スレ違いということなので、他で探してくる...orz

503:デフォルトの名無しさん
08/03/02 23:53:26
いや、宿題ならとりあえずテンプレに沿って書いてみれば?
専門知識が必要だと厳しいかも知れんが、参考になりそうなサイトでの添付してくれれば
やさしいお兄さんが答えてくれる可能性はグンと上がると思うよ?

504:デフォルトの名無しさん
08/03/02 23:55:16
>>502
前方後円墳の容積を求める宿題なら。。

505:デフォルトの名無しさん
08/03/03 08:26:08
>>493
途中までです。仕事から帰ったら完成させます。すんません。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

506:デフォルトの名無しさん
08/03/03 09:58:24
>>493
泥臭い
URLリンク(kansai2channeler.hp.infoseek.co.jp)

507:デフォルトの名無しさん
08/03/03 19:16:16
>>484
C言語で書いてみたんだが、まだ必要だったらレスplz

参考までに速度比較(速度調べるために遅いマシンで測定した)
>>484 のコードで 20000 の時 8.96 sec
書いてみたコード 20000 の時 0.11 sec
書いてみたコード 200000 の時 1.41 sec

508:デフォルトの名無しさん
08/03/03 19:19:39
>505,506
493です、ありがとうございました。
直前で見ることができなかったのですが、
なんとか明日まで延ばしてもらえたので
ありがたくいただきます。

509:デフォルトの名無しさん
08/03/03 19:53:44
>>504-504
ありがとう
でも前ちょっと聞いたんだけどスルーされちゃったから(キャプチャ関係)

ちょっと切羽詰ってて、やらなきゃいけないので
当然謝礼はちゃんと出しますのでやって頂ける方はメールください(捨てアドでいいので)
スレ違いすぎるのでとりあえずこれくらいで書き込みはやめます
よろしくお願いします

510:デフォルトの名無しさん
08/03/03 20:36:52
>>493
もう書いてる人いるけどせっかくだから張ってみる。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

511:デフォルトの名無しさん
08/03/03 20:58:44
素数を求めるC言語プログラミングを教えてください
条件が有りまして
for文のネストもしくはwhile文のネストを使ってなおかつgoto文を使って下さい
よろしくお願いします。

512:デフォルトの名無しさん
08/03/03 21:01:18
>>511
>>1 を読んで書き直すか下のURLクリック
スレリンク(tech板:394番)


513:デフォルトの名無しさん
08/03/03 22:08:59
「goto使え」って指定は初めて見たなw

514:デフォルトの名無しさん
08/03/03 22:33:35
map<int, map<int, int>> hogehoge;
 ↑外側 ↑内側

これの内側のmapにデータがある時に外側のmapをclearした場合、内側のmapに格納してあるデータは自動的に解放されるのでしょうか?

515:デフォルトの名無しさん
08/03/03 22:36:46
>>514
解放されます
というか、特定の型の場合だけ残すほうが難しいよ

516:デフォルトの名無しさん
08/03/03 22:45:31
>>515
ありがとうございます。
感謝です。
いつもわざわざ内側をclearしてから外側をclearしていました。><

517:デフォルトの名無しさん
08/03/03 23:07:59
>>510
おお、さらに書いていただけたとは・・。
ここまで短くなるものなのですね。自分で途中まで書いてたものが
えらく長かったので助かります。505-506の方のと両方参考にして
提出後自分で練り直してみたいとおもいます。

ありがとうございました。

518:デフォルトの名無しさん
08/03/04 00:41:18
>>493
俺も作ったから貼ってみる
URLリンク(kansai2channeler.hp.infoseek.co.jp)

519:デフォルトの名無しさん
08/03/04 02:05:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):()
for文を使用して、15パズルを作成せよ。
出来るなら経過時間も表示させること。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年3月29日まで
[5] その他の制限:

学校の課題です。出来るところまでやってみたものをろだにあげてあります。
開始時にランダムにピースを配置するものと、正解判定、経過時間の表示が手付かずの状態です。
出来ればあれ(ろだ、6120.txt)に手を加える形で作って頂ければ助かります。

520:519
08/03/04 02:08:50
ろだへのアドレスを貼り忘れました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
です。

521:505
08/03/04 02:19:22
>>493
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4)です。
すでに他の方のすばらしいものがあり、私のもののメリットは皆無です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

522:デフォルトの名無しさん
08/03/04 02:20:54
>>519
まずは、パズル.bmpと、空きに、指定する、数字と、完成形を、示して、ください

523:デフォルトの名無しさん
08/03/04 03:24:29
>>522
大変もうしわけありませんでした。
パズル.bmpはこちら(URLリンク(neko-loader.net))です。アップローダー(ねころだ)ですがご容赦ください。

完成形は、どう言えば良いんでしょうか。
「実行したときには、すでに数字パネルがバラバラに配置されている」「それをパズル.bmpのように元通りに直したら完成と表示される」
といった形です。
最初に表示される画像は完成したパズルの形だけれども、その後バラバラに配置されて……といった流れはなくとも大丈夫のようです。
15パズルとしては、Wikiペディア(URLリンク(ja.wikipedia.org))に書いてあるものと同じスタンダードなものです。
メイン関数の部分にオセロゲーム、と書いてありますが、そこは消し忘れですので気になさらないでください。

本当に申し訳ないのですが、「空きに指定する数字」というのがよくわからず……。
こちらの知識不足で、ご迷惑をおかけしますが、どういったことでしょうか。

524:デフォルトの名無しさん
08/03/04 08:00:38
>>523
なにが判らないのか判らない。15パズルが、ピースを一つずつずらしていくパズルだと言うことは理解できているの?
先ずはWeb上にある15パズルを探してきて自分で動かしてみたら?

525:デフォルトの名無しさん
08/03/04 12:51:42
>>524
一応、そのあたりのことは理解しているつもりなのですが……。

現状(6120.txt)では、キーボードの上下左右を押して、ピースをずらす、という段階までは作れたつもりなんですが
「ピースを順番どおりにきちんと並びかえたときに、どうやってそれを判定するのか」
「最初にどうやってピースがバラバラに配置された状態にすればいいのか」
の二つがわからなかったんです。

526:デフォルトの名無しさん
08/03/04 13:14:32
>>525
きちんと並んだかどうかは、例えば1から15までのピースに1から15までの番号を振りブランクに0を振ったとして、
それらが1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0になったかどうかで判断すればいい。
初期位置は、解けないパズルになる可能性が合ってもいいなら、1から15までとブランクをシャッフルして配置すれば宜しい。
解けないパズルになってはいけないのなら、揃った状態からプログラム的にランダムにピースを操作するしかない。

527:デフォルトの名無しさん
08/03/04 13:37:12
>>526
> 揃った状態からプログラム的にランダムにピースを操作するしかない。

本当?

528:デフォルトの名無しさん
08/03/04 13:38:43
パリティを考慮して配置すればOK。でもめんどいw

529:デフォルトの名無しさん
08/03/04 15:35:20
>>527の言うとおりに、揃った状態から盤面をランダムにする方がいいと思う


530:デフォルトの名無しさん
08/03/04 16:04:17
>>526
if(masu[1][0]==1)&&(masu[2][0]==2)……という風にやっていけば大丈夫でしょうか。
ひとまずやってみます。アドバイス本当にありがとうございます。

ピース配置のほうも、助かりました。>>529さんも、ありがとうございます。
揃った状態から盤面をランダムにする、という方法でひとまずやってみたいと思うのですが……。
randを使用すれば良いんでしょうか。

531:デフォルトの名無しさん
08/03/04 18:42:17
>>528
パリティが奇だったら最後の2ピースひっくり返すだけ。面倒でもないよね。

532:528
08/03/04 19:35:34
私が確認するのが面倒なの!w

533:デフォルトの名無しさん
08/03/04 19:39:34
>>530
15パズルなら、randで4まで出るようにして、それを空白のマスで行う、とか

1……空白マスの上を動かす
2……右を
3……下を
4……左を

ってな具合に
角と辺では別処理

534:デフォルトの名無しさん
08/03/05 01:05:26
>>533
ありがとうございます。自分では考えもつきませんでした……。
戴いた助言どおりに進めてみることにします。

535:デフォルトの名無しさん
08/03/05 04:56:30
>>519
簡単に作ってみた。C++詳しくないんで中身はほとんどCだけど。
元のソースはよくわからんかったので全く利用してませんが悪しからず。
URLリンク(kansai2channeler.hp.infoseek.co.jp)



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch