C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/18(水) 03:35:45【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 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
【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0232デフォルトの名無しさん
2006/01/20(金) 03:10:09#include <stdio.h>
int kaijo(int n)
{
if (n==1)
return 1;
return kaijo(n-1)*n;
}
int main()
{
int n,ans;
scanf("%d", &n);
ans=kaijo(n);
printf("%d\n", ans);
return 0;
}
0233名無し
2006/01/20(金) 03:16:49[2] 問題文:[入力]32個の異なる二桁の自然数[操作]32個の自然数の中で最大値(MAX)と最小値(MIN)を求める。
[出力]入力データ、最大値(MAX)と最小値(MIN)
[説明]入力された32個のデータを配列に記憶。記憶された32個のデータを集合と考え、配列の添数(インデックス index) m,n(m<nを仮定)を
使って配列のm番目からn番目までのデータを含む部分集合は添数を使って(m,n)で表せる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
0234デフォルトの名無しさん
2006/01/20(金) 03:21:03求めるっつーことはソートの関数作れって事でしょ
バブルソートなんかは簡単だから自分で作ってみなさいな
0235デフォルトの名無しさん
2006/01/20(金) 03:24:08単元が分割統治と再帰だからソートを実装するのが
求められてるのだとしたら、バブルじゃなく
クイック・マージが妥当だろ
0236デフォルトの名無しさん
2006/01/20(金) 03:26:230237デフォルトの名無しさん
2006/01/20(金) 03:35:470238デフォルトの名無しさん
2006/01/20(金) 03:41:32オーバーフローじゃね?
確か16bit整数型だと8!でオーバーフロー起こす
もっともそれでも7!がダメな理由が分からんが
それにlongや(C99なら)long long使えばもっと伸びるしな
0239デフォルトの名無しさん
2006/01/20(金) 10:59:270240デフォルトの名無しさん
2006/01/20(金) 11:50:030241デフォルトの名無しさん
2006/01/20(金) 12:30:49[2] 問題文
学生20人の成績を入力すると、上位5人の成績・全体の平均点・
最低点を出力するプログラムを作成せよ。
[3] 環境
[3.1] WindowsXP
[3.3] C言語
[4] 期限: 1月22日午前10時
[5] その他の制限: 初心者なのでできるだけ簡単な方法でお願いします。
理解できるのは、if,for,while,配列,関数がかろうじて少し…といった
レベルです。
どなたかよろしくお願いします!!
0242デフォルトの名無しさん
2006/01/20(金) 12:44:19[2] 問題文:符号なし16進数を文字列s[]に変換する関数ItoH(n,s)を作りなさい。
nを16で割った余りが16進数の一番低位の数となります。これを'0'〜'9'または'A'〜'F'
の文字に変換します。次に16で割った商を新しいnとして上の変換を繰り返していきます。
できあがった文字列は、逆順に並んでいますので、文字列の順序を入れ替えていきます。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 一時間以内でお願いします。
[5]<string.h>を使ってください。
おながいします
0243デフォルトの名無しさん
2006/01/20(金) 12:45:58(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<5;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("平均点:%f点\n",s);
return 0;
}
0244デフォルトの名無しさん
2006/01/20(金) 13:06:31さ〜て間に合うかな(・∀・)ニヤニヤ
0245デフォルトの名無しさん
2006/01/20(金) 13:09:200246デフォルトの名無しさん
2006/01/20(金) 13:16:47<string.h>ってどこに使うんだ?
0247デフォルトの名無しさん
2006/01/20(金) 13:17:160248デフォルトの名無しさん
2006/01/20(金) 13:20:03ッシ!!
0249デフォルトの名無しさん
2006/01/20(金) 13:23:04無理やり使えないことはないが何か違う気がする
0250デフォルトの名無しさん
2006/01/20(金) 13:25:24string.h使うならC++まで拡張して逆方向反復子が使えて便利だったのに
0251デフォルトの名無しさん
2006/01/20(金) 13:26:050252デフォルトの名無しさん
2006/01/20(金) 13:36:360253241
2006/01/20(金) 13:38:40素早い回答ありがとうございます!
もうお返事あるとは思わず少し感動…。
なのですが、これだと上位5人の成績表示されないと思うのですが…
どう直せばよいのかも分からずorz
すみません、どなたかお願いします!!
0254デフォルトの名無しさん
2006/01/20(金) 13:44:21あれでおkだよ。ソートしてんじゃん。
0255デフォルトの名無しさん
2006/01/20(金) 13:45:06(゚Д゚)ノ 悪い最低点忘れてたw
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<19;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
puts("上位点");
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("最低点:%d\n",ten[19]);
printf("平均点:%f点\n",s);
return 0;
}
0256デフォルトの名無しさん
2006/01/20(金) 13:46:17そろそろ行くか
#include<stdio.h>
#include<string.h>
void ItoH(int,char*);
void ItoH(int n,char *s){
char str[]="0123456789ABCDEF";
int i=0;
do{
s[i] = str[n%16];
n = n/16;
i++;
}while(n>0);
s[i] = '\0';
strrev(s);
}
int main(void){
char s[256];
int n;
printf("数字入力:");
scanf("%d",&n);
ItoH(n,s);
printf("%s\n",s);
return 0;
}
0257デフォルトの名無しさん
2006/01/20(金) 14:45:06[2] 問題文(含コード&リンク):
ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。
:実行例:
a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
0258デフォルトの名無しさん
2006/01/20(金) 14:54:18ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
0259256
2006/01/20(金) 15:11:53これをいじれば出来ると思うのですが上手くいきません。
お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
0260デフォルトの名無しさん
2006/01/20(金) 15:19:390261デフォルトの名無しさん
2006/01/20(金) 15:21:00なんで単発スレ立ててるんだよ
もうくるな
0262デフォルトの名無しさん
2006/01/20(金) 15:24:01[2] 問題文(含コード&リンク):
ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。
:実行例:
a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
ここまで作りましたhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
0263デフォルトの名無しさん
2006/01/20(金) 15:24:470264デフォルトの名無しさん
2006/01/20(金) 15:25:340265デフォルトの名無しさん
2006/01/20(金) 15:26:280266デフォルトの名無しさん
2006/01/20(金) 15:28:380267デフォルトの名無しさん
2006/01/20(金) 15:29:03[2] 問題文(含コード&リンク): 文字列sの中の異なった文字の数を(種類)を数える関数SuteStr(s,t)を作りなさい。
文字列t[]には文字の種類を入れることにします。
<ヒント>
文字列sの要素*sを1つずつチェックしていきます。t[]には、今まで出てきた文字の種類を
入れておきます。文字*sと同じ文字がt[]の中になかったら、t[]の後に追加します。文字列
s[]の中に'\0'が出てくるまで繰り返します。
<実行例>
Input String: C-language
Different char number is 8
Output String:C-langue
[3] 環境
[3.1] OS: mac osX 10.4.4
[3.2] コンパイラ名とバージョン: X code2.0
[3.3] 言語: C言語
[4] 期限: 今日の五時まで
[5] その他の制限: なし
もう無理。教えてください。
0268デフォルトの名無しさん
2006/01/20(金) 15:29:22できないとはっきり言え
0269デフォルトの名無しさん
2006/01/20(金) 15:30:33だから 意味が分らない=できない
のつもり^^;
0270デフォルトの名無しさん
2006/01/20(金) 15:30:380271デフォルトの名無しさん
2006/01/20(金) 15:32:37英数字だけ?
それとも2バイト文字も含む訳?
0272デフォルトの名無しさん
2006/01/20(金) 15:33:15>>271::>>262 → >>267
0273デフォルトの名無しさん
2006/01/20(金) 15:39:34int count(char *s)
{
int table[256] = {0};
int i, sum = 0;
for (; *s; s++)
table[(unsigned char) *s]++;
for (i = 0; i < 256; i++)
if (table[i])
sum++;
return sum;
}
0274デフォルトの名無しさん
2006/01/20(金) 15:40:38前スレで作ってもらったのは無視?
ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
0275デフォルトの名無しさん
2006/01/20(金) 15:42:45できない
これでええか?
0276デフォルトの名無しさん
2006/01/20(金) 15:57:39int a(char *b) { int c[256] = {0}, d = 0; for (; *b; b++) if (!c[*(unsigned char *) b]++) d++; return d; }
0277デフォルトの名無しさん
2006/01/20(金) 15:59:110278デフォルトの名無しさん
2006/01/20(金) 16:07:48int SuteStr(const char *s, char *t)
{
int table[256] = {0};
int count = 0;
for (; *s; s++) {
if (table[*(const unsigned char *) s]++ == 0) {
*t++ = *s;
count++;
}
}
*t = '\0';
return count;
}
0279デフォルトの名無しさん
2006/01/20(金) 16:15:35char配列をqsortして
値が大きくなったらカウンターの数をインクリメントするってのは駄目?
0280デフォルトの名無しさん
2006/01/20(金) 16:17:12今携帯なんでw
0281デフォルトの名無しさん
2006/01/20(金) 16:19:19有りだろ
むしろそっちの方がわかりやすくね?
0282デフォルトの名無しさん
2006/01/20(金) 16:19:420283デフォルトの名無しさん
2006/01/20(金) 16:21:230284デフォルトの名無しさん
2006/01/20(金) 16:23:380285デフォルトの名無しさん
2006/01/20(金) 16:42:09ところで、ときどきVisualC++でっていう指定があるけど、
学校のコンピュータに入ってんのかな?
0286デフォルトの名無しさん
2006/01/20(金) 16:47:12俺が教官でも最低限、自分の担当する言語の宿題スレは確認するな
VC++なんて入れたらとんでもない金掛かると思うがな
まぁ入ってるところもあるんじゃねーの
俺の所はおそらくずっとLinux(GCC)だろうが
0287デフォルトの名無しさん
2006/01/20(金) 16:52:30gcc,g++,borland c++だったら、ただだから
たいていの教育機関にはこれらが入ってると思う。
てか、初心者はプログラムの本質学ぶのが目的だから
vc使わなくてもいいような気もする・・・
0288デフォルトの名無しさん
2006/01/20(金) 16:52:52#incude <stdio.h>
#define LOW 3 /* 行数 */
#define COLUMN LOW /* 列数 */
int main(){int i,j,k;
double A[LOW][COLUMN + 1]={{3,2,1,10},{2,5,2,18},{1,4,1,12}};
double d;
double x[3] = {0,0,0}; /* 答えを入れる */
double b[3] = {0,0,0}; /* 式(6)で使う */
double s = 0; /* 0で初期化 */
/* 【前進消去】 */
for ( j=___A___; j < ___B___ ; j++ ){d = ___C___;
for ( k = 0; k <= COLUMN; k++ ){___D___; }}}
/* b=(b1,b2,b3)をつくる */
for ( i=0 ; i<LOW ; i++ ){b[i] = A[i][3];}
/* 【後退代入】 */
for ( i=LOW-1; i>= 0 ; i-- ){s = 0;
for ( k = i+1; k < COLUMN; k++ ){ /* 式(6)Σを計算 */
___E___; }
x[i] = ___F___; /* 式(6)のxを計算 */ }
for ( i=0 ; i<LOW ; i++ ){ /* 変形した行列の表示 */
printf ("%d: %lf %lf %lf\n", i, A[i][0],A[i][1],A[i][2], A[i][3]); }
printf ("X = (%lf %lf %lf)^T\n", x[0], x[1], x[2]);
return 0;}
解答がx1=(1,2,3)となるように(A)(B)(C)(D)(E)(F)をもとめよ
[3.3] 言語: C言語
[4] 期限: 一時間
0289デフォルトの名無しさん
2006/01/20(金) 16:58:45うちの大学は全てのPCにVS.NETが入ってる
しかも授業ではCPadを使う
0290デフォルトの名無しさん
2006/01/20(金) 17:01:24ちょwww
どこの大学?
うち国立だけど、pascal、gcc、lisp、prologなんか入ってるOTZ
0291デフォルトの名無しさん
2006/01/20(金) 17:03:420292デフォルトの名無しさん
2006/01/20(金) 17:06:04むしろ初心者にVCなんて使わせたら、悪影響な気がするがな
VCの補助機能は確かに便利だが、純粋にプログラミングの
本質的な部分を覚えるのにはかえって邪魔になる
>>290
俺も国立だが、gpc/gcc/g++/csccなんかが入ってるな
0293デフォルトの名無しさん
2006/01/20(金) 17:14:380294デフォルトの名無しさん
2006/01/20(金) 17:17:350295デフォルトの名無しさん
2006/01/20(金) 17:20:24コンソールアプリケーションのトレースができたりする。
0296デフォルトの名無しさん
2006/01/20(金) 17:22:25携帯からの書き込みですのでコピペできませんでした
C言語
期限 今日の19時頃まで
問い 整列済みデータを二分木で表現
整列済みデータは乱数を発生させて自分でソート って感じで…
もしできたら
二分木から指定した値を検索するプログラムも…
ょろしくです(>_<)
0297デフォルトの名無しさん
2006/01/20(金) 17:42:340298デフォルトの名無しさん
2006/01/20(金) 17:58:13地元の私立大学
偏差値は低いが金は有り余ってる
0299デフォルトの名無しさん
2006/01/20(金) 18:11:220300デフォルトの名無しさん
2006/01/20(金) 18:34:20っていうか、夏休みが終わって学校に行ってみたら100台くらいのPCがPen4 3.2G、メモリ768MB、WinXPに総入れ替えしてあったりしたし
0301デフォルトの名無しさん
2006/01/20(金) 19:21:38> VC だと、ヘッダファイルの変さを我慢すると、標準入出力を使う
> コンソールアプリケーションのトレースができたりする。
それってgdbとかでは出来ないの?
0302デフォルトの名無しさん
2006/01/20(金) 19:23:56gdb ってエディタと連動してたっけ?
0303デフォルトの名無しさん
2006/01/20(金) 19:30:19えらく豪勢なPCだな・・・('A`)
俺の所はDELLのPen4(2GHz程度っぽい)に入ってたXPをわざわざ消して
VineLinux入れてある
まぁ開発用途で使う俺らにとってはXPより使いやすいんだがな
0304デフォルトの名無しさん
2006/01/20(金) 19:31:16emacsなら可。 よく知らんがリモートデバッグ機能使えば、いろいろできるかもしれん。
>296
二分探索木の挿入とトラバース、探索だな。
0305デフォルトの名無しさん
2006/01/20(金) 21:01:03[2] 問題文(含コード&リンク):WindowsXPでデスクトップ画面を左右反転させるプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC++
[3.3] 言語: C++
[4] 期限: 1月31日の17時まで。
[5] その他の制限: 特になし
ビデオカードなんかで回転ができるんだから、左右反転もすぐできるかと思ったけど
やってみたら全然わかんね・・・ orz
よろしくお願いします。
0306デフォルトの名無しさん
2006/01/20(金) 21:05:30BitBltなら幅を負数にする。
0307デフォルトの名無しさん
2006/01/20(金) 22:22:30[2] 問題文(含コード&リンク):
平面上の点の数n(n≦100),及び,n個の点の座標を配列 x,及び,y に読み込み,
すべての点の間の距離を計算し,その距離が最大になる点の組(2つの点の座標.最初に入力した点の座標を最初),
及び,その距離を出力するプログラムを書け。
(入力例) コメントの部分は除く
3 // 点の数
0 10 // 1 番目の点の x 及び y 座標
0 0 // 2 番目の点の x 及び y 座標
20 0 // 3 番目の点の x 及び y 座標
(出力例) コメントの部分は除く
0 10 // 1 番目の点の x 及び y 座標
20 0 // 3 番目の点の x 及び y 座標
22.36・・・ // 2点間の距離
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特にありません。よろしくお願いします。
0308デフォルトの名無しさん
2006/01/20(金) 22:28:11[2]問題文:�@0〜1.0の範囲の二組の実数の乱数を5回生成し、
それらをx,yとして得られた5つのxy座標上の点(x,y)を画面に表示する
�A40から65の任意の整数をキーボードから入力し、その文字コードに対応するchar型文字を表示する
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
[3.3]言語:C
[4]期限:月曜
[5]その他の制限:出来れば全文でお願いします
0310デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):哲学者の食事の説明と解決策
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:ありません。よろしくお願いします。
0311名無し
2006/01/20(金) 22:34:440312デフォルトの名無しさん
2006/01/20(金) 22:39:17(1)はコマンドプロンプトなのに画面に表示と言う辺りが無理だな。
どうやって画面に表示するのか教わっているならその情報を提示しろ。
(2)も、標準入出力でいいのかWinAPIを使うのか、printf()などを使うのかcoutを使うのか、
はっきりしないことには手を出しにくいし。
0313デフォルトの名無しさん
2006/01/20(金) 22:41:16馬鹿?
0314デフォルトの名無しさん
2006/01/20(金) 22:41:340315デフォルトの名無しさん
2006/01/20(金) 22:42:50「哲学者の食事の問題」のどこがCと関係あるんだ?
つーか、ぐぐればわかることだろ。
0316デフォルトの名無しさん
2006/01/20(金) 22:43:34恥の上塗りだな。
0317デフォルトの名無しさん
2006/01/20(金) 22:43:46問題よく読めよ馬鹿
0318デフォルトの名無しさん
2006/01/20(金) 22:44:54int min(int x, int m, int n)
{
int a, b;
if (m > n)
return min(x, n, m);
if (m == n)
return x[m];
a = x[m];
b = min(x, m + 1, n);
return (a < b) ? a : b;
}
・・・ウソはついていない。
0319デフォルトの名無しさん
2006/01/20(金) 22:45:590320デフォルトの名無しさん
NGNG書き込んでしまった後に気付いた。スレ違いスマソ
�@やり方は教わってません。これは普通に考えたらできないって話ですかね
�Aprintfでお願いします。WinAPIとcoutは習ってません
0322デフォルトの名無しさん
2006/01/20(金) 22:57:25哲学者が食事をしようと、食材を入れた箱を開けようとする。
ふと哲学者の脳裏にひょっとして、あけたらまずいんちゃうか? という思いがかすめる。
けっこう前のだし・・・・。
箱を開ければ状態は確定するが、箱を開ける前、
箱の中の状態は食べられるものか食べられないものかの状態が入り混じっている。
・・・って、こんなんじゃなかったっけ?
解決策は、箱を開けるとヤバイかもしんないので、箱は絶対に開けない。
0323デフォルトの名無しさん
2006/01/20(金) 23:05:43�@普通に考えたら
(0.1,0.6) (0.2,0.7) (0.3,0.8) (0.4,0.9) (0.5,0.0)
のような表示を出せばいいだけだろうな
�A言語がCならAPIだのcoutなんて言い出さないよな
その解釈であってると思います。レスありがとうございます
どなたかお願いします
0325デフォルトの名無しさん
2006/01/20(金) 23:22:15シュレディンガーのぬこかよ!
0326デフォルトの名無しさん
2006/01/20(金) 23:23:27シュレーディンガーの猫?
0327241
2006/01/20(金) 23:28:02このスレ回転速いですね…;
お礼遅くなってすみません、ありがとうございました!
0328デフォルトの名無しさん
2006/01/20(金) 23:35:59フォークとナイフが2人分しか用意されてない四角のテーブルに
4人の哲学者が座り、瞑想を終えた哲学者からさっさとフォーク、ナイフ
を取って食事を始めるって奴。
デッドロックのシミュレーションだと思う。要するに、デッドロックが起きない
ようにうまくプログラムをせよって事か?
0329デフォルトの名無しさん
2006/01/20(金) 23:42:36(1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int i;
srand((unsigned int)time(NULL));
for (i = 0; i < 5; i++) printf("(%f, %f)", 2 * rand() / (RAND_MAX + 1.0), 2 * rand() / (RAND_MAX + 1.0));
}
(2)
#include <stdio.h>
int main(void) {
int c;
scanf("%d", &c);
if (40 <= c && c <= 65) printf("%c", (char)c);
}
0330デフォルトの名無しさん
NGNGそれです。哲学者のルーチンを二つに分けて考えようとしたのですが、これは反則ですか?
Aは周りを気にせず自己中に食いたいときに食う。
Bは隣が食ってたら終わるまで待つ。
といった感じに。
0331デフォルトの名無しさん
2006/01/20(金) 23:50:49説明:
おなかをすかせた哲学者が角を曲がったところ、100メートル先に焼きいも屋をハケーン。
小カール君にもすんでのところで勝てそうだった経験のある哲学者は50メートル6秒フラットの俊足。
一方、リアカー商いの焼きいも屋のおじいさんは足取りも重く6秒で3メートルも進めたらいいとこ。
しかし哲学者が焼きいも屋を最初に見かけたところまでたどりつくと、
耳の遠いおじいさんはこちらの呼びかけにも気づかず5メートルほど先に行ってしまった。
あわてて哲学者がそこまで追いついても、その頃にはおじいさんはおじいさんなりのペースでまた先に。
哲学者とおじいさんの速さの比を20:1とすると、
哲学者がおじいさんがいたところにたどりつくたびに、おじいさんはその20分の1だけ先に行っていることになり、
哲学者は永遠に焼きいもを食べられない…って問題。
解決策:
宇宙は閉じているので全く反対方向に走れば
しばらくすると正面をこちらむきに歩いてくるおじいさんと出会うことになる。
■ このスレッドは過去ログ倉庫に格納されています