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


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

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



1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ]
あなたが解けない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++の宿題を片付けます 97代目
pc11.2ch.net/test/read.cgi/tech/1193150915/

175 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:23:30 ]
[1] 授業単元: 確率論
[2] 問題文:
www.uploda.org/uporg1104561.txt
ここに書きました。
図はこんな感じです。
www.uploda.org/uporg1104531.jpg

[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月10日
[5] その他の制限: 特にありません
わかりにくいかもしれませんがお願いします。

176 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:31:02 ]
>>168
それはもちろん知っているが、問題の一行目には最小化すると書かれている

177 名前:153 mailto:sage [2007/11/10(土) 03:10:07 ]
>>176
このアルゴリズムでは最小化できないらしいので、アルゴリズムのほうを優先するみたいです。
よくみたら『この近似解法で作成せよ』と書いてありました。申し訳ございません。

178 名前:デフォルトの名無しさん [2007/11/10(土) 06:18:17 ]
誰かいますか?

179 名前:デフォルトの名無しさん [2007/11/10(土) 06:25:27 ]
います

180 名前:デフォルトの名無しさん [2007/11/10(土) 06:26:41 ]
イター!!!
お願いします俺の宿題やってくださいませ

181 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:28:07 ]
どれどれ。

182 名前:デフォルトの名無しさん [2007/11/10(土) 06:32:14 ]
ありがとうございます!!!!

えーと
数独の問題をグラフ彩色問題に変換せよ
ってもんだいなんですけど
どうやらこれをアルゴリズムで説明させる問題らしいんです


183 名前:デフォルトの名無しさん [2007/11/10(土) 06:38:08 ]
縦横と正方形に同じ数字が入ってはいけないっていうことだろう
数字をいろと言い換えればいいだけだろう



184 名前:デフォルトの名無しさん [2007/11/10(土) 06:40:27 ]
やっぱそれでいいんですよね!
俺もそれ以外に思い浮かばなくて・・・
数独アルゴリズムの数字を色って書き換えるだけでいいですよね?

185 名前:デフォルトの名無しさん [2007/11/10(土) 06:58:06 ]
解くアルゴリズムは作らないと行けないのか?

186 名前:デフォルトの名無しさん [2007/11/10(土) 07:01:30 ]
16個のヒントの物は作れるか?

最初にヒントとして配置する数字の数は、24〜32個程度が多く、これ以上だと解くのが簡単になる。
逆にそれ以下にするのは作者の技量も必要になってくる。
問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、
対称形の問題では18個(初出・パズル通信ニコリ31号 1990年)、
非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。
ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC

187 名前:デフォルトの名無しさん [2007/11/10(土) 07:05:40 ]
解くアルゴリズムはググッてわかりました
ただ、彩色問題とからめた記述がなかったのでどうしようかとおもいまして・・

188 名前:デフォルトの名無しさん [2007/11/10(土) 07:06:38 ]
方針としては、縦か横か、正方形で可能な形を全て埋めてみるといいとおもう
例えば正方形の可能数は9! 通りある 9カ所埋めてみて縦が平気か調べていく

189 名前:デフォルトの名無しさん [2007/11/10(土) 07:14:21 ]
参考になりました!
こんな朝早くにありがとうございました

190 名前:デフォルトの名無しさん [2007/11/10(土) 07:24:27 ]
最大でも、9*9! とおりしかないから、全配置を決定しておいてから、初期配置を満たすものをサーチすればいいと思う

9 * (9 !) = 3265920だから解けているからどうかを記録するには3MBくらいだ

191 名前:デフォルトの名無しさん [2007/11/10(土) 07:26:18 ]
1行目が 123456789 だとすると、2行目には上の数字はこないから減らせる

192 名前:デフォルトの名無しさん [2007/11/10(土) 07:50:49 ]
1から9の順列を昇順に求めるプログラム

