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


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

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



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

301 名前:_ mailto:sage [2008/02/17(日) 08:34:24 ]
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |        
     |┃  ノ//   ./ ̄ ̄ ̄ \       
     |┃三    /  ::\:::/:::: \     
     |┃     /  <●>::::::<●>  \ 
     |┃     |    (__人__)     | 
     |┃三   \    ` ⌒´    /      
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

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

303 名前:_ mailto:sage [2008/02/17(日) 11:52:13 ]
      .. |┃三    ..   / ̄\
     ..  |┃        |     |
      .. |┃     ..    \_/
   ガラッ.. |┃           ..|        
     三 |┃            |    
  三    |┃  ノ//   ./ ̄ ̄ ̄ \
        |┃三    /  ::\:::/:::: \   
   ∧∧ ..|┃     /  <●>::::::<●>  \ 
三 (  ;). |┃     |    (__人__)     | 
  /   ⊃.|┃三   \    ` ⌒´    / 
 シュー    |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \

304 名前:_ mailto:sage [2008/02/17(日) 11:52:33 ]
                三 |┃┃
            三    |┃┃
                  |┃┃
             ∧∧ ..|┃┃
          三 (  ;). |┃┃ピシャッ!
            /   ⊃.|┃┃

305 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:57:43 ]
//書き込み処理
fstream("ファイル", ios::out) << ob.input();
//書き込み処理終了

307 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:06:25 ]
>>306
ofstream使えよ。

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

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


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



310 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:26:19 ]
>>308
とりあえずsignal.hなるものの存在を初めて知った

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


312 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 04:08:11 ]
>>312-313
御回答ありがとうございます。
SIG_IGNを使いシグナルを無視させることで無効化するんですね。
勉強になりました!ありがとうございます。

315 名前:デフォルトの名無しさん mailto:sage [2008/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ファンクション内の処理がおかしいと思われます。

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

ソースファイル↓
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6060.c

316 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:43:12 ]
誰か292頼みます

317 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:15:57 ]
>>316
問題が理解できないのでどうしようもない

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

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

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

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

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

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

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



320 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:51:32 ]
>>320
レス感謝です。
getTokenでparseitと同様の処理をさせれば良いのでしょうか?

322 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 06:43:13 ]
>>321
4時か、がんばってるねぇ…

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

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

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6062.c

324 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:09:34 ]
あー

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

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

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

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

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6064.c

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

327 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:29:30 ]
>>327
面白い解釈だ

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

329 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:26:31 ]
誰か終わってないリストチョーライ。



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

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

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

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

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

333 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:18:56 ]
ば、ばお・・・ごめんなさいorz

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

typedef struct list{

} list_t;

って感じですかね?

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

335 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:15:26 ]
>>334
へぇ 普通はそうなのか
普通って難しいな

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

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

338 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:07:57 ]
さらっと書いてるけど>>337は相当むずかしくないか?

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



340 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:16:50 ]
つ lint

341 名前:337 mailto:sage [2008/02/20(水) 01:25:54 ]
* get * sprintf * strcat * strcpy * vsprintf
が検出できれば OKです

342 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:28:57 ]
先に書けよ

343 名前:337 mailto:sage [2008/02/20(水) 01:33:14 ]
すみません。

344 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:14:35 ]
・getってなんだよ。
・scanfはスルーかよ。

345 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:35:42 ]
>>345
その発想はなかったわw

347 名前:337 mailto:sage [2008/02/20(水) 07:49:57 ]
ありがとうございます

348 名前:デフォルトの名無しさん [2008/02/20(水) 11:53:11 ]
>>330
1問目
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6068.txt

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

349 名前:デフォルトの名無しさん [2008/02/20(水) 12:13:13 ]
>>330
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6069.txt

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



350 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:57:42 ]
>>336
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6070.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6071.txt
一応作ってみた
考え方が良く分からんから、まぁたぶん大丈夫だろう的なレベル

351 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:47:15 ]
>>348-349
ありがとうございます。

352 名前:デフォルトの名無しさん [2008/02/20(水) 21:23:03 ]
>>350
ありがとうございます

353 名前:デフォルトの名無しさん [2008/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] その他の制限:

こんな感じです。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6072.txt
できればなるべく簡単な方法でお願いします。


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

355 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:55:06 ]
>>353
BUFSIZE文字以上の入力があった場合に異常動作を起こす他、色々と問題・手抜きは抱えてるが少なくともその実行例は通る
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6073.c

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



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

358 名前:353 [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:21:12 ]
これはbccのバグっぽい

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

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

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

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

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

366 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 18:01:06 ]
>>362
>>366 はでかいミスがあった それは忘れてこっちを使ってくれ

(2) 3999までの正整数をローマ数字にする int2roman.cpp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6075.txt

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

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



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

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

372 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:53:24 ]
>>371
教授から出されたような難解で困難な宿題?

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

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


374 名前:373 mailto:sage [2008/02/22(金) 23:20:53 ]
www12.axfc.net/uploader/18/so/Ne_12654.gz.html
こちらです

すいません。

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

376 名前:373 mailto:sage [2008/02/22(金) 23:35:20 ]
//としてるとこは全部消してもらってもかまいません。
あとでみたらログチェックしたままのファイルでした

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

378 名前:373 mailto:sage [2008/02/22(金) 23:50:28 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6077.txt
すいません。

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



380 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:55:59 ]
このスレって理系の学生が答えるスレだったっけ?

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

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

383 名前:373 mailto:sage [2008/02/23(土) 13:37:46 ]
gaiyou.txtと図をいれてみました。pngもしくはjpg形式です。
お願いします。
www12.axfc.net/uploader/18/so/Ne_12711.gz.html

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

385 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:21:04 ]
コンパイルはとおるけど

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

387 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:14:26 ]
tarファイルって書いてあるのにgzなのが気になって仕方が無い

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

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



390 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:02:52 ]
宿題がこないね

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

393 名前:デフォルトの名無しさん mailto:sage [2008/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 mailto:sage [2008/02/24(日) 00:01:01 ]
>>393 が間違ってたので訂正
if(kadaip != NULL)

if(kadaip == NULL)

395 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:04:26 ]
373ですけど
どうですかね?
バグはみつかりましたか?

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

397 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:54:24 ]
www.nicovideo.jp/watch/sm2417405
これか


398 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:00:08 ]
>>397
どれだよw

399 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:09:19 ]
www.akibablog.net/archives/2008/02/hardcore-080221.html
こちらか



400 名前:デフォルトの名無しさん mailto:sage [2008/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 は巡回頂点数です

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6084.txt






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

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

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