トップページ⇒tech
1001コメント387KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/01/18(水) 03:35:45
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
0263デフォルトの名無しさん2006/01/20(金) 15:24:47
意味がわからんからやらない
0264デフォルトの名無しさん2006/01/20(金) 15:25:34
ageてるからやらない
0265デフォルトの名無しさん2006/01/20(金) 15:26:28
>>264!目欄!目欄!
0266デフォルトの名無しさん2006/01/20(金) 15:28:38
fprintf(>>262."%s"."氏ね");
0267デフォルトの名無しさん2006/01/20(金) 15:29:03
[1] 授業単元:C言語プログラミング
[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
>>268
だから 意味が分らない=できない
のつもり^^;
0270デフォルトの名無しさん2006/01/20(金) 15:30:38
はいはい
0271デフォルトの名無しさん2006/01/20(金) 15:32:37
>>262
英数字だけ?
それとも2バイト文字も含む訳?
0272デフォルトの名無しさん2006/01/20(金) 15:33:15
レスナンバー間違った
>>271::>>262 → >>267
0273デフォルトの名無しさん2006/01/20(金) 15:39:34
/* 名前はテケトー */
int 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
>>262
前スレで作ってもらったのは無視?
ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
0275デフォルトの名無しさん2006/01/20(金) 15:42:45
>>268
できない

これでええか?
0276デフォルトの名無しさん2006/01/20(金) 15:57:39
>>273 惜しい
int 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:11
あんたらt[]に文字入れる気無しですか
0278デフォルトの名無しさん2006/01/20(金) 16:07:48
>>277 気づいたら直してあげなよ・・・

int 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:35
ところで
char配列をqsortして
値が大きくなったらカウンターの数をインクリメントするってのは駄目?
0280デフォルトの名無しさん2006/01/20(金) 16:17:12
>>278
今携帯なんでw
0281デフォルトの名無しさん2006/01/20(金) 16:19:19
>>279
有りだろ
むしろそっちの方がわかりやすくね?
0282デフォルトの名無しさん2006/01/20(金) 16:19:42
ダヨネ
0283デフォルトの名無しさん2006/01/20(金) 16:21:23
おもしろそうだから、レッツ・トライ!>>279
0284デフォルトの名無しさん2006/01/20(金) 16:23:38
一度作ったんだけど何か回答出てたんでソース消しちゃったよ(´・ω・`)
0285デフォルトの名無しさん2006/01/20(金) 16:42:09
俺が情報系の教官だったらこのスレチェックするなあ。

ところで、ときどきVisualC++でっていう指定があるけど、
学校のコンピュータに入ってんのかな?
0286デフォルトの名無しさん2006/01/20(金) 16:47:12
>>285
俺が教官でも最低限、自分の担当する言語の宿題スレは確認するな

VC++なんて入れたらとんでもない金掛かると思うがな
まぁ入ってるところもあるんじゃねーの
俺の所はおそらくずっとLinux(GCC)だろうが
0287デフォルトの名無しさん2006/01/20(金) 16:52:30
vcを全端末に入れると金かかるよね。
gcc,g++,borland c++だったら、ただだから
たいていの教育機関にはこれらが入ってると思う。
てか、初心者はプログラムの本質学ぶのが目的だから
vc使わなくてもいいような気もする・・・
0288デフォルトの名無しさん2006/01/20(金) 16:52:52
[1] 授業単元:情報処理[2] 問題文:
#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
>>286
うちの大学は全てのPCにVS.NETが入ってる
しかも授業ではCPadを使う
0290デフォルトの名無しさん2006/01/20(金) 17:01:24
>>289
ちょwww
どこの大学?
うち国立だけど、pascal、gcc、lisp、prologなんか入ってるOTZ
0291デフォルトの名無しさん2006/01/20(金) 17:03:42
うちは Mac だし国立でも私立でも専門でもいろいろあるんじゃないの?
0292デフォルトの名無しさん2006/01/20(金) 17:06:04
>>287
むしろ初心者にVCなんて使わせたら、悪影響な気がするがな
VCの補助機能は確かに便利だが、純粋にプログラミングの
本質的な部分を覚えるのにはかえって邪魔になる

>>290
俺も国立だが、gpc/gcc/g++/csccなんかが入ってるな
0293デフォルトの名無しさん2006/01/20(金) 17:14:38
うちは高専だが全部にVC++が入ってるな
0294デフォルトの名無しさん2006/01/20(金) 17:17:35
お兄さんの大学BASICと汗だけだった('A`;) ...
0295デフォルトの名無しさん2006/01/20(金) 17:20:24
VC だと、ヘッダファイルの変さを我慢すると、標準入出力を使う
コンソールアプリケーションのトレースができたりする。
0296デフォルトの名無しさん2006/01/20(金) 17:22:25
【質問テンプレ】
携帯からの書き込みですのでコピペできませんでした
C言語
期限 今日の19時頃まで
問い 整列済みデータを二分木で表現
整列済みデータは乱数を発生させて自分でソート って感じで…

もしできたら
二分木から指定した値を検索するプログラムも…
ょろしくです(>_<)
0297デフォルトの名無しさん2006/01/20(金) 17:42:34
携帯電話にコンパイラとデバッガはついていません
0298デフォルトの名無しさん2006/01/20(金) 17:58:13
>>290
地元の私立大学
偏差値は低いが金は有り余ってる
0299デフォルトの名無しさん2006/01/20(金) 18:11:22
違法コピーを通報しますた。
0300デフォルトの名無しさん2006/01/20(金) 18:34:20
うちの大学のPCにも全部VS.NETとか入ってたな。
っていうか、夏休みが終わって学校に行ってみたら100台くらいのPCがPen4 3.2G、メモリ768MB、WinXPに総入れ替えしてあったりしたし
0301デフォルトの名無しさん2006/01/20(金) 19:21:38
>>295
> VC だと、ヘッダファイルの変さを我慢すると、標準入出力を使う
> コンソールアプリケーションのトレースができたりする。
それってgdbとかでは出来ないの?
0302デフォルトの名無しさん2006/01/20(金) 19:23:56
>>301
gdb ってエディタと連動してたっけ?
0303デフォルトの名無しさん2006/01/20(金) 19:30:19
>>300
えらく豪勢なPCだな・・・('A`)
俺の所はDELLのPen4(2GHz程度っぽい)に入ってたXPをわざわざ消して
VineLinux入れてある

まぁ開発用途で使う俺らにとってはXPより使いやすいんだがな
0304デフォルトの名無しさん2006/01/20(金) 19:31:16
>302
emacsなら可。 よく知らんがリモートデバッグ機能使えば、いろいろできるかもしれん。

>296
二分探索木の挿入とトラバース、探索だな。
0305デフォルトの名無しさん2006/01/20(金) 21:01:03
[1] 授業単元:プログラミングのレポート
[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:30
>>305
BitBltなら幅を負数にする。
0307デフォルトの名無しさん2006/01/20(金) 22:22:30
[1] 授業単元:プログラミング1
[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
下旬っていつだよ
0309 ◆wa2f.aihh2 2006/01/20(金) 22:31:14
[1]授業単元:プログラミング
[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
[1] 授業単元:OSの基礎
[2] 問題文(含コード&リンク):哲学者の食事の説明と解決策
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:ありません。よろしくお願いします。
0311名無し2006/01/20(金) 22:34:44
>>233をよろしくお願いします。
0312デフォルトの名無しさん2006/01/20(金) 22:39:17
>>309
(1)はコマンドプロンプトなのに画面に表示と言う辺りが無理だな。
どうやって画面に表示するのか教わっているならその情報を提示しろ。
(2)も、標準入出力でいいのかWinAPIを使うのか、printf()などを使うのかcoutを使うのか、
はっきりしないことには手を出しにくいし。
0313デフォルトの名無しさん2006/01/20(金) 22:41:16
>>312
馬鹿?
0314デフォルトの名無しさん2006/01/20(金) 22:41:34
馬鹿はお前
0315デフォルトの名無しさん2006/01/20(金) 22:42:50
>>310
「哲学者の食事の問題」のどこがCと関係あるんだ?
つーか、ぐぐればわかることだろ。
0316デフォルトの名無しさん2006/01/20(金) 22:43:34
>313=309か?
恥の上塗りだな。
0317デフォルトの名無しさん2006/01/20(金) 22:43:46
>>314
問題よく読めよ馬鹿
0318デフォルトの名無しさん2006/01/20(金) 22:44:54
>>233 最小を求める部分だけ。
int 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:59
あ、ウソあった。・・・まあ、いいや。
0320デフォルトの名無しさんNGNG
>>315
書き込んでしまった後に気付いた。スレ違いスマソ
0321 ◆wa2f.aihh2 2006/01/20(金) 22:56:59
>>312
�@やり方は教わってません。これは普通に考えたらできないって話ですかね
�Aprintfでお願いします。WinAPIとcoutは習ってません
0322デフォルトの名無しさん2006/01/20(金) 22:57:25
>>310 説明。
哲学者が食事をしようと、食材を入れた箱を開けようとする。
ふと哲学者の脳裏にひょっとして、あけたらまずいんちゃうか? という思いがかすめる。
けっこう前のだし・・・・。
箱を開ければ状態は確定するが、箱を開ける前、
箱の中の状態は食べられるものか食べられないものかの状態が入り混じっている。
・・・って、こんなんじゃなかったっけ?

解決策は、箱を開けるとヤバイかもしんないので、箱は絶対に開けない。
0323デフォルトの名無しさん2006/01/20(金) 23:05:43
>>321
�@普通に考えたら
(0.1,0.6) (0.2,0.7) (0.3,0.8) (0.4,0.9) (0.5,0.0)
のような表示を出せばいいだけだろうな
�A言語がCならAPIだのcoutなんて言い出さないよな
0324 ◆wa2f.aihh2 2006/01/20(金) 23:15:33
>>323
その解釈であってると思います。レスありがとうございます

どなたかお願いします
0325デフォルトの名無しさん2006/01/20(金) 23:22:15
>>322
シュレディンガーのぬこかよ!
0326デフォルトの名無しさん2006/01/20(金) 23:23:27
>>322
シュレーディンガーの猫?
03272412006/01/20(金) 23:28:02
>255
このスレ回転速いですね…;
お礼遅くなってすみません、ありがとうございました!
0328デフォルトの名無しさん2006/01/20(金) 23:35:59
哲学者の食事って、アレじゃないの?
フォークとナイフが2人分しか用意されてない四角のテーブルに
4人の哲学者が座り、瞑想を終えた哲学者からさっさとフォーク、ナイフ
を取って食事を始めるって奴。

デッドロックのシミュレーションだと思う。要するに、デッドロックが起きない
ようにうまくプログラムをせよって事か?
0329デフォルトの名無しさん2006/01/20(金) 23:42:36
>>324
(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
>>328
それです。哲学者のルーチンを二つに分けて考えようとしたのですが、これは反則ですか?
Aは周りを気にせず自己中に食いたいときに食う。
Bは隣が食ってたら終わるまで待つ。
といった感じに。
0331デフォルトの名無しさん2006/01/20(金) 23:50:49
>>310
説明:
おなかをすかせた哲学者が角を曲がったところ、100メートル先に焼きいも屋をハケーン。
小カール君にもすんでのところで勝てそうだった経験のある哲学者は50メートル6秒フラットの俊足。
一方、リアカー商いの焼きいも屋のおじいさんは足取りも重く6秒で3メートルも進めたらいいとこ。
しかし哲学者が焼きいも屋を最初に見かけたところまでたどりつくと、
耳の遠いおじいさんはこちらの呼びかけにも気づかず5メートルほど先に行ってしまった。
あわてて哲学者がそこまで追いついても、その頃にはおじいさんはおじいさんなりのペースでまた先に。
哲学者とおじいさんの速さの比を20:1とすると、
哲学者がおじいさんがいたところにたどりつくたびに、おじいさんはその20分の1だけ先に行っていることになり、
哲学者は永遠に焼きいもを食べられない…って問題。

解決策:
宇宙は閉じているので全く反対方向に走れば
しばらくすると正面をこちらむきに歩いてくるおじいさんと出会うことになる。

0332 ◆wa2f.aihh2 2006/01/20(金) 23:52:14
>>329
ありがとうございます。感謝です
0333デフォルトの名無しさん2006/01/20(金) 23:56:15
>>331
アキレスの亀頭?
0334デフォルトの名無しさん2006/01/21(土) 00:06:15
>>307
これで分からなければ勉強不足、と言えるほど簡単に書いた。
#include <cmath>
#include <iostream>
int main() {
    int n;
    std::cin >> n;
    double x[100], y[100];
    for (int i = 0; i < n; ++i) std::cin >> x[i] >> y[i];
    int index_start = 0, index_end = 0;
    double dist2, max_dist2 = 0;
    for (int i = 0; i < n; ++i)
        for (int j = i; j < n; ++j)
            if ((dist2 = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j])) > max_dist2) {
                index_start = i; index_end = j;
                max_dist2 = dist2;
            }
    std::cout << x[index_start] << ' ' << y[index_start] << '\n' << x[index_end] << ' ' << y[index_end] << '\n' << std::sqrt(max_dist2) << std::endl;
    return 0;
}
0335デフォルトの名無しさん2006/01/21(土) 00:23:15
>>251-252
かなり遅いレスになるが、標準Cにstrrevは含まれない。
0336デフォルトの名無しさん2006/01/21(土) 00:28:27
>>331 上手だな。
(なお、シュレディンガーの半死半生の猫の話はHALってマンガからの引用)

えーっと。哲学者の食事の解説(上手な解説はWebで見てくれ。脳内の情報だけで書いてる)
A)円形の卓があって、哲学者がN人居て、その間に1つづつ食器が置いてある。
B)哲学者は食器を2つ使わないとメシが喰えない。
C)哲学者は以下の動作を1つだけする
C1)まだ食器を持っていないなら、右手の食器を取ろうとする。右手の食器が開いていなければ次のチャンスを待つ
C2)C1が完了していれば、左手の食器を持とうとする。左手の食器が開いてなければ次のチャンスを待つ
C3)両手に食器を持っていれば、(メシを一口喰って)両手の食器を離す
D)哲学者が行動する順序はランダムである(続けて1人の哲学者が行動を続けることもある)
・・・ってすると、そのうち状態が変化しなくなってしまう。