#include <iostream>
using namespace std;
main(){
int a,b,c,d,e,f,g,h,i,chk[9]={1,1,1,1,1,1,1,1,1},N=0;
char **jretu=new char* [9];
for(a=0;a<9;a++) jretu[a]=new char [362880];

for(a=0;a<9;a++){ chk[a]=0;
for(b=0;b<9;b++){ if(chk[b]==0)continue; chk[b]=0;
for(c=0;c<9;c++){ if(chk[c]==0)continue; chk[c]=0;
for(d=0;d<9;d++){ if(chk[d]==0)continue; chk[d]=0;
for(e=0;e<9;e++){ if(chk[e]==0)continue; chk[e]=0;
for(f=0;f<9;f++){ if(chk[f]==0)continue; chk[f]=0;
for(g=0;g<9;g++){ if(chk[g]==0)continue; chk[g]=0;
for(h=0;h<9;h++){ if(chk[h]==0)continue; chk[h]=0;
for(i=0;i<9;i++){ if(chk[i]==0)continue;
jretu[0][N]=a;jretu[1][N]=b;jretu[2][N]=c;jretu[3][N]=d;
jretu[4][N]=e;jretu[5][N]=f;jretu[6][N]=g;jretu[7][N]=h;jretu[8][N]=i;
N++;
}chk[h]=1;
}chk[g]=1;
}chk[f]=1;
}chk[e]=1;
}chk[d]=1;
}chk[c]=1;
}chk[b]=1;
}chk[a]=1;
}cout<<N;}

193 名前:デフォルトの名無しさん [2007/11/10(土) 08:03:31 ]
32bit変数に、3bitずつデータ入れていけば列に同じ数字があるかどうかはXOR演算で出来るな



194 名前:デフォルトの名無しさん [2007/11/10(土) 08:05:36 ]
やっぱり駄目だ 結局9回のループか演算(ifなど)がいるな

195 名前:デフォルトの名無しさん [2007/11/10(土) 08:09:10 ]
123456789
251498736
987654321
に縦方向に同一文字があるかどうかはどう判定する?

196 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 08:58:30 ]
>>182
演習問題1は、
>数独(ナンバープレイス) をグラフ彩色問題に変換せよ
だからアルゴリズムで説明させるってどういう意味?

>(a) あいているマスに1〜9 までのどれかの数字を入れる
>(b) 縦・横の各列および太線で囲まれた3 × 3 のブロックに同じ数字が入ってはいけない

(b)の定義を以下のように読み替える。
(1)3×3の小ブロック内のマスは全て異なる数字であること
(2)あるマスに対して、同じx、yを持つマスは全て異なる数字であること

特定のマス集合に所属するマスが全て異なる数字である事は、
任意のマスを一つ取り出した場合に、そのマス以外の他のマス集合に所属するマスと数字が異なるということと同じである。

これをグラフで表せば、それぞれのマスをグラフの頂点とした完全グラフにおいて、
任意の辺においてその両端の数値が異なることと同義である。
これはグラフ彩色問題の定義である。

というか、お前>>166だろ?演習問題2ぐらい自分でやれよ。

197 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:06:46 ]
ついでに、SEQまではとりあえずやってみて秋田。

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

DSATURは誰か頼む。

198 名前:デフォルトの名無しさん [2007/11/10(土) 09:11:44 ]
数独で16個の初期配置で解けるか調べるプログラム


199 名前:デフォルトの名無しさん [2007/11/10(土) 09:12:24 ]
問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。
ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC

200 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:21:51 ]
>>198
「問題として成立する」と「解けるか」は意味が違うだろ、常識的に考えて。

なんなら初期配置0個でも解けるぞ。

201 名前:198 [2007/11/10(土) 09:51:13 ]
>>200 解ける = 配置が一意的に求まる 解けている全配置を求めるプログラム書いたが 二つ目が出てこない 時間がかかりすぎる

