C/C++の宿題を片付けます 104代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/02/04(月) 23:32:19【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 103代目
http://pc11.2ch.net/test/read.cgi/tech/1200318925/
0357デフォルトの名無しさん
2008/02/22(金) 03:27:56あぁ、VC++2008でコンパイルしたから気付かんかったけど
C99形式のコメント(//〜)を使ってるからそれかもしれん
その部分を全部消してみてくれ
0358353
2008/02/22(金) 03:50:47消してみましたが、やはり同じようです。
とりあえず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 ***
0359デフォルトの名無しさん
2008/02/22(金) 04:01:06コメントを消した状態ならこっちでは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)
0360デフォルトの名無しさん
2008/02/22(金) 04:21:120361デフォルトの名無しさん
2008/02/22(金) 04:24:08bccだとvoid fgetsで定義されてるとかか?
0362デフォルトの名無しさん
2008/02/22(金) 04:26:26[2] 問題文(含コード&リンク):http://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文使いまくりでもいいので、簡単なプログラムにしていただけると助かります。
0363デフォルトの名無しさん
2008/02/22(金) 04:37:400364デフォルトの名無しさん
2008/02/22(金) 04:39:46fgets(buf, BUFSIZE, stdin) ? (void)0 : exit(1);
これで回避できるみたいだが、よくわからんな。
bccの3項演算子の扱いが謎。
0365デフォルトの名無しさん
2008/02/22(金) 04:46:17void同士ならOKらしい。
0366デフォルトの名無しさん
2008/02/22(金) 05:53:24とりあえず適当
(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;
}
0367デフォルトの名無しさん
2008/02/22(金) 05:54:59#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;
}
0368デフォルトの名無しさん
2008/02/22(金) 18:01:06>>366 はでかいミスがあった それは忘れてこっちを使ってくれ
(2) 3999までの正整数をローマ数字にする int2roman.cpp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6075.txt
0369デフォルトの名無しさん
2008/02/22(金) 19:32:04おしえてくれるスレですか?
かなりながいソースなんですが。
0370デフォルトの名無しさん
2008/02/22(金) 19:45:43そりゃもう手取り足取り
どれだけ長いソースでも宿題であれば片付けるよ
それが2ちゃんクロリティ
0371デフォルトの名無しさん
2008/02/22(金) 19:50:06流れをかいたファイルといろいろこみの
tar.gz形式のファイルでうpします
あとで。
0372デフォルトの名無しさん
2008/02/22(金) 19:53:24教授から出されたような難解で困難な宿題?
0373デフォルトの名無しさん
2008/02/22(金) 23:14:14[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6076.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:月曜日までといいたいところですが
[5] その他の制限:
おねがいします。わからないことがあれば聞きます。
0374373
2008/02/22(金) 23:20:53こちらです
すいません。
0375デフォルトの名無しさん
2008/02/22(金) 23:24:36件のファイルが既にありません。
しかも、「実行ファイルを実行せよ」というのはかなり怪しいです。
ウィルスなら誰も手を出しません。
0376373
2008/02/22(金) 23:35:20あとでみたらログチェックしたままのファイルでした
0377デフォルトの名無しさん
2008/02/22(金) 23:47:07せめてPDFくらいは・・・
あと実行ファイルは誰も実行せんがな(´・ω・`)
0378373
2008/02/22(金) 23:50:28すいません。
0379デフォルトの名無しさん
2008/02/22(金) 23:53:25でも俺の周りでdvioutとかGhost Scriptとかまで入れてるのは二三人しかいないなぁ……
そもそもTeXすら入れてないってやつが多いし……
Linuxのパッケージ?にはUNIX派生のいろいろが入っているからいいんだろうけど……
0380デフォルトの名無しさん
2008/02/23(土) 00:55:590381デフォルトの名無しさん
2008/02/23(土) 00:58:44そのファイル読んだけど、やってる処理に関する知識を持ってないから全く分からん
その点も説明して貰わんと、分かる人間しか答えられんぞ
0382デフォルトの名無しさん
2008/02/23(土) 01:19:49コメントをいれるようにしてもう一度うpします。
そっちのほうがわかるとおもうので。
0383373
2008/02/23(土) 13:37:46お願いします。
http://www12.axfc.net/uploader/18/so/Ne_12711.gz.html
0384デフォルトの名無しさん
2008/02/23(土) 16:16:36コンパイルすら通らずにエラーや警告出まくりなんで止めた。
0385デフォルトの名無しさん
2008/02/23(土) 16:21:040386デフォルトの名無しさん
2008/02/23(土) 17:21:51ヘッダファイルをチェックしてみては?
Windowsには無くてLinuxにはある、っていうヘッダがたくさん含まれている可能性もある
0387デフォルトの名無しさん
2008/02/23(土) 19:14:260388デフォルトの名無しさん
2008/02/23(土) 19:27:170389デフォルトの名無しさん
2008/02/23(土) 19:52:270390デフォルトの名無しさん
2008/02/23(土) 23:02:520391デフォルトの名無しさん
2008/02/23(土) 23:08:25void 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");
}
全然わからなくて、とりあえず作ってみたのがこれです。間違いだらけだと思いますが教えていただけたら嬉しいです。
あと、プログラムの終了条件は文字データの入力がないときです。よろしくお願いいたします。
0392デフォルトの名無しさん
2008/02/23(土) 23:09:55[2] 問題文:キーボードから入力した内容をファイルに保存して表示するプログラムを作りなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: visual stdio
[3.3] 言語: C
[4] 期限:2月25日まで
[5]上のものです。間違って先にプログラムの方を投稿してしまいました。
環境等はこちらです。すみませんでした。
0393デフォルトの名無しさん
2008/02/23(土) 23:22:40#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;
}
0395デフォルトの名無しさん
2008/02/24(日) 00:04:26どうですかね?
バグはみつかりましたか?
0396デフォルトの名無しさん
2008/02/24(日) 00:58:57訂正のとおりに実行してみたら無事にできました。お早い返答ありがとうございました。
0397デフォルトの名無しさん
2008/02/24(日) 01:54:24これか
0398デフォルトの名無しさん
2008/02/24(日) 02:00:08どれだよw
0399デフォルトの名無しさん
2008/02/24(日) 02:09:19こちらか
0400デフォルトの名無しさん
2008/02/24(日) 13:10:21[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 は巡回頂点数です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6084.txt
0401デフォルトの名無しさん
2008/02/24(日) 15:13:14ちょっと質問
ソースとか全然みてないでいうんだが、問題文は「厳密解」になってるけど
動的計画法って「近似解」を求める方法じゃない?
0402デフォルトの名無しさん
2008/02/24(日) 15:19:46すまn
漏れの勘違いだったorz
0403デフォルトの名無しさん
2008/02/25(月) 02:00:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6086.c
・cost のサイズがでかすぎで手元でコンパイル通らなかったので減らした
・n や dist や CITY_NUM の定義が分からなかったので適当に補間した
以後ソースを挙げるなら定義の部分も含めてくれ
実行可能であることが最も望ましい
0405デフォルトの名無しさん
2008/02/25(月) 17:53:48[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6089.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月29日正午ごろまで(できれば28日中)
[5] その他の制限:
問題文の例の図がずれて見づらくなっちゃってます。すみません。
←valueの行で‖と‖の間が空白の場所は数値が入っておらず、演算子に対応してる位置だと思ってください。
また、大分長くなってしまってもいいので、なるべく簡単なプログラムでお願いします。
可能であればでいいので、何を目的とした部分なのか程度の注釈をいくつかつけてくださると助かります。
0406デフォルトの名無しさん
2008/02/25(月) 20:57:34[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 内部処理エラー 上記のエラーに該当しない場合。
丸なげでごめん
0407デフォルトの名無しさん
2008/02/25(月) 21:04:29勤怠情報ファイルのフォーマットもなしどうしろと?
丸なげどころか、情報がたりなすぎる
0408デフォルトの名無しさん
2008/02/25(月) 21:19:28すまんまだはじめたばっかで
フォーマットを検索してもわからん
でもこんな感じになるはずなんだ
http://yutori.2ch.net/test/read.cgi/news4vip/1203862807/
の>>4と>>5
0409デフォルトの名無しさん
2008/02/25(月) 21:24:18見えない
なんで検索しないといけないのかも分からんよ
0410デフォルトの名無しさん
2008/02/25(月) 21:26:18とりあえずツッコミどころが満載だな……
・CSVファイル生成機能(kin_create_csv())でのエラーは捕まえないの?
・エラーを出すのなら、その逆として「●●の処理は成功しました」と順次表示していくと親切じゃない?
・NG→ERR_internal の方がかっこよくない?
・ERR_TIME_LOGICで、「一ヶ月の勤務日数が32日です」とか
「終業時刻+残業時間が、退勤時刻を超えてる」とかも出したほうが親切じゃない?
0411デフォルトの名無しさん
2008/02/25(月) 21:32:10int 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);
すまんこんな感じになると思うんだ
0412デフォルトの名無しさん
2008/02/25(月) 21:34:46すごい親切だと思うけどどうやるかさっぱりわからん
0413デフォルトの名無しさん
2008/02/25(月) 21:36:34fopenを二回やることになるぞ
・引数ありで起動した場合
・引数なしで、ファイルパスを指定(入力?)する場合
0414デフォルトの名無しさん
2008/02/25(月) 21:47:15引数与えないと起動しないようにするらしい
kintai kin0004.txtをつけるなければきどうしないようにする
0004は日付が入るyymmでyyが西暦の下二桁mmが該当月
.txt入らないと起動しないようにするみたいなです
0415デフォルトの名無しさん
2008/02/25(月) 21:53:12「ファイル構文」という用語を持ち出すほどだから、
勤怠情報のファイルフォーマットはxmlくらいのものだと思った
CSV出力があるのなら、最初からCSV形式で勤怠情報のファイルフォーマットを策定すればいいんじゃない?
古い諺だが
データ構造+アルゴリズム=プログラミング
と言うし。
0416デフォルトの名無しさん
2008/02/25(月) 21:58:06ありがと
でも初心者の俺にはさっぱり意味がわからん
0417デフォルトの名無しさん
2008/02/25(月) 22:15:290418デフォルトの名無しさん
2008/02/25(月) 22:32:40問題文にkintai kin0004.txtだった 。.txtぬけてたすまん
0419デフォルトの名無しさん
2008/02/25(月) 23:22:08たまねぎ炒めるところから始めて、
かなり気合入れて作った。
たまねぎの量、土日あわせて6玉。
うまかった。
でも今日の屁が死ぬほどくさい。
0420デフォルトの名無しさん
2008/02/25(月) 23:27:19でも実験という名目ならいいのかな??
0421デフォルトの名無しさん
2008/02/25(月) 23:33:190422デフォルトの名無しさん
2008/02/25(月) 23:33:530423デフォルトの名無しさん
2008/02/25(月) 23:35:560424デフォルトの名無しさん
2008/02/26(火) 00:03:540425デフォルトの名無しさん
2008/02/26(火) 02:25:49多少問題文とやり方が違うし、あんま自信ないけど、一応できたのでうp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6091.txt
0426デフォルトの名無しさん
2008/02/26(火) 04:07:540427デフォルトの名無しさん
2008/02/26(火) 07:14:34乙です
ありがとう
0428デフォルトの名無しさん
2008/02/26(火) 11:45:04[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
0429デフォルトの名無しさん
2008/02/26(火) 12:11:460430デフォルトの名無しさん
2008/02/26(火) 12:32:22[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] その他の制限:特になし
ド素人な課題で申し訳ないのですがよろしくお願いします。
0431デフォルトの名無しさん
2008/02/26(火) 13:21:29それ本当にC++の授業なのか?
C++の特色のひとつは、Cから格段に進化した文字列操作だぞ
0432デフォルトの名無しさん
2008/02/26(火) 13:31:08つーかそれ、FILE * fp = fopen("IDList.txt", "w")してsprintf(str, ...)をfprintf(fp, ...)にすればいいだけじゃん。
0433デフォルトの名無しさん
2008/02/26(火) 13:55:13C++の授業ではないのですが、C言語の授業の延長の授業で、
環境がC++だったんでそのように書きました、申し訳ありません。
確かにやっていることは++は含んで無いのだと思います。
>>432
ありがとうございます。
"a"にしたら望んでいた物になりました。
0434デフォルトの名無しさん
2008/02/26(火) 16:43:10[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6092.txt
[3] 環境
[3.1] OS: Linux /Windows
[3.2] コンパイラ名とバージョン: (Linux)gcc /(Windows)コマンドプロンプト上でコンパイル
[3.3] 言語: C
[4] 期限: 2月28日中
[5] その他の制限:長いプログラムになっても構いませんので簡単めなプログラムでお願いします。
設問1と設問3は自分で考えて辿り着いた答を書いてます。違っていたら指摘お願いします。
問2のコメント以下は実際に実行時間を計測して考察しろ的なものだと思うのですが、
どうやればいいのかいまいち分からないため簡単にでいいのでどうやればいいのか教えてください。
0435デフォルトの名無しさん
2008/02/26(火) 18:53:38これ問題文そのまま「コピペ」してるか?
0436デフォルトの名無しさん
2008/02/26(火) 18:59:02設問2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6093.c
設問3
NULL: 「これ以上前の文字が存在しない」はOK、「次の文字に移る」は、違う
DEL: 「これ以上後の文字が存在しない」はOK、「全文字の並べ替え終了」は、違う
s1 スタックには下→上に、文字が小→大で積まれる
s2 スタックには下→上に、文字が大→小で積まれる
ので、s1,s2のスタックに有効な文字データが無い状態をチェックするために使用している(番兵)
つまり、2.aの処理の場合にNULL文字がなければ、
s1スタックにデータが無いという状態をチェックする文( if (s1が空) { ... } のような文 ) が必要になるが、
番兵(NULL文字)を用いることにより、その必要がなくなる
(番兵については、wikiでもみてね)
0437400
2008/02/26(火) 20:51:48ありがとうございます。
説明不足で余計なお手数をおかけしてしまい申し訳ありません。
確かに、double では静的確保に成功する配列サイズなのに、
int で同じ添え字の配列を確保しようとすると確かにクラッシュするようです。不思議ですね。
その点は malloc で動的確保することで無事に動作しました。
0438438
2008/02/26(火) 21:23:50#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;
}
0439デフォルトの名無しさん
2008/02/27(水) 00:11:44[2] 問題文(含コード&リンク):
文字頻度と文字の連接頻度をカウントするプログラムを作成せよ。
尚、入力ファイルにhamlet3-1をWebからダウンロードして使い、tsv形式で結果を出力せよ。($./a.out hamlet3-1.txt > hamlet.tsv としてプログラムを実行)
‐処理
・入力ファイルを「読み込みモード」でオープンする
・ファイルの銭湯から1文字ずつ読み込みながら小文字にそろえて、'a'〜'z'の範囲にある場合は以下の処理を行う。
�@'a'〜'z'の各文字g亜出現する頻度を計数する。
�A連続する2文字の連接頻度をa-a,a-b,...z-zまで計数する。
途中にスペース、改行などアルファベットが入った場合は連接していないとする。
・計数結果を標準出力に出力
hamlet3-1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6095.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2008/02/27 23;59迄
[5] その他の制限:特にありません。
よろしくお願いします。
0440デフォルトの名無しさん
2008/02/27(水) 00:17:52[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] その他の制限:使用したアルゴリズムは全て関数化する。
ルンゲクッタ法を使用
どうしてもわからないのですみませんがお願いします。
0441デフォルトの名無しさん
2008/02/27(水) 00:26:00微分方程式を解くのか?
0442デフォルトの名無しさん
2008/02/27(水) 00:32:01そうなんだと思います。
0443デフォルトの名無しさん
2008/02/27(水) 01:23:12[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
が出力されるようにする。
よろしくおねがいします
0444デフォルトの名無しさん
2008/02/27(水) 01:29:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6096.txt
0445デフォルトの名無しさん
2008/02/27(水) 01:31:440446デフォルトの名無しさん
2008/02/27(水) 01:38:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6097.txt
こっちが正しい。
0447デフォルトの名無しさん
2008/02/27(水) 01:44:13#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;
}
0448デフォルトの名無しさん
2008/02/27(水) 01:46:34str〜関数を使えってことかな?
0449デフォルトの名無しさん
2008/02/27(水) 02:15:44ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6098.c
>>444-446
連接の解釈が違うきがする
0450デフォルトの名無しさん
2008/02/27(水) 02:22:55ああああああ!!!
そうか、そういうことか。
0451443
2008/02/27(水) 02:27:24すみません、書き忘れてましたorz
配列でなくポインタででした・・
>>448
strのとこはstrcpyとか使わないでということです。
0452!= 447
2008/02/27(水) 02:48:15bufA[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;
}
0453440
2008/02/27(水) 04:50:45どうすればいいかもまったくわからないです…
どのような解法でもいいのでどなたか本当にお願いします。
0454デフォルトの名無しさん
2008/02/27(水) 10:02:02この温度変化の微分方程式の本質は
dT(t)/dt = a * T(t) + b
という形になるはず。
この解は、微分しても同じ形の関数T(t)が出てくるので、
T(t) = c * e^t
のように、指数関数になる、っていうのまではいいのか?
0455デフォルトの名無しさん
2008/02/27(水) 10:15:33それはよくないんじゃないか?
0456デフォルトの名無しさん
2008/02/27(水) 10:18:02■ このスレッドは過去ログ倉庫に格納されています