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)
536:535
08/03/05 05:45:15
malloc()のとこ、型変えたのに直し忘れてた。
sizeof(unsigned char) ではなく sizeof(unsigned int) です。
537:535
08/03/05 06:59:44
確認不足で申し訳ない。見直したら不具合が残ってたので訂正。
moveTest()のDIR_NとDIR_Sは
case DIR_N: return (y_size > 1 && i >= x_size);
case DIR_S: return (x_size == 1) ? (y_size > 1 && i < y_size-1) : (y_size > 1 && i < (x_size-1) * y_size);
にしといて下さい。
あとshuffle()は最初のほうに if(x_size == 1 && y_size == 1) return; を加えて下さい。
538:519
08/03/05 12:42:03
>>537
本当にありがとうございます。助かりました。
539:デフォルトの名無しさん
08/03/05 22:29:19
>>531
すみません。15パズルのパリティの計算を教えてください。
540:デフォルトの名無しさん
08/03/05 22:44:18
>>539
初期状態に、戻すように、入れ替えて、いけば、いい、
それが、偶数回の、作業か、奇数回の、作業か、という、意味
541:デフォルトの名無しさん
08/03/06 00:05:03
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):ls -lの様な結果を表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限:2008年3月8日まで
URLリンク(kansai2channeler.hp.infoseek.co.jp)
↑自力でここまで作ったのですが、user、group、ownerのアクセス方式の表示の仕方が分かりません。
それが表示出来るようになればst.st_modeの値の代わりにそれを表示出来るようにさせたいです。
よろしくお願いします。
542:デフォルトの名無しさん
08/03/06 00:17:11
>>541
各ビットの意味はmanページに書いてあるだろ。
URLリンク(www.linux.or.jp)
例えばls -lがどう表示するのか知りたいならinfoにある。
スティッキービットなどを考慮しなくていいのなら、
drwxrwxrwx形式でdはディレクトリ、以下ユーザ、グループ、他人の、それぞれ読み込み、書き込み、実行許可。
そうそう、dの部分はシンボリックリンクやデバイスなどの場合はそれに合わせて変わるのも忘れずに。
543:デフォルトの名無しさん
08/03/06 00:24:48
>>541
自力でそこまでできるんだったら、モードの表示も自力でできるだろう?
先頭の文字は、S_ISDIR(st.st_mode)ならば'd'、S_ISCHR(st.st_mode)ならば
'c'という風に表示すればいい。どう表示するかはman lsしてくれ。
残りの9文字は、st.st_mode & S_IRWXU ? 'r' : '-' のように一文字ずつ
出していけばいい。ただし、スティッキービットに注意すること。
544:デフォルトの名無しさん
08/03/06 00:32:01
>>543
間違えた。st.st_mode & S_IRUSR ? 'r' : '-' だた。
545:デフォルトの名無しさん
08/03/06 05:06:37
>>540
15パズルの任意の局面は、
(A)
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
(B)
1 2 3 4
5 6 7 8
9 10 11 12
13 15 14
のいずれかからスタートした入れ替え操作で到達可能という意味.
(A)を(B)にする入れ替え操作は存在しない。(証明は簡単)
546:デフォルトの名無しさん
08/03/06 05:54:00
>>519
亀レスだし、VCないからcursesライブラリ使ってだけど、できたからうpってみる
URLリンク(kansai2channeler.hp.infoseek.co.jp)
547:デフォルトの名無しさん
08/03/06 09:17:44
>>539
#include <iostream>
using namespace std;
#define XX 99
int parity(int *board) {
int p = 0;
for (int i = 0; i < 16; ++i)
if (board[i] == XX) p ^= !(i & 4);
else
for (int j = i+1; j < 16; ++j)
if (board[i] > board[j]) p = !p;
return p;
}
int main() {
int board[] = {
1,XX, 2, 4,
5, 6, 3, 8,
9,10, 7,11,
13,14,15,12
};
printf("parity = %d\n", parity(board));
}
548:519
08/03/06 10:14:55
まだ完成してはいないのですが、どうにか15パズルの課題、仕上げることが出来そうです。
>>546さん、>>547さん、
また、今まで助言を下さった方々、本当にありがとうございました。
549:デフォルトの名無しさん
08/03/06 19:13:46
>>545
それを、あらかじめ、判定するという、話なんですが
550:デフォルトの名無しさん
08/03/06 20:07:33
>>549
#define HEIGHT 4
#define WIDTH 4
typedef struct tab_board_t{
int num[HEIGHT][WIDTH];
}board_t;
int is_solvable(board_t *board){
int ret=1, x, y;
for(y=0;y<HEIGHT;y++){
for(x=0;x<WIDTH;x++){
ret=(ret+(board->num[y][x]/WIDTH-y))&1;
ret=(ret+((board->num[y][x]%WIDTH)-x))&1;
}
}
return ret;
}
/*
但し、完成した状態の定義を
board_t board={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
とする
*/
551:デフォルトの名無しさん
08/03/06 20:34:23
>>550
間違ってるな
552:デフォルトの名無しさん
08/03/06 20:43:44
>>550
{{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,15,14,13}}を、与えると、1が、返ってきて、しまいましたが、、、
未完の、大作と、評価して、おきます
553:550
08/03/06 21:50:12
>>550 の修正版 (完成した状態の定義は board_t board={{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,SPACE}}; とする)
#define HEIGHT 4
#define WIDTH 4
#define BOARD_SIZE ((HEIGHT)*(WIDTH))
#define SPACE ((BOARD_SIZE)-1)
typedef struct tag_board_t{ int num[BOARD_SIZE]; }board_t;
int swap(int *a, int *b){
int c; c=*a; *a=*b; *b=c;
return (*a!=SPACE && *b!=SPACE); // 空白との交換はカウントしない
}
int sign(int a){ return (a>0)?1:(a<0)?-1:0; } // 数値の符号を返すだけ
int is_solvable(board_t *board){
int check_pos, swap_pos, target_pos, swap_count=0;
int diff_x, diff_y;
board_t work;
work=*board;
for(check_pos=0;check_pos<WIDTH*HEIGHT;check_pos++){
for(target_pos=0;work.num[target_pos]!=check_pos;target_pos++);
while(work.num[check_pos]!=check_pos){
diff_x = (check_pos%WIDTH) - (target_pos%WIDTH);
diff_y = (check_pos/WIDTH) - (target_pos/WIDTH);
if(diff_x) swap_pos=target_pos + sign(diff_x);
else swap_pos=target_pos + sign(diff_y)*WIDTH;
swap_count+=swap(&work.num[target_pos], &work.num[swap_pos]);
target_pos=swap_pos;
}
}
return (swap_count%2==0);
}
554:デフォルトの名無しさん
08/03/06 23:34:55
547 のほうが数段美しいな。非破壊的だし。
555:デフォルトの名無しさん
08/03/07 00:52:37
[1] 授業単元: ひまつぶし
[2] 問題文(含コード&リンク):()
大きな川のこちらの岸辺に n 艘の船がある。
船 j は川を t_j 分で渡ることができる。
船を動かすとき、二艘繋いで動かすこともできる。
このときは、遅い船の時間だけかかってしまう。
こちらの岸辺にある船をすべて向こうの岸辺に
持って行くためにかかる最短時間を求めよ。
入力:
船の艘数 n (≦ 1000000)
各船が川を渡る時間 t_1, ..., t_n
出力:
最短時間
[3] 環境
[3.1] OS: 問わず
[3.2] コンパイラ名とバージョン: 問わず
[3.3] 言語: どちらでも可
[4] 期限: 03/10 まで
[5] その他の制限: 特になし。
556:デフォルトの名無しさん
08/03/07 00:57:38
>>555
全部、同時に、出港すれば、、、、
557:デフォルトの名無しさん
08/03/07 00:58:45
全ての船が一斉に渡り始めればいいので、
t_1からt_nの中の最小値が答え。
558:デフォルトの名無しさん
08/03/07 00:59:15
最大値だったw
559:デフォルトの名無しさん
08/03/07 01:01:23
プログラム必要なしw
560:555
08/03/07 01:07:34
条件の後出しですんません、船の運転手は 1 人です。
よくある問題設定なので書かなくても察してくれると思ってた・・・。
561:デフォルトの名無しさん
08/03/07 01:09:32
甘いな、そんな素直に解釈するような連中だと思うのか?w
562:デフォルトの名無しさん
08/03/07 01:13:16
2艘を繋いだり外したりする時間は考慮しなくていいのか?
563:デフォルトの名無しさん
08/03/07 01:13:46
「二艘繋いで動かすこともできる。』と、いうのは、1+2=3という、意味ですか、それとも、1+1=2と、いう意味ですか?
564:デフォルトの名無しさん
08/03/07 01:22:15
一番早い船に乗って、往復して一艘ずつ曳航すればいいのかな。
int required_time(int* t, int n)
{
if(n<=0) return 0;
else if(n==1) return *t;
else return std::accumulate(t, t+n, 0) + *min_element(t, t+n) * (n-1);
}
565:デフォルトの名無しさん
08/03/07 01:27:01
最後のところ訂正
else return std::accumulate(t, t+n, 0) + *std::min_element(t, t+n) * (n-2);
566:555
08/03/07 01:28:44
>>565
船の速さが 1 2 5 10 のとき、その解法だと 19 になりますが
最適解は 17 です({1,2}, {1}, {5,10}, {2}, {1,2})
567:デフォルトの名無しさん
08/03/07 01:35:27
それ以前に19になるか?
568:555
08/03/07 01:44:05
実行して気づきました。問題文が不十分だったんですね。
> 遅い船の時間だけかかってしまう。
は、遅い船のスピードに支配される、という意味で使っていました。
ああ、もうぼろぼろ・・・
569:デフォルトの名無しさん
08/03/07 08:37:08
キニスルナ(・∀・)
春休み中はスレも停滞するし、暇つぶしの問題は歓迎だろ。
ただ、2つの場所を種々の条件で移動する問題はなぞなぞの要素が強いと思われ。
570:デフォルトの名無しさん
08/03/07 08:54:01
作業系の問題よりは暇つぶしにはいいんじゃねーの?
まあ俺はわからんけど
571:デフォルトの名無しさん
08/03/07 13:10:30
個別の数値が決まってる奴はこの手のなぞなぞの定番だけど、一般化は考えたことなかったな。
少し考えてみようか。
解けない気がするけどw
572:デフォルトの名無しさん
08/03/07 13:47:35
若干強引だけどこれでいけるか?
int required_time(int* t, int n)
{
int t_temp;
switch(n){
case 1: return t[0];
case 2: return t[1];
case 3: return t[0] + t[1] + t[2];
case 4: return t[0] + 3 * t[1] + t[3];
default:
t_temp = 2 * t[0] + 3 * t[1] + t[n-1];
t[1] = t[0];
return temp_t + required_time(t + 1, n - 3);
}
}
573:デフォルトの名無しさん
08/03/07 19:59:42
>>572
なんかちがわね? t[] = {1,3,4,4} のとき
そのプログラムだと 1 + 3*3 + 4 = 14 だけど
(1,3)->, <-(1), (1,4)->, <-(1), (1,4)-> で13 になるよ
574:デフォルトの名無しさん
08/03/07 22:43:47
>>555
また、お前か
575:デフォルトの名無しさん
08/03/08 01:34:16
>>555
URLリンク(kansai2channeler.hp.infoseek.co.jp)
総当りでやってみた。100万艘とかは無理w
でもいろいろやってみると、以下が鉄則のようにみえる。
一、速い二艘を往復に使うべし
一、遅い方の船から二艘ずつを組にして渡るべし
576:デフォルトの名無しさん
08/03/09 16:08:31
[1] 授業単元:プログラミング演習
[2] 問題文:データ構造スタックを用いた逆ポーランド電卓の作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C
[4] 期限: 3月中
初心者です
四則演算が行える電卓を作りたいのですが、よろしくお願いします。
577:デフォルトの名無しさん
08/03/10 11:12:29
宿題ではないのですが
[1] 授業単元:n/a
[2] 問題文(含コード&リンク):n/a
[3] 環境
[3.1] OS: (WindowsXPproSP2)
[3.2] コンパイラ名とバージョン: (bccフリー版最新)
[3.3] 言語: (どちらでも可)
[4] 期限: (無期限)
[5] その他の制限: ()
基本的なノリは成分分析やバーコードバトラーです。
・任意の文字列(桁数固定表記の数値がメイン)を任意のリスト(*)に基づいて一字ごとに点数化し、その和を返すプログラム。
・a.txtファイル内に一行毎に一個の文字列を記録した文字列を、上記で丸ごと処理しc.txtファイル(**)として返すプログラム。
リスト自体は別個に独立したb.txtファイルで。
* リストの書式は丸投げですが、二軸マトリックス(x軸…対象文字列内の位置、y軸…対象となる文字の内容)でお願いします。
** 点数が一行に一個ずつ並んでるだけです。
cd実行後のコマンドは"enscore a.txt b.txt c.txt"みたいな感じで。
例:"14159265358979323846"を点数化したい場合
x(左からA~T),y(上から0~10)。尚、y=10は数字以外の場合に適用されます、だから大小区別の英数字ならy=0~62になります。
以下、該当部分が()で括られています。
{y=0|8,56,88,114,100,88,67,10,12,116,107,18,126,60,92,42,44,3,41,73}
{y=1|(124),56,(46),41,81,15,126,95,86,17,105,80,126,71,35,5,107,109,118,15}
{y=2|122,61,19,107,96,(50),128,96,64,46,6,18,73,69,44,(69),33,83,8,27}
{y=3|84,57,100,128,38,88,86,52,(110),7,42,43,23,101,(47),45,(1),81,6,99}
{y=4|3,(116),77,62,88,45,32,1,17,101,59,20,27,26,69,18,41,81,(24),107}
{y=5|25,17,13,(2),108,120,7,(98),123,(65),121,122,116,91,40,109,70,13,73,23}
{y=6|2,19,7,44,91,121,(88),10,58,98,123,109,119,93,88,40,88,99,112,(33)}
{y=7|72,83,32,66,88,86,63,104,27,2,106,84,(7),9,73,18,0,64,6,118}
{y=8|51,75,79,16,102,98,78,51,48,31,(118),36,110,47,12,68,98,(17),106,80}
{y=9|68,109,114,49,(53),70,84,9,62,67,1,(44),80,(117),0,79,16,84,66,56}
{y=10|60,34,105,58,73,99,110,127,9,61,115,23,45,60,39,80,36,3,14,101}
124+116+46+2+53+50+88+98+110+65+118+44+7+117+47+69+1+17+24+33}
=1229
578:デフォルトの名無しさん
08/03/10 15:58:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
0001.jpg 0002.jpg 0003.jpg ....というファイルを順に読み込み、
動画として表示するアプリケーションを作成せよ。
問題文全文
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限:[2008年3月15日まで]
[5] その他の制限:
FLTKを使用する。
映像を直接扱うクラスやライブラリは使わない。(e.g., mpegs)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上は、自分でやったとこまでです。初心者なので訳が分からなくなってます。
あと、問題文が英語で本当にすみません。
579:デフォルトの名無しさん
08/03/10 16:55:37
>>577
Cで作ってみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
580:デフォルトの名無しさん
08/03/10 21:11:36
>>579
ありがとう、夜勤から帰ったらためしてみる。まずは取り急ぎ
581:デフォルトの名無しさん
08/03/10 22:57:24
>>576
当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
K&R2 4.3 よりも無駄に長く汚くなってしまいました。とりあえず、そっちを読んでください。
582:デフォルトの名無しさん
08/03/11 01:55:05
>>581
バグがありました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
583:577
08/03/11 11:25:18
>>579
折角作って頂いたのに本当に申し訳ないんだが、enscoreコマンド実行時にリストの中身と計算過程の表示を省くには何処を削ればいいんでしょう?
処理個数が多くなりそうなので…。
584:デフォルトの名無しさん
08/03/11 12:40:59
>>583
あれ?リストの中身表示、計算過程って表示されちゃってる?
#define DEBUG ってなってなければ、表示されない(プログラムの実行コードに含まれない)はずなんだけど・・・
コンパイラによってデフォルトで DEBUG ついちゃうのかな?
まぁ、#ifdef DEBUG ~ #endif の間を削除しちゃえばいいさぁ~
585:デフォルトの名無しさん
08/03/12 11:51:16
宿題じゃないいんですけれども
[1] 授業単元:独学
[2] 問題文(含コード&リンク):stl
[3] 環境
[3.1] OS: ubuntu
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語: c++
[4] 期限: (無期限)
[5] その他の制限:
stlの使い方について質問です。今リストの中に1,2,4,8,16,32,64
と入っているんですが、"erase" を使って5番目の数字を削除して中身を表示し、
その後に3番目の数字を削除して表示。 そして、"insert"を使って3番目と4番目の
数字の間に7を入れて表示という感じにするにはどうしたらいいんですか?
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
int main(){
list<int> mylist;
for(int i=1; i<=64; i *= 2)
mylist.push_back(i);
cout<<endl;
list<int>::const_iterator itr1;
for(itr1 = mylist.begin(); itr1 != mylist.end(); itr1++)
cout<< *(itr1)<<" ";
return 0;
}
586:デフォルトの名無しさん
08/03/12 13:18:17
>>585
スレ違い。
初心者歓迎スレでもSTLスレでもお好きな方ヘどうぞ。
587:デフォルトの名無しさん
08/03/13 00:15:41
あー・・・春だなぁ。5~6月までは、あんまりネタがないのかなぁ。
588:デフォルトの名無しさん
08/03/13 02:20:40
今のうちに、C/C++とかアルゴリズムを勉強しておくといいんじゃね。
Structure and Interpretation of Computer Programs (SICP)辺りを読むのも良いかもな
589:デフォルトの名無しさん
08/03/13 16:58:40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):約分を行う関数を作成せよ。
ただし、分子と分母をメンバとする構造体を用いて、分数を表す。
構造体タグには、typedefによってBUNSUという名前をつけて使用する。
[3] 環境
[3.1] OS:WindowsXP SP2
[3.2] コンパイラ名とバージョン:Developer studio
[3.3] 言語:C++
[4] 期限:無制限
[5] その他の制限:URLリンク(kansai2channeler.hp.infoseek.co.jp)
*1~2の、約分処理と関数の呼び出し方がわかりません。
もしよければお願いします。
590:デフォルトの名無しさん
08/03/13 17:07:56
>構造体タグには、typedefによってBUNSUという名前をつけて使用する。
は?
C++に構造体タグなんてありませんが。構造体名自体が型として使えるので、typedefする必要もありませんが。
591:デフォルトの名無しさん
08/03/13 18:21:48
どっちかといえば期限無制限に突っ込むべきだろ
592:デフォルトの名無しさん
08/03/13 21:20:13
俺の半分は優しさで出来ています
#include<stdio.h>
typedef struct bunsu{
int bunshi;
int bunbo;
} BUNSU;
int getgcd(int m, int n){
while(m*n){ if(m>n) m%=n; else n%=m; }
return m+n;
}
void yakubun_p(BUNSU *x){
int gcd;
gcd = getgcd(x->bunshi, x->bunbo);
x->bunshi /= gcd;
x->bunbo /= gcd;
}
int main(void){
BUNSU a;
printf("分子?"); scanf("%d", &a.bunshi);
printf("分母?"); scanf("%d", &a.bunbo);
printf("%d / %d = ", a.bunshi, a.bunbo);
yakubun_p(&a);
printf("%d / %d\n", a.bunshi, a.bunbo);
return 0;
}
593:デフォルトの名無しさん
08/03/14 00:31:46
>>592
ありがとうございました。
C言語をはじめたばかりですが、がんばっていこうと思います!
594:デフォルトの名無しさん
08/03/14 00:54:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
VisualC++を使用して「はさみ将棋」を作成せよ。
テクスト、授業で配布したプリントのほかにも、自分で参考となる資料を集めて利用しても構わない。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C++
[4] 期限: 2008年3月28日まで
[5] その他の制限:特になし。ただ、出来るだけ平易な文で作っていただけると助かります。
595:デフォルトの名無しさん
08/03/14 01:15:00
てst
596:541
08/03/14 01:59:06
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):ls -lの加え-a、-w、-F結果が表示出来るようにしなさい
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限:2008年3月17日まで
URLリンク(kansai2channeler.hp.infoseek.co.jp)
前回は助けて頂きありがとうございました。
↑自力でここまで作ってみたのですが、-a、-wなどの部分を作成がまったく見当がつきません。
助けて頂けるとありがたいです、よろしくお願いします。
597:デフォルトの名無しさん
08/03/14 04:50:33
>>593
ちょっと待て。
> [3.3] 言語:C++
>C言語をはじめたばかりですが、がんばっていこうと思います!
おまいさんは、何語を習っているのかさえ判っていなかったのか?
598: ◆nUWYoBn0RQ
08/03/14 16:48:25
助けてください。
課題で
c言語の文字列ソートで
char * month[]={"january" ,"february", "march","april","may","june","july"}
をアルファベット順にソートかつ大文字に変えて表示するやり方
がわかりません。
教えてください。今日までなので時間がありません。
お願いします
599:サッカー
08/03/14 17:09:48
1] 授業単元:プログラミング
[2] 問題文 :c言語の文字列ソートで
char * month[]={"january" ,"february", "march","april","may","june","july"}
をアルファベット順にソートかつ大文字に変えて表示しろ。
[3] 環境
[3.1] OS: windowsxp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: 2008年3月15日まで
助けてください。
やり方が全くわかりません。
教えてください。
お願いします
600:デフォルトの名無しさん
08/03/14 17:43:58
>>599
ほいよ
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void*a,const void*b){return strcmp(a,b);}
int main(void){
char * month[]={"january" ,"february", "march","april","may","june","july"};
const int N = sizeof month / sizeof * month;
int i;
qsort(month , N , sizeof * month , cmp);
for(i=0;i<N;++i){
const char*it;
for(it=month[i];*it;++it)putchar(toupper(*it));
puts("");
}
return 0;
}
601:600
08/03/14 17:46:38
わりい一行バグってた。cmpを置き換えてくれ
int cmp(const void*a,const void*b){return strcmp(*(char**)a,*(char**)b);}
602:デフォルトの名無しさん
08/03/14 17:50:09
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
1、,学籍番号と名前と年齢からなる構造体「学生」を定義して、以下の二人の「学生」を
作りなさい。
・学籍番号1番、「青木三郎」20歳
・学籍番号2番、「加藤武雄」21歳
2,「学生」の学籍番号、名前、年齢を設定する関数を作り、1の問題を行いなさい。
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) できるだけ早く
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
クラスの作り方がよくわかりません。
よろしくお願いします。
603:サッカー
08/03/14 17:53:30
マジ天才です。
助かりました。
ありがとうございます。
604: ◆zCS1o.kilU
08/03/14 18:17:37
1] 授業単元:プログラミング
[2] 問題文 :mystrlen関数作成せよ。プロトタイプはint mystrlen (char*);
またmain関数からmystrlen関数を呼び出し自分の名前の長さを求め
なさい。
実行例「 ”山田太郎”は0008バイトです 」
[3] 環境
[3.1] OS: windowsxp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: できるだけ早くお願いします。
[5] strlen関数使用禁止
お願いします。
605:デフォルトの名無しさん
08/03/14 18:27:16
>>604
好きなんどーぞ
int mystrlen(char*p){
return strcspn(p,"");
}
int mystrlen(char*p){
return (char*)memchr(p,0,-1) - p;
}
int mystrlen(char*p){
return strchr(p,0) - p;
}
606:デフォルトの名無しさん
08/03/14 18:27:23
>>602
struct Gakusei {
int num; char* name; int age;
void set(int _num, char* _name, int _age) {
num = _num; name = _name; age = _age;
}
};
int main() {
// 1
Gakusei g1 = {1, "青山三郎", 20};
Gakusei g2 = {2, "加藤武雄", 21};
// 2
g1.set(1, "青山三郎", 20);
g2.set(2, "加藤武雄", 21);
}
607: ◆zCS1o.kilU
08/03/14 18:40:28
ありがとうございます。
もうひとつだけお願いがあります。1] 授業単元:プログラミング
[2] 問題文 :キーボードから西暦と月を入力するとカレンダーを
表示するプログラムを作成せよ
[3] 環境
[3.1] OS: windowsxp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: できるだけ早くお願いします。
[5] scanf使用不可. fgetsでお願いします。
お願いします
608:デフォルトの名無しさん
08/03/14 18:44:19
>>604
当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4 です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
609: ◆zCS1o.kilU
08/03/14 19:03:27
そうなんですか。
ありがとうございます。
610: ◆TJ9qoWuqvA
08/03/14 19:55:04
教えてください。
わからないよ~。
最後にこれができないと
単位がもらえないよ。
611:デフォルトの名無しさん
08/03/14 20:06:27
>>610
お前が誰だかわからないよ
612:607
08/03/14 20:21:56
607
です。ありがとうございます。
もうひとつだけお願いがあります。1] 授業単元:プログラミング
[2] 問題文 :キーボードから西暦と月を入力するとカレンダーを
表示するプログラムを作成せよ
[3] 環境
[3.1] OS: windowsxp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: できるだけ早くお願いします。
[5] scanf使用不可. fgetsでお願いします。
お願いします
613:デフォルトの名無しさん
08/03/14 21:20:32
>>607
>>612
当方で確認した環境は cygwin/WindowsXP, 処理系はgcc3.4.4 です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
614:デフォルトの名無しさん
08/03/14 22:21:48
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):データ構造・スタックの作成
[3] 環境
[3.1] OS: windows vista
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: できるだけ早く
URLリンク(www2.uploda.org)
↑スタックとして、これを使用したいと思います。
しかし、整数しか扱えず、浮動小数点数のプッシュが行えません。
関数の返却値をdouble型に変更してみたり、確保する型の変更など
試してみましたが、うまくいきませんでした。
浮動小数点数を扱える様に変更をよろしくおねがいします。
615:デフォルトの名無しさん
08/03/14 22:25:22
ksk
616:デフォルトの名無しさん
08/03/14 22:39:38
>>614
当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
617:デフォルトの名無しさん
08/03/14 22:47:22
>>616
614です。
ありがとうございます。
実行してみたところ、一か所エラーがでてしまいました。13行目ですが、
エラー E2034 13: 'void *' 型は 'double *' 型に変換できない(関数 StackAlloc(Stack *,int) )
処理系の違いによるものでしょうか。
何か対策がありましたら教えて頂けると助かります。
618:デフォルトの名無しさん
08/03/14 22:49:54
>>617
元のファイルもコンパイルできなかったのかな?
619:デフォルトの名無しさん
08/03/14 22:50:46
>>617
if ((s->stk = (double *)calloc(max, sizeof(double))) == NULL) {
でどうでしょうか?
620:デフォルトの名無しさん
08/03/14 22:59:48
614です。
>>618
614のファイルでは、整数のみ扱える状態でコンパイル、実行が行えました。
>>619
実行できました。ありがとうございます。
本当に助かりました。
このスタックを用いてプログラムの作成を行うのですが、
また解らないことがありましたら、質問させていただけたらと思いますので
その際はよろしくお願いいたします。
621:デフォルトの名無しさん
08/03/14 23:08:12
>>617
C++としてコンパイルしているだろ?
622:607
08/03/14 23:21:48
613さんありがとうございます。たすかりました。
623:デフォルトの名無しさん
08/03/14 23:33:12
614です。
>>617
拡張子を.cpp としてコンパイルしていました。
Cでコンパイルしたところ動きました。
ご指摘ありがとうございます。今後気を付けます。
>>619
訂正していただいたのにすみませんでした。
言語をCとせずにコンパイルしていたのが原因でした。
616が動作することも確認できました。
ありがとうございました。
624:616
08/03/15 05:59:16
>>620
該当行は double のときは、calloc() -> malloc() に訂正しておいてください。
625:デフォルトの名無しさん
08/03/15 07:40:55
>>596
後半だれてたから、読みづらいソースになってるかもしんないけど、
一応できたからうp。参考程度にどうぞ (間違ってたらごめんね)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
626:デフォルトの名無しさん
08/03/15 09:00:05
英文字A-Zに対して、異なる二つの文字ごとに得点が与えられているとします
最も得点が高くなる文字列を求めたい
例えば3文字で次のように得点が与えられていれば
AB 1
AC 5
BA 2
BC 3
CA 10
CB 1
BCA の得点13が最高得点
627:デフォルトの名無しさん
08/03/15 09:02:50
英字(26文字)を、1-1000までの数字に置き換えても求められるプログラムがよいです
計算量が増えますから、総当たりが難しいです
628:626
08/03/15 09:17:13
巡回セールスマンで最短を最長に変えたものと同じですね
距離をマイナス倍すれば(例えば10から引く)巡回セールスマンと一致しますね
629:デフォルトの名無しさん
08/03/15 09:29:21
でももとの位置へ戻ってこなくて良いところが違いますが・・・
レンタカーやタクシーで巡回するようなものです
630:541
08/03/15 10:48:04
>>625
ありがとうございます。
参考にさせて頂きます。
631:デフォルトの名無しさん
08/03/15 11:06:09
>>626
同じ点(文字)を二度以上通ってもいいですか?
もし、いいなら単純な動的計画法が適用できる気が。
632:デフォルトの名無しさん
08/03/15 11:13:59
>>631
おなじ文字を何度も使ったら値は無限に増えます
ACACACACA・・・・とか 一度だけの並べ替えにしてください
633:デフォルトの名無しさん
08/03/15 11:17:26
>>632
ACA で終わりじゃないの?
634:デフォルトの名無しさん
08/03/15 11:21:06
一度だけの使用で、最も高得点になるものを求めたいです
文字は全て使わなくても良いですが、全部使った方が高得点になります
635:626
08/03/15 11:35:08
すみません 設定を間違えました 出直してきます
636:デフォルトの名無しさん
08/03/15 12:01:14
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):英和辞書を作成せよ。
辞書データはプログラム開始時にファイル(ファイル名はdic.dat)より読み込みメモリ上にリスト構造を構築する。
以下これをリストという。
次の機能をメニューで選べるようにすること。(機能ごとに関数にしておく)
(1)検索:英単語(半角)を入力すると、リストより検索して日本語(全角)の意味を表示する。
(2)追加:新しい単語とその意味をキーボードより入力し、リストに追加する。
(3)修正:リストのデータを修正する。
(4)削除:リストより任意の単語を削除する。
(5)保存:リストをファイルに保存する。
(6)終了:プログラムの終了。もしデータが変更されているのに保存されていない時は、
保存せず終了して良いか確認する処理を行う。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:3月中
[5] その他の制限:URLリンク(kansai2channeler.hp.infoseek.co.jp)
お願いします。
637:デフォルトの名無しさん
08/03/15 13:01:11
>>634
>文字は全て使わなくても良いですが、全部使った方が高得点になります
それは得点配分しだいじゃないか?
638:デフォルトの名無しさん
08/03/15 20:00:13
>>636
STLのmapをCに移植すればいいんじゃね?
639:デフォルトの名無しさん
08/03/15 20:03:22
リスト構造で実現しろって言ってるのに。
640:デフォルトの名無しさん
08/03/15 20:08:23
>>639は出世しないタイプ
641:デフォルトの名無しさん
08/03/15 20:29:04
>>638
これがマリー・アントワネットの力か……
642:デフォルトの名無しさん
08/03/15 21:14:11
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
標準入力からファイル名を受け取り、ファイル内容を以下のように要素毎に整列し出力せよ
入力ファイル:URLリンク(kansai2channeler.hp.infoseek.co.jp)
出力ファイル:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]
環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc3.4
[3.3] 言語:C
[4] 期限:3月20日
[5] その他の制限:
入力するファイルの行数は1000行以内とする
「Perlの方が楽かもねぇ」と言われてもどっちもわからず・・・
643:デフォルトの名無しさん
08/03/16 05:45:48
>>642
URLリンク(kansai2channeler.hp.infoseek.co.jp)
644:642
08/03/16 06:50:08
>>643
6日かけてもロクにできなかったのに・・・ありがとうございます
ソース内容理解して説明できるよう頑張ります
645:デフォルトの名無しさん
08/03/16 11:29:30
>>594
取り合えず動く程度の簡易なもの(非VC++)。
ルールはググって上2つぐらいをざっと見ただけなんでもしかしたら間違ってるかも。
役に立つか分かりませんが参考程度にどうぞ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)