#include <iostream>
using namespace std;
main(){
int G[9][9],R[9][9],S[9][9];
int x,y[81],m,n,l,d,cnt;

for(n=0;n<81;n++)y[n]=0;
for(m=0;m<9;m++)for(n=0;n<9;n++)G[m][n]=R[m][n]=S[m][n]=1;
d=cnt=0;

for(;;){
x=y[d]; m=d/9; n=d%9; l= 3*(m/3) + n/3;
if( G[m][x]+R[n][x]+S[l][x]==3 ){
if(d<80){G[m][x]=R[n][x]=S[l][x]=0; d++; y[d]=0;continue;}
cnt++;for(int k=0;k<81;k++){if(k%9==0)cout<<endl;cout<<y[k]<<" ";};d--;}

ST:
if(y[d]<8)y[d]++;
else{
if(d==0){cout<<cnt;return 0;}
d--;
x=y[d]; m=d/9; n=d%9; l= 3*(m/3) + n/3;
G[m][x]=R[n][x]=S[l][x]=1;
goto ST;}
}}

202 名前:198 [2007/11/10(土) 10:08:16 ]
回転や反転の同一視、数字の同一視などを考慮しても全解答を求めるのは困難そうだ
もし全配置が決定できれば、初期配置に対してそれを含む解答がただ一つがどうか調べるだけだ

203 名前:デフォルトの名無しさん [2007/11/10(土) 11:03:59 ]
*****
****
***
**
*



204 名前:203 [2007/11/10(土) 11:04:43 ]
投稿ミスですorz

205 名前:203 [2007/11/10(土) 11:14:23 ]
下の図形をfor文で作るのですが・・
よくわかりませんorz
*****
****
 ***
  **
  *

他スレでヒント貰ったのですが・・
俺の頭じゃ無理だったみたいです・・

206 名前:203 [2007/11/10(土) 11:15:26 ]
なんだか一個づれてますが
ピラミッド型です。。本当にすみません

207 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:24:40 ]
>>203
ピラミッドを作るなら各段'*'の数は奇数のような気が
偶数の段があると上手くいかないような
*******
 *****
  ***
   *

208 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:30:24 ]
>>205
#include <stdio.h>
int main()
{
int i,j;
for(i=5;i>0;i--){
for(j=0;j<5-i;j++)
printf(" ");
for(j=0;j<i;j++)
printf("*");
printf("\n");
}
return 0;
}

209 名前:203 [2007/11/10(土) 11:30:59 ]
宿題見る限りでは偶数も入ってるんですょね・・
多少いびつな形かもしれません

210 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:36:05 ]
>>209
すると、問題が不明瞭だな。「ピラミッド型」が未定義だ。
これまでの回答で満足できないなら問題をきちんと確認してこい。

211 名前:203 [2007/11/10(土) 11:37:17 ]
>208
ぉぉーー どうもです;;

212 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:00:34 ]
>>175
ですけどこれじゃあちょっとわかりにくいので
50回移動すると考えれば、考えやすいのかなと。

無制限にこの確率で移動してendにたどり着くことなんて無限にあるんじゃないかと
おもってしまった。

213 名前:デフォルトの名無しさん [2007/11/10(土) 12:55:04 ]
0は空マス これ何秒で解ける?

000 000 061
000 200 007
000 940 000
087 000 000
006 000 400
000 000 230
000 078 000
200 006 000
490 000 000



214 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:40:53 ]
542 783 961
839 261 547
761 945 823
387 524 619
126 839 475
954 617 238
615 478 392
278 396 154
493 152 786
1秒もかからんわ

215 名前:デフォルトの名無しさん [2007/11/10(土) 18:09:05 ]
[1] 授業単元:C言語
[2] 元のファイルslist.c: www.uploda.org/uporg1105430.txt.html
自分で途中まで作ったやつ:www.uploda.org/uporg1105431.txt.html
[3] 環境
 [3.1] OS:Linux (家ではWindowsでMinGW+MSYS+XEmacs)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月14日
[5] その他の制限:特にないです
[問題文]
課題:slist.c の改良
1.print_person関数を単方向リストを辿るように変更せよ。(自分なりに解決済み)
2.次の機能を実装せよ。
 ・標準入力から一行ずつ名前と年齢を読み込む
 ・名前と年齢はカンマ(,)で区切る
  ・"foo,19"など
 ・単方向リストに格納して出力
3.その他(授業でヒント「単方向リストの反転」が与えられ、自分なりに解決済み)
[問題文終わり]
自分で作った方はperson_input()の中が全然できてません。
次に続きます。