改善:
食器に1〜Nの番号を振る(Cらしく、0〜N-1でも可)。
C1〜C2)を次のように変える。
C1)左右にある食器のうち若い番号の食器を持とうとする。持てなかったらC1へ
C2)もう一方の番号の食器を持とうとする。持てなかったらC2へ
0337デフォルトの名無しさん2006/01/21(土) 00:29:11
誰か野球チームのプログラム作ってよ
0338デフォルトの名無しさん2006/01/21(土) 00:43:10
>>337 >>1使ってkwsk
0339デフォルトの名無しさん2006/01/21(土) 00:47:51
デッドロックの問題か。
0340310NGNG
>>336
持てるようになるまでtryし続けるってことですね。
どうもありがとうございます


みなさん、スレ違いなのにすみませんでした。
0341デフォルトの名無しさん2006/01/21(土) 00:59:30
OSの授業で出た問題なんですが
↓これは何をするプログラムですか?実行結果も教えてください。
#include <errno.h>
#include <dirent.h>
#include <stdio.h>
int main(void) {
DIR * dir;
struct dirent * ent;
/* "." is the current directory */
if (!(dir = opendir("."))) {
perror("opendir");
return 1;
}
/* set errno to 0, so we can tell when readdir() fails */
errno = 0;
while ((ent = readdir(dir))) {
puts(ent->d_name);
/* reset errno, as puts() could modify it */
errno = 0;
}
if (errno) {
perror("readdir");
return 1;
}
closedir(dir);
return 0;
}