216 名前:215 [2007/11/10(土) 18:11:48 ]
構造体に名前と年齢を標準入力して、単方向リストで出力をするプログラムを考えています。
標準入力の際に名前と年齢は「tanaka,20」のように一行にするよう指示されています。
ヒントとして以下が与えられました。

char buf[256] ;
char *name;
int age;

while (fgets (buf, sizeof(buf), stdin))
{
char *sep = rindex (buf, '\n');
if (!sep)
continue;
*sep = '\0';
sep = rindex (sep, ',');
if (!sep)
continue;
*sep = '\0';
name = buf;
age = atoi (++sep);
}
また使用している構造体pは
struct person {
char *name;
int age;
struct person *next;
};
です。このヒントを用いて一行の標準入力から適切に構造体に入れ、
単方向リストに格納するにはどうしたらいいでしょうか。
while文の中がややこしくて終了の仕方も分からないのでよろしくお願いします。

217 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:49:41 ]
>>212
無理

218 名前:163 mailto:sage [2007/11/10(土) 18:53:17 ]
>>197
ありがとうございます。
あと(2)のほうを、どなたかお願いします。

219 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:04:07 ]
誰かいますか?


220 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:14:21 ]
公にはいないことになっている

221 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:25:26 ]
数独ソルバー
www.ffconsultancy.com/dotnet/fsharp/sudoku/index.html

222 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:41:35 ]
>>192
char **jretu=new char* [9];
for(a=0;a<9;a++) jretu[a]=new char [362880];
となっているが
char jretu[9][362880];
とすればいいだけじゃないか?
というかこれは一体何をするプログラムなんだ。


223 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:07:51 ]
>char jretu[9][362880];
>とすればいいだけじゃないか?
やってみろw



224 名前:デフォルトの名無しさん [2007/11/10(土) 21:24:19 ]
等比数列の和を求めるソースを教えてください
初項a,公比r、項数nとする

225 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:26:13 ]
>>224
無能でも無能なりにテンプレを埋めてください

226 名前:デフォルトの名無しさん [2007/11/10(土) 21:32:28 ]
224です
教えてください(涙)

227 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:32:58 ]
>>225
折角このオレでも答えられそうな問題なのに、そうつれなくするなよ

>>224
>>1 に質問(しつもん)テンプレっていうのが書(か)いてあるから、よく読(よ)むんだよ
読(よ)めない漢字(かんじ)は辞書(じしょ)を引(ひ)くといいよ

228 名前:aho mailto:sage [2007/11/10(土) 21:34:14 ]
>>215
struct person{
char name[20]; //char*では'q'の影響を受けるため
int age;
struct person* next;
};

struct person* addList(char* name, int age, struct person* head){
struct person* list;
/* メモリ確保 */
if((list = (struct person*)malloc(sizeof(struct person))) == NULL){
printf("malloc error!\n");
return NULL;
}
strcpy(list->name, name);
list->age = age;
list->next = head;
head = list;

return head;
}


229 名前:aho mailto:sage [2007/11/10(土) 21:35:14 ]
>>228
printf("type 'q' to exit\n");
while(fgets(buf, sizeof(buf), stdin)){

/* 改行コードを取り除く */
char* sep = rindex(buf,'\n');
if(!sep)
continue;
*sep = '\0';
if(!strcmp(buf, "q"))
break;
/* カンマまでをbufに格納 */
sep = rindex(buf, ',');
if(!sep)
continue;
*sep = '\0';
name = buf;
age = atoi(++sep);

head = addList(name, age, head);
}
何かあれば言ってちゃぶだい!

230 名前:デフォルトの名無しさん [2007/11/10(土) 21:36:29 ]
数独で16個の初期配置で解けるか調べるプログラム

問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。
ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC

231 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:43:01 ]
>>226
#!/usr/local/perl
$a = <STDIN>;$r = <STDIN>;$n = <STDIN>;
print $a*$n if($r == 1);print $a*(1-$r**$n)/(1-$r) if($r != 1);


232 名前:デフォルトの名無しさん [2007/11/10(土) 21:46:45 ]
質問テンプレってどこにあるんですか?
直接とべるようにしてくれたらうれしいです

233 名前:デフォルトの名無しさん [2007/11/10(土) 21:52:50 ]
等比数列の初項aと公比rと項数nをキーボードから入力して、それらを画面に表示して最後にそれらの総和を表示する。
ただし、a,rは実数とする



234 名前:215 [2007/11/10(土) 21:55:25 ]
>>228
struct person{
char name[20]; //char*では'q'の影響を受けるため
int age;
struct person* next;
};
これはプログラム最初の6行目を書き直せということでしょうか?

addList()が何をしててmain内でどうすればいいのか分かりません。

235 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:09:21 ]
宿題を書き込んだ人がこのスレの流れをみてるんだけど
難易度高いやつからくそ低い宿題まで書き込まれるんですね。。。

236 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:14:57 ]
>>232
俺が適当にテンプレを埋めて置く、間違ってる所は指摘しろ
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
等比数列の初項aと公比rと項数nをキーボードから入力して、それらを画面に表示して最後にそれらの総和を表示する。
ただし、a,rは実数とする
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: BCC
 [3.3] 言語: C
[4] 期限: 2007年11月11日零時零分零秒
[5] その他の制限: 普通に作ってってね。簡単すぎるからって
ふざけて物凄いコード書かないでね。

237 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:18:05 ]
>>236
#include<stdio.h>

int main(void){
double a, r, an, sum;
int i, n;

printf("等比数列の初項 a (実数) を入力して下さい : ");
scanf("%lf", &a);
printf("等比数列の公比 r (実数) を入力して下さい : ");
scanf("%lf", &r);
printf("等比数列の項数 n (整数) を入力して下さい : ");
scanf("%d", &n);

printf("a=%g r=%g n=%d\n", a, r, n);

an=a;sum=0.0;
for(i=0;i<n;i++){
sum+=an;
an*=r;
}
printf("sum=%g\n", sum);

return 0;
}

238 名前:aho mailto:sage [2007/11/10(土) 22:20:42 ]
>>234
addList()については以下のページを参照。わかりやすくかいてある。
www9.plala.or.jp/sgwr-t/c/sec15-5.html

--構造体のメンバnameの型変更について--
while()内にif(!strcmp(buf, "q"))
ていう部分があるでしょ?
そこはbufが"q"だったらループを抜けるってこと。
ここまではOKっすよね?

この後の文の
name = buf;
が厄介なのである。
nameの先頭ポインタにbufの先頭ポインタを代入している。
これをaddList()内でstrcpyの代わりにやることが出来ない。
nameはbufのポインタを参照しているから、bufが変わればnameも一緒に変わってしまう。

説明下手でごめんちゃい。

239 名前:デフォルトの名無しさん [2007/11/10(土) 22:20:43 ]
巡回セールス問題を解くプログラムを順列を用いて書きたいのですけど
for(i = 0; i < n; i++) used[i]=NO;
perm(0);

return(0);
}

void perm(int d)
{
int i,j;
int b[MAXN];
int s = adj[a[0]][a[n-1]];

if(d == n){
for(i = 0; i < n-1; i++){
s+=adj[a[i]][a[i+1]];
}
}

else {
for (i = 0; i < n; i++) {
if (used[i] == NO) {
a[d] = i;
used[i] = YES;
perm(d + 1);
used[i] = NO;
}
}
}
}
これだけだとただの列挙になってしまいます
最小値だけをだすにはどうしたらいいでしょうか?

240 名前:aho mailto:sage [2007/11/10(土) 22:22:15 ]
>>235
その通り。
その中から暇人達がやりたい問題を選んでやるわけなのだよ、明智君。


241 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:26:14 ]
協力お願いします。
wwwww.2ch.net/test/read.cgi/news4vip/1194617474/

242 名前:215 mailto:sage [2007/11/10(土) 22:29:06 ]
>>238さん感謝です。
まだよく分かっていませんが考えてみます。
分からなかったらまた質問したいので215のリンクを貼りなおしました。

先生の元データ:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5240.txt
自分の途中データ:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5241.txt

たぶんまた来ますがよろしくお願いします。