0342デフォルトの名無しさん2006/01/21(土) 01:08:39
>>331
面白そうだな
つまりデッドロックが発生するまでをシミュレートしろということか
暇が出来たときに作ってみるか
0343デフォルトの名無しさん2006/01/21(土) 01:10:37
ただの極限使った収束じゃないか
0344デフォルトの名無しさん2006/01/21(土) 01:14:41
>>341
ls
実行結果は状況依存。環境依存じゃなくて状況依存。なので答えられん。
0345デフォルトの名無しさん2006/01/21(土) 01:20:24
デッドロックの問題を真面目に書こうとすれば、Windowsなら
スレッド使った方がすっきり書けるね。

手持ちのWin32システムサービスプログラミングって本に例が
載ってる。mutexを使って同期を取っているが、デッドロックの
回避にはWaitForMultipleObjects()を使ってる。

ま、この単純な方法では、スタベーション(飢餓状態)という
別の問題が発生するので、待機時間を無限ではなくて
タイムアウトを設定する事で回避しているね。
0346デフォルトの名無しさん2006/01/21(土) 01:24:08
>>330
そいつは哲学者の問題とは違ったニュアンスになるぞ。
Aばかり食いっぱなしになって、Bは飢え死にする。

ダイクストラが例えた哲学者の問題は、すべての者が
同様の権利を持つものだ。
0347デフォルトの名無しさん2006/01/21(土) 01:29:23
つーかこの本のプログラムリストを今から打ち込んで>>1にうp
しとくから、後は自分で考えれ。