243 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:29:53 ]
やりたい問題だけなのか。。。
175なんて理解不能な問題だしたおれってアホだな。。。
上の部分だけならなんとか計算できるレベルなのに
下にもあってしかも上と移動するなんてありえないな。。。

どう書いていけばいいのかわからないんだよね。。。



244 名前:aho mailto:sage [2007/11/10(土) 22:32:52 ]
>>175 >>243
もう一度upしてくれ!
ファイルが見つからん!

245 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:33:01 ]
>>175 なんて問題すら見えないんだが…
余程のエスパーでないと解きようも無い

246 名前:175 mailto:sage [2007/11/10(土) 22:52:39 ]
[1] 授業単元: 確率論
[2] 問題文:
toku.xdisc.net/cgi/up/vcc/nm12581.txt
ここに書きました。
移動50回するものとします。
図はこんな感じです。
toku.xdisc.net/cgi/up/vcc/nm12580.jpg

[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月11日
[5] その他の制限:
図の上の1,2,3を構造体配列struct gstate upnum[3]
図の下の10,11を構造体配列struct gstate downum[2]として。
構造体メンバnumに1,2,3,10,11をいれるように。

お願いします。







247 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:05:10 ]
>>246
gstateの定義は自由?

248 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:22:28 ]
>>246
なんだ 簡単じゃん

249 名前:175 mailto:sage [2007/11/10(土) 23:26:17 ]
自由でいいです。

まー図の状態数をもっと多くしたかったんですけど。

toku.xdisc.net/cgi/up/vcc/nm12583.jpg
こういう感じが本番なんですけどね。

250 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:27:36 ]
増えただけで考え方は全く同じ

251 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:34:24 ]
何かこれ有効グラフの最大流と最小カット問題みたいだな

252 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:40:15 ]
>>246
行列につっこめれば、ただの積ですむのに……

253 名前:175 mailto:sage [2007/11/10(土) 23:42:31 ]
上だけなら行列につっこめばいんだけど
下が邪魔なんですよ。



254 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:48:54 ]
>>253
いや、かわんないだろ?

255 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:50:15 ]
>>253
なぜ分けて考える

256 名前: ◆54R0MOHTQo mailto:sage [2007/11/10(土) 23:58:08 ]
[1] 授業単元:データ構造論
[2] 問題文(含コード&リンク):

フリーリストを用いた任意精度整数の実現

かなり長くなるのでアップロードしました
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5242.txt

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc 3.3
 [3.3] 言語: C
[4] 期限: 11/11 24:00
[5] その他の制限: 特になし

自分の頭では1日かかっても全く分かりませんでした・・・
よろしくお願いします

257 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:11:22 ]
>>246
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5243.txt

上でも書いたけど、行列で組んだ方がシンプル。ま、いっかってことで。

258 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:13:05 ]
>>246
構造体の名前は変更しておいて

使い方は data.txt をリダイレクトするだけ
ans246 < data.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5244.lzh

259 名前:175 mailto:sage [2007/11/11(日) 00:21:33 ]
>>257
>>258
ありがとうgございます

260 名前:215 [2007/11/11(日) 00:33:21 ]
>>215-216で質問した者です。
>>228>>238のahoさんによるヒントで書き直してみましたがうまくいきません。

うちのコンパイラに問題があるのかもしれません。
というのも>>238に紹介されたサイトの長いプログラムをコンパイルしてもうまく
実行されないからです。

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

作ったプログラムがうまくできているか確認お願いします。
でもたぶん間違っているので訂正もお願いします。
(もしahoさんがいれば話が早いかもしれません。)

261 名前:215 mailto:sage [2007/11/11(日) 00:36:10 ]
ちなみに>>215はリンク切れで>>242にもう一度あげています。

262 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:57:13 ]
246ですけどもうひとつ付け足しでいいですかね?

263 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:00:52 ]
>>262
では断る



264 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:16:00 ]
グラフって楽しいね

265 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:17:11 ]
>>260
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5246.txt

あ、めんどくさくてfreeの方直してなかった。ま、いっか。

266 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:20:31 ]
>>256
でんつーだーい
BigNumberとBigNumberNodeの両方でフリーリスト使うようにするとか書かなきゃ
これじゃどっちかだけフリーリストを使って書くかもよ?
なんにせよ全部の問題やるとかなり長いので明日までにはやってられないと思うけど

つかフリーリストの構造がわからないんじゃあフリーリスト使わないで書いてみればいいのに

267 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:21:24 ]
>>266
ちょwww またでんつーだーいかよwwww

268 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:22:22 ]
[1] 授業単元: 確率論
[2] 問題文:
ここに書きました。
toku.xdisc.net/cgi/up/vcc/nm12605.jpg.html

図はこうです。
toku.xdisc.net/cgi/up/vcc/nm12604.txt.html

[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月12日
[5] その他の制限:
A,B,C,Dはそれぞれファイルとして扱う
例えばAには 0.6 0.4の2つの数値だけ書かれてあり、その数値を読み取るようにする。
1と1、0と0が一致したらその状態同士、3つ選択肢ができることになるので
右の確率を半分にわけて0.6 0.2 0.2として
とどまる確率0.6 上の次の状態に移動する確率0.2 下のつながった状態に移動
する確率が0.2となります。
下も同様に。



269 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:25:55 ]
>>267
今回は5%3年生のま科だな
ちょっと上は7%4粘性のか科だったはず
正直お前らもうちょっと頑張れと

270 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:25:58 ]
>>268
つーか、もとの問題文でも上と下は別要素で扱えってなってるの?
激しくクソなんだが。

271 名前:215 [2007/11/11(日) 01:30:41 ]
>>265
ありがとうございます!
うちのコンパイラ(msys)では実行されませんでしたが学校でコンパイルしてみます。
person_free()微妙に変わってましたがさらに手を加えたほうがいいですか?

272 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:32:49 ]
>>271
^Zって書いてるけど、ctrl+Dで代用。

Windows用の豆知識な。

273 名前: ◆wFVK8h9bmM [2007/11/11(日) 01:33:11 ]
[1] 授業単元: 関数、ポインタ変数
[2] 問題文(含コード&リンク):
−− 断熱圧縮過程における温度・圧力の計算 −−
 初期温度 T0、初期体積 V0、初期圧力 P0 の空気を、
シンリダー中で圧縮比 E (= V0/V) にまで断熱圧縮するときの体積 V、温度 T、圧力 P を計算する関数をつくる。
1) 関数では、初期温度、初期体積、初期圧力と圧縮比を与え、この条件における温度、圧力、体積を求める。
体積は戻り値とせよ(したがって、温度と圧力はポインター変数となる)。
2) 上記関数を用いて、初期値 T0 = 273.15 °K、V0 = 1.0 m^3、P0= 9.80×10^4 P に対する、E=1,2,3,4,5 における値を出力せよ。
3) 計算結果を次のように表示する。

 HomeWork5  19.11.24    K3B55  山田太郎
   ----- 計算条件 -----
初期体積 V0 = 1.00 (m^3)
初期温度 T0 = 273.15 (K)
初期圧力 P0 = 9.80×10^4 (P)
   ----- 状態変化(計算結果) -----
圧縮比 E 体積 V 温度 T 圧力 P
1. 1000.00 273.15 98000.
2. 500.00 360.42 258623.
3. 333.33 423.89 456242.
4. 250.00 475.58 682511.
5. 200.00 519.98 932790.
↓続く



274 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:33:25 ]
上と下で区別しないといけないので。
たとえば
上がABBAC と 下がDABCの計算とか
上がBA と 下がADACADBCの計算をできるようにしたいんで。

275 名前: ◆wFVK8h9bmM [2007/11/11(日) 01:33:41 ]
参考: 空気を断熱圧縮するときの体積 V、圧力 P と絶対温度 T の間には、PVκ=一定、PV=RT (R:気体定数) の関係がある。
これより、V=V0/E、T=T0Eκ-1、P=P0Eκ の関係が得られる。ただし、κは比熱比 (= cp/cv) であり、その値は 1.4 である

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:H19年11月5日
[5] その他の制限:関数、ポインタ変数を使って作るそうです。

よろしくお願いします。







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

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

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