著作権の問題があるから本当はまずいんだが・・・・・・
0348デフォルトの名無しさん2006/01/21(土) 01:41:29
こんばんは。
フローチャートでCのポインタを描くにはどのようにしたらいいですか?
例えば

*foo = *foo + 5;

だとどうなるのでしょうか。
よろしくお願いします。
0349デフォルトの名無しさん2006/01/21(土) 01:42:57
その前に*foo += 5って書けや
0350デフォルトの名無しさん2006/01/21(土) 01:43:41
敢えて*foo = *foo + 5;と書いておきました。
0351デフォルトの名無しさん2006/01/21(土) 01:45:51
アドレスfoo番地のデータ(整数なり、キャラクタなり、オブジェクトなり、てきとー)に5を加算する。
0352デフォルトの名無しさん2006/01/21(土) 01:46:09
アドレスが5バイト分ずれる
0353デフォルトの名無しさん2006/01/21(土) 01:46:54
>>352
それはfoo+=5だろw
0354デフォルトの名無しさん2006/01/21(土) 01:47:22
>>351
ありがとうございます。
記号は処理を表す長方形でいいですか?
0355デフォルトの名無しさん2006/01/21(土) 01:47:44
突っ込まれる前に書いておくと>>353は
fooがchar*とかだった場合な
0356デフォルトの名無しさん2006/01/21(土) 01:47:49
>>350
普通、フローチャートで型は指定しないよ
0357デフォルトの名無しさん2006/01/21(土) 01:48:19
あー・・・流儀がいっぱいあるからさ・・・資料をみせてもらえば、分かる・・・<処理を表す記号
0358デフォルトの名無しさん2006/01/21(土) 01:48:35
>>353
あ・・・・・ボケたorz
0359デフォルトの名無しさん2006/01/21(土) 01:49:29
>>355
あ・・・確かにsizeof(型)分ずれるにしとこう
どっちにしろ間違ってるけど
0360デフォルトの名無しさん2006/01/21(土) 01:49:43
int **foot;と定義されていれば、・・ウソではないが・・。
0361デフォルトの名無しさん2006/01/21(土) 01:50:21
またバカが来たぞw
0362デフォルトの名無しさん2006/01/21(土) 01:51:30
>351 >357 >360 でつ。どーせ馬鹿でつ(涙)
■ このスレッドは過去ログ倉庫に格納されています