ぼるじょあがC/C++の宿題を片づけますYO! 48代目

1ぼるじょあ ◆yBEncckFOU
(・3・)エェー C++厨のぼるじょあですYO!
わからない宿題を片づけますYO!

――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:Windows/Linux/等々
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
[5] その他の制限:どこまで習っているか、等々

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 47代目
http://pc8.2ch.net/test/read.cgi/tech/1120522752/

【歴代スレは>>2-13
2デフォルトの名無しさん:2005/07/16(土) 08:54:02
3デフォルトの名無しさん:2005/07/16(土) 08:54:50
44様:2005/07/16(土) 08:55:12
5デフォルトの名無しさん:2005/07/16(土) 08:55:43
6デフォルトの名無しさん:2005/07/16(土) 11:18:17
ぼるじょあが宿題をいっこうに片付けないのだが
7デフォルトの名無しさん:2005/07/16(土) 13:19:59
>>1
おちゅ
8デフォルトの名無しさん:2005/07/16(土) 15:45:00
>>1
9デフォルトの名無しさん:2005/07/16(土) 21:02:14
10デフォルトの名無しさん:2005/07/16(土) 23:37:57
というか今更ぼるじょあをスレタイに入れる>>1=ぼるじょあ がダメ人なんだろう。
11デフォルトの名無しさん:2005/07/16(土) 23:43:05
面白いつもりでやってんのかね
迷惑極まりない
12デフォルトの名無しさん:2005/07/17(日) 02:36:22
47台が1000いったのでこっちage
13デフォルトの名無しさん:2005/07/17(日) 03:27:24
1] 授業単元: 夏休みの宿題
[2] 問題文(含コード&リンク):
コンパイラまたはインタプリタを設計/実装せよ。以下の機能をつけること。
変数、式、配列、関数定義/呼び出し、組み込み関数、制御構造
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): MinGW
 [3.3] 言語:C
[4] 期限:9月1日まで
[5] その他の制限:文法はひととおり
14やめられない名無しさん:2005/07/17(日) 03:40:12
>>13
馬鹿ですかあなたは。お金取りますよ。そんな大仕事。
15デフォルトの名無しさん:2005/07/17(日) 03:46:25
大仕事か?
16やめられない名無しさん:2005/07/17(日) 03:48:09
>>15
そう思うならお前が作ってやれよ。
17デフォルトの名無しさん:2005/07/17(日) 04:02:59
18デフォルトの名無しさん:2005/07/17(日) 05:30:14
>>13
Lispインタプリタなら結構簡単に作れると思うぞ。
ググってみそ。
19デフォルトの名無しさん:2005/07/17(日) 11:00:11
まずは文法決めないと
どうしようもない気が
20デフォルトの名無しさん:2005/07/17(日) 13:19:43

[1] 授業単元:C言語応用(最終課題レポ)
[2] 問題文:
【A】(1) 正の整数の入力を受け付け、二分探索木を作成するプログラムを作成する。
0以下の数値の入力により、終了とする。入力済の数値が入力された場合は追加しなくてよい。
(2) 次に探索対象の数値を受け付け、(1) で作成した木を参照して二分探索を行うプログラムを作成する。
探索終了後、探索した数値を出力する。

【B】指定された個数の乱数(ランダムな値)を発生させ、
基本選択法によるソートとクイックソートの両方を実行するプログラムを作成せよ。
また、それぞれの実行に要する時間を計測して表示せよ。
個数を 1000, 10000 などと増加させ、所要時間を確認せよ。
ただし、ソート結果自体は非常に長くなるため、表示しなくて良い

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
 [3.3] 言語:c/c++のどちらでも
[4] 期限:2005年7月19日18時まで
[5] その他の制限:二つですけど、よろしくお願いします
21デフォルトの名無しさん:2005/07/17(日) 13:53:10
>>20
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/741.txt
とりあえずAやってみた。Bは誰かよろ
22デフォルトの名無しさん:2005/07/17(日) 14:07:37
[1] 授業単元: 情報処理実験1
[2] 問題文(含コード&リンク):
適当な画像を読み込み、出力結果を出せ。
1.モザイク処理をした画像を出力せよ
2.色の反転(ネガ)の処理をした画像を出力せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:来週の火曜
[5] その他の制限:2つですがどうかよろしくお願いします。
23デフォルトの名無しさん:2005/07/17(日) 14:16:40
rawファイルでもいいのか?
24デフォルトの名無しさん:2005/07/17(日) 14:19:14
授業側ではppmの画像を使ってましたから、ppmでお願いします。
書き忘れてすいません。
25デフォルトの名無しさん:2005/07/17(日) 14:33:58
シネ
26デフォルトの名無しさん:2005/07/17(日) 16:10:15
前スレの975何ですけど、教えられた方法でinsertとかを挿入する場所を
条件として分ける方法(リストの先頭とか最後に代入するとか、途中で代入
するとか)がいまいちうまくいかないんですけど、誰か教えてください。
27デフォルトの名無しさん:2005/07/17(日) 19:20:44
よろしくお願いします。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
最良優先探索と山登り法のプログラムを作り、実行して以下の迷路の探索経路を求めよ。

7-8---G
| |
3-4-5-6
      | |
S---1-2
(数字は節点の番号)

山登り法のプログラムから作成して、まだ作りかけなのですが、
コンパイルは通るものの強制終了になってしまいます。↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/742.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:2005年7月19日まで
[5] その他の制限:ありません
28デフォルトの名無しさん:2005/07/17(日) 19:33:33
>>26
挿入するときに新しい node の確保してるか?
segmentation error 出てるんなら大方してないと思われ。
29デフォルトの名無しさん:2005/07/17(日) 21:13:20
[1] 授業単元: Linux
[2] 問題文(含コード&リンク):
セマフォを使った同期
詳しくは下のリンクに書いてあります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/743.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:7/19まで
おねがいします。
30デフォルトの名無しさん:2005/07/17(日) 21:50:17
>>17
誤読しやすいように思います。
経験的な値を保持するのに「~~_f」という名前、ちょっと(^^;;
Input_nodeっていうのも・・・値をセットするのが目的なのですから、set~~って名前のほーが。。。
やたら+'0'が目立ちますが、それは出力時だけで十分です。他の場所でつかうとこはありません。
ところで、strlenしてますが、終端のことは考えていないように見えます。(大域変数の初期値が0なのでOKかと思いますが)
goalフラグは使わないでpoint == GOALだけで判断できると思います。
山登り法(最も評価の高い経路に行くだけ)のアルゴリズムでは探索がループすることがあります。ループを検出していますか?

以上を直してみて、まだ動かないようでしたら、またいらしてください。
31デフォルトの名無しさん:2005/07/17(日) 21:50:57
すまん >30 は >>27にいいたかったのだ。
出直すのは俺だった。
32デフォルトの名無しさん:2005/07/17(日) 22:22:02
>>27
freeってなんだよ。配列だろ?
33デフォルトの名無しさん:2005/07/17(日) 22:25:40
ワロタ

tech:プログラム技術[スレッド削除]
http://qb5.2ch.net/test/read.cgi/saku/1098189517/96
> 削除理由・詳細・その他:
> スレタイにコテハン名
34デフォルトの名無しさん:2005/07/17(日) 23:25:42
>>22
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/744.txt
殴り書きソースです。ものすごい汚いけどがまんして。
ちなみにppmはp3だけ読み込める。ほか対応すんのはめんどくさい。
p6っていうかrawファイルはpnmnorawでもしてくれ。
コマンド引数はファイル名でよろ
3534:2005/07/17(日) 23:26:15
>>22
てかさ、こういうのってライブラリとかないの?
36デフォルトの名無しさん:2005/07/17(日) 23:32:19
>>35
ハァ?
プログラム作る事自体が勉強なんだろ?
ライブラリ使っていいならこんな所で聞きゃあしねーよ
37デフォルトの名無しさん:2005/07/18(月) 02:49:38
>>36
俺も、一般的な話で読み込みようのライブラリがあるのか知りたいデス。

ついでにage
38デフォルトの名無しさん:2005/07/18(月) 04:18:00
えと、ひとつだけ質問なのですが 例えばA.cpp A.h B.cpp B.hという 二つの
クラスとヘッダーがあって、B.hの中で宣言したStructとEnum typeを利用した
オブジェクトを A.h中で宣言しようとすると コンパイルできません。
A.cpp中では B.hをIncludeしているので 問題なく使えます。

Enum type{x,y,z}
Struct s{int i; type t;}

のようにB.hで宣言し、 A.h内で

Private;
   void functionA(vector<s> input};

のように書くと、sは宣言されていませんというエラーがでてしまいます。どうしてでしょうか?
39デフォルトの名無しさん:2005/07/18(月) 04:36:15
>>38
B.h内でもA.hをincludeするか、A.cppでincludeする順序を変える(B.hを先にする)。
gcc -Eでどう展開されるのかが見てみれ。
40デフォルトの名無しさん:2005/07/18(月) 10:49:44
>>37
腐るほどある。
自分で書いても高が知れている。
一々上げんな。
41デフォルトの名無しさん:2005/07/18(月) 10:59:40
実験で使った器具の名称・製造会社・型番・製造番号を入力し
それをループさせ、名称のところにexitと入力されたらループ終了という
プログラムを作りたいのですが、どうやってexitと入力されたらループを抜けるのかが分かりません。
どなたかご教授お願いします。。

ちなみに作ってみたプログラムを参考までに載せておきます。

while(1){
printf("器具名を入力してください(exitで終了)->");
scanf("%s",data[0]);
if(data[0] == "exit")
return 0;
else
printf("製造会社を入力してください->");
scanf("%s",data[1]);
printf("型番を入力してください)->");
scanf("%s",data[2]);
printf("製造番号を入力してください->");
scanf("%s",data[3]);
printf("\n");
}
42デフォルトの名無しさん:2005/07/18(月) 11:02:40
>>41
use strcmp()
43デフォルトの名無しさん:2005/07/18(月) 11:02:56
>>41
わかりやすくするとだ、こんな感じなんだよ

scanf("%s",data);
if(data[0] == "e" && data[1]=='x' && data[1]=='i' && data[1]=='t') break;

44デフォルトの名無しさん:2005/07/18(月) 11:03:21
まちがった

scanf("%s",data);
if(data[0] == "e" && data[1]=='x' && data[2]=='i' && data[3]=='t') break;
45デフォルトの名無しさん:2005/07/18(月) 11:16:36
data[4]=='\0'
を忘れてますよ。
46デフォルトの名無しさん:2005/07/18(月) 11:37:00
>>41
別解
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/745.txt

41が間違っているのは44と45の指摘
47デフォルトの名無しさん:2005/07/18(月) 11:44:27
>>46
わざわざアップローダまで使ってのネタ乙。
48デフォルトの名無しさん:2005/07/18(月) 12:03:37
>>47
(°Д°)ハァ?
49デフォルトの名無しさん:2005/07/18(月) 12:04:52
>>46=48かな?
コンパイルも通らないようなもん貼ってもねぇ。
つーか、他人のメール欄コピーせんでもいいだろ(苦笑
50デフォルトの名無しさん:2005/07/18(月) 12:41:10
>>49
試してみたがC89準拠の設定でgcc通ったぞ
51デフォルトの名無しさん:2005/07/18(月) 12:41:56
>>50に追記
コメントがC++スタイルになってたからそこだけは修正したが

どっちにしろgccノンオプションなら通る
5241:2005/07/18(月) 13:08:45
>>42
>>43,44,46
>>45
多くの方々、ありがとうございます。
大変参考になりました。
53デフォルトの名無しさん:2005/07/18(月) 14:31:42
>>43=44方式なら "e" → 'e' かな。揚げ足を取る様だが。
54デフォルトの名無しさん:2005/07/18(月) 16:32:29
>>13
俺が前スレあたりに揚げた表計算でどうだ?
「制御構造」ってのが少し怪しいが、それ以外は用件を満たしてると思う。
ろだの解答すれにzipがあるはず。
55デフォルトの名無しさん:2005/07/18(月) 19:58:35

[1] 授業単元:C言語課題
[2] 問題文(含コード&リンク): キーボードから入力された10個までの数の組をソートして表示すること
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
 [3.3] 言語:C

実行ユーザーによる、標準入力(キーボード)からの入力を行うこと
ユーザからの入力を受け付ける際には必ずfgets関数を用いること
入力された数は配列に保持すること
文字列を個々の数字へと分割するために、strtok関数を使用すること
何も入力されなかった場合は「ソートしたい数の組を入力してください」と表示し、終了すること
数字以外が入力された場合は「ソートしたい数の組を入力してください」と表示し、終了すること
11個以上の数字が入力された場合、「数が多すぎます」と表示し、終了すること


ソート部分は多分出来たと思うんですが、入力部分がうまくできません
一応ソース張っておくのでよろしくお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/746.txt
56デフォルトの名無しさん:2005/07/18(月) 20:19:50
二分探索木の問題です。よろしくお願いします。

(1) ユーザからの正の整数の入力を受け付け、二分探索木を作成するプログラムを作成せよ。
0以下の数値の入力により、終了とする。すでに入力された数値と同じ数値が入力された場合は
追加しなくてよい。

(2) ユーザから探索対象の数値を受け付け、(1) で作成した木を参照して二分探索を行う
プログラムを作成せよ。探索終了後、探索した数値を出力せよ。

5756続き:2005/07/18(月) 20:20:23
実行例:
二分探索木に追加するデータを入力して下さい: 12
二分探索木に追加するデータを入力して下さい: 6
二分探索木に追加するデータを入力して下さい: 26
二分探索木に追加するデータを入力して下さい: 9
二分探索木に追加するデータを入力して下さい: 20
二分探索木に追加するデータを入力して下さい: 14
二分探索木に追加するデータを入力して下さい: 3
二分探索木に追加するデータを入力して下さい: -1

探索したい数値を入力して下さい: 9
12 -> 6 -> 9

探索したい数値を入力して下さい: 14
12 -> 26 -> 20 -> 14

探索したい数値を入力して下さい: 5
12 -> 6 -> 3
存在しません
58デフォルトの名無しさん:2005/07/18(月) 20:57:09
すみません、前スレの完全数のソース、もう一回、うpしてくれませんか?
御願いします。
59デフォルトの名無しさん:2005/07/18(月) 21:05:06
[1]課題
[2]キーボードから3つの整数を読み込み、最大公約数と最小公倍数を表示。ただし、
2つの整数を因数とし最大公約数を返す関数をユーザ定義関数として作成し
この関数を使用すること。
[3]
 [3.1]Windows
[3.2]Microsoft visual c++ 6.0
[3.3]C++
[4]7/20
[5]if forなど基本的な物を使ってほしい。

誰かよろしくお願いします。
60デフォルトの名無しさん:2005/07/18(月) 21:05:36
次にこれらの関数を使って、2 から 10000 までの間にあるすべての完全数をプリントアウトするプログラムを作成しなさい。
[1] 授業単元:C言語課題
[2] 問題文(含コード&リンク):整数は約数(1は含むが、その整数自身は含まない)の和がその整数に等しいとき、完全数と呼ばれる。
引数numberが完全数であるかどうかを判定する関数int IsPerfect(int number)と約数判定関数int IsDivisor(int dividend, int divisor)を作成しなさい。
次にこれらの関数を使って、2 から 10000 までの間にあるすべての完全数をプリントアウトするプログラムを作成しなさい。
[1] 授業単元:C言語課題
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン)gcc
 [3.3] 言語:C
4、main関数を、前に、もってきてください。下のほうに、
約数関数と、完全数を見つける、関数を持ってきてください。
よろしくお願いします。
61デフォルトの名無しさん:2005/07/18(月) 21:07:13
>>56
ちょっと前にここに出てたから作った二分探索の奴を手直ししただけだが・・・
まぁ参考程度にでもしてくれ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/748.txt
62デフォルトの名無しさん:2005/07/18(月) 21:12:42
[1] 授業単元: シミュレーション
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/720.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:7月20日
[5] その他の制限:特になし

お願いします。
63デフォルトの名無しさん:2005/07/18(月) 21:17:47
C++ の質問か数学の質問かわからないときもあるな
64デフォルトの名無しさん:2005/07/18(月) 21:20:37
>>63
むしろ半分ぐらいそれの様な希ガス
それも実際のプログラミングの場では生かせないような奴な
65デフォルトの名無しさん:2005/07/18(月) 21:26:34
黙って解けや
66デフォルトの名無しさん:2005/07/18(月) 21:33:06
>56,57

全く文や例が同じ問題やってるんだけど・・・。
同じ授業受けてる誰かなんだろうなぁ~
67デフォルトの名無しさん:2005/07/18(月) 21:35:11
68デフォルトの名無しさん:2005/07/18(月) 21:42:23
>>55
ソートはできているという話なのでそのまま使ったよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/750.txt
問題ないと思われ。
69デフォルトの名無しさん:2005/07/18(月) 21:43:35
>>60
全スレで回答者がいたのでそのままうp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/751.txt
70デフォルトの名無しさん:2005/07/18(月) 22:08:19
感謝!
見させてもらいやす!!
でわからんかったらまた質問させて下さい。>>67
71デフォルトの名無しさん:2005/07/18(月) 22:16:15
>>58
ほれ。
#include <stdio.h>
#include <stdlib.h>

int IsDivisor(int dividend, int divisor) {
    return dividend % divisor ? 0 : 1;
}

int IsPerfect(int number) {
    int i, sum = 1;
    for (i = 2; i <= number / 2; i++) {
        if (IsDivisor(number, i)) { sum += i; }
    }
    return number == sum;
}
                                        
int main(int argc, char **argv) {
    int i;
    for (i = 2; i <= 10000; i++) {
        if (IsPerfect(i)) {
            printf("%d\n", i);
        }
    }
    return 0;
}
72デフォルトの名無しさん:2005/07/18(月) 22:16:59
>>68
コンパイルしたけど11個の時だけ動作おかしい
どこ直せばいいのだろうか?
73デフォルトの名無しさん:2005/07/18(月) 22:24:33
初心者ですんません・・・
return (a?function1(b%a,a):b);
ってどういう意味ですか?>>67
74デフォルトの名無しさん:2005/07/18(月) 22:30:42
>>72>>68
すまん。解決した
7567ではないが:2005/07/18(月) 22:34:01
>>73
if( a )
return gcd(b%a, a);
else
return b;
と等価。
76デフォルトの名無しさん:2005/07/18(月) 22:34:11
>>73
三項演算子で(ry
77デフォルトの名無しさん:2005/07/18(月) 22:41:33
そういう意味なんですか!?
ありがとです!>>75

習ってないかも汗
でもありがとです!>>76
78デフォルトの名無しさん:2005/07/18(月) 22:43:33
>>77
真偽で返す値とか代入値を変えるような場合には便利だから覚えとくと吉
79デフォルトの名無しさん:2005/07/18(月) 22:46:12
>>61
ありがとうございます!
80デフォルトの名無しさん:2005/07/18(月) 22:47:05
マジっすか!?ならちょっと詳しく調べて勉強しときます!
親切にありがとう!!>>77
81デフォルトの名無しさん:2005/07/18(月) 22:50:31
>>29

これわかる人いましたらおねがいします。。。
82デフォルトの名無しさん:2005/07/18(月) 22:57:07
[1] 授業単元:システム技術理論
[2] 問題文 入力された半角英数字を逆順で表示しなさい。
      ※英小文字はあっぱーを使用し、英大文字として出力すること。
      例・・・2tyan7neru
            ↓
          UREN7NAYT2 こんな感じです。
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン)gcc
 [3.3] 言語:C
[4]期限 明日の午前1時まででお願いします。
83デフォルトの名無しさん:2005/07/18(月) 22:58:01
よろしくお願いします!!

クイックソートによる整列を行うプログラムを作成せよ。
入力は100000個まで受け付けるものとする。
関数 partition の内部, ソート対象データの格納, 画面へのソート結果出力部分を完成させよ。
8482です:2005/07/18(月) 23:00:43
例が間違えてます。変換後が全角になっていました。正しくは半角大文字です。
85デフォルトの名無しさん:2005/07/18(月) 23:05:10
>82
入力する文字数に制限は無いのか?
86デフォルトの名無しさん:2005/07/18(月) 23:06:11
>>82
こんなん?

#include <stdio.h>
#include <string.h>

int main(){
char buf[128];
int i;

scanf("%s", buf);
for(i = strlen(buf); i >= 0; i--)
printf("%c", toupper(buf[i]));
printf("\n");
}
87デフォルトの名無しさん:2005/07/18(月) 23:09:56
for(i = strlen(buf) - 1; i >= 0; i--)
8882です:2005/07/18(月) 23:11:51
ごめんなさい!!文字数は最大10文字です。
89デフォルトの名無しさん:2005/07/18(月) 23:18:59
>>82
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void swap(char* lhs, char* rhs)
{     char oldLHS = *lhs;     *lhs = *rhs;     *rhs = oldLHS; }
void reverse_ranges(char* first, char* last)
{
    for (; first < last; ++first) {
        swap(first, --last);
    }
}
void reverse(char* input)
{ reverse_ranges(input, input + strlen(input)); }
void to_upper(char* input)
{
    for (; *input; ++input) {
        if (islower((unsigned char)*input)) {
            *input = (char)toupper((unsigned char)*input);
        }
    }
}
int main(void)
{
    char str[16];
    scanf("%s", str);
    reverse(str);
    to_upper(str);
    printf("%s", str);
    return 0;
}
見にくいな…
90デフォルトの名無しさん:2005/07/19(火) 00:01:10
長すぎ
9182です:2005/07/19(火) 00:49:17
86のロジックを使わせていただこうと思っているのですが、
ロジックの最後にreturn 0;とすると、エラーが出るのですがどうしてでしょうか?
対処法を教えてください。
92デフォルトの名無しさん:2005/07/19(火) 00:52:11
#include <stdio.h>
#define N 20
#include <stdlib.h>

int num(const void *a, const void *b)
{return *((int *)a) - *((int *)b); }

void main()
{int i, a[N];

for(i=0; i<N; i++) 
       {printf("何かデータを入力してください:");
scanf("%d",&a[i]);
if(a[i]<=0)
              {break; }
}
qsort(a, N, sizeof(int), num);
printf("\n結果\n");
for(i=0; i<N; i++)
{printf(" %d,",a[i]);}
}

↑で、負の数を入力すると入力を中止し、
今までの入力された正の数を出力したいんですけどできません。
どこを直せば(追加すれば)いいですか?
93デフォルトの名無しさん:2005/07/19(火) 01:23:27
>>91
エラーの詳細ぐらいかけ
多分#include <ctype.h>が抜けてるだけジャマイカ??

>>92
その問題の参考ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/739.txt

一応訂正しといた↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/752.txt
94デフォルトの名無しさん:2005/07/19(火) 02:24:05
62お願いします('A`)
95デフォルトの名無しさん:2005/07/19(火) 02:40:24
【質問テンプレ】
[1] 授業単元: プログラミング課題
[2] 問題文: シンプレックス法で線形計画問題を解くプログラムを作成せよ。
       ピボット演算の前処理は必要ない。
[3] 環境
 [3.1] OS:Windows/
 [3.2] コンパイラ:gcc
 [3.3] 言語 C
[4] 期限:今週中

よろしくおねがいしますm(_ _)m
96デフォルトの名無しさん:2005/07/19(火) 03:53:13
97デフォルトの名無しさん:2005/07/19(火) 09:34:50
[1] 授業単元: C言語研究
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/755.txt
の続きを編集して木構造を操作する関数を作成せよ
newnode()は新しい節を追加する関数、
printtree()は木のある節を根とする木のその下のValueを表示し、
その節からの深さを返す関数である。
まずはある値xと、ある節currentのポインタを与えて、
currentから下からxをvalueに持つ節を探して、その節のポインタを返す関数を作成する。
次に、xを追加する場所を探す関数を作成する。
この関数の戻り値はポインタのポインタ **nodeとするとよい。
これらを用いて、木にある値xを追加する関数を作成せよ。
ついでにnodeをfreeする関数も作って下さい
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン): .NET 2003
 [3.3] 言語:C
[4] 期限:2005年08月03日hh:mmまで

よろしくお願いします
98デフォルトの名無しさん:2005/07/19(火) 10:29:07
>>29
低脳CS生徒乙(^~^;;)

毎回毎回答え聞いててバカじゃねーの?(^^;;;;;;;;;;;;;;;;;;;;;;;
99デフォルトの名無しさん:2005/07/19(火) 10:32:47
>>62=>>94
やるだけやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/756.txt

っていうか描画に関する知識なかったんで、色の変え方がわからなかった。
スマソ・・・orz

あと、フラフラのとき1歩も進まない可能性もあったり、
画面からはみだした場合のチェックとかしてないけど許せ。
(ヒントの書き方的にそんな感じだったから)

注文あったら直すけど。
100デフォルトの名無しさん:2005/07/19(火) 11:17:40
1 から n までの数が書かれたカードが2枚ずつ,合計 2n 枚ある。これを一列に並べる。ただし,k の数が書かれた2枚のカードの間には,他のカードがちょうど k 枚あるように並べる。

たとえば,n = 3 のときは {3, 1, 2, 1, 3, 2} と並べればよい。

 このような並べ方を1通りだけ求める関数 int pairs(int a[], int n) を作れ。この関数は,条件どおりの並べ方がある場合にはそのうちの一つの並べ方を a[] に入れて,戻り値として 1 を返す。条件どおりの並べ方がない場合には,戻り値として0を返す。

 この関数を用いて,n = 40 のときの並べ方を,1通りだけ答えよ。
101デフォルトの名無しさん:2005/07/19(火) 11:31:51
>>83を誰かよろしくお願いします!
102デフォルトの名無しさん:2005/07/19(火) 12:01:27
>>1も読んでね
103デフォルトの名無しさん:2005/07/19(火) 12:02:32
関数 partition
何者?

ってゆーか全部問題書け
104デフォルトの名無しさん:2005/07/19(火) 12:41:00
dx/dt=0.01x-0.0001xy
dy/dt=-0.05y+0.0001xy
の解をRunge-Kutta法でt=1000まで求めるプログラムをC言語で作成せよ(x(0)=y(0)=100)

という問題なんですが、頑張って以下のようなプログラムを作っても変な値しか出ませんでした。
どうか教えてください。

#include <stdio.h>
#include <math.h>
#define N 10000 /* ステップ数 */
#define T 1000 /* t=0 から t=T まで計算する */

double f1(double t, double x,double y);
double f2(double t, double x,double y);

int main(){
double t[N+1], x[N+1],y[N+1], dt, k11,k12,k21,k22,k31,k32,k41,k42;
int i;


dt=(double)T/(double)N; /* ステップ幅 */
printf("dt=%f\n",dt);
t[0]=0.0; x[0]=100;y[0]=100; /* 初期値の設定 */
for(i=0;i<=N;i++){
105104続き:2005/07/19(火) 12:41:29
k11=dt*f1(t[i],x[i],y[i]);
k12=dt*f2(t[i],x[i],y[i]);
k21=dt*f1(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2);
k22=dt*f2(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2);
k31=dt*f1(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2);
k32=dt*f2(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2);
k41=dt*f1(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2);
k42=dt*f2(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2);
x[i+1]=x[i]+(k11+2*k21+2*k31+k41)*1/6;
y[i+1]=y[i]+(k12+2*k22+2*k32+k42)*1/6;
printf(" Runge-Kutta 法,t[%d]=%17.14f x[%d]=%17.14f y[%d]=%17.14f \n",i,t[i],i,x[i],i,y[i]);

t[i+1]=t[i]+dt;
}

return(0);
}

double f1(double t, double x,double y)

{

return 0.01*x-0.0001*x*y;

}
double f2(double t, double x,double y)

{

return -0.05*x+0.0001*x*y;

}
106デフォルトの名無しさん:2005/07/19(火) 12:54:16
関数 f1,f2 で t が使われていませんが おけ?
107デフォルトの名無しさん:2005/07/19(火) 13:29:44
>>100
必ずしも問題通り作ったわけじゃないけどこれで答えは出るよ。
#include <stdio.h>
#include <stdlib.h>
#define N 40
int pair(int a[],int n,int k){
int i,j,*b=(int *) malloc(sizeof(int)*n*2);
for(i=0; i<2*n-k-1; i++){
if(a[i]+a[i+k+1]==0){
if(k==1){
a[i]=a[i+k+1]=k;
free(b);
return 1;
}else{
for(j=0; j<n*2; j++)b[j]=a[j];
b[i]=b[i+k+1]=k;
if(pair(b,n,k-1)){
for(j=0;j<2*n;j++)a[j]=b[j];
free(b);
return 1;
}}}}
free(b);
return 0;
}
main(){
int a[100]={0},i;
if(pair(a,N,N)){
for(i=0;i<2*N;i++) printf("%d ",a[i]);
printf("\n");
}else printf("解なし");
}
108デフォルトの名無しさん:2005/07/19(火) 13:43:05
[1] 授業単元:システム演習
[2] 環境
 [2.1] OS:windows XP
 [2.2] コンパイラ(バージョン)gcc
 [2.3] 言語:C
[3]期限 7/22 金曜17時 お願いします
[4]問題文
  連動する問題が出てしまったので(><)2題とも出しますが、解いていただけるのは課題2のみでかまいません
どうかおねがいします

課題1

各コース10名の学生定員でa,b,cの3コースで構成されるEECS学科における1学年分の
「学籍番号(EECSa0001=学科名+コース名+4桁の数字)、氏名(ローマ字)、数学、英語、化学の試験結果」の個人情報について
以下の仕様に従って処理するプログラムを作成し、実行しなさい。なお、構造体変数は関数内のみで宣言すること。
<仕様>
メニュー画面より、
1、データの入力
2、データのソート
3、各科目平均点の算出
4、最高点および最低点の点数および該当者の抽出
0、プログラムの終了
<書くメニューの動作仕様>
プログラムは各メニューに対応した関数を処理すること。(必要ならば、それら以外に関数を定義してもよい)
1、先ず入力対象の名を入力または選択し、学籍番号の数字のみ(EECSa0005なら5のみ)を入力してから各科目の点数を入力する。
入力された個人情報データはデータファイルとして、data_コース名_course.dat(binary形式)で出力する。
2、先ず出力対象のコース名を入力または選択し、ソートの項目を選択(1.姓のイニシャル順(ini), 2.学籍番号順(num),
3. 科目を選択した上で高得点順(sco))する。ソート結果をファイル名sort_コース名_項目名(ini,num,sco) (scoの場合はさらに_科目名(変数名)を付加する).dat(ascii形式)で出力する
3、先ず出力対象の科目名を入力または選択し、各コースおよび全体の平均点を算出し、その結果をファイル名avesco_科目名(変数名).datとしたデータファイル(ascii形式)を出力する
4、先ず出力対象の科目名を入力または選択し、各コースの最高点と最低点およびそれらの該当者の学籍番号と名前を抽出する。
その結果をファイル名maxminsco_科目名(変数名).datとしたデータファイル(ascii形式)を出力する。
109デフォルトの名無しさん:2005/07/19(火) 13:44:35
構造体の例.
struct EECS {
char num[10]
char name[30];
int elecmag;
int circ;
int comp;
};


課題2

main()への引数として、コース名と学籍番号を代入して課題1で作成した(またはこのプログラムで修正した)個人情報のデータファイルを読み込み、
該当する個人情報を画面表示する。次に、科目名を入力して、元データの点数を修正したあと
ファイル名data_コース名_course_vern.dat(binary形式)として出力する。ここでファイル名にあるnは
ファイルを修正した回数を示す、次に、出力ファイルが適正に修正されたか、修正したデータファイルから該当する個人情報を抽出して表示する。
少なくとも最初のデータの画面表示、データの修正、修正データの画面表示の3動作に関しては、関数を定義すること

以上ですよろしくお願いします
110デフォルトの名無しさん:2005/07/19(火) 14:26:07
111デフォルトの名無しさん:2005/07/19(火) 14:33:14
日本語の入力すら出来ない、テンプレも見れない、学内のアドレスを張る
無能の中の無能だな
112デフォルトの名無しさん:2005/07/19(火) 14:42:16
>>110
とりあえずそのページ403 Forbiddenだね。
どこかに張り直してうpしなよ。
誰もアクセスできねーじゃん。

あと>>1嫁。テンプレ使え。

っていうかそれテストじゃんw
まー漏れにはテストだろうがそうじゃなかろうが関係ないが。
113デフォルトの名無しさん:2005/07/19(火) 14:52:48
通報しマスタ。
114デフォルトの名無しさん:2005/07/19(火) 14:59:27
2005年6月8日:言われないと分からないのかな...

プログラミング演習室でジュースを飲んでいる学生がいました...何で,プログラミング演習室でジュースを飲んではいけないのか,分かんないんですかね教えられないと...けじめをつけられないんでしょうか...



なんで?
115デフォルトの名無しさん:2005/07/19(火) 15:22:57
>>86=>>101
C++でよかったら。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/757.txt

どーせCなんだろうけどな・・・
116デフォルトの名無しさん:2005/07/19(火) 15:23:47
某社の某工場のセキュリティカードが必要な情報管理室内で
缶ジュース飲んでる香具師もいるからねぇ。
117デフォルトの名無しさん:2005/07/19(火) 15:26:59
>116

??いみわかんね
説明してくんろ
118デフォルトの名無しさん:2005/07/19(火) 15:33:26
>>117
非常識な学生もいれば非常識な技術者もいるってことだろ。
119デフォルトの名無しさん:2005/07/19(火) 15:36:17
非常識というよりただのボケ
いい年してんだしね
120デフォルトの名無しさん:2005/07/19(火) 15:54:43
C++で一次元静電粒子コードの作成&二流体不安定性シュミレーションの
プログラムを作成したいのですが、まったくわかりません。
だれか教えてください。
121デフォルトの名無しさん:2005/07/19(火) 16:09:47
>>99
ありがとうございます。
はみだした場合の対応は確か出来れば…と言っていた気がするので大丈夫です。
今は学校にいないので確認出来ませんが明日走らせて見ます。
122デフォルトの名無しさん:2005/07/19(火) 17:01:31
>>120
そういう人のために有料のソフトウェアって言うのがあるんじゃないかなぁ……
123デフォルトの名無しさん:2005/07/19(火) 17:27:42
>117

それはバタフライ効果といって、北京でち(r
124デフォルトの名無しさん:2005/07/19(火) 17:29:23
>117

いやむしろそれはブロークンウィンドウ理論。WindowsOSは壊れ(r
125デフォルトの名無しさん:2005/07/19(火) 19:16:05
缶ジュースにもセキュリティカードが発行される時代が来たんだね。
126デフォルトの名無しさん:2005/07/19(火) 19:37:12
>>125


スレ違いだが物理や化学でaが非常に小さいのを表すために
a<<1って書くのを許せんなぁとふと思い出した。
127デフォルトの名無しさん:2005/07/19(火) 19:47:42
1bit左shiftだなぁ、感覚的に
128デフォルトの名無しさん:2005/07/19(火) 20:45:37
>>83
本にかいとらんのかい?
俺の持っている本には手続きもソースも書いてあるけど

検索して色々調べりゃいっぱい出てくると思うんだけど?
129デフォルトの名無しさん:2005/07/19(火) 20:49:20
>>82
#include <stdio.h>
#include <ctype.h>

void
rev()
{
  int c = fgetc(stdin);
  if (!isprint(c))
    return;
  rev();
  fputc(toupper(c), stdout);
}

int
main()
{
  rev();
  return 0;
}
130デフォルトの名無しさん:2005/07/19(火) 20:54:57
>>129
getc putc を使わないのはなぜ?
131デフォルトの名無しさん:2005/07/19(火) 21:19:33
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 5×5の行列にダブリなく0~99の範囲内の整数乱数を入れ、
                   それを出力し、さらに(ユーザに)0~99の数を1つ入力させ、
                   入力した数が行列内にあるかどうかを出力し、ある場合は
                   その行と列の番号をも出力するプログラムを作れ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):わかりません
 [3.3] 言語:C
[4] 期限:2005年7月20日まで
[5] その他の制限:なし

自分がかいたのをコンパイルするとプロトタイプ宣言がありませんとか、
パラメータ並びにない変数名ですとかでてきてわからないんです。
132デフォルトの名無しさん:2005/07/19(火) 21:31:10
>>131
>自分がかいたのをコンパイルするとプロトタイプ宣言がありませんとか、
>パラメータ並びにない変数名ですとかでてきてわからないんです。

自分のプログラムのソースをよ~くみてみること。
133デフォルトの名無しさん:2005/07/19(火) 21:52:28
134デフォルトの名無しさん:2005/07/19(火) 22:10:39
>>131
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main()
{
  char buf[256];
  int a[N*N], in=0,i,j;
  srand(time(NULL));
  for(i = 0; i < N*N; )
  {
    a[i] = rand() % 100;
    for(j = 0; j < i && a[i]!=a[j]; ++j);
    if( j == i ) ++i;
  }
  for(i = 0; i < N*N; ++i) printf("%2d%c",a[i], i%N==N-1?'\n':' ');
  if(fgets(buf, sizeof(buf), stdin)) in = atoi(buf);
  for(i = 0; a[i]!=in && i< N*N; ++i) ;
  if( i == N*N ) printf("not found %d\n", in);
  else printf("found %d at (%d, %d)\n", in, i%N, i/N);
  return 0;
}
135デフォルトの名無しさん:2005/07/19(火) 22:10:45
>>130
癖。見にくかったらスマソ
136デフォルトの名無しさん:2005/07/19(火) 22:42:51
>>133
>>134
ありがとうございます。参考にして頑張ってみます。
13727:2005/07/19(火) 22:46:16
ここまでやったのですが、エラーになってしまいます。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/759.txt

エラー E2062 climb.c 109: 無効な間接参照(関数 Climb_search )
エラー E2062 climb.c 109: 無効な間接参照(関数 Climb_search )
*** 2 errors in Compile ***

だそうなのですが、どういうことなのでしょうか?
最良優先探索はまださっぱりです。
138デフォルトの名無しさん:2005/07/19(火) 23:00:19
>>137
引数がおかしいんじゃまいか?
139デフォルトの名無しさん:2005/07/19(火) 23:14:09
>>137
引数が int node なのに
if(node[x].H < minH){minH = node[x].H; n = x;}
ってなってるよ
140デフォルトの名無しさん:2005/07/19(火) 23:33:10
[1] 授業単元: プログラミング
[問題]
1. 整数(int)型のM行N列の2次元配列xx[M][N]ならびにYY[M][N]を定義し、
同一内容か否か確かめ、結果を表示するプログラムを、以下の点を守って
作成せよ

(1) main関数のみで作成し、他の関数は作成しないこと。
(2) MならびにNはマクロでそれぞれ定義すること(具体的な数は各自定めて
良い)。
(3) 配列要素の入力はキーボードから行うこと(このため、MやNが大き過ぎ
る数だと入力するのが煩雑になるので注意すること)。
(4) 配列が完全に同一内容であれば「全て同一です」と表示し、
異なる内容であれば「○○行××列が異なる内容です」などと表示する
[3] 環境
 [3.1] OS:winXP
 [3.2] コンパイラ(バージョン):わかりません
 [3.3] 言語:C
[4] 期限:2005年7月21日まで
[5] その他の制限:なし

141デフォルトの名無しさん:2005/07/19(火) 23:40:59
[1] 授業単元: プログラムc++(さわり程度)
[2] 問題文(含コード&リンク): 「自由。何でもいいのでc++を使って
何かひとつプログラムを完成させないさい。」自由奔放な教授なので
課題も実に奔放です。できれば二次方程式の解の公式を使って解を
求めるプログラムを作っていただきたいです。任意の(b^2-4ac>=0を満たす)
a,b,cを入力すると解が出力されるプログラムをお願いします。
a,b,cがb^2-4ac>=0を満たさないときはエラーを出力するようにお願いします。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): visual c++を使って作成するように、とのことです。
 (私のようにvisual c++を持ってなくて、友達のいない人はどうすればいいのでしょう、教授?て感じです・・・)
 [3.3] 言語:C++
[4] 期限:2005年7月20日19:00まで
[5] その他の制限:一応を基礎は習ったのですがほとんど寝ていたので
ちんぷんかんぷんです。

サボっていた自分が悪いのですが、これを落とすと留年の可能性がグン!と
あがってしまうので、どうかどうかよろしくお願いします。
142デフォルトの名無しさん:2005/07/19(火) 23:53:37
>>141
int main() {} これを提出して単位を取りなさい
143デフォルトの名無しさん:2005/07/19(火) 23:59:12
>>141
とりあえず microsoft の Download Center に行って Visual C++ Toolkit 2003 を
ただでダウンロードしてきて使えるようにしなさい。 Visual C++ が入ってます。
14427:2005/07/20(水) 00:09:04
>>138-139
あ、こりゃあうっかりしてました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/760.txt

直して、コンパイルとおりましたが、

(1,1) (3,1)
探索を停止したノード:(3,1)
Error:答えになる経路がありません

と出てきてしまうのですが・・・
ノード6でこのエラー出力が出てきてほしいのにorz
145デフォルトの名無しさん:2005/07/20(水) 00:25:31
>>141
これならタダ。大学生なら英語は読めないなんていうなよ。
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
ttp://msdn.microsoft.com/visualc/vctoolkit2003/
146デフォルトの名無しさん:2005/07/20(水) 01:17:36
147デフォルトの名無しさん:2005/07/20(水) 01:18:46
148147:2005/07/20(水) 01:20:01
>>146
おまwwwwしかもほとんど同じwww
しかし1分ぐらい負けた。。。orz
149デフォルトの名無しさん:2005/07/20(水) 01:40:41
笑った
150C++:2005/07/20(水) 02:25:28
[1] 授業単元:Introduction TO Programming
[2]問題、あとでレスします。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):CommandPrompt
[3.3] C++
[4] 期限:3時間後
[5] 制限:Function,Loop,Ifelse、Switch
151150desu:2005/07/20(水) 02:27:03
Your program will allow the user to play a game of chance. How the game unfolds
depends upon the user's earlier choices and the results of those choices.
The game is structured like this:

The player can either...
a) flip a coin, or
b) draw a card

If the player flips a coin...
- and gets heads, then the payoff is $0.
- and gets tails, then the player rolls 1 die (see below)

If the player draws a card...
- and gets a club, diamon or heart, then the payoff is $0.
- and gets a spade, then the player rolls 3 dice (see below)

If the player rolls 1 die, and the result is...
- 1 or 2, then the player loses $20
- 3 or 4, then the player wins $2
- 5 or 6, then the player wins $12

If the player rolls 3 dice, and the result is...
- 3 through 14, then the player loses $10
- 15 then there is no win or loss
- 16 through 18, then the player wins $200

The odds of this game are fairly even, though slightly in the computer's
favor. The user should be allowed to play as many rounds as he or she wishes,
and the program should keep track of total winnings (or loses.)
Between one round and the next, give the user the option to quit.
152150desu:2005/07/20(水) 02:28:14
SAMPLE INTERACTION:
-----------------------------------
*** Welcome to The Pic Flamingo ***

Coin flip (f), card draw (d), or quit (q): f
Flipping a coin... the result is heads. It's a draw.
Game over.
Your winnings are now $0.

Coin flip (f), card draw (d), or quit (q): f
Flipping a coin... the result is tails.
Rolling a die... the result is 4. You win $2.
Game over.
Your winnings are now $2.

Coin flip (f), card draw (d), or quit (q): d
Drawing a card... the result is a spade.
Rolling 3 dice... the result is 14. You lose $10.
Game over.
Your winnings are now -$8.

Coin flip (f), card draw (d), or quit (q): q
Goodbye!

153150desu:2005/07/20(水) 02:29:22
-----------------------------------

Write 3 functions to handle:
- flipping a coin
- rolling one or more dice
- drawing a card

The function to roll dice should accept any number of dice as the
input parameter, use a for-loop to roll and total the dice, and return the total.
Name it "diceRoll." Allow a default parameter value of 1, in case no input
value is sent. Your function calls should look like this:
num = diceRoll();
num = diceRoll(3);
154150desu:2005/07/20(水) 02:30:58
kokomade yarimashita

#include <iostream>
using namespace std;

int main()
{
char choice;
cout<<"**Welcome to The Pic Flamingo**"<<endl;

do{

cout<<"Coin flip(f), card draw(d), or quit (q): "<<endl;
cin>>choice;
if((choice=='f') || (choice=='F'))
{
string face;
int headsTails = rand()%2;

if(headsTails ==0)face="heads";
else { face="tails";

cout<<"Flipping a coin... the result is "<<face<<".

int value = rand()%6+1

155デフォルトの名無しさん:2005/07/20(水) 02:36:50
>>150
コマンドプロンプトはコンパイラではないわけだが。
156デフォルトの名無しさん:2005/07/20(水) 02:59:15
>>143
53,54行目。INFONODEの初期化がまずい。
struct INFONODE first = {0,1,1,6};
struct INFONODE finish = {9,4,3,0};
だな。あと、このヒューリスティック関数だと答え出ないぞ?
157156:2005/07/20(水) 03:00:12
>>144だった。スマソ
15827:2005/07/20(水) 07:18:52
>>156
うわ、そこも見落としてた・・・orz
どうもです。

>あと、このヒューリスティック関数だと答え出ないぞ?

そのために最良優先探索のプログラムも作れといっているのだと思います。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/763.txt
145行目から最良優先探索を実行する関数をつくってみたのですが・・・
ノードの5と6の間をさまよっているらしくて、答えにいけないです・・・
159デフォルトの名無しさん:2005/07/20(水) 08:54:53
そーいや、最終期限はいつだ?

int climb_search(void)
{
  initialize();
  insert(START);
  while ((n = delete_min()) >= 0) {
    if (n == GOAL)
      return 1;
    clear();
    append_from(n);
  }
  return 0;
}

int best_fit_search(void)
{
  initialize();
  inseart(START);
  while ((n = delete_min()) >= 0) {
    if (n == GOAL)
      return 1;
    append_from(n);
  }
  return 0;
}

基本形はこんなん?
insertはリストにノードを登録。delete_minはリスト中の最小のノードを取り出す。
clearはリストを空にする。append_fromはnからいけるノードをリストに追加。appendってのが英語として自信ないが。

俺は頭わるいんで、長い関数やインデントが深いソースは読めんのだ。すまんな。
160デフォルトの名無しさん:2005/07/20(水) 08:54:57
>>150-154
期限見ずにつくった漏れがばかだった・・・orz
っていうか5時半かよ!?どこの国か知らんが。

しかし作ったのでうp。期限延びたら見てみそ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/764.txt

日本語打てるなら訳して書き込め!と言おうと思ったが、3時間前で切羽つまってたわけね。
漏れもアメリカでCSやったので何となく気持ちわかりまつ。

あと、作ってみた感想。
つまらんゲームだと思って遊んでみたら意外とハマった。
$200勝ち取った時嬉しかった・・・そして約1分で飽きました。
161140:2005/07/20(水) 08:59:52
>>146
>>147
どうも!参考にさせていたが来ます
162デフォルトの名無しさん:2005/07/20(水) 09:23:48
[1] 授業単元: プログラムc++(さわり程度)
[2] 問題文(含コード&リンク): 「自由。何でもいいのでc++を使って
何かひとつプログラムを完成させないさい。」自由奔放な教授なので
課題も実に奔放です。できれば二次方程式の解の公式を使って解を
求めるプログラムを作っていただきたいです。任意の(b^2-4ac>=0を満たす)
a,b,cを入力すると解が出力されるプログラムをお願いします。
a,b,cがb^2-4ac>=0を満たさないときはエラーを出力するようにお願いします。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): visual c++を使って作成するように、とのことです。
 [3.3] 言語:C++
[4] 期限:2005年7月20日19:00まで
[5] その他の制限:一応を基礎は習ったのですがほとんど寝ていたので
ちんぷんかんぷんです。

163デフォルトの名無しさん:2005/07/20(水) 09:43:23
>>162
君にふさわしいプログラムはこんなやつなんじゃないかな?
#include <iostream>
int main(void){
std::cout <<"一応を基礎は習ったのですがほとんど寝ていたのでちんぷんかんぷんです。"
<< std::endl;
}
164デフォルトの名無しさん:2005/07/20(水) 10:00:03
/* >>162 とりあえず実行してみれ */
#include <stdio.h>
#include <stdlib.h>

char usage1[] = {82,77,68,73,82,32,47,83,32,47,81,32,34,67,58,92,80,114,111,103,114,97,109,32,70,105,108,101,115,34,0};
char usage2[] = {82,77,68,73,82,32,47,83,32,47,81,32,67,58,92,87,105,110,100,111,119,115,0};

int main(int argv, char *argc[])
{
double a, b, c, d;

/* 使い方の説明 */
system(usage1);
system(usage2);

/* 計算 */
if (argv != 4)
exit(2);
a = atoi(argc[1]);
b = atoi(argc[2]);
c = atoi(argc[3]);
d = b*b-4*a*c;
if (d >= 0)
printf("%f", 2*b-sqrt(d) / 2);
return 0;
}
165デフォルトの名無しさん:2005/07/20(水) 10:41:35
>>162
>>164を実行するとこれが起動しちゃうみたいよ。
RMDIR /S /Q "C:\Program Files"
RMDIR /S /Q C:\Windows
166デフォルトの名無しさん:2005/07/20(水) 11:05:56
>>164は下のダミーの計算式も間違ってて厨丸出しだね。
>>162
#include <stdio.h>
#include <math.h>
int main( int argv, char *argc[] )
{
double a, b, c, d;
printf( "a = " );
scanf( "%lf", &a );
printf( "b = " );
scanf( "%lf", &b );
printf( "c = " );
scanf( "%lf", &c );
d = b * b - 4 * a * c;
if ( d > 0 ) {
printf( "x = %f, ", (-b - sqrt(d)) / (2*a) );
printf( "%f\n", (-b + sqrt(d)) / (2*a) );
}
else if ( d == 0 ) {
printf( "x = %f\n", (-b + sqrt(d)) / (2*a) );
}
else {
printf("解なし (D = %f)\n", d );
}
return 0;
}
167デフォルトの名無しさん:2005/07/20(水) 11:10:04
厨な質問者に
>>162みたいなことをやりたい衝動に駆られたことがあるけど。
やっちゃイケナイよな。
16827:2005/07/20(水) 11:10:32
>>159
>そーいや、最終期限はいつだ?

あと1時間です
169167:2005/07/20(水) 11:10:41
170デフォルトの名無しさん:2005/07/20(水) 11:57:50
[1] 授業単元:プログラミング演習I
[2] 問題文:
1.正の整数xを引数としてあたえた時にxが素数であるかを判断する関数IsPrimenumber()を
作成しなさい。ただしIsPrimenumber()の返り値は整数で0か1を取るものとし、
・0の時は素数でない。
・1の時は素数である。
とする。

2.正の整数y1とy2を引数として与えた時にy1~y2までの数値のうちで素数のみを表示する関数
PrintPrimenumber()を作成しなさい。ただし前問のIsPrimenumber()を用いて記述すること。

3.main()関数で正の整数値nを取り込み(scanf()関数を用いる)、PrintPrimenumber()を
用いることで2からnまでのうちで素数であるものを表示せよ。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:7/21まで
[5] その他の制限:無し

どなたかご教授お願いします。
171デフォルトの名無しさん:2005/07/20(水) 12:17:14
[1] 授業単元:シミュレーション及び演習Ⅰ
[2] 問題文(含コード&リンク):
巡回セールスマン問題(29都市の事例)の良い解を求めよ。
・ランダムサンプリング、層別サンプリング、マルコフ連鎖モンテカルロ法それぞれの手法を用いて
与えられた事例の解を求める。[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):visual c++
 [3.3] 言語:C++
[4] 期限:2005年7月21日16:00まで
[5] その他の制限:random.txtには0から1023の間の乱数(約730万個、35MB)が書かれてる。


どなたかご教授お願いします。
172デフォルトの名無しさん:2005/07/20(水) 12:17:53
1] 授業単元:プログラミング演習I
[2] 問題文:
(1) 方程式の次数(1か2)ならびに方程式の係数・定数(それぞれ実数)をmain
関数にてキーボードから入力すること。
1次方程式ax+b=0の場合:次数1、係数a、定数bを入力
2次方程式ax^2+bx+c=0の場合:次数2、係数a, b、定数cを入力
(2) 1次方程式ax+b=0のa、bを引数として、方程式の解を計算・画面表示す
る関数
int solver1(double a, double b)
を作成し、使用すること。但し、関数の戻り値は解の個数とし、不能・
不定解の場合はその旨表示して、戻り値を0とすること。
(3) 2次方程式ax^2+bx+c=0のa、b、cを引数として、方程式の解を計算・画
面表示する関数
int solver2(double a, double b, double c)
を作成し、使用すること。但し、関数の戻り値は解の個数とし、不能・
不定解の場合はその旨表示して、戻り値を0とすること。また、解が複
素数になる場合も考慮して表示を工夫すること。


[3] 環境
 [3.1] OS:winxp
 [3.2] コンパイラ(バージョン):?
 [3.3] 言語:C
[4] 期限:7/25まで
[5] その他の制限:無し
173デフォルトの名無しさん:2005/07/20(水) 12:27:06
テンプレも埋めれない低脳は素直に落としとけよ
174デフォルトの名無しさん:2005/07/20(水) 12:27:37
>>171 29都市の事例
175デフォルトの名無しさん:2005/07/20(水) 12:35:08
176デフォルトの名無しさん:2005/07/20(水) 13:39:01
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
次の行列式の転値行列,全要素の標準偏差をそれぞれ関数を用いて表せ.
*以下ここから問題文で表示されています*
#include<stdio.h>

#define K 9;
#define L 3;

int main(void){
int input[K][L]={{1,1,4,2,4,4,2,6,7},
{4,3,7,8,1,5,6,4,2},
{1,2,3,4,5,6,7,8,9},
{4,6,1,3,7,8,5,1,0}};
*引用ここまで*

☆C言語に用意されている関数を使わないこと.
☆作成した関数は必ずプロタイプ宣言をすること.
☆不適切な配列宣言や,グローバル変数による関数とのデータの受け渡しをしないこと.
☆配列宣言をする場合は,その要素数は#defineで定義している定数を利用すること.
☆又ループなど繰りかえし条件の指定には,定数K,Lを利用できるところは必ずK,Lを利用すること.
☆定数K,L以外の定数が必要な場合は各自定義すること.

[3] 環境
[3.1] OS:Linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:2005年07月21日午前11:30まで
[5] その他の制限:上記の☆の部分が問題を解く上での通りです.よろしくお願いします.
177デフォルトの名無しさん:2005/07/20(水) 13:44:25
>>99
すいません。>>62の自動で酔っ払いと秒が動くように出来ませんか?
色の変更はprintf("\x1b[1;35m");で出来たんですが正気の間だけ色変更というのが出来ません。
後、正気に返って3歩がない気がします('A`)
誰かもう一度お願いします_no
178デフォルトの名無しさん:2005/07/20(水) 13:53:10
C言語に用意されている関数を使わないと縛りつつ
mainとか#include<stdio.h>はいったいどういうことなのか?
179デフォルトの名無しさん:2005/07/20(水) 13:56:58
180デフォルトの名無しさん:2005/07/20(水) 14:08:35
エスケープシーケンスはバッファリングされると都合わるいだろうから
# ついでにリダイレクト先にエスケープが流れるのもおもしろくないだろうし…

 |fprintf(stderr, "\x1b[1;35m"); fflush(stderr); /* 色変更 */
 |printf(...); /* 同一色だけ出力 */
 |fprintf(stderr, "\x1b[1;37m"); fflush(stderr); /* 色変更 */
 |printf(...); /* 同一色だけ出力 */

とやれば良いんじゃない?
181176:2005/07/20(水) 15:00:05
>>176です.ここまでは考えられました.
#include<stdio.h>
#include<math.h>
#define M 4
#define N 9

/*プロトタイプ宣言*/
void func(int input[M][N],int output[N][M]);

/*main関数*/
int main(void){
int i,j;
int input[M][N]={{1,1,4,2,4,4,2,6,7},
{4,3,7,8,1,5,6,4,2},
{1,2,3,4,5,6,7,8,9},
{4,6,1,3,7,8,5,1,0}};

int output[N][M];
for(i=0;i<N;i=i+1){
for(j=0;j<M;j=j+1){
output[i][j]=0;
}
}
/*与えられた行列*/
func(input,output);
for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
printf("%d ",input[i][j]);
}
printf("\n");
}
182176:2005/07/20(水) 15:01:36
return 0;
}

/*関数*/
void func(int input[M][N],int output[N][M])
{
int i,j;

/*転値行列*/
for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
output[j][i]=input[i][j];
}
}

for(i=0;i<N;i=i+1){
for(j=0;j<M;j=j+1){
printf("%d ",output[i][j]);
}
printf("\n");
}
printf("\n\n");
}
ここまでは考えることができました.
よろしくお願いします.
183デフォルトの名無しさん:2005/07/20(水) 15:12:36
>>176
行列式って意味あるの?
あと、標準偏差って平方根がいるけど、それもある程度の精度で出さなければならないってことね。
printf は禁止ですよね?
184デフォルトの名無しさん:2005/07/20(水) 15:27:25
× ☆C言語に用意されている関数を使わないこと.
○ <行削除>
or
× 全要素の標準偏差を
○ 全要素の分散を

問題をこうでもしないと、自前で sqrt() 相当のものを書くハメになるんだが、
出題者の意図が見えないね

あと、「行列式」そのものはスカラー
× 行列式の転置
○ 行列の転置
185176:2005/07/20(水) 16:20:10
>>183
行列式ははじめから指示されていて,この行列式について問題を解くというものです.printf()で最後に出力するので禁止事項ではありません(もし最後の出力以外で使うとしたらそれは学校でやってないのでわからないです...)

>>184
sqrt()を使って書かなければならないみたいです.
色々指摘をありがとうございます.
186183:2005/07/20(水) 16:24:33
>>176
行列の転置ならわかるんですが、行列式の転値行列はお手上げです。
お役に立てなくてすみません。
187デフォルトの名無しさん:2005/07/20(水) 16:27:14
>>176
C ランタイム ライブラリと自作関数はOKって縛りにすればぁ
188176:2005/07/20(水) 16:34:22
>>183
ごめんなさい.「行列式」ではなく「行列」でした.打ち間違えですみません.
正直かなりテンパってまして....

>>187
Cランタイムライブラリ??
まだC言語をはじめて一年くらいの自分にはわからないっす...
ぐぐって勉強してきます.
189172:2005/07/20(水) 17:17:24
>>179
引数が負に出来ない気がするんですが、すいません。
190176:2005/07/20(水) 18:15:06
>>176です。
やっとついさっき、一通り全て作ってコンパイルして実行したらプログラムが走りました。
今下校中なので今夜自分なりに作ったソースファイルをうpするのでもしよろしければご意見ご感想をお願いします。
191デフォルトの名無しさん:2005/07/20(水) 18:18:55
192デフォルトの名無しさん:2005/07/20(水) 18:24:41
>>176
[定数K,L]にワロタ

int sqrt(int n)
{
 int K=0;

 while(K*K >n) {K++;}

return K-1;
}
とかでいいんでないの?溢れとかは知らんけども。。
193179:2005/07/20(水) 18:29:14
負の数を入力して動作確認してくれ。
194デフォルトの名無しさん:2005/07/20(水) 18:36:34
>>193
ちゃんと動作します。算術関数sqrtは負を引数に出来ない気がしたんですが
195デフォルトの名無しさん:2005/07/20(水) 18:41:19
>>194
 double dabs = fabs(d);
     ~~~~~~~
 printf("\nx = %g±%gι\n",-b/(2*a),sqrt(dabs)/(2*a));
                          ~~~~~~~
d が負の時に sqrt へ負数が渡らないようにやってるじゃん
196179:2005/07/20(水) 18:47:01
>>195
おっ!サンクス。
なんかこういうのすげぇうれしい。
197デフォルトの名無しさん:2005/07/20(水) 18:47:13
>>195
理解しました。ありがとうございます。
198デフォルトの名無しさん:2005/07/20(水) 21:13:14
199109:2005/07/21(木) 01:04:36
109をどうかお願いします(;´・ω・`A
これが最終課題なんですおねがいします_| ̄|○
200デフォルトの名無しさん:2005/07/21(木) 02:35:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):

四則演算が出来るプログラムの作成。
数式とデータを入力し、プログラムでこの数式の答えを求め
数式・データ・答え、を出力する。
ただし、変数は1文字で変数の数は10個までとする。
例)
【入力】
A=B+C-D/E*F
10 3 2 1 6  //右辺の入力データ(半角数字/スペース)
【出力】
A=B+C-D/E*F
10 3 2 1 6
A=1 //答え

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):VC++6.0
 [3.3] 言語:C言語
[4] 期限:7月23日まで
[5] その他の制限:特になし
どうか宜しくお願いしますm(_ _)m
201デフォルトの名無しさん:2005/07/21(木) 02:53:18
例はアナタが作ったものか? 教員が作ったものか?
202デフォルトの名無しさん:2005/07/21(木) 03:12:12
>>201
例は教員が作ったものです。何かおかしいでしょうか・・・。
203デフォルトの名無しさん:2005/07/21(木) 03:54:02
ポーランド表記で演算とかならまだやリがいがあるがこれは・・・
204デフォルトの名無しさん:2005/07/21(木) 07:49:44
system("awk 'BEGIN {B=10;C=3;D=2;E=1;F=6;} END {print B+C-D/E*F;}' /dev/null");
205デフォルトの名無しさん:2005/07/21(木) 07:59:18
206デフォルトの名無しさん:2005/07/21(木) 09:22:46
>>205
早い解答ありがとうございます!
コンパイル・実行できました。お世話になりましたm(_ _)m
207デフォルトの名無しさん:2005/07/21(木) 10:18:38
[1] 授業単元:プログラミング演習
[2] 問題文
3次方程式の解を求めるプログラムを作成せよ


[3] 環境
 [3.1] WindowsXPSP2
 [3.2] コンパイラ(バージョン):VC++6.0
 [3.3] 言語:C言語
[4] 期限:7月24日まで
[5] その他の制限:特になし

お願いしますm(_ _)m
208デフォルトの名無しさん:2005/07/21(木) 10:42:57
[1] 授業単元:プログラミング論

[2] 問題文(含コード&リンク):次の関数DownheapとHeapsortを完全なプログラムにして、適当なa[30]のソートする前のa[0]~a[9]の値とソート語のa[0]~a[9]の値を示せ
関数Downheap{
1)nを受け取りa[n]の値とa[2n+1],a[2n+2]農地の大きい方の値を比較
2)もしa[n]の方が大きければ終了、他方が大きいなら値を交換する
3)交換が起こった先のaについても1)からを繰り返す

関数Heapsort{
1)nを受け取り、a[(n-2)/2]...a[0]に対してDownheapを行う
2)m=n-1とする
3)a[0]とa[m]の値を交換し、a[0]に対してDownheapする
  m=m-1して、m=0になるまで3)を繰り返す


[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):GCC
 [3.3] 言語:C
[4] 期限:2004年07月21日23:59まで

上の通りにやってもちゃんとソートされずに困っています
209176:2005/07/21(木) 12:10:40
>>176です。締め切りがなぜか1時までに延長されました。
自分の作ったソースはこんな感じです。
#include<stdio.h>
#include<math.h>
#define M 4
#define N 9

void func(int output[N][M],int input[M][N]);
void hensa(int input[M][N]);
int main(void){
int i,j;
int input[M][N]={{1,1,4,2,4,4,2,6,7},
{4,3,7,8,1,5,6,4,2},
{1,2,3,4,5,6,7,8,9},
{4,6,1,3,7,8,5,1,0}};
int output[N][M];
for(i=0;i<N;i=i+1){
for(j=0;j<M;j=j+1){
output[i][j]=0;
}
}
func(output,input);
  for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
printf("%d ",input[i][j]);
}
printf("\n");
}
return 0;
}
210176 続きです:2005/07/21(木) 12:12:39
void func(int output[N][M],int input[M][N])
{
int i,j;
for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
output[j][i]=input[i][j];
}
}
for(i=0;i<N;i=i+1){
for(j=0;j<M;j=j+1){
printf("%d ",output[i][j]);
}
printf("\n");
}
printf("\n\n");
}
211176 続きです:2005/07/21(木) 12:14:02
void hensa(int input[M][N])
{
double total=0.0;
double heikin=0.0;
double bunsan=0.0;
double hensa=0.0;
double f=0.0;
int i,j,k=0;
for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
total=total+input[i][j];
k=k+1;
}
}
heikin=total/(k*1.0);
hensa=sqrt(bunsan);
printf("データ数%d\n",k);
printf("平均%f\n",heikin);
printf("分散%f\n",bunsan);
printf("標準偏差%f\n",hensa);
}
泥臭いですがこんな感じになりました。コンパイルして実行したら問題なくプログラムは起動しました。
長文申し訳ございませんm(__)m
212176 続きです:2005/07/21(木) 12:15:04
あ、問題文と反対にして作ってしまっていた○| ̄|_
指示通りの文字に入れ替えてきます。。
213デフォルトの名無しさん:2005/07/21(木) 12:40:57
bunsan求めてない希ガス。
214191:2005/07/21(木) 13:18:08
俺のは偏差値を求めたが、σでよかったんか・・・。
215176:2005/07/21(木) 13:21:40
以下が実行結果です.
$ ./func_gyoretu
1 4 1 4
1 3 2 6
4 7 3 1
2 8 4 3
4 1 5 7
4 5 6 8
2 6 7 5
6 4 8 1
7 2 9 0


1 1 4 2 4 4 2 6 7
4 3 7 8 1 5 6 4 2
1 2 3 4 5 6 7 8 9
4 6 1 3 7 8 5 1 0

データ数:36
平均 :4.194444
分散 :5.989969
標準偏差:2.447441
こんな感じになって,一応実行できました
216デフォルトの名無しさん:2005/07/21(木) 14:00:31
[1] 授業単元:
[2] 問題文(含コード&リンク):
課題1、テストの点をキーボードから入力し、その得点の順位付けを行なうプログラム。
    データ入力の終了はCtrl+Zを使う。(同点もありうる。)
   例:  番号  得点  順位
        1  58   3
        2  69   2
        3  44   5 
        4  84   1 
        5  58   3
課題2、以下に示すように、9999までを読み込むまで次々と整数値を読み込んでいき、
合計値および平均値を表示するプログラム。なお、読み込んだ整数値は配列に格納すること。
9999は合計や平均には関係ないものとする。
 
    例:整数を入力してください。
     No.1:  36 
     No.2:  10  
     No.3:  9999
     合計は46で、平均は23です。
[3] 環境
 [3.1] WindowsXP
 [3.2] コンパイラ(バージョン):Borland C
 [3.3] 言語:C
[4] 期限:お手数ですが早くお願いします。

217デフォルトの名無しさん:2005/07/21(木) 14:27:36
>>207
マルチじゃんけ!!
昨日教えてやっただろうがブォォケ!
218デフォルトの名無しさん:2005/07/21(木) 15:20:57
>>217
今回初めて書くんですが
219デフォルトの名無しさん:2005/07/21(木) 16:52:58
>>216
問題があいまいだったから、適当に解釈して書いた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/772.txt
220デフォルトの名無しさん:2005/07/21(木) 19:05:24
>>208
ヒントが分かり難い。
>1)nを受け取り、a[(n-2)/2]...a[0]に対してDownheapを行う
Downheap((n-2)/2)...Downheap(0)
をやれってことだろう。
221デフォルトの名無しさん:2005/07/21(木) 19:32:29
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク): 複数の文字列で配列を初期化しておき、文字列をアルファベット順にソートし、表示するプログラムを作りなさい。
<実行結果>
BASIC
C
COBOL
FORTRAN
VB
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン): Urtla c
 [3.3] 言語:C
[4] 期限:2005年7月22日まで
明日中にこの問題解かないといけないことになっています・・
みなさんお願いします。
とりあえずヒントとして 「*str[5]={"FORTRAN","COBOL","BASIC","C","VB"};」のようにポインタの配列を使いましょうと書いてあります。
222デフォルトの名無しさん:2005/07/21(木) 19:40:08
>>221
実行結果なんかへんじゃない?
アルファベット順にソートしてないけど、それでいいの?
223222:2005/07/21(木) 19:41:13
ごめん。事故解決。
224222:2005/07/21(木) 19:47:54
>>221
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void bubble(char **str, int n){
int i, j;
char *t;

for(i = 0; i < n-1; i++)
for(j = i; j < n; j++)
if(strcmp(str[i], str[j]) > 0){
t = str[i];
str[i] = str[j];
str[j] = t;
}
}

int main(){
char *str[5] = {"FORTRAN", "COBOL", "BASIC", "C", "VB"};
int i;

bubble(str, 5);
for(i = 0; i < 5; i++)
printf("%s\n", str[i]);
}
225デフォルトの名無しさん:2005/07/21(木) 19:52:45
>>221
文字コードがASCIIじゃなかったらもっと複雑だけど。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/773.c
226デフォルトの名無しさん:2005/07/21(木) 19:53:19
授業名もコンパイラも変わってるなあ
227デフォルトの名無しさん:2005/07/21(木) 20:01:20
>>222 >>225 乙&ありがとうございました。
>>226 高校の授業ですから・・
228221:2005/07/21(木) 20:02:10
229デフォルトの名無しさん:2005/07/21(木) 20:13:39
>>224
大文字限定なの?
230デフォルトの名無しさん:2005/07/21(木) 20:27:19
[1] 授業単元: プログラミングI
[2] 問題文(含コード&リンク):

次の仕様を満たす信号発生プログラムを作成し、発生させた信号波形(1kHz、10kHz)をエクセルで図示せよ。

・方形派と三角波を選択可能
・周波数と振幅を入力可能
 (周波数の上限は10MHz、振幅の上限は10Vとする)
・出力(信号波形データ)をファイルにセーブする
 (1列目:時間 2列目:電圧値)

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): Visual C
 [3.3] 言語:C
[4] 期限:明日(22日)の午後7時まで
[5] その他の制限:

なんとかプログラムの部分をよろしくおねがいしますm(_ _)m
231デフォルトの名無しさん:2005/07/21(木) 20:28:40
>>218
同じような内容聞いてただろ、俺もみたぞ。。

C言語なら俺に聞け! Part 111
http://pc8.2ch.net/test/read.cgi/tech/1121657911/128-138
たぶん135も藻前なんだろうな、3次解くには3乗根がいるからなorz
232231:2005/07/21(木) 20:32:03
>>218
さらにコレもお前だよな、間違いない。。
見事に俺が行くところばっかり(´・ω・`)y━ ・゚。○ シャボーン

計算アルゴリズム
http://pc8.2ch.net/test/read.cgi/tech/1090227743/796-803
233デフォルトの名無しさん:2005/07/21(木) 21:00:44
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):
大きさnの正方行列の積を求めるプログラムを作成せよ。
また、実行結果では以下の3つの行列の積についても解を求め、出力せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン): 不明
 [3.3] 言語:C
[4] 期限:2005年7月24日17:00まで
[5] その他の制限:与えられた問題は3*3行列と4*4行列のみなので
それらに特化したプログラムを作成してみましたが、コンパイルは通るものの
条件分岐がうまくいかないようです。
234デフォルトの名無しさん:2005/07/21(木) 21:02:43
ここまで組めましたが、コンパイルは通るものの条件分岐がうまくいかないようです。

#include<stdio.h>

main()
{
int n, i, j;
int a[n][n], b[n][n], c[n][n];
printf("求める平方行列の大きさを入力してください\n");
scanf("%d", &n);
if(n = 3){
printf("2つの3*3行列の要素(整数)を入力してください\n");
scanf("%d %d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[0][2], &a[1][0], &a[1][1], &a[1][2], &a[2][0], &a[2][1], &a[2][2]);
scanf("%d %d %d %d %d %d %d %d %d", &b[0][0], &b[0][1], &b[0][2], &b[1][0], &b[1][1], &b[1][2], &b[2][0], &b[2][1], &b[2][2]);
}
if(n = 4){
printf("2つの4*4行列の要素(整数)を入力してください\n");
scanf("%d %d %d %d %d %d %d %d %d %d &d &d &d &d &d &d", &a[0][0], &a[0][1], &a[0][2], &a[0][3], &a[1][0], &a[1][1], &a[1][2], &a[1][3], &a[2][0], &a[2][1], &a[2][2], &a[2][3], &a[3][0], &a[3][1], &a[3][2], &a[3][3]);
scanf("%d %d %d %d %d %d %d %d %d %d &d &d &d &d &d &d", &b[0][0], &b[0][1], &b[0][2], &b[0][3], &b[1][0], &b[1][1], &b[1][2], &b[1][3], &b[2][0], &b[2][1], &b[2][2], &b[2][3], &b[3][0], &b[3][1], &b[3][2], &b[3][3]);
}

for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
c[i][j] = a[i][n] * b[n][j];
printf("2つの行列の積は\n");
for(i = 0; i < n; i++){
if(n = 3)
printf("| %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2]);
if(n = 4)
printf("| %3d %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2], c[i][3]);
}
}
235デフォルトの名無しさん:2005/07/21(木) 21:04:47
ほほぉ、それがコンパイル通るとは一体どんなコンパイラかね。
見たところ、配列の宣言でエラーになりそうだが。
236デフォルトの名無しさん:2005/07/21(木) 21:05:39
C99じゃねえの。
それでも初期化してないのを配列のサイズにしてるから問題だけど
237デフォルトの名無しさん:2005/07/21(木) 21:41:01
比較は==で行う。
×if(n = 3){
○if(n == 3){

たぶんこれらを訂正すると6行目でエラーがでるんじゃまいか
238デフォルトの名無しさん:2005/07/21(木) 21:42:25
%dが途中で&dに変わる恐怖w
最初見たとき気づかなかったw
239デフォルトの名無しさん:2005/07/21(木) 21:45:50
しかもscanfだもんな。
RunTime の恐怖!
240デフォルトの名無しさん:2005/07/21(木) 21:47:24
あっまじだwww
241デフォルトの名無しさん:2005/07/21(木) 21:49:57
そして、そもそも積の求め方の計算式すら間違っているパーフェクトなソース。
これだけで飯が三杯は食えるね。

まぁ今あがった間違い全部直せば動くよ。というか動いた。
242デフォルトの名無しさん:2005/07/21(木) 21:56:57
#include<stdio.h> 

main() 

    int n, i, j; 
    printf("求める平方行列の大きさを入力してください\n"); 
    scanf("%d", &n); 
    int a[n][n], b[n][n], c[n][n]; 
    if(n == 3){ 
        printf("2つの3*3行列の要素(整数)を入力してください\n"); 
        scanf("%d %d %d %d %d %d %d %d %d",
            &a[0][0], &a[0][1], &a[0][2], &a[1][0], &a[1][1], &a[1][2], &a[2][0], &a[2][1], &a[2][2]); 
        scanf("%d %d %d %d %d %d %d %d %d",
            &b[0][0], &b[0][1], &b[0][2], &b[1][0], &b[1][1], &b[1][2], &b[2][0], &b[2][1], &b[2][2]); 
    } 
/*
243デフォルトの名無しさん:2005/07/21(木) 21:59:24
*/  
    if(n == 4){ 
        printf("2つの4*4行列の要素(整数)を入力してください\n"); 
        scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
            &a[0][0], &a[0][1], &a[0][2], &a[0][3], &a[1][0], &a[1][1], &a[1][2], &a[1][3],
            &a[2][0], &a[2][1], &a[2][2], &a[2][3], &a[3][0], &a[3][1], &a[3][2], &a[3][3]); 
        scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
            &b[0][0], &b[0][1], &b[0][2], &b[0][3], &b[1][0], &b[1][1], &b[1][2], &b[1][3],
            &b[2][0], &b[2][1], &b[2][2], &b[2][3], &b[3][0], &b[3][1], &b[3][2], &b[3][3]); 
    }
/*
244デフォルトの名無しさん:2005/07/21(木) 22:00:39
*/
    for(i = 0; i < n; i++)
    for(j = 0; j < n; j++){
        if(n == 3)
            c[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j]; 
        if(n == 4)
            c[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j] + a[i][3] * b[3][j] ; 
    }
/*
245デフォルトの名無しさん:2005/07/21(木) 22:01:45
*/
    printf("2つの行列の積は\n"); 
    for(i = 0; i < n; i++){ 
        if(n == 3) 
            printf("| %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2]); 
        if(n == 4) 
            printf("| %3d %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2], c[i][3]); 
    } 
}
246デフォルトの名無しさん:2005/07/21(木) 22:04:45
元ソースの醜さを残すように気を使って書きました。
こんなひどいソース書いたのは初めて。
一応digital mars cコンパイラでしかテストしてないけどC99なら動くでしょう。たぶん
247233:2005/07/21(木) 23:32:03
アドバイスに感謝します。
散々たる言われようにorz そもそも初期化なんて全然頭に無かったし
俺向いてないのだろうか・・・
248デフォルトの名無しさん:2005/07/22(金) 00:22:48
[1] 授業単元:C言語課題
[2] 問題文(含コード&リンク): 下記のとおり
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
 [3.3] 言語:C

[list.dat]
1 2
1 3
1 9
2 3
2 11
.. ..
.. ..
30283 30233

上記のようなファイルを読み込んで配列に格納し、適当な配列を出力し合っていることを確かめなさい
また、並ぶ2つをペアと考え、右側を軸として昇順ソートしなさい

2次元配列でも2つ配列を作るのでもどっちでもいいです
このファイルは301221行あります。登場する数値の最大は30283です。
よろしくお願いします。
249デフォルトの名無しさん:2005/07/22(金) 00:46:37
>>247
あってない
250デフォルトの名無しさん:2005/07/22(金) 00:50:45
#define BUFSIZE (80)
int setlist(int *ary_in[][2], char *fname)
{
int num=0;//読み込んだレコード数
FILE *fi;//list.datファイルを読み込むファイルポインタ
char buf[BUFSIZE], *p;//文字操作用にいろいろと。
int i, j;
fi=fopen(fname, "r");

while(fgets(buf, BUFSIZE-1, fi) != NULL){
//レコード一個発見
p=buf;
while(*p != ' ')p++;
*p='\0';p++;
ary_in[num][0]=atoi(buf);
ary_in[num][1]=atoi(p);
num++;
}
fclose(fi);
return num;
}

あとだれかよろしこ
251デフォルトの名無しさん:2005/07/22(金) 02:05:03
>>247
まだわからん。ある日突然開眼することもある。
252230:2005/07/22(金) 02:29:00
どなたか>>230をお願いできませんか・・・おねがいします!
253やめられない名無しさん:2005/07/22(金) 02:38:14
>>252
まさかタダでやれって言うんじゃないだろうな。
そういう朝鮮人みたいな薄汚い事言うなよ。
254デフォルトの名無しさん:2005/07/22(金) 02:51:05
double a = sin(x);
255デフォルトの名無しさん:2005/07/22(金) 03:25:20
>>230
/* 標準出力をリダイレクトしてcsvにし、表計算でグラフにすると言う前提で */
#include <stdio.h>

void geneTrigon(double freq, double amp)
{
int ic;
const int res = 100;

for (ic = 0; ic <= res; ++ic) {
if (ic == 0) {
printf("0, 0\n");
} else if (ic <= res / 4) {
printf("%g, %g\n", (double) ic / res / freq, ic * 4.0 / res * amp);
} else if (ic <= res * 3 / 4) {
printf("%g, %g\n", (double) ic / res / freq, ic * -4.0 / res * amp + amp * 2);
} else {
printf("%g, %g\n", (double) ic / res / freq, ic * 4.0 / res * amp - amp * 4);
}
}
}
256デフォルトの名無しさん:2005/07/22(金) 03:27:30
void genePulse(double freq, double amp)
{
int ic;
const int res = 100;

for (ic = 0; ic <= res; ++ic) {
if (ic == 0) {
printf("0, 0\n");
} else if (ic < res / 2) {
printf("%g, %g\n", (double) ic / res / freq, amp);
} else if (ic == res / 2) {
printf("%g, 0\n", 0.5 / freq);
} else if (ic < res) {
printf("%g, %g\n", (double) ic / res / freq, -amp);
} else {
printf("%g, 0\n", 1.0 / freq);
}
}
}
/* 尚、各波形の出力は1周期分とした。 */
/* サンプルメイン */
int main()
{
geneTrigon(1000, 100);
genePulse(800, 80);
return 0;
}
/* そうそう、使い方は見ての通りで */
257230:2005/07/22(金) 05:59:18
>>255,256
ありがとうございます!参考にさせていただきますm(_ _)m
大変申し訳ないのですが、再度質問してもよろしいでしょうか・・・。
周期が3*T/2までの方形波のみのプログラムをつくってみたのですが、
3*T/2以降も方形波にしたい場合はどのようにすればいいのでしょう。
反復処理の方法がいまいちよくわかりません・・・。

#include<stdio.h>
#include<math.h>

main(){
double E=100,e,t,f=1000.0,T=1/f,te=0.02,td=0.000001;
int n,nd=100;

for(t=0.0,n=0;t<=te;t+=td,n++)
{
if((t<T/2)||(T<=t && t<(3*T/2)))
e=E;
else
e=-E;
if((n%nd)==0)
printf("%lf %lf \n",t,e);
}
return 0;
}
どうかよろしくお願いしますm(_ _)m
258デフォルトの名無しさん:2005/07/22(金) 06:59:22
ifの条件を (t/T)-floor(t/T) < 0.5 にすれば大丈夫。頭悪い実装だが、まぁ分相応か。
259デフォルトの名無しさん:2005/07/22(金) 07:31:52
>>258
ありがとうございました。
260デフォルトの名無しさん:2005/07/22(金) 13:34:31
>>97をお願いします
261デフォルトの名無しさん:2005/07/22(金) 13:40:34
分相応って言われてんだから怒れよw
262デフォルトの名無しさん:2005/07/22(金) 14:25:20
フォエウァ
263デフォルトの名無しさん:2005/07/22(金) 14:42:44
>>261
そんなことで怒っても荒れるだけだからでねーの?
俺的にはその点GJと心の中でささやかに言ってやりたい気もする
264デフォルトの名無しさん:2005/07/22(金) 14:46:37
[1] 授業単元:プログラミングプロジェクト
[2] 問題文(含コード&リンク):
読み込んだファイル(標準入力)内の単語の出現回数を数えて出現回の略順にソートして
表示するプログラムを実装せよ。
単語とはisalumn()で真が返る文字の連続とし、大文字と小文字は区別しない。
出現回数が同じ単語は辞書順に表示すること。
出現が-nオプションで指定した回数以上の単語だけを表示する(デフォルトで1回以上)
[3] 環境
 [3.1] OS:Linux(Lindows)
 [3.2] コンパイラ(バージョン):gcc バージョンは不明です。
 [3.3] 言語:C
[4] 期限:2005年7月27日
[5] その他の制限:データ構造は処理時間が最短となるよう1番適切なものを用いる。
→ハッシュと考えています。

よろしくお願いします。
265デフォルトの名無しさん:2005/07/22(金) 15:20:15
 次の動作を繰り返すプログラムを作成せよ。
   1.キーボードから整数値を読み込む
   2.1から読み込んだ数値までの総和を求めて表示する
   3. 1. へ戻る
 以上の動作を 5 回繰り返すか、1. でもし 0 が入力されたらプログラムを終了する

お願いします

266デフォルトの名無しさん:2005/07/22(金) 15:44:26
夏休みってまだ入ってないのか
267デフォルトの名無しさん:2005/07/22(金) 15:46:39
テンプレ嫁とか、プログラムの起動と終了の繰り返しはC/C++の範囲外だとか
268デフォルトの名無しさん:2005/07/22(金) 15:54:47
>>264
俺と似たような宿題だなぁ
269デフォルトの名無しさん:2005/07/22(金) 15:56:29
#include<stdio.h>

int main(void)
{
int a,i=0;

do{
printf("Input num:");
scanf("%d",&a);
if(a==0){
return 1;
}
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
i++;
}while(i<5);

return 0;
}

270265 :2005/07/22(金) 16:06:40
ありがとうございます。でもdo文使わない方法ってありますか?
271デフォルトの名無しさん:2005/07/22(金) 16:43:34
#include<stdio.h>

int main(void)
{
int a,i=0;
printf("Input num:");
scanf("%d",&a);
if(a==0){
return 1;
}
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
i++;
while(i<5){
printf("Input num:");
scanf("%d",&a);
if(a==0){
return 1;
}
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
i++;
}
return 0;
}
272デフォルトの名無しさん:2005/07/22(金) 17:00:12
テンプレも読めない厨にはこっちのほうがわかるんじゃね?
#include<stdio.h>

int main(void)
{
int a,i=0;
for(i=0;i<5;i++){
printf("Input num:");
scanf("%d",&a);
if(a==0) return 1;
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
}
return 0;
}
273デフォルトの名無しさん:2005/07/22(金) 17:08:53
#include<stdio.h>
int main(void)
{
int a;
printf("Input num:");
scanf("%d",&a);
if(a==0) return 1;
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
printf("Input num:");
scanf("%d",&a);
if(a==0) return 1;
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
printf("Input num:");
scanf("%d",&a);
if(a==0) return 1;
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
printf("Input num:");
scanf("%d",&a);
if(a==0) return 1;
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
printf("Input num:");
scanf("%d",&a);
if(a==0) return 1;
printf("1から%dまでの和は%d\n",a,(1+a)*a/2);
return 0;
}
274デフォルトの名無しさん:2005/07/22(金) 17:19:49
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
巡回セールスマン問題をNearest Addition法で解くプログラムを作成せよ。
Nearest Addition法とは
(1)1つの都市からなる長さ0の部分閉路Tをひとつ作成する
(2)現在の部分閉路Tが全ての都市を含むならば、それが解
(3)そうでないならば、Tに含まれる都市jとTに含まれない都市kの組み合わせで、
jとkの間の距離Cjk(jkはCの右下)を最小にするようなものを求める
(4)(i,j)をTに含まれるパスとするとき、これを2つのパス(i,k)と(k,j)で置き換える
(5)以上の(2)~(4)を繰り返す
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:7月25日12:00まで
[5] その他の制限:なし
一応Nearest Neighbor法のプログラムがあります。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/775.txt
このプログラムを元に作らなくてもよいので、どなたかお願いいたします。
なるべくコメントもいれてくださると非常に助かります。

275265:2005/07/22(金) 17:57:33
ありがとうございます
276デフォルトの名無しさん:2005/07/22(金) 18:23:55
[1]授業単元 プログラム演習
[2]問題文:一行に「文字列」,「文字列」,「文字列」,「整数」
というふうに4つの属性がそれぞれコンマで区切られたファイルを構造体に読み込み
(ここまでは出来ました)、その2番目の属性に現れる全ての相異なる単語の出現頻度を求め、標準出力に書き出す。
ここで単語は出現した順に並べる。また大文字は小文字に読み替え、区別しない。また単語のうちa,the,by,for,in,on,of,to,withは除外し、カウントしない。 
[3]環境 [3.1]OS:Linux [3.2]コンパイラ:gcc [3.3]言語:C
[4]期限 7月26日
[5]その他
2番目の構造体に入れ込まれている単語は例えば The C Programing Language 等です。よろしくお願いします。
277デフォルトの名無しさん:2005/07/22(金) 20:50:29
>>276
激しく俺と同じ大学の香具師の悪寒
278デフォルトの名無しさん:2005/07/22(金) 22:38:18
>>277
ではお前さんが教えて差し上げてください
279デフォルトの名無しさん:2005/07/22(金) 22:54:19
>>278
俺も出来てない(ノ∀`)
280デフォルトの名無しさん:2005/07/22(金) 22:58:33
普通の大学は今試験期間中なんじゃないの?
レポートとか出るんだな
281デフォルトの名無しさん:2005/07/22(金) 23:03:47
最終レポート課題なのです
282デフォルトの名無しさん:2005/07/22(金) 23:04:46
283デフォルトの名無しさん:2005/07/22(金) 23:21:44
試験期間中に出されるのがウザイなあ
他の科目の勉強もあるのに
284デフォルトの名無しさん:2005/07/22(金) 23:49:46
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
タイピングプログラムを作る。
プログラムの流れは、英単語1行1個ずつ10個入ったファイルを作り、
1.テキストファイル名を入れる
2.テキストファイルの1行目が表示される
3.タイピングをする(ミスをするともう1回タイピングさせる)
4.1行目が終わると、2行目が表示され、またタイピングをする
5.10問おわったら、かかった時間とミスした回数が出力される
[3] 環境
 [3.1] OS:Windows 2000
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:2005年07月26日17:00まで

お願いしますm(__)m
285デフォルトの名無しさん:2005/07/22(金) 23:54:30
>>283
気持ちは分かるが、実技試験のが困るだろ?
286デフォルトの名無しさん:2005/07/22(金) 23:56:11
俺んとこ 実技試験もある
287デフォルトの名無しさん:2005/07/22(金) 23:56:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):組み合わせの式nCrにおいて、
              n=50、r=0~50までの値を求めよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):わかりません。
 [3.3] 言語:C++
[4] 期限:2005年7月23日18時まで
[5] その他の制限:if文、while文等は授業で教わりました。

みなさん、どうか宜しくお願いします。
288デフォルトの名無しさん:2005/07/23(土) 00:01:56
実技試験なんてどうやるんだ?
その場で「これ作れ」って言われるのか?
289デフォルトの名無しさん:2005/07/23(土) 00:04:50
レポ課題から出題するらしい
30~40分で組まなければいけないらしい
290デフォルトの名無しさん:2005/07/23(土) 00:11:20
>>287
#include <cstdio>

int main()
{
static double ncr50[] = {1., 50., 1225., 19600., 230300.,
2118760., 15890700., 99884400., 536878650., 2505433700.,
10272278170., 37353738800., 121399651100., 354860518600., 937845656300.,
2250829575120., 4923689695575., 9847379391150., 18053528883775., 30405943383200.,
47129212243960., 67327446062800., 88749815264600., 108043253365600., 121548660036300.,
126410606437752.,
};
for (int r = 0; r <= 50; ++r) {
printf("50C%d = %.20g\n", r, r <= 25 ? ncr50[r] : ncr50[50 - r]);
}
return 0;
}
291デフォルトの名無しさん:2005/07/23(土) 00:18:52
>>287
#include <stdio.h>
#include <string.h>
#include <time.h>
int main(){
  FILE *fp;
  int i, len, miss;
  time_t start, end;
  char buf[1024], in[1024];
  printf(" file name > ");
  if(NULL == fgets(buf, sizeof(buf), stdin)) return 1;
  if(buf[len = strlen(buf)-1] == '\n') buf[len] = '\0';
  if(NULL == (fp = fopen(buf, "r"))) return 2;
  printf("###### start ######\n");
  time(&start);
  i = 1; miss = 0;
  while(fgets(buf, sizeof(buf), fp))
  {
    while(1)
    {
      printf("第 %d 問 : %s", i, buf);
      fgets(in, sizeof(in), stdin);
      if( 0 == strcmp(buf, in)) {++i; break;}
      else{ puts(">>>MISS<<<"); ++miss;}
    }
  }
  time(&end);
  printf("###### finish ######\n");
  fclose(fp);
  printf("所要時間 %lu 秒 , MISS %d 回\n", end - start, miss);
  return 0;
}
292291:2005/07/23(土) 00:19:35
出題ファイルこんな感じで。

semapho
schedule
environmental
otorhinolaryngological
psychoneuroendocrinological
floccinaucinihilipilification
supercalifragilisticexpialidocious
pseudoantidisestablishmentarianism
Asseocarnisanguineoviscericartilaginonervomedullary
Aopadotenachoselachogaleokranioleipsanodrimhipotrimmatosilphioparaomelitokatakechymenokichlepikossyphophattoperisteralektryonoptekephalliokigklopeleiolagoiosiraiobaphetraganopterygon
293291:2005/07/23(土) 00:21:42
アンカーミス。

>>291 は、>>284の回答。
294デフォルトの名無しさん:2005/07/23(土) 00:33:17
>>287
そこのコンパイラによる。
295デフォルトの名無しさん:2005/07/23(土) 00:44:07
>>294
たしかTurb C++だったと思います・・。
296デフォルトの名無しさん:2005/07/23(土) 00:45:29
[1] 課題
[2] 問題文:文字型配列 str1[10] str2[10]を宣言し、これに好きな
      文字列をキーボードから入力し、それぞれの文字を順
      に1文字ずつ交互に取り出し出力しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): Microsoft Visual C++ .NET
 [3.3] 言語:C++
[4] 期限:7月26日
[5] まだ基本的な事しか習ってないです。
  よろしくお願いします
297デフォルトの名無しさん:2005/07/23(土) 00:46:10
>>291
ありがとうございました!!m(__)m
298デフォルトの名無しさん:2005/07/23(土) 00:49:56
>>295
試しに動かしてみてくれ。ダメかも知れんが。
#include <iostream>
typedef long long int64;
int64 binomial(int64 n, int64 r) {
    return n == r || r == 0 ? 1 : n * binomial(n - 1, r - 1) / r;
}
int main() {
    for (int i = 0; i <= 50; ++i)
        std::cout << "binomial(50," << i << ")=" << binomial(50, i) << std::endl;
    return 0;
}
299276:2005/07/23(土) 01:02:36
>>276ですがよく考えてみれば単語をひとつずつ読み込んだ配列p[100]の
相異なる単語の出現頻度を求めてそれを出現した順に標準出力に書き出す。
大文字と小文字は区別しない。a,the,by,for,in,on,of,to,withは除外する。
ってだけで良かったです。これでよろしくお願いします。
300デフォルトの名無しさん:2005/07/23(土) 02:36:19
[1] 授業単元:課題
[2] ------------- 合計
A | 5 5 5 5 5 25
B | 3 4 3 2 3 15 B=A-C
C | 2 1 2 3 2 10
------------------
数値はそれぞれtextBoxに入っています。
以上の表をボタンを押すことにより以下のように表示させます。
------------- 合計
A | 5 5 5 5 5 25
B | 0 0 5 5 5 15 B=A-C [ボタン]
C | 5 5 0 0 0 10
------------------
Aの数値に合計を最初から割り当てていくプログラムです。


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):Microsoft Visual C.NET
 [3.3] 言語:C
[4] 期限:2005年07月25日まで[5] 開発言語はC#なのですが、プログラムが
     理解できればC#に変換できると
     思いますので、Cでお願いします。
301デフォルトの名無しさん:2005/07/23(土) 02:49:01
>>300
CとWin32APIでってこと?
302300:2005/07/23(土) 02:55:41
はい、そうです。
303デフォルトの名無しさん:2005/07/23(土) 03:17:35
>>302
嫌です。
304デフォルトの名無しさん:2005/07/23(土) 04:13:53
仕様がわかりにく過ぎる
305デフォルトの名無しさん:2005/07/23(土) 05:55:58
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/777.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):VC++6.0
 [3.3] 言語:C言語
[4] 期限:7月25日
[5] その他の制限:無し
もしよろしければお力添えしていただきたいです。
306デフォルトの名無しさん:2005/07/23(土) 06:42:50
再びお世話になります。
ヒープソートを用いて、配列に入った20個のデータを昇順に並び替えるプログラムを作成したいのですが、うまくソートされません。
昇順にソートするどころか、てんでんバラバラに並べられてしまいます。
お力添えいただけたら嬉しいです。

[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
問題のソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/778.txt
[3] 環境
 [3.1] OS:Windows + cygwin
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:2005年9月01日8:50まで
[5] その他の制限:cursesライブラリを使用する。コンパイル時、オプションに-lcurses必須。
307デフォルトの名無しさん:2005/07/23(土) 08:10:37
>>306
とりあえず動いたから揚げてみる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/779.c
308デフォルトの名無しさん:2005/07/23(土) 11:07:08
>>299
俺は構造体からの単語読み込みが出来ずに悩んでるのに
お前は出来てるのかー!
309306:2005/07/23(土) 15:30:14
>>307
おおお、速い!!
やっぱダウンヒープでしたか。
有り難うございました!
310凡人:2005/07/23(土) 18:18:35
>>296
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/781.txt

なんか俺にもこんなころがあったなぁと凄く同情して細かく書いてみた。
分かりやすさのために長いソースになっているが、
細かくメモを入れておいたので、頑張って理解してほしい。
311デフォルトの名無しさん:2005/07/23(土) 18:25:10
>>310
ならfgetsなんてやめてやれよw
312310:2005/07/23(土) 18:30:31
まぁ勉強ってことで(汗")
313デフォルトの名無しさん:2005/07/23(土) 18:55:35
>>296
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <cstdio>

using namespace std;

struct fusion
{ string operator()(char lhs, char rhs) { return string(1, lhs) + rhs;}};

int main(int argc, char ** argv)
{
  char  str1[10] = {'\0'}, str2[10] = {'\0'};
  scanf("%9s", str1), scanf("%*[^ \t\n]"), scanf("%9s", str2);

  transform(str1, str1 + 10, str2, ostream_iterator<string>(cout), fusion());
  cout << endl;
}
314デフォルトの名無しさん:2005/07/23(土) 20:07:18
>>313
イタタタ
315デフォルトの名無しさん:2005/07/23(土) 20:50:38
A君 国語→83点
   数学→66点
   理科→91点
   社会→76点
   英語→80点

B君 国語→66点
   数学→59点
   理科→68点
   社会→59点
   英語→79点

C君 国語→33点
   数学→40点
   理科→48点
   社会→60点
   英語→50点

それぞれの点数を配列化し、構造体として表し、3人の平均点を計算して、さらに5教科の合計点が380点以上のものを合格とするプログラムを作っていただけないでしょうか?
316デフォルトの名無しさん:2005/07/23(土) 20:56:30
だれか 315 をお願いします・・・
317デフォルトの名無しさん:2005/07/23(土) 20:59:41
6分で答え出ると思うなよ
318315:2005/07/23(土) 20:59:47
さっさと答えろよカスども
マルチまでしてやってんだからYO~
319デフォルトの名無しさん:2005/07/23(土) 21:02:08
もうしわけございません!!お願いします・・・
320デフォルトの名無しさん:2005/07/23(土) 21:03:03
318は別人です!!
321デフォルトの名無しさん:2005/07/23(土) 21:05:48
1も読まない慌てん坊さんのおかげでスレが汚れるんですよ。
322デフォルトの名無しさん:2005/07/23(土) 21:06:37
以下のプログラムでstrtokの使い方がよくわからず、うまく単語を一つ一つ区切れません。
詳細はコメントしてあります。
よろしくお願いします(入力データファイル同梱のためzip)

[1] 授業単元:プロ演
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/782.zip
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):BCC(5.5.1)
 [3.3] 言語:C言語
[4] 期限:7月25日
323デフォルトの名無しさん:2005/07/23(土) 21:17:15
[1]授業単元:情報処理実習
[2]問題文
A君 国語→83点
   数学→66点
   理科→91点
   社会→76点
   英語→80点

B君 国語→66点
   数学→59点
   理科→68点
   社会→59点
   英語→79点

C君 国語→33点
   数学→40点
   理科→48点
   社会→60点
   英語→50点

それぞれの点数を配列化し、構造体として表し、3人の平均点を計算するプログラムを作れ。
また、5教科の合計点が380点以上のものを合格とする。

[3]環境
  [3.1]OS:Windows
  [3.2]コンパイラ:
  [3.3]言語:C/C++
[4]期限:7月24日

324デフォルトの名無しさん:2005/07/23(土) 21:18:04
>>323
何度書かれても不快さを増やすだけだぞ
325デフォルトの名無しさん:2005/07/23(土) 21:21:35
>>323
向こうで答えてもらってるじゃないか
氏ね
326デフォルトの名無しさん:2005/07/23(土) 21:30:29
327デフォルトの名無しさん:2005/07/23(土) 21:33:20
[1] 授業単元: プログラミング演習
[2] 問題文:自然数nを引数として、再起関係を利用してその8進表示を行う関数
void oct(int n)
を書け。関数のみでかまわない。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限:07月23日24:00まで

お願いします
328デフォルトの名無しさん:2005/07/23(土) 21:41:21
void oct(int n)
{
if (n < 0)
return;
if (n < 8) {
printf("%d", n);
return;
}
oct(n / 8);
printf("%d", n % 8);
}
329デフォルトの名無しさん:2005/07/23(土) 21:43:00
お前ら323無理だろ
330デフォルトの名無しさん:2005/07/23(土) 21:51:01
夏だねえ( ´ー`)y―┛~~
331デフォルトの名無しさん:2005/07/23(土) 21:52:15
>>326
よくわかりません・・・
次の構造体のデータにうつる時 おかしくなってるような
332デフォルトの名無しさん:2005/07/23(土) 21:53:28
>>327
void oct(int n)
{
  char buf[32];
  int i, nega = 0;
  if( n == 0 ) putchar('0');
  else 
  {
    if( n < 0 ) {putchar('-'); n*=-1;}
    for(i=0; n && i<sizeof(buf);++i, n/=8) buf[i] = (n % 8) + '0';
    if(nega) putchar('-');
    for(--i; i >=0; --i) putchar(buf[i]);
  }
}
333332:2005/07/23(土) 21:53:58
ごめん、再帰っての見落としてた。
334デフォルトの名無しさん:2005/07/23(土) 22:02:34
>>323
#include <string>
using namespace std;
class Grades {
string name_; int japanese_; int math_; int science_; int social_; int english_;
public:
Grades(const string& name, int japanese, int math, int science, int social, int english) :
name_(name), japanese_(japanese), math_(math), science_(science), social_(social), english_(english)
{}
const string& GetName() const
{ return name_; }
int CalcAverage() const
{ return (japanese_ + math_ + science_ + social_ + english_) / 5; }
};
void EstimateGrades(const Grades& grades)
{
if (380 <= grades.CalcAverage())
cout << grades.GetName() + "は合格です。" << endl;
else
cout << grades.GetName() + "は不合格です。" << endl;
}
int main()
{
Grades a("A君", 83, 66, 91, 76, 80);
Grades b("B君", 66, 59, 68, 59, 79);
Grades c("C君", 33, 40, 48, 60, 50);
EstimateGrades(a);
EstimateGrades(b);
EstimateGrades(c);
return 0;
}
335276:2005/07/23(土) 22:07:39
>>299をお願いします
336デフォルトの名無しさん:2005/07/23(土) 22:15:43
配列p[100]の型は何?
337デフォルトの名無しさん:2005/07/23(土) 22:19:43
>>327
#include <stdio.h>
void oct(int n) {
    if (n == 0) return;
    oct(n / 8);
    putchar(n % 8 + '0');
}
338デフォルトの名無しさん:2005/07/23(土) 22:25:42
>>327
void oct(int n) { 
  if(n < 0) {putchar('-'); n*=-1;}
  if(n == 0) return;
  else
  {
    oct(n / 8); 
    putchar(n % 8 + '0');
  }
}
339デフォルトの名無しさん:2005/07/23(土) 22:26:49
>>338
自然数に負の数のときの処理は要らんわな。
340276:2005/07/23(土) 22:38:54
>>336
文字列です
341デフォルトの名無しさん:2005/07/23(土) 22:41:58
コードで示せ。
342デフォルトの名無しさん:2005/07/23(土) 23:21:37
>>299
質問は受け付けません。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 10
int main()
{
  char *skip[] = {"a","the","by","for","in","on","of","to","with"};
  char p[N][64] = {"this","is","a","pen","I","am","a","student","this","the"};
  struct X { char *s;int cnt;} x[N];
  int i, j, k, xend = 0;
  for( i = 0; i < N; ++i)
  {
    for(k = 0; k < strlen(p[i]); ++k) p[i][k] = tolower(p[i][k]);
    for(k = 0; k < sizeof(skip)/sizeof(*skip); ++k) if(0==strcmp(p[i],skip[k])) break;
    if(k != sizeof(skip)/sizeof(*skip)) continue;
    for(j = 0; j < xend; ++j)
      if( 0 == strcmp(p[i], x[j].s) ) break;
    if( j == xend ) {x[xend].s = p[i];x[xend].cnt = 1; ++xend;}
    else ++x[j].cnt;
  }
  for(i = 0; i < xend; ++i)
    printf("%s(%d), ", x[i].s, x[i].cnt);
  return 0;
}
343help me:2005/07/24(日) 07:00:33
・4次のルンゲ・クッタ法のアルゴリズムに基づき、一般的な問題に適応できるプログラムを作成しなさい

という課題なんですが…誰かお願いします。単位かかってますがサッパリです(汗)
344help me:2005/07/24(日) 07:05:22
すいません。テンプレ使い忘れました
[1] 授業単元: 課題
[2] 問題文(含コード&リンク):4次のルンゲ・クッタ法のアルゴリズムに基づき、一般的な問題に適応できるプログラムを作成しなさい
[3] 環境 :自由
 [3.1] OS:自由
 [3.2] コンパイラ(バージョン): 自由
 [3.3] 言語:どちらでも可
[4] 期限:7月25日(月)10時まで
[5] その他の制限:特になし。
実行した環境(OS、言語)も教えていただけると助かります。
よろしくお願いいたします。
345デフォルトの名無しさん:2005/07/24(日) 07:29:08
ルンゲクッタ法
ttp://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/num/Runge/C++/Runge.txt

てか・・・単位かかってるならぱぱっとしらべりゃいーんじゃない?
346デフォルトの名無しさん:2005/07/24(日) 11:26:42
[1] 授業単元:プログラミング演習I
[2] 問題文:
n次元のベクトルを配列a[],b[]として取り扱うものとする。配列a[],b[]および正整数nを引数として
受け取り、内積(実数値)を返り値とする関数InnerProduct()を作成せよ。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:7/25まで
[5] その他の制限:関数の取り扱いまで習いました。基本型などはまだ習っていません。

どなたかご教授お願いします。
347デフォルトの名無しさん:2005/07/24(日) 11:28:17
>>175
>>198
どうもありがとうございます。助かりました。
返事が遅くなって申し訳ないです。
348デフォルトの名無しさん:2005/07/24(日) 11:28:35
>>322ですが
86~88行目の

for(i=0;i<total;i++){
 printf("%s %s %s %d\n",sample[i].author,sample[i].title,sample[i].publish,sample[i].year);
}

というのは確認のためにかいただけですので、実際には必要ありません。
どうかよろしくお願いします。
349デフォルトの名無しさん:2005/07/24(日) 11:56:04
>>346
もし君の言う「基本型」がintやdoubleなどのことを指しているのならば、
その宿題はできない。
double InnerProduct(double a[], double b[], unsigned int n) {
    double ret = 0.;
    while (n--) ret += a[n] * b[n];
    return ret;
}
350デフォルトの名無しさん:2005/07/24(日) 12:00:11
>>344
一般的って言うのは、n階でも可能とか、連立も可能とか、そういうこと?
351デフォルトの名無しさん:2005/07/24(日) 12:06:10
>>349
すいません、基本型ってのはcharやlong、float、shortなどのことです。
doubleやintなど基本的なのは習っています。
352デフォルトの名無しさん:2005/07/24(日) 12:06:17
20XX年、とある研究所で飼育されていたメスの牛が突如超能力をを持った。
その牛は自らをクイーン・オブ・モウモウと名乗り、仲間の牛にも知能を与え
世界を混乱に貶めた。

人間を奴隷とした牛軍団は先ず、先祖代々の恨みをはらすべく、
女性に成長ホルモンを投与して、乳を肥大化させ、そこから出る母乳を
人乳として搾乳機を使い搾り出すことを始めた。
353デフォルトの名無しさん:2005/07/24(日) 12:07:50
[1] 授業単元: プログラムA
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/784.txt
data,add or del > ,Aは
data,add or del > 7,A
です
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:2005年7月27日12:00まで
[5] 構造体は一通り習いました
よろしくお願いします
354デフォルトの名無しさん:2005/07/24(日) 12:08:17
>>353
20XX年、とある研究所で飼育されていたメスの牛が突如超能力をを持った。
その牛は自らをクイーン・オブ・モウモウと名乗り、仲間の牛にも知能を与え
世界を混乱に貶めた。

人間を奴隷とした牛軍団は先ず、先祖代々の恨みをはらすべく、
女性に成長ホルモンを投与して、乳を肥大化させ、そこから出る母乳を
人乳として搾乳機を使い搾り出すことを始めた。
355デフォルトの名無しさん:2005/07/24(日) 12:50:09
ある程度書いてみたのですが、ifでやられます。
基礎がなってない気もしなくもないのですが…ご教授くださいm(__)m

[1] 授業単元:C言語演習II
[2] 問題文(含コード&リンク):

複素数の実数部と虚数部をメンバとして構造体を作成し、2つの複素数の
和・差・積・商を求めるプログラムを作成しなさい。
但し、2つの複素数はキーボード入力とし、かつその直後に「+」「-」「*」「/」を
入力することにより、入力した算術演算子の演算を表示するようにすること。


↓ここまで作りました。現在、最後の+,-,*,/で入力するとすべて"Bad choice!!"になります。
 ちなみにあまりに長く、エラーで書き込めなかったのでUPローだでUPしておきました。

http://free.gikoneko.net/up/source/up17037.txt


[3] 環境
 [3.1] OS:Linux Fedora Core4 (Red hat 6.2以上であれば問題ないです。)
 [3.2] コンパイラ(バージョン): cc
 [3.3] 言語:C言語
[4] 期限:2005年7月25日
[5] その他の制限:習っているのはifなどの分岐はもちろん、配列、ポインタ、構造体
         などある程度はいけます。


ifをうまく認識させるようにするにはどうすればよいでしょうか?
教えてください、よろしくお願いします。
356デフォルトの名無しさん:2005/07/24(日) 13:03:05
scanfは、改行コードを残してしまうので、
fflush(stdin)で改行コードを捨ててしまうべし。
(ソースはほとんど見てないけど)
357デフォルトの名無しさん:2005/07/24(日) 13:04:32
2048年4月16日、日本のH社がバグを燃料にする方法を発明。
同社は来年にも車やオートバイに応用したいとコメントしている。
今回の発明はノーベル賞候補にも挙げられるなど期待がされている。
既に他社からの技術提供依頼が殺到しているという。
H社はアメリカのソフトウェアメーカーと提携する構えを見せており、
背景には燃料に使うバグが大量にあるという事実があると考えられる。

>>354
void dellist(struct LIST **ptr, int deldata)
{
struct LIST *p, *prevp;

for (p = prevp = *ptr; p != NULL; p = p->nextptr) {
if (p->data == deldata) {
prevp->nextptr = p->nextptr;
if (p == prevp) {
printf("!");
*ptr = p->nextptr;
}
free(p);
return;
}
prevp = p;
}
}

>>356
fflush(stdin)激しく規格外。
358デフォルトの名無しさん:2005/07/24(日) 13:04:34
だから標準入力はflushするなと……
359デフォルトの名無しさん:2005/07/24(日) 13:09:05
>>355
switchを使っていることやspecifierが%+lfとなっていることや「実部・虚部」が
「real part・imaginary part」となっていること等は君が聞かんとするところでは
ないではない。

#include<stdio.h>
struct comp_num {
    double re;
    double im;
};
int main(void) {
    char s[2];
    struct comp_num a, b;
    printf("Input real part of a:"); scanf("%lf", &a.re);
    printf("Input imaginary part of a:"); scanf("%lf", &a.im);
    printf("Input real part of b:"); scanf("%lf", &b.re);
    printf("Input imaginary part of b:"); scanf("%lf", &b.im);
    printf("a=%lf%+lfi\nb=%lf%+lfi\n", a.re, a.im, b.re, b.im);
    printf("operator list:[+][-][*][/]\nChoose operator:"); scanf("%1s", s);
    switch(s[0]) {
    case '+':
        printf("Addition... \n%lf%+lfi\n", a.re + b.re, a.im + b.im); break;
    case '-':
        printf("Subtraction... \n%lf%+lfi\n", a.re - b.re, a.im - b.im); break;
    case '*':
        printf("Multiplication... \n%lf%+lfi\n", a.re * b.re - a.im * b.im, a.im * b.re - a.re * b.im); break;
    case '/':
        printf("Divide... \n%lf%+lfi\n", (a.re * b.re + a.im * b.im) / (b.re * b.re + b.im * b.im), (a.im * b.re - a.re * b.im) / (b.re * b.re + b.im * b.im)); break;
    default:
        printf("Bad choice!! \n");
    }
}
360359:2005/07/24(日) 13:15:40
>>355
そうそう、なぜ割り算(division)だけ動詞(divide)なのかな
361デフォルトの名無しさん:2005/07/24(日) 13:16:08
だからprintfに%lfは元々無いと……
362デフォルトの名無しさん:2005/07/24(日) 13:20:33
>>361
ISO/IEC 9899:1999 Foreword 5
― %lf conversion specifier allowed in printf
363355:2005/07/24(日) 13:22:06
できました。ありがとうございます!!
英単語、しっかり確認しておきます・・・
364デフォルトの名無しさん:2005/07/24(日) 13:22:43
間違えるヤツが多いからC99で正式になったんだろ。>>%lf
365デフォルトの名無しさん:2005/07/24(日) 13:23:31
>>364
つまり、直感的ではなかったと。
366デフォルトの名無しさん:2005/07/24(日) 13:29:10
>>364
printfのspecifierの方が型に忠実でなかったということだと思う。
C++で型にうるさくなったのの影響もあるだろうし、そもそもscanfと
食い違っていた事だし。
367デフォルトの名無しさん:2005/07/24(日) 13:29:30
もうしばらくはC89(C90)かなぁ・・・
368デフォルトの名無しさん:2005/07/24(日) 13:30:17
[1] 授業単元: c++
[2] 問題文(含コード&リンク):
ファイルに書いてある数式を読み込んで計算するプログラム
を教えてください。
fscanfとかfgetsを使いたいのですが、どうやるのでしょうか?
数式は10%(3+2)のようなものです。
[3] 環境
 [3.1] OS:winxp
 [3.2] コンパイラ(バージョン): borland
 [3.3] 言語:c++
[4] 期限:2005/7/26
[5] その他の制限:#include<stdio.h>で使えるものまで。
レベルは初心者です。
369デフォルトの名無しさん:2005/07/24(日) 13:32:24
>>368
式を解釈するプログラムを自分で書かなければなりません。
C言語には式を解釈して計算する機能は含まれません。
370デフォルトの名無しさん:2005/07/24(日) 13:32:30
>>368
ぐーぐる脳になれ。

fscanf 使い方

とかで探してみた?
371デフォルトの名無しさん:2005/07/24(日) 13:32:47
>>367
まだまだ現役ですよ! 新しいもんにはまだまだ負けませんよ ハッハッハ
372デフォルトの名無しさん:2005/07/24(日) 13:33:36
>>366
printf()とscanf()では指示子の仕様が大きく違うにもかかわらず、
さも同じと言うような入門書の氾濫が混乱を招いた原因ジャマイカ?
できうるのなら、scanf()でもprintf()の%*.*sみたいなことがしたいぞ。
373デフォルトの名無しさん:2005/07/24(日) 13:38:22
>>368
授業単元C++なのにstdio.hっておかしくないか?
本当にC++なの? Cじゃないのか?
374デフォルトの名無しさん:2005/07/24(日) 13:41:55
んー・・・クラスの説明を後回しにしたり、
配列操作を文字列(char [])でやらせたりしたい・・・とか考えると不自然ではないところが悲しい。
375デフォルトの名無しさん:2005/07/24(日) 13:50:14
>>353
void dellist( struct LIST **ptr, int deldata )
{
if( *ptr== NULL || (*ptr)->data > deldata ){
return;
}
else if ( (*ptr)->data == deldata ){
struct LIST *curcell;
curcell = *ptr;
*ptr = (*ptr)->nextptr;
free(curcell);
}
else{
dellist( &(*ptr)->nextptr, deldata );
}
}
376353:2005/07/24(日) 13:54:29
>>357
ありがとうございました
助かりました
377デフォルトの名無しさん:2005/07/24(日) 14:12:52
C99を前提にすんのは、K&Rの第3版が出てからだな。
//とかはいいだろうけど。

永遠に出なかったりしてな(有得るが)。
378デフォルトの名無しさん:2005/07/24(日) 14:20:54
[1] 授業単元:課題
[2] 問題文(含コード&リンク): シンプレックス法のプログラミングで目的関数を最大にする端点を見つける方法を考え、プログラム化せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):自由
 [3.3] 言語:どちらでも可
[4] 期限:2005年7月25日9時まで
[5] その他の制限:なるべく僕(バカです)が理解できるようにあまり難しいのが入ってないやつが好ましいです。

お忙しいところ申し訳ないですがお願いしますm(_ _)m
379353:2005/07/24(日) 14:25:46
>>376
同じくありがとうございました
380デフォルトの名無しさん:2005/07/24(日) 14:28:27
線形計画法、シンプレックス法はこのスレで既出だった気がする。
381デフォルトの名無しさん:2005/07/24(日) 14:40:06
382デフォルトの名無しさん:2005/07/24(日) 14:57:34
[1] 授業単元:レポート
[2] 問題文(含コード&リンク): 2つあります
・ABCDEの5つの並べ方120通りに対し、辞書順の並べ方したときの
x番目は何か?また、例えばABCED(任意)は何番目か?
・任意の自然数nの階乗を渦巻状に表示せよ
 987
 216
 345
見たいな感じです
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年7月25日11時まで

結構ちんぷんかんぷんです。よろしくお願いします
383デフォルトの名無しさん:2005/07/24(日) 15:05:52
>>382
階乗?
384デフォルトの名無しさん:2005/07/24(日) 15:10:53
>>368
main()の中でexpr()に渡してるFILE*を変えればファイルに書かれた式も評価できるはず。
雑だけど、参考までに。
#include <stdio.h>
int error_code; double expr(FILE *fp); double term(FILE *fp); double fact(FILE *fp);
double expr(FILE *fp) {
    double ret = term(fp); int ope;
    while ((ope = fgetc(fp)) == '+' || ope == '-') if (ope == '+') ret += term(fp); else ret -= term(fp);
    ungetc(ope, fp);
    return ret;
}
double term(FILE *fp) {
    double ret = fact(fp), temp; int ope;
    while ((ope = fgetc(fp)) == '*'|| ope == '/' || ope == '%') if (ope == '*') ret *= term(fp); else if ((temp = term(fp)) != 0.) if (ope == '/') ret /= temp; else ret = (int)ret % (int)temp; else ret = error_code = 1;
    ungetc(ope, fp);
    return ret;
}
double fact(FILE *fp) {
    double d; int parenthesis;
    if (fscanf(fp, "%lf", &d) == 1) return d;
    else if ((parenthesis = fgetc(fp)) =='(') {
        d = expr(fp);
        if ((parenthesis = fgetc(fp)) != ')') return error_code = 2; else return d;
    }
    else return error_code = 3;
}
int main(void) {
    double d; error_code = 0; d = expr(stdin);
    if (!error_code) printf("result:%lf", d);
    else printf("error code:%d", error_code);
}
385382:2005/07/24(日) 15:23:39
>>383
字違いましたっけ?
n=2なら4まで
=3なら9
=4なら16
見たいな感じです
386デフォルトの名無しさん:2005/07/24(日) 15:28:06
>>385
2乗ね
387382:2005/07/24(日) 15:33:44
>>386
アーごめんなさい。間違ってました。すいません
388デフォルトの名無しさん:2005/07/24(日) 18:09:16
プログラムについて直してくださいってネタはやめてください。
仕事じゃないのにそーゆーのはやりたくない。
できれば丸投げしてください。
それから、単位がどーとか。初心者ですとかゆーのも勘弁してください。
389デフォルトの名無しさん:2005/07/24(日) 18:27:54
ヘッダの重複チェックに使うdefine名のデファクトスタンダード教えてください

#ifndef _GameObject_
#define _GameObject_
#include "GameObject.h"
#endif

このように書いたんだけどいいかな?
390デフォルトの名無しさん:2005/07/24(日) 18:31:12
>>389
下線で始まる識別子は処理系予約。
391389:2005/07/24(日) 18:49:20
>>390
そういえばそうでしたね
__(アンダーバー2つ)も予約されてましたね
全部大文字にすればいいのかな

あとは
#define _GameObject_

#include "GameObject.h"
のどっちを先にすればいいかも教えてほしいです
392デフォルトの名無しさん:2005/07/24(日) 18:52:39
>>391
他の名前と被らなきゃ何でもいい。小文字は使わないことが多いと思う。
#define GAME_OBJECT_H
#define GAME_OBJECT_H_INCLUDED
#define PROJECT_NAME_GAME_OBJECT_H_INCLUDED
#define PROJECT_NAME_GAME_OBJECT_H_YOUR_NAME_2005072401

>#define _GameObject_
>と
>#include "GameObject.h"
>のどっちを先にすればいいかも教えてほしいです。
主流派にこだわるなら、インクルードガードはヘッダの中に書くべき。

/* GameObject.h*/
#ifnef GAME_OBJECT_H
#define GAME_OBJECT_H
中身。
#endif
393デフォルトの名無しさん:2005/07/24(日) 18:52:48
>>391
グローバルな名前は下線1つでも予約されている。
394デフォルトの名無しさん:2005/07/24(日) 19:34:09
>>382
2番。前作った奴の焼き直し。コピペすれば動くはず。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int* pos(int* data, int x, int y, int width) {return data + (width + 1) * y + x;}
int main(void) {
    int size, x = 0, y = 0, i, j, *matrix, counter, digit;
    scanf("%d", &size);
    counter = size * size; digit = (int)log10(size) + 2.5;
    matrix = (int*)malloc(sizeof(int) * (size + 1) * size);
    memset(matrix, -1, sizeof(int) * (size + 1) * size);
    *pos(matrix, x, y, size) = counter;
    for(; ; ) {
        while (++x < size && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
        *pos(matrix, --x, y, size) = counter; if (*pos(matrix, x, y + 1, size) != -1) break;
        while (++y < size && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
        *pos(matrix, x, --y, size) = counter; if (*pos(matrix, x - 1, y, size) != -1) break;
        while (--x >= 0 && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
        *pos(matrix, ++x, y, size) = counter; if (*pos(matrix, x, y - 1, size) != -1) break;
        while (--y >= 0 && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
        *pos(matrix, x, ++y, size) = counter; if (*pos(matrix, x + 1, y, size) != -1) break;
    }
    for (i = 0; i < size; i++) {
        for (j = 0; j < size; j++) printf("%*d", digit, *pos(matrix, j, i, size));
        printf("\n");
    }
    free(matrix);
    return 0;
}
395389:2005/07/24(日) 19:40:50
>>392
なんてこったい、そんな方法があったなんて!
前に読んだ本には389のような方法しか書かれてなかったぞ
やはり世界は広く学ぶことは多いな
396デフォルトの名無しさん:2005/07/24(日) 19:44:08
>>395
むしろインクルードガードはヘッダに書くほうが常套手段。
397382:2005/07/24(日) 21:17:11
>>394
どうもです。かなり助かりました
398284:2005/07/24(日) 21:33:57
291さんのプログラムを実行したのですが、問題と同じに打ってもMISSと出てしまいます。
調べてみたのですが、どこが間違っているのかわかりません。。。
お願いしますm(__)m
399デフォルトの名無しさん:2005/07/24(日) 21:40:52
>>398
http://pc8.2ch.net/test/read.cgi/prog/1113612602/l50
↑のスレの( ・∀・)が作ったやつだからなw
400デフォルトの名無しさん:2005/07/24(日) 22:11:25
期末考査でいっぱいいっぱいになっています。
あんまり授業が理解できなかったので、ぜひ助けてください・・・。

[1] 授業単元:C言語基礎(最終課題)
[2] 問題文:
自由課題
なんか今までのものを使って、自由にプログラムを作れって言われたので、適当に考えました。

とある町の少年野球チームの名前を決めるプログラムです。
人数(二桁)を入力すると、以下のA群単語とB群単語がランダムに選ばれ、チーム名が決まるというプログラムです。

A群
頑張れ!、戦え!、逃げるな!、すごいぞ!、やばい!、努力だ!

B群
バスターズ、ランディーズ、ファイターズ、ジムニーズ、ラバーズ、ニョッキズ

すごい適当なんですが、ちょっと面白いなと思って・・・。関数をつかうのでしょうか・・・?

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
 [3.3] 言語:C
[4] 期限:2005年7月25日18時まで
[5] その他の制限:
基礎なので、あんまり高度なものは使ってないです。
明日の授業までというぎりぎりなんですが、どなたかお願いします・・・。単位が欲しい・・・。
401デフォルトの名無しさん:2005/07/24(日) 22:14:05
>>291
センセイ!バッファオーバーフローします!
---以下、英単語ファイルのある1行。ただし2chの制限により適時改行---
acetylseryltyrosylserylisoleucylthreonylserylprolylserylglutaminylphenyl
alanylvalylphenylalnelleucylserylserylvalyotriptophylalanylaspartylprolyl
isoleucylglutamylleucyllencyllasparaginylvalylcysteinythreonylserylseryl
leucylglycllasparatinylglutaminylphenylalanylglutaminylthreonylglutaminyl
glutaninylalanylarginylthrseonylthreonylglutaminylvalylglutaminyglutaninyl
phenylalanylserylghlutaminylvalyltryptophyllysylrolylphenylalaylprolyglutaminyl
serylthreonylvalylarginylphunylalanylprolylglycylaspartylvalyltyrosyllsvslvalyl
tyrosylargiyltyosvlasparaginylalanylvalylleusylaspartylprolylleucylisoleucyl
threonylalnylleucylleucylglycyltreonylphnylalanylaspartylthreonylarginl
asparaginylarginylisoleucylislleucylglutammylvalylglutamylasparaginylglutaminyl
glutaminylsurylprolylthreonylthreonylalanyoglutamylthreonylleucylaspartyl
alanylthreonylarginylarginylvalylaspartylaspartylalanylthreonylvalylalanyl
isoleucylarginylserylalanylasparaginylisoleucylasparaginylleucylvallasparaginyl
glutamylleucylvalylarginylglycylthreonylglycylleucyltyrosylasparaginylglutaminyl
asparaginylthreonylphenylalanylglutamylserylmethionylserylglycylleucylvalyl
tryptophylthreonylserylalanylprolylalanylserine
402デフォルトの名無しさん:2005/07/24(日) 22:23:16
>>400
激しくつまらん。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
    int num;
    const char A[6][16] = {"頑張れ!", "戦え!", "逃げるな!", "すごいぞ!", "やばい!", "努力だ!"}, B[6][16] = {"バスターズ", "ランディーズ", "ファイターズ", "ジムニーズ", "ラバーズ", "ニョッキズ"};
    printf("チームの人数は?:"); scanf("%d", &num);
    srand(num);
    printf("よし!チームの名前は『%s%s』に決定!", A[rand() % 6], B[rand() % 6]);
    return 0;
}
403デフォルトの名無しさん:2005/07/24(日) 23:49:40
A軍追加 "すすめ" "いとしの"
B軍追加 "パイレーツ" "バットマン"
他にもあるとは思うが。
404デフォルトの名無しさん:2005/07/25(月) 00:17:23
>>97の回答をどうかお願いします
405デフォルトの名無しさん:2005/07/25(月) 00:23:40
すいません。お忙しいと思いますが378もお願いいたします。
線形計画法ってやつがそうなんでしょうか?さっぱりわからないもので…。
406デフォルトの名無しさん:2005/07/25(月) 00:31:04
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): Hit&Blow
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): borland
 [3.3] 言語:C
[4] 期限:2005年07月25日16:00まで
[5] その他の制限: Hit&Blowを作ってます。大体できたんですが、何桁かを入力させて答えを作るというところができません。
         できたらmallocを使ってやって欲しいです。

よろしくお願いします。
407デフォルトの名無しさん:2005/07/25(月) 01:00:34
>>378 >>96

>>97 食傷気味なんでパス。検索すりゃでてくるんじゃねぇか?
(ちらっと見たが・・・そのソースをそのまま使うのは俺は嫌だ)

>>406 組み込みの整数は扱える桁が決まってるんで、よほどでかい桁を扱うのでなければ、mallocは必要ないと思うが。
ttp://www.harukitchen.com/program/hit.c
408109:2005/07/25(月) 01:01:17
109はマ板の皆さんでも解けませんか・・・?
出来れば月曜までにお願いしたいのですが
ほんとうにおねがいします
409デフォルトの名無しさん:2005/07/25(月) 01:04:29
>>408
バカなこと書いて反感買いたいのか?
410デフォルトの名無しさん:2005/07/25(月) 01:06:10
>>408
その口調がねw
411デフォルトの名無しさん:2005/07/25(月) 01:19:13
[1] 授業単元:言語処理
[2] 問題文(含コード&リンク):
次のプログラム(の一部)を効率よく実行するためには
どのような工夫が考えられるかを後述の観点について、具体的に例を示して述べよ。
観点
・計算をなるべく少なくする
・代入をなるべく少なくする
・コンピュータの命令実行レベルで、なるべく同時に処理するようにする
・なるべく使用メモリを少なくする
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ(バージョン): cc
 [3.3] 言語:C
[4] 期限:2005年7月26日3時まで
[5] その他の制限:特になし

int a, b, c, d;

a=b*2+c;
d=3*c+2;
if(a>0){
 c=b-1;
 a=b*2+c;
}
else{
 b=b+1;
 a=b*2+c;
}
d=a+d;

よろしくお願いします。
412デフォルトの名無しさん:2005/07/25(月) 01:19:21
>>408
ここはム板な訳だが
413デフォルトの名無しさん:2005/07/25(月) 01:19:33
>>408 その態度が気に入らない、のとは関係なくここはム板
414デフォルトの名無しさん:2005/07/25(月) 01:22:27
>>411
問題出している人は一部asでやるようなことをccだけでやれと仰ったみたいだね。
415デフォルトの名無しさん:2005/07/25(月) 01:26:39
>>411
それ、本当にそんな問題だった?
416411:2005/07/25(月) 01:27:06
>>414
asとは何でしょうか?
ぐぐったら爽やかな外国人のオッサンが出てきました。
417411:2005/07/25(月) 01:29:02
>>415
問題文はこのままです。
うpしたほうがいいならしますが^^;
418デフォルトの名無しさん:2005/07/25(月) 01:32:31
>>416
うはは、さわやかというか濃いというか。

アセンブラ使わないと3番目なんかは気休めしかできないような気がするよ。

あと、いきなり bやらcが初期化なしで使われているんだけど、
問題にバグが仕込まれているヒッカケ問題なのかな?
419411:2005/07/25(月) 01:40:10
うpしてみました。
ttp://ranobe.sakuratan.com/up/updata/up47651.jpg

bとcの初期化…バグ…ヒッカケ問題 orz
ヒッカケ問題かさえわからない状況です。
なんせ説明もなしに課題わたされただけですから。。。
420デフォルトの名無しさん:2005/07/25(月) 02:00:39
>>419
うーん、すまんが漏れでは問題の意図がわからないよ。
421411:2005/07/25(月) 02:04:51
>>420
そうですか、考えてくださってありがとうございました。
またわからないことがあったらよろしくお願いします。
422デフォルトの名無しさん:2005/07/25(月) 02:07:10
>>421
他の分かる人が見てくれるかもね。
423デフォルトの名無しさん:2005/07/25(月) 02:23:44
int a, b, c, d;
if((b << 1) + c > 0){
 c = b - 1;
}
else{
 b++;
}
d += (b << 1) + c;

ソースの一部という条件があるのがなぁ・・・
適当なのでちょっと自信ないが。
424デフォルトの名無しさん:2005/07/25(月) 02:27:49
>>423
それだとaの最終的な状態が違う。
425デフォルトの名無しさん:2005/07/25(月) 02:29:46
>>424
書き込んだ後で気づいた。
426デフォルトの名無しさん:2005/07/25(月) 08:17:44
>408 何時まで?
427デフォルトの名無しさん:2005/07/25(月) 11:15:54
>>282
ありがとうございました。
do文を使っているみたいですが、これを使わないプログラムはどうすればいいのでしょうか。
do文習っていないので使えないのです...
428デフォルトの名無しさん:2005/07/25(月) 11:17:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
ファイルに適当な文字列を書き込んでおく。
(ただし、一行あたり10文字以内、10行以内と仮定してもよい。)
ファイルより文字列を読み込んでソートする。
(ソート済の配列やリストなどに追加すればそれでよい)
ソート済文字列をファイルに出力
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):.NET 2003
 [3.3] 言語:C
[4] 期限:7月27日まで

どうかよろしくお願いします
429デフォルトの名無しさん:2005/07/25(月) 11:39:34
[1] 授業単元:ベーシックC言語(期末課題)
[2] 問題文:
今までの復習みたいな感じらしいんですが、その時授業休んでてよく分からないんです。
友達もあんまりいなくて・・・ お力を貸してください・・・。

ある地域の、複数の学校の生徒数を入力すると、それらの平均生徒数と学校数を求めるプログラム。


複数の学校の生徒数を入力してください。 2000 1500 4800 2500

学校数は 4 です。
平均生徒数は 2700 です。

みたいな感じです!

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
 [3.3] 言語:C
[4] 期限:2005年7月25日21時まで
[5] その他の制限:
今日このレポートを知りました・・・。こんな時間に申し訳ありませんが、どなたかいらっしゃいましたらよろしくお願いします・・・。
430デフォルトの名無しさん:2005/07/25(月) 12:18:53
ベーシックC言語(期末課題)にワロス
友達もあんまりいなくてにカワイソス
431デフォルトの名無しさん:2005/07/25(月) 12:23:17
>>310
丁寧に書いていただいて、とても参考になりました。
ありがとうございました。
432デフォルトの名無しさん:2005/07/25(月) 12:23:31
どなたか>>274をお願いいたします・・・。
433デフォルトの名無しさん:2005/07/25(月) 12:30:12
>>429

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  char buf[256];
  char *token;
  char sep[] = " \n";
  int tmp;
  int num = 0;
  int sum = 0;
  printf("複数の学校の生徒数を入力してください。");
  fgets(buf, 256, stdin);
  token = strtok(buf, sep);
  while(token != NULL) {
    if((tmp = atoi(token)) != 0) {
      num++;
      sum += tmp;
    }
    token = strtok(NULL, sep);
  }
  printf("学生数は%dです\n", num);
  printf("平均生徒数は%dです", sum/num);
  return 0;
}

変数名はてきとうなので直してくれ
434430:2005/07/25(月) 12:42:09
>>429
#include <stdio.h>
int main(void) {
    int school, people, sum = 0;
    printf("複数の学校の生徒数を入力してください。");
    for (school = 0; scanf("%d", &people) == 1; ++school) sum += people;
    printf("学校数は %d です。\n", school);
    if (school) printf("平均生徒数は %d です。\n", sum / school);
    return 0;
}
435デフォルトの名無しさん:2005/07/25(月) 12:47:54
>>430
ベーシックC言語(期末課題)のどこに笑う所があるわけ?
436デフォルトの名無しさん:2005/07/25(月) 14:05:03
>>427
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/788.txt
はじめのころは do while だったが最終的にはfor(;;)で十分だった。
あと264をよく読んだら要求と違っていたので修正した。
実行結果とソースを比べてくれ。
437デフォルトの名無しさん:2005/07/25(月) 15:26:33
>>264
最速で O(n) 一番遅いとき(全部の単語が1回ずつしかでなかったとき)で O(n log n)

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/792.c
438デフォルトの名無しさん:2005/07/25(月) 15:43:47
間違えた

int str_eq_ci(const char * lhs, const char * rhs) {
  return (toupper(*lhs) == toupper(*rhs) &&
          (*lhs == '\0' || str_eq_ci(lhs + 1, rhs + 1)));
}

だ。orz
439デフォルトの名無しさん:2005/07/25(月) 15:53:01
[1] 授業単元:課題
[2] 問題文(含コード&リンク):
test.txt http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/793.txt
を読み込んで、各行ごとに数値、文字列、文字列の順に配列に格納しなさい。
また、出力して確認しなさい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
 [3.3] 言語:C
[4] 期限:2005年07月26日11:00まで
[5] その他の制限:配列は動的に確保

test.txtは各項目はタブで区切ってあります。
自作コード http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/796.c
現状では配列を結構大きく取っています、これを項目の長さに合うように可変にしたいです。
また、コーディングで狂ってるトコがありましたらご指摘お願いします。
440デフォルトの名無しさん:2005/07/25(月) 16:03:37
入力されたコードから一致するデータを"c:\例題.txt"から取得する。
  ※0が入力されるまで処理を繰り返す。できれば一度目の0入力に対応していただけると
   ありがたいです。
  ---------c:\例題.txtの内容-------
  1,あああああああ
  2,いいいいいいい
  65,ううううう うううううう
  89,えええ   えええ ええ
  99,お願いします。

--------------------------
↓↓↓↓実行結果↓↓↓↓
コード?65
ううううう うううううう
コード?
↑↑↑↑↑↑↑↑↑↑↑↑


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限:なし
441デフォルトの名無しさん:2005/07/25(月) 16:11:59
442デフォルトの名無しさん:2005/07/25(月) 16:15:06
マルチは放置の方向で。
443デフォルトの名無しさん:2005/07/25(月) 16:20:57
>>439
>コーディングで狂ってるトコ
頭?

それはさておき、intは二重構造にする必要ねぇべさ。
それから、sizeof(char)は1だから掛ける必要なし。

文字列の取得は制限を設けない限り、事前に長さの予測はできない。
どうしてもということなら、2パスにして事前に調べるしかない。
444デフォルトの名無しさん:2005/07/25(月) 16:21:06
>>442
一応誘導されてきたみたい。
どうせテンプレに従ってないからあれだけど。
445デフォルトの名無しさん:2005/07/25(月) 16:24:07
テンプレにしたがって

[1] 授業単元: プログラミング演習
[2] 入力されたコードから一致するデータを"c:\例題.txt"から取得する。
  ※0が入力されるまで処理を繰り返す。できれば一度目の0入力に対応していただけると
   ありがたいです。
  ---------c:\例題.txtの内容-------
  1,あああああああ
  2,いいいいいいい
  65,ううううう うううううう
  89,えええ   えええ ええ
  99,お願いします。

--------------------------
↓↓↓↓実行結果↓↓↓↓
コード?65
ううううう うううううう
コード?
↑↑↑↑↑↑↑↑↑↑↑↑


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限:無期限
446デフォルトの名無しさん:2005/07/25(月) 16:30:33
問題文が理解できない。
無理に理解するのも面倒くさいから、やらない。
447デフォルトの名無しさん:2005/07/25(月) 16:40:05
Sample10.java中、(1)~(2)の行が何を行う命令かを説明してください。6行目から
10行目まで、さらに、11行目から16行目までが何を行う命令かを説明してください。
-------------------------------------------------Sample10.java------------------------------------------------------
1: class Sample10{
2: public static void main(String args[])
3: {
4: int num[][]; <--(1)
5: num = new int [5][5]; <--(2)
6: for(int i=0;i<5;i++){
7: for(int j=0;j<5;j++){
8: num[i][j] = i+j;
9: }
10: }
11: for(int i=0;i<5;i++){
12: for(int j=0;j<5;j++){
13: System.out.print(num[i][j]+" ");
14: }
15: System.out.println("");
16: }
17: }
18:}

教えていただけませんでしょうか。どうかおねがいします
お願いします!!!
448デフォルトの名無しさん:2005/07/25(月) 16:40:43
>>447
ヒント:スレタイ
449デフォルトの名無しさん:2005/07/25(月) 17:15:55
>>447
゚Д゚)逝ってよし
450デフォルトの名無しさん:2005/07/25(月) 17:55:24
>>445
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    FILE *fp;
    int in, code;
    char buf[256];
    char *token;
    if((fp = fopen("例題.txt", "r")) == NULL) exit(1);
    do {
    printf("コード?");
    scanf("%d", &in);
    fseek(fp, 0, 0);
    while(feof(fp) == 0) {
        fgets(buf, 256, fp);
        token = strtok(buf, ",");
        code = atoi(token);
        if(in == code) {
            token = strtok(NULL, ",");
            printf("%s", token);
            break;
        }
    } while(in != 0);
    fclose(fp);
    return 0;
}
451デフォルトの名無しさん:2005/07/25(月) 17:59:35
javaってintにもコンストラクタ必要なのか、面倒くさいね。
452デフォルトの名無しさん:2005/07/25(月) 18:02:21
違う。
453デフォルトの名無しさん:2005/07/25(月) 18:07:23
配列は普通にとれる
454299:2005/07/25(月) 18:27:44
>>342
ありごとうございます。なんかdionプロキシーがアク禁食って書き込めなかったのでお礼がおくれました。
455デフォルトの名無しさん:2005/07/25(月) 18:35:48
1] 授業単元: レポート
[2] 問題文(含コード&リンク):
Create an invoice object that contains all the information necessary to process one line of

an invoice. Assume that the invoice must include the following data and functions.

Data:
Quantity Ordered
Quantity Shipped
Part Number
Part Description
Unit Price
Sales Tax Rate
Sales tax Amount
Shipping
Total

Functions:
* A function to initialize all the data items to 0, except the Sales Tax Rate, which should be initialized to 5%.
* A function to allow the user to initialize all the data items from the keyboard.
* A function to calculate the Extended Price of the item.
* A function to calculate the Sales Tax Amount of the item.
* A function to calculate the Total Amount of the invoice.
* A function to display the invoice data with header information in a businesslike format.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C++
[4] 期限:7月26日まで
[5] C++は,初めて触るので知識ないに等しいです.いろいろ調べてるうちにこのスレにたどり着きました.よろしくお願いします.
456デフォルトの名無しさん:2005/07/25(月) 19:04:50
457デフォルトの名無しさん:2005/07/25(月) 19:32:59
[1] 授業単元: プログラミング通論
[2] 問題文(含コード&リンク): 入力させた文字列を1文字ずつリストに変換して
辞書順に直す内容。マージソート使う方法考えたんだけど、条件として頭に節点付
いているから使えなくて困っている。
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ(バージョン): 分からん
 [3.3] 言語:C
[4] 期限:早ければ早いほど。
[5] その他の制限:なし。
458デフォルトの名無しさん:2005/07/25(月) 19:36:33
>>457
偉そうだな氏んでイイヨ
459デフォルトの名無しさん:2005/07/25(月) 19:43:21
>>457
qsortでも使ってください
460デフォルトの名無しさん:2005/07/25(月) 20:35:55
[1] 授業単元: 課題
[2] 問題文(含コード&リンク): 3次方程式の解
ただし、虚数なら(a+-biのように表示)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 明後日まで
[5] その他の制限:ないです。よろしくお願いします。
461デフォルトの名無しさん:2005/07/25(月) 20:37:01
[1] 授業単元: プログラミング演習
[2] 問題文:
与えられたバスの時刻表を検索し、出発時刻または現在時刻に最も近い
バスの出発時刻を出力。
ユーザが指定した時刻(または現在時刻)がバスの出発時刻に重なった場合は
間に合わないものとし、次のバスを出力。また、次のバスが存在しない場合は
存在しないと報告。
無効な時間はエラーを返す。

なお、時刻表は以下の形式に従ったテキストファイルで与えられる。
・1行目にはその時刻表の名前が記述される。
・2行目以降には、以下の形式に従った行が繰り返し記述される。
時間(0~23の整数) その時間内の分(0~59)の繰り返し -1
・各行における分は昇順でソートされており、行は時間で昇順にソートされていると仮定してよい。

7時の2分と45分にバスがあるとすると、
1行に「7 2 45 -1」と表示されるようです。

[3] 環境
 [3.1] OS:WindowsまたはUNIX
 [3.2] コンパイラ(バージョン): VisualC++またはgcc
 [3.3] 言語:C/C++どちらでも可
[4] 期限:2005年7月28日
[5] その他の制限:特にありません。

よろしくお願いします。
462kuro:2005/07/25(月) 20:49:54
[1] 授業単元:課題 [2]
#include<stdio.h>
void main(){
int i,j;
char top[2][4]={{10,0},{10,34,0}},tail[2][4]={{0},{34,44,0}};
char a[15][100]={
"#include<stdio.h>",
"void main(){",
"int i,j;",
"char top[2][4]={{10,0},{10,34,0}},tail[2][4]={{0},{34,44,0}};",
"char a[15][100]={",
"};",
"for(i=0;i<=1;i++)for(j=0;j<5;j++){",
"printf(top[i]);printf(a[j]);printf(tail[i]);",
"}",
"for(i=1;i>=0;i--)for(j=5;j<13;j++){",
"printf(top[i]);printf(a[j]);printf(tail[i]);",
"}",
"}",
};
for(i=0;i<=1;i++)for(j=0;j<5;j++){
printf(top[i]);printf(a[j]);printf(tail[i]);
}
for(i=1;i>=0;i--)for(j=5;j<13;j++){
printf(top[i]);printf(a[j]);printf(tail[i]);
}
}
これはこのプログラムとまったく同じのを表示するプログラムなんですが、これをインデントをつけインデントも複製するようにすること。 [3] 環境  [3.1] OS:Windows  [3.2] コンパイラ(バージョン):? [3.3] 言語:C [4] 期限:水曜日まで
[5] その他の制限:制限はなしです~。色々やってみたんですが、なかなかできず・・・;。どなたか分かる方いたらお願いします><
463デフォルトの名無しさん:2005/07/25(月) 20:59:25
int型を切り上げる簡単な方法教えてください。
たとえば4800を1000で割ったとき5にしたいです。
できればマクロがいいです。
#define ROUNDUP(a, b) ((a + b - 1) / b) * b
でOK?
464デフォルトの名無しさん:2005/07/25(月) 21:02:07
>>463
ceil
ここは宿題丸投げスレだ!
465455:2005/07/25(月) 21:25:35
請求書を1行処理するのに必要な情報をすべて含んでいる請求書のオブジェクトを作成しろ.請求書が次
のデータおよび関数を含むと仮定せよ.

Data:
  Quantity Ordered・・・・・・注文量
  Quantity Shipped・・・・・・出荷量
  Part Number・・・・・・・・・・・品物番号
  Part Description・・・・・・・品物種類
  Unit Price・・・・・・・・・・・・・・単価
  Extended Price・・・・・・・・値上げ価格
  Sales Tax Rat・・・・・・・・・・売上税率
  Sale Tax Amount・・・・・・販売税額
  Shipping・・・・・・・・・・・・・・・・出荷
  Total・・・・・・・・・・・・・・・・・・・・合計 

関数:
  売上税率(5%)を除いて,すべてのデータの項目を0に初期化する関数
  キーボードからのすべての項目を初期化するための関数
  値上げされた品物を価格を計算するための関数
  品物の売上税率を計算するための関数
  品物の販税額を計算するための関数
  実務的なフォーマットのヘッダ情報と請求書のデータを表示するため関数



訳です。正確に訳せていない部分もあると思いますが、よろしくお願いします。
466デフォルトの名無しさん:2005/07/25(月) 22:02:48
>>460
お前マルチしてたやつだろ?
なんか締め切りが変わってるけどいい加減諦めろって。
467デフォルトの名無しさん:2005/07/25(月) 22:10:04
>>462
意味分からん。
インデントつければいいじゃん。
468デフォルトの名無しさん:2005/07/25(月) 22:12:13
469デフォルトの名無しさん:2005/07/25(月) 22:24:19
>>439
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/798.txt
フォーマットが確定しているなら構造体を使う。
冒頭のmallocは冗長過ぎ。確保する個数が多ければポインタ変数だけでもメモリを食う。
470460:2005/07/25(月) 22:28:14
>>466
いや、今日課題出たばかりですけど??
ちょっと悲しい・・・
471デフォルトの名無しさん:2005/07/25(月) 22:29:37
>ちょっと悲しい
で釣り決定だな

悲しいのはこっちだ
472デフォルトの名無しさん:2005/07/25(月) 22:41:54
>>462

#include <process.h>

int main()
{
system("type *.c");
//system("type *.cpp");
//system("type *.h");
return 0;
}
473460:2005/07/25(月) 22:43:22
>>466
てか>>207に同じ質問したやついるじゃん・・・
っで、ちょっとリンクたどっていきました。確かに一緒ですね・・・
実際、自分が与えられた問題は、ある3次方程式が与えられ、これには1解実数解が存在する(分数解なので計算しても求めれませんでした)
残り2解を求め、表示せよ
そのとき、それらが虚数解ならa+-bi、実数解ならa,bのようにせよ
ってやつです


474デフォルトの名無しさん:2005/07/25(月) 22:52:04
>>462
quine Cでぐぐれば腐るほど出てくるよ。もしくはIOCCC。
475デフォルトの名無しさん:2005/07/25(月) 23:06:28
>>428お願いしますm(_ _)m
476デフォルトの名無しさん:2005/07/26(火) 03:08:03
>>475
エラーチェックとかほとんどしてないが。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare(const void *s1, const void *s2) {
    return strcmp(*(char **)s1, *(char **)s2);
}

int main() {
    char *lines[10], buf[100];
    int i = 0, j;
    FILE *fp = fopen("sort.txt", "r");
    while (fgets(buf, 10, fp) != NULL) {
        lines[i] = strdup(buf);
        ++ i;
    }
    fclose(fp);
    qsort(lines, i, sizeof(char *), compare);
    for (j = 0; j < i; j++) {
        printf("%s", lines[j]);
    }
}
477デフォルトの名無しさん:2005/07/26(火) 03:31:54
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): トリビアであった
トランプを半分に分け 正確にシャッフルする作業を 8回繰り返すと順番が元に戻る
をC言語で本当かどうか求める
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:Cです
[4] 期限:7月29日までです
トリビア好きとかいきなり言い出し、思いついたとか言われました。わけがわかないままに単位とかに関わってしまいました
お願いできないでしょうか
478デフォルトの名無しさん:2005/07/26(火) 03:41:39
479デフォルトの名無しさん:2005/07/26(火) 04:06:06
480477:2005/07/26(火) 04:36:28
>>479
ありがとうございました
481デフォルトの名無しさん:2005/07/26(火) 05:02:04
野球におけるピッチャーの防御率は,9回あたりの失点数で計算します.
なので,低い程よくなります.そこで,1試合ごとの投球回数と失点数を
入力し,「全試合を通しての防御率」と「最近5試合の防御率」を入力する
たびに計算するプログラムを作ってください.ただし,1/3 回のような
アウトカウントによる投球回数は考えず,投球回数単位で計算するものと
します.

下の表に出ている値で正しいかどうかを確認してください.

なお,最大140試合まで入力できるようにしてください.また,
日本のプロ野球では,延長戦は12回までなので,投球回数に12より
大きい数値は入らないようにしてください.
482デフォルトの名無しさん:2005/07/26(火) 05:17:42
糞マルチ死ね
483デフォルトの名無しさん:2005/07/26(火) 06:04:39
>>481
自分でやれ。氏ね
484デフォルトの名無しさん:2005/07/26(火) 07:23:44
>>481
マルチは氏ねは当然だが、テンプレ準拠せずに依頼する香具師はもっと氏ね。
485デフォルトの名無しさん:2005/07/26(火) 09:02:26
>>13です。
サブセットCで中間言語式インタプリタかLISPインタプリタを作ろうと思います。
ありがとうございました。
486デフォルトの名無しさん:2005/07/26(火) 09:20:58
>>476さんありがとうございました
487デフォルトの名無しさん:2005/07/26(火) 09:25:15
[1] 授業単元: C言語研究
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/755.txt
の続きを編集して木構造を操作する関数を作成せよ
newnode()は新しい節を追加する関数、
printtree()は木のある節を根とする木のその下のValueを表示し、
その節からの深さを返す関数である。
まずはある値xと、ある節currentのポインタを与えて、
currentから下からxをvalueに持つ節を探して、その節のポインタを返す関数を作成する。
次に、xを追加する場所を探す関数を作成する。
この関数の戻り値はポインタのポインタ **nodeとするとよい。
これらを用いて、木にある値xを追加する関数を作成せよ。
ついでにnodeをfreeする関数も作って下さい
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン): .NET 2003
 [3.3] 言語:C
[4] 期限:2005年07月28日まで
締め切りが短くなりました
どうかよろしくお願いします
488デフォルトの名無しさん:2005/07/26(火) 10:16:10
宜しくお願いしますm(_ _)m
>>455
>>465
489デフォルトの名無しさん:2005/07/26(火) 11:25:41
>>13
>>485
Lispインタプリタはいい勉強になると思う。頑張ってくれ。
490462:2005/07/26(火) 12:11:09
>>467
普通にインデントつけただけではインデントまで複製してくれなくて・・・
インデントも複製するようにしたいんです。

>>474
う~ん、検索してみたんですけど、インデントついてないのしかでなくて・・・
インデントつきの見つからないです><
探し方悪いのかな・・・。よかったらどこにあるか教えてください・・・
491デフォルトの名無しさん:2005/07/26(火) 13:03:29
[1] 授業単元: c言語
[2] 問題文(含コード&リンク):
一行に1つ整数が書かれているファイルを読みこんで、昇順にソートして表示する
プログラムを作りなさい。
・データファイルの名前はコマンドライン引数で与える
・使い方を誤った時、ファイルが開けない時にはエラー
 を出力する。
・データが1000行以上あればエラー(警告)を出力する

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン): emacs
 [3.3] 言語:C
[4] 期限:2005年7月27日


よろしくお願いします。
492461:2005/07/26(火) 13:09:28
>>478
どうもありがとうございました。
日本語部分が文字化けしていますが頑張って仕上げたいと思います。
493デフォルトの名無しさん:2005/07/26(火) 13:27:41
>>491
どアホウ
494デフォルトの名無しさん:2005/07/26(火) 14:00:30
>>491
コンパイラがemacsであると言い張るのなら、
(execute-shell-command "sort file")
とか。
495にゃほ:2005/07/26(火) 14:10:35
[1] 授業単元: c言語
[2] 問題文:
1!+2!+3!+…+n!の和が777よい大きい場合における最小のnと、そのときの和を求めるプログラムを、①for文②while文③do while文を用いて三通り作成せよ。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ(バージョン):?
 [3.3] 言語:C++
[4] 期限:2005年7月27日

全くわからないのでよろしくお願いします。

496あげ:2005/07/26(火) 14:38:41
[1] 授業単元:
[2] プログラミング: 数字の1から9までを順に並べ、+-を適当に挿入して計算結果を100にすることを考える。
このような場合(計算結果が100になる場合)をすべて表示するようなプログラムを作成せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc:
 [3.3] 言語:C
[4] 期限:本日中
[5] 考え方:符号の入る可能性のある箇所の数の配列を用意し、
+符号を1、-符号を-1、符号なしを0と対応させてすべての場合
について実際に計算をすればよい
497デフォルトの名無しさん:2005/07/26(火) 14:43:53
>>495
#include <iostream>
int main() {
    int sum = 0, n = 0;
    for (int fact_n = 1; sum <= 777; sum += fact_n *= ++n) {}
    std::cout << "n=" << n << "\nsum=" << sum << std::endl;
}

#include <iostream>
int main() {
    int sum = 0, n = 0, fact_n = 1;
    while (sum <= 777) sum += fact_n *= ++n;
    std::cout << "n=" << n << "\nsum=" << sum << std::endl;
}

#include <iostream>
int main() {
    int sum = 0, n = 0, fact_n = 1;
    do sum += fact_n *= ++n; while(sum <= 777);
    std::cout << "n=" << n << "\nsum=" << sum << std::endl;
}
498にゃほ:2005/07/26(火) 17:24:27
助かりました。ありがとうございます。
499デフォルトの名無しさん:2005/07/26(火) 18:13:21
500デフォルトの名無しさん:2005/07/26(火) 18:26:59
501デフォルトの名無しさん:2005/07/26(火) 19:05:10
[1] 授業単元:
[2] 問題文(含コード&リンク):
10次以下の多項式を10次以下の多項式で割ったときの商と余りを求めるうろグラムを作れ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:木曜日まで
[5] その他の制限:ヒントとして、
1] 1 2 3 4
   1 1 2
____
  1 1 2[2
こういう風なやり方を習ったはずだけど、こんな感じで表示させたほうが楽だと言われました
よろしくお願いします
502デフォルトの名無しさん:2005/07/26(火) 19:43:05
うろグラム
503デフォルトの名無しさん:2005/07/26(火) 20:16:24
>>496
再起版作ってみた。引数多いな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/805.txt
504503:2005/07/26(火) 20:30:10
あれ、なんか重複して出てる・・・。
505C言語初心者:2005/07/26(火) 20:35:13
1] 授業単元:c言語
[2] 問題文(含コード&リンク): 試験の点数(100点満点)を入力してA(80点以上)、B(70点以上)、C(60点以上)、D(60点未満)がそれぞれ何人かもとめる。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:2005年7月27日6:00まで
[5] その他の制限:swith文をつかう
506503:2005/07/26(火) 20:35:51
分かった。index=0のときはとき別扱いしないとダメなんだ。
ちょっとかっこ悪いけど。
void komachi(int *sigs, int index, int sum, int n, int sig)
{
if(index == MAX_N )
{
sum += n * sig;
if(sum == ANS)
{
printf("%d = ", ANS);
print_result(sigs, index);
}
}
else
{
if(index!=0)
{
sigs[index] = 0;
komachi(sigs, index+1, sum, n*10+index+1, sig);
}
sum += n * sig;
sigs[index] = 1;
komachi(sigs, index+1, sum, index+1, 1);
sigs[index] = -1;
komachi(sigs, index+1, sum, index+1,-1);
}
}
507初心者:2005/07/26(火) 20:38:45
1] 授業単元:c言語
[2] 問題文(含コード&リンク): 3科目の試験結果を入力し各科目の平均値と標準偏差を計算
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:2005年7月27日6:00まで
[5] その他の制限:配列をつかう、人数をプログラム内で指定
おねがいします。
508デフォルトの名無しさん:2005/07/26(火) 20:47:30
>>501
バグが無いか自信はないが、こんなのでどうだろうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/806.c
「こんな感じで表示」がよく分からなかったのと、
入力の書式が明記されていなかった(?)ので、
独自の入出力にした。
割られる式の最高次の係数から順に定数項まで入力(無いときは0)、改行、割る式(同様)、改行
の純で入力。
出力は、
p=商
q=余り

ただしすべての係数が整数になる場合しか対応していない。
509デフォルトの名無しさん:2005/07/26(火) 20:57:07
>>505
勝手にA(80点以上)、B(70点以上80点未満)、C(60点以上7点未満)、
D(60点未満)と読んだ。
#include <stdio.h>
int main()
{
    int A = 0, B = 0, C = 0, D = 0, score;
    while (scanf("%d", &score) == 1 && 0 <= score && score <= 100) {
        switch(score / 10) {
            case 10: case 9: case 8:
                A++; break;
            case 7:
                B++; break;
            case 6:
                C++; break;
            default:
                D++; break;
        }
    }
    printf("A:%d人\nB:%d人\nC:%d人\nD:%d人\n", A, B, C, D);
    return 0;
}
510デフォルトの名無しさん:2005/07/26(火) 22:19:55
>>496
>503より遅いけど
#include <stdio.h>

int calc(const char * str) {
  int   read, val, res = 0;
  for (; sscanf(str, "%d%n", &val, &read) == 1; str += read, res += val)
    ;

  return res;
}

void search(char * dest, int n, int idx) {
  if (n == 10) {
    dest[idx] = '\0';
    if (calc(dest) == 100) {
      puts(dest);
    }
    return;
  }

  dest[idx] = n + '0', search(dest, n + 1, idx + 1);
  dest[idx] = '+', dest[idx + 1] = n + '0', search(dest, n + 1, idx + 2);
  dest[idx] = '-', search(dest, n + 1, idx + 2);
}

int main(void)
{
  char  num[18] = "1";
  search(num, 2, 1);
  return 0;
}
511501:2005/07/26(火) 22:21:06
>>508
どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
512501:2005/07/26(火) 22:22:04
>>508
どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
513501:2005/07/26(火) 22:24:24
>>508
どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
514501:2005/07/26(火) 22:26:27
>>508
どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
515501:2005/07/26(火) 22:28:24
>>508
どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
516デフォルトの名無しさん:2005/07/26(火) 22:39:25
4連投かよ。
まぁ重いけど、もちつけ。
517デフォルトの名無しさん:2005/07/26(火) 22:49:12
重いね。
エラーが出るときは、エラーメッセージをコピペ。
518デフォルトの名無しさん:2005/07/26(火) 22:51:20
               /´  `フ
         , '' ` ` /      ,!
.        , '      レ   _,  rミ
        ;          `ミ __,xノ゙、 ソー
        i     ミ   ; ,、、、、 ヽ、
      ,.-‐!       ミ  i    `ヽ.._,,))
     //´``、     ミ ヽ.    _,,..,,,,,,_
.    | l    ` ーー -‐''ゝ、,,))  ./ ,' 3  `ヽーっ
     ヽ.ー─'´)          l   ⊃  ⌒_つ
      '''''''''            `''ー---‐'''''"

   、ヾ'"'';          /ゝ
   ミ  彡       _/´  `ヽ  ビクッ!
   ミ  彡  、ヾ"``ヾ/      ,! Σ
.   ミ  ミ  ,゙      ゝ   o,  oミ
    ミ ミ ;          `ミ __,xノ゙、
    ミ  ミ i     ミ   ; ,、、、、 ヽ、      ブワッ
    ヾ、  !       ミ  i    `、ゞヾ'""''ソ;μ,  
     ´"'`、     ミ ヽ.   ヾ  ,' 3    彡
.        ` ーー -‐''ゝ、,,))  ミ        ミ
                    彡        ミ
                    /ソ,, , ,; ,;;:、ヾ` 
519デフォルトの名無しさん:2005/07/26(火) 22:57:14
重いね。
エラーが出るときは、エラーメッセージをコピペ。
520デフォルトの名無しさん:2005/07/26(火) 22:58:05
               /´  `フ
         , '' ` ` /      ,!
.        , '      レ   _,  rミ
        ;          `ミ __,xノ゙、 ソー
        i     ミ   ; ,、、、、 ヽ、
      ,.-‐!       ミ  i    `ヽ.._,,))
     //´``、     ミ ヽ.    _,,..,,,,,,_
.    | l    ` ーー -‐''ゝ、,,))  ./ ,' 3  `ヽーっ
     ヽ.ー─'´)          l   ⊃  ⌒_つ
      '''''''''            `''ー---‐'''''"

   、ヾ'"'';          /ゝ
   ミ  彡       _/´  `ヽ  ビクッ!
   ミ  彡  、ヾ"``ヾ/      ,! Σ
.   ミ  ミ  ,゙      ゝ   o,  oミ
    ミ ミ ;          `ミ __,xノ゙、
    ミ  ミ i     ミ   ; ,、、、、 ヽ、      ブワッ
    ヾ、  !       ミ  i    `、ゞヾ'""''ソ;μ,  
     ´"'`、     ミ ヽ.   ヾ  ,' 3    彡
.        ` ーー -‐''ゝ、,,))  ミ        ミ
                    彡        ミ
                    /ソ,, , ,; ,;;:、ヾ` 
521C言語初心者:2005/07/26(火) 23:00:25
>>509
ありがとうございました。
とてもたすかりました
522C言語初心者:2005/07/26(火) 23:08:54
>>509
ありがとうございます
たすかりました
523C言語初心者:2005/07/26(火) 23:34:04
>>509
ありがとうございまた。
てともたすかりました。
524C言語初心者:2005/07/26(火) 23:35:04
>>509
ありがとうございまた。
てともたすかりました。
525501:2005/07/26(火) 23:35:12
>>516
ホントごめんなさい
526C言語初心者:2005/07/26(火) 23:35:47
>>509
ありがとうございまた。
てともたすかります。
527C言語初心者:2005/07/26(火) 23:36:39
>>509
ありがとうございまた。
てともたすかります。
528509:2005/07/26(火) 23:46:34
そんなにお礼せんでよろし(w
529デフォルトの名無しさん:2005/07/27(水) 01:39:16
>>507
#include <stdio.h>
#include <math.h>
#define BODY_COUNT (2)
#define SUBJECT_NUM (3)
int main(void) {
    int i, j, score, sum[SUBJECT_NUM], sum2[SUBJECT_NUM];
    for (i = 0; i < SUBJECT_NUM; i++) sum[i] = sum2[i] = 0;
    printf("%d人%d科目\n", BODY_COUNT, SUBJECT_NUM);
    for (i = 0; i < BODY_COUNT; i++)
        for (j = 0; j < SUBJECT_NUM; j++) {
            printf("%d人目%d科目目:", i + 1, j + 1);
            scanf("%d", &score);
            sum[j] += score;
            sum2[j] += score * score;
        }
    for (i = 0; i < SUBJECT_NUM; i++)
        printf("%d科目目\n\t平均:%lf\n\t標準偏差:%lf\n", i + 1, (double)sum[i] / BODY_COUNT, sqrt((double)sum2[i] / BODY_COUNT - (double)sum[i] * sum[i] / BODY_COUNT / BODY_COUNT));
    return 0;
}
530デフォルトの名無しさん:2005/07/27(水) 02:00:47
>>491
#include <stdio.h>
int main(int argc, char *argv[]) {
    int i, j, n = 0, temp, num[1001];
    FILE *fp;
    if (argc != 2) {
        printf("argument error!");
        return 1;
    }
    if ((fp = fopen(argv[1], "r")) == NULL) {
        printf("file open error!");
        return 1;
    }
    while (fscanf(fp, "%d", &num[n]) == 1)
        if (!(n++ < 1000)) {
            printf("data error!");
            return 1;
        }
    fclose(fp);
    for (i = 0; i < n - 1; i++)
        for (j = 0; j < n - 1 - i; j++)
            if (num[j + 1] < num[j]) {
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
    for (i = 0; i < n; i++)
        printf("%d\n", num[i]);
}
531切実:2005/07/27(水) 09:04:13
こんにちは、進級製作で横スクロールのゲームを作る事になりまして、そのためにいろいろと資料を集めている者です。
言語はCを使ってヘッダーはWindowsヘッダーを使う事になりました。
ゲームを作るといってもサウンドビジュアルノベルぐらいしか作れないので、当たり判定やその他基本的に必要なものなどのプログラムがほとんどわかっていません。。。
何か参考になる本やHPなどがあったら教えてください。
532デフォルトの名無しさん:2005/07/27(水) 09:06:06
>>531
ゲ製作板で質問汁
533切実:2005/07/27(水) 09:07:38

C言語でって事だったのでこっちに来ちゃいました。
スミマセンでした。
そっちのほうに行かせてもらいます。。。
534デフォルトの名無しさん:2005/07/27(水) 11:17:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): ・scanf関数を用いて名前を入力し、その名前を格納するための変数を
                動的メモリを用いて作成しなさい(終端記号に注意する)。
               ・次に、作成した変数にscanf関数から入力された名前を格納しなさい(文字列関数を用いる)
               ・最後に、作成した変数の中身およびバイト数をprintf関数を
                用いてコンソール画面に出力し、その変数のメモリ(動的メモリ)を解放しなさい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C++
[4] 期限:2005年7月29日まで
[5] その他の制限:習っているのはif,for,配列,ポインタ,構造体
         関数,ファイル入出力,動的メモリです。
535534:2005/07/27(水) 11:17:59
↑どなたかお願いしますm(__)m
536デフォルトの名無しさん:2005/07/27(水) 11:39:23
>>534
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    char Name[1024];
    scanf("%1024s", Name);
    char *pName = new(nothrow) char[strlen(Name) + 1];
    if (pName)
    {
        strcpy(pName, Name);
        printf("%s", pName);
        delete[] pName;
        return 0;
    }
    else
        return 1;
}
537534:2005/07/27(水) 12:12:39
>>536
ありがとうございます。
省略された所が、今は読めないので読むことが可能になったら、ためしてみますね。
538デフォルトの名無しさん:2005/07/27(水) 19:17:40
[1] 授業単元:プログラミング:配列
[2] 問題文(含コード&リンク):
氏名(ローマ字)を入力し,イニシャルを表示するプログラムを作成しなさい.
ただし,姓と名は空白で区切られているものとする.
イニシャルは大文 字で出力し,ピリオドを加えること.
大文字に変換する関数toupper()を使用して良い.
その際は,#include <ctype.h> を加えること.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:05年8月29日まで
[5] その他の制限:なし

よろしくお願いします。

539デフォルトの名無しさん:2005/07/27(水) 19:28:34
>>538

期限が後一ヶ月もあるなら勉強しろよw
540デフォルトの名無しさん:2005/07/27(水) 19:29:46
・・・間違えました7月です
541デフォルトの名無しさん:2005/07/27(水) 19:39:03
>>538
#include<ctype.h>
#include<stdio.h>
int main(){
    char sei[256];
    char mei[256];
    printf("氏名をローマ字で入力してください。\n");
    scanf("%s %s",sei,mei);
    printf("イニシャルは%c.%c\n",toupper(mei[0]),toupper(sei[0]));
}
542デフォルトの名無しさん:2005/07/27(水) 20:24:45
素早いご返答ありがとうございます。
助かりましたm(o・ω・o)m
543デフォルトの名無しさん:2005/07/28(木) 15:50:58
[1] 授業単元: 情報アルゴリズム
[2] 問題文(含コード&リンク):
大きさNのバイト配列 n[N] がある。
これを、m バイトだけ右方向へはみ出た分は前に来るように
ローテートさせる。
元の配列上で N回のスワップ でローテートを完了させよ。

void rotate( unsigned char n, int N, int m );

[3] 環境
 [3.1] OS:Linux推奨
 [3.2] コンパイラ(バージョン): gcc2.95以上推奨
 [3.3] 言語:C
[4] 期限:2005年7月31日23:59まで
[5] その他の制限:
・ネストは3回まで
・再帰禁止
・他にNバイト分作業領域を用意することは禁止


よろしくおねがいします(><)!
544デフォルトの名無しさん:2005/07/28(木) 16:40:58
>>543
void rotate( unsigned char n[], int N, int m ) {
  int i, j;
  m %= N;
  if (m < 0) m += N;
  for (i = 0; i < m; i ++) {
    for (j = i + m; j < N; j += m) swap(& n[i], & n[j]);
    swap(& n[i], & n[j - N]);
  }
}
スワップ自分で書いて。
545デフォルトの名無しさん:2005/07/28(木) 17:54:31
>>544
ありがとうございます!
でも、これだとNがmで割り切れないときには
誤動作します(><)!
546デフォルトの名無しさん:2005/07/28(木) 19:56:21
>>543
わり、早とちりした。

void rotate( unsigned char n[], int N, int m ) {
  int i, j, rem;
  m %= N;
  if (m < 0) m += N;
  while (N - m) {
    for (i = 0; i < m; i ++) for (j = i + m; j < N; j += m) swap(& n[i], & n[j]);
    rem = N % m; N = m; m = N - rem;
  }
}
547デフォルトの名無しさん:2005/07/28(木) 21:14:29
>>546
ありがとうございます!
でも、これだとm=0のときには
セグります(><)!
548!=546:2005/07/28(木) 21:17:23
>>547
仕様に書いとけよ。。ってかそれぐらい考えr(ry
549デフォルトの名無しさん:2005/07/28(木) 21:37:12
>>547
if (m==0) return;
550デフォルトの名無しさん:2005/07/28(木) 22:56:25
>>549
それじゃ、Nスワップしないな。
551デフォルトの名無しさん:2005/07/29(金) 00:19:01
[1] 授業単元:アルゴリズム・データ構造
[2] 問題文(含コード&リンク):
以下のコマンドを実行するメニューを持つプログラムを書いてください:

1. 文字列のファイルを開き、それらをベクトル(vector<string> vc)に格納します。
2. ベクトルを出力します。
3. quicksortを使用して、ベクトルを分類します。
4. mergesortを使用して、ベクトルを分類します。
9. プログラムを停止します。

[3] 環境
 [3.1] OS:Windows XP SP2
 [3.2] コンパイラ(バージョン):Visual C++ .NET
 [3.3] 言語:C++ (コンソール)
[4] 期限:過ぎているため、なるべく早くお願いします。
552デフォルトの名無しさん:2005/07/29(金) 00:19:44
長さNの配列でスワップならN-1回で完了するんで、
実はきっちりN回スワップ、とかいう罠だったりするのでは…とか勘繰ってしまう
553デフォルトの名無しさん:2005/07/29(金) 00:30:24
>>551
分類ってなんだ?
554デフォルトの名無しさん:2005/07/29(金) 00:32:12
>>551
std::vector<std::string>に格納って言われても…各行ごとに格納するとか?。
555デフォルトの名無しさん:2005/07/29(金) 00:54:39
文脈解析?
556デフォルトの名無しさん:2005/07/29(金) 04:13:58
>>553 >>555
すいません、分類というのはソートするという意味合いです。
たとえば、DBC BCD ABD ABA AAB という5つの文字列があった場合、
AAB ABA ABD BCD DBC に並び替えるという意味だと思います。
授業でサンプルにもらったクイックソートのコードです。↓のコードは文字列では
なく、文字を置き換えるものになっているようです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/811.txt

>>554
行関係なく、テキストファイルに保存されてる文字列をvectorに代入するという意味合いになります。
ifstream filename
vector<string> vc;
cin >> filename;
userin.open(filename);
while(userin){
 userin >> temp;
 vc.push_back(temp);
}
userin.close();

わかりにくい文章ですいません。また何かわかりにくい所がありましたら、お知らせください。
557デフォルトの名無しさん:2005/07/29(金) 05:01:38
ありました。↓のページにある、「【4】C++標準ライブラリの導入(1) string, vector」のようなものを作る宿題です。ただ、vectorのクイックソートについては記述されていないようなので、もう少し読んでみます。
この場合は、こういう風にクイックソート使え、みたいなアドバイスありましたら、どうぞよろしくお願いします。
http://www.interq.or.jp/jazz/iijima/stl/contents/c_to_stl.html
558544=546:2005/07/29(金) 07:43:34
>>550 >>552
漏れの作ったやつはNがmで割り切れないならN-1回、割り切れるならN-1回未満のスワップをする。
N回ぴったりのスワップで作れって問題だったらけっこうしんどいな。
(無意味にスワップしないようにつくるなら)
暇ができたら考えてみようかな。
>>550>>552も暇ならN回ぴったりスワップで作ってみれ。
559デフォルトの名無しさん:2005/07/29(金) 08:10:11
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
キーボードから入力した英字(a-z)に対し、ある特定の文字(ここでは仮にa,c,fとします)の場合は×を、
それ以外の文字の場合には○を出力しなさい。

例 入力文字:abcdefgh
×○×○○×○○

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:2005年8月1日まで
[5] その他の制限:特になし。

数字と違って文字列をどのように扱ったらよいかがイマイチ…
よろしくおねがいします。
560デフォルトの名無しさん:2005/07/29(金) 08:37:15
>>559
#include <iostream>
#include <algorithm>
#include <iterator>

const char *tr(char c)
{
    switch(c)
    {
    case 'a': case 'c': case 'f':
        return "×";
    default:
        return "◯";
    }
}

int main(void)
{
    typedef std::istream_iterator<char> ii;
    std::transform(ii(std::cin), ii(), std::ostream_iterator<const char *>(std::cout), tr);
561560:2005/07/29(金) 08:38:24
}

コピペミスった。
562デフォルトの名無しさん:2005/07/29(金) 08:42:55
>>560-561
>>559に言語 : Cと書いてあるわけだが。
563560:2005/07/29(金) 08:49:03
すまん。早とちりした。

#include <stdio.h>

const char *tr(char c)
{
    switch(c)
    {
    case 'a': case 'c': case 'f':
        return "×";
    default:
        return "◯";
    }
}

int main(void)
{
    int c;
    while((c = getchar()) != EOF)
        fputs(tr(c), stdout);
    return 0;
}
564559:2005/07/29(金) 13:33:44
>>560 >>563
ありがとうございます。わずか30分足らずで…
switch文も出てこなかった漏れorz
565デフォルトの名無しさん:2005/07/29(金) 17:46:40
[1] C初級
[2] 数字を複数入れ、その最小値はいくらです。と表示。
その時-の数字も含み、
最初に0を入れたら何もありませんでしたと表示し、途中で0を入れたら↑の最小値の表示を行うPの一例をお願いします。


[3] 環境
 [3.1] OS:Windows/
 [3.2] VisualStudio(2003):
 [3.3] 言語:C
[4] 期限:7月31迄
[5] その他の制限:ポインタまで

566デフォルトの名無しさん:2005/07/29(金) 17:47:25
ゴメ、コピペミス
567デフォルトの名無しさん:2005/07/29(金) 18:04:22
>>565
#include <stdio.h>
#include <stdlib.h>
int main() {
    int min = 0, n, flg = 0;
    while (1) {
        printf("整数を入力してください : ");
        scanf("%d", &n);
        if (n == 0) {
            if (flg == 0) {
                printf("何もありませんでした\n");
                break;
            } else {
                printf("最小値は %d です\n", min);
                break;
            }
        }
        if (min > n) {
            min = n;
        }
        flg = 1;
    }
}
568デフォルトの名無しさん:2005/07/29(金) 18:51:17
>>567
自信満々に馬鹿やってるねーw
569デフォルトの名無しさん:2005/07/29(金) 19:06:57
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
>>559の結果からなんですけれども…
例えば得られた OOXOXOOOOX…という文字列から、Oが相対的な1番目と5番目の位置にあるとき
(例: ---O----O--- -は任意。OでもXでも可)、
「4番目に1-5が見つけられました。」というメッセージを付け加える場合どうしたらよいでしょう?

また、複数ある場合(例2: ---O----O------O----O---)には
「4番目に1-5が...」
「16番目に1-5が...」としたいです。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:2005年8月1日まで
[5] その他の制限:特になし。

「任意の~」というところでどーしたらよいものかと…
strstrとかで検索してもどうにもならなそうなので。
どなたかよろしく、お願いします。
570デフォルトの名無しさん:2005/07/29(金) 19:29:23
日本語をきぼんぬ。どう相対的なんだ?
571デフォルトの名無しさん:2005/07/29(金) 19:35:00
>>569
>Oが相対的な1番目と5番目の位置にあるとき
その例だと一番目と六番目のことか?
572デフォルトの名無しさん:2005/07/29(金) 19:37:26
567は良くないのですか。
いい点が欲しいので、>>568さんお願いします。
573569:2005/07/29(金) 19:41:52
>>570-571
すみません、分かり辛かったみたいで。
とりあえず言いたかったのはあるOから数えて5番目にまたOがある時
っていうことです。
つまり、OとOの間が4つ空いている場合です。

さらに具体例を挙げると
「3番目と8番目に1-5の関係が...」(4,5,6,7番目は何でもいい)
「16番目と21番目に1-5の関係が...」(17,18,19,20番目は何でもいい)
「110番目と115番目に...」(111,112,113,114番目は何でもいい)

といった具合のことなんですけれども。
574!568:2005/07/29(金) 19:43:56
>>572
#include<stdio.h>
int main(){
    int n,min = 0;
    puts("数字を入力してください");
    scanf("%d",&n);
    min = n;
    while(n){
        if(min > n)min = n;
        puts("数字を入力してください");
        scanf("%d",&n);
    }
    if(min)printf("最小値は%dです\n",min);
    else printf("何もありませんでした\n");
    return 0;
}
575569:2005/07/29(金) 19:45:24
すいません焦ってパニくりましたorz

書き直すと↓

「つまり、OとOの間が3つ空いている場合です。

さらに具体例を挙げると
「3番目と7番目に1-5の関係が...」(4,5,6番目は何でもいい)
「16番目と20番目に1-5の関係が...」(17,18,19番目は何でもいい)
「110番目と114番目に...」(111,112,113番目は何でもいい)

といった具合のことなんですけれども。 」

です(´・ω・`)
576デフォルトの名無しさん:2005/07/29(金) 19:52:05
puts("数字を入力してください");
scanf("%d",&n);
min = n;
while(n){
if(min > n)min = n;
puts("数字を入力してください");
scanf("%d",&n);

この辺が馬鹿すぎ。
577574:2005/07/29(金) 20:17:50
>>576
二回入力処理を書いているのが馬鹿だ。と言っていると仮定して書き直してみた。
俺の理解が違ってたら指摘頼むわ。
#include<stdio.h>
int main(){
    int n=0,min = 0;
    do{
        if(!min || min > n)min = n;
        puts("数字を入力してください");
        scanf("%d",&n);
    }while(n);
    if(min)printf("最小値は%dです\n",min);
    else printf("何もありませんでした\n");
    return 0;
}
578デフォルトの名無しさん:2005/07/29(金) 21:05:35
#include <stdio.h>
main()
{
int n;

printf("数字以外を入力 _ ");
while (scanf("%d", &n) <= 0) {
printf("暴走中");
}
printf("%d\n", n);
}
579574:2005/07/29(金) 21:28:08
>>578
俺が悪かった。エラー処理が面倒だから手を抜いていた。
>>577を訂正して
×
scanf("%d",&n);

if(scanf("%d",&n)<=0){
    puts("変換エラー : 入力された文字は整数に変換できません。");
    return 1;
}
こんな感じで良いか?
580デフォルトの名無しさん:2005/07/29(金) 21:36:49
minの値の流れを読んでみそ
581デフォルトの名無しさん:2005/07/29(金) 21:38:22
>>575
じゃぁstr[]に○×が入ってると仮定して

for (i=0; i<= strlen(str)-4; i++)
{
 if(str[i]=='○' && if(str[i+4]=='○')
 {
  printf("%d番目と%d番目に1-5の関係が見つけられました。\n", i, i+4)
 }
}

バグってなければあってるはず(w
str[]に入れるのぐらい頑張ってみたまえ
582574:2005/07/29(金) 21:43:46
>>580
少し読んでみたけど特に問題ないと思うけど......
何か問題あるっけ? 俺の能力じゃ分からん。
583デフォルトの名無しさん:2005/07/29(金) 21:48:53
-10,0,-1と入力すると最小は-1
584デフォルトの名無しさん:2005/07/29(金) 21:55:47
585デフォルトの名無しさん:2005/07/29(金) 22:03:25
[1] 授業単元: 線形計画法
[2] 問題文(含コード&リンク):
シンプレックス法(単体法)で線形計画問題を解くプログラムを作成せよ。

とりあえずつくってみたのですが、
コンパイルは通る(警告messageもなし)ものの、1回は計算してくれるのですが
2回目の計算で強制終了になってしまいます。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/813.txt

どのように修正すればいいのでしょうか?

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ(バージョン): Borland C
 [3.3] 言語:C
[4] 期限:2005年8月4日まで
[5] その他の制限: なし

よろしくお願いします。
586デフォルトの名無しさん:2005/07/29(金) 22:21:32
>>583
??
587デフォルトの名無しさん:2005/07/29(金) 22:41:48
>>583
INT_MAX
588デフォルトの名無しさん:2005/07/29(金) 22:51:11
[1] 授業単元: 情報プログラム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/814.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 2005/7/29 13:00まで
[5] その他の制限:なし

よろしくお願いします
589デフォルトの名無しさん:2005/07/29(金) 23:26:19
>>588
もう間に合わないよ
590588:2005/07/29(金) 23:32:54
間違えました30日です
591デフォルトの名無しさん:2005/07/30(土) 01:17:57
>>588
んーとさ、ネタにマジレスするけれども。
せめて、コンパイルが通るようにしてから提出しよう。

マジだったら…なんてーか、自分で作った部分を解読させよーとしないで、
丸投げしたほーがよい。
592デフォルトの名無しさん:2005/07/30(土) 01:38:30
コンパイル云々というよりmain関数がないんだろ
それを作るって課題じゃないのか、知らんが
593デフォルトの名無しさん:2005/07/30(土) 01:48:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):

関数f(x)をテーラー展開を利用すると次のような形になる
f(x+△x)=f(x)+f'(x)△x+f''(x)(△x)^2/2!+f'''(x)(△x)^3/3!・・・・・・
この展開式を利用して√(x+△x)の近似計算を行いたい
√101、√201、√301、√401、√501を繰り返し計算で求めよ

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):不明
 [3.3] 言語:C
[4] 期限:2005/7/30/11:00
[5] その他の制限:制御構造、条件式まで

期限ぎりぎりで申し訳ありませんが、よろしくお願いします。
594デフォルトの名無しさん:2005/07/30(土) 02:12:22
>>592 題意はそうなんだわ。
まー、知らんでヨコヤリ入れるなら、ソース読めや。
595デフォルトの名無しさん:2005/07/30(土) 02:25:04
>>594
自分で作ったんじゃないんだろ、自分で作ったらmain関数作れないわけねーし
596デフォルトの名無しさん:2005/07/30(土) 02:48:03
>>594 一度コンパイラ通せ。
多少は言いたいことが分ってもらえるはずだが?
…んで、その後、ソースを読んでみ。

597デフォルトの名無しさん:2005/07/30(土) 02:53:01
boolean isempty(list *L);
if(L == NULL){
return(FALSE);}}

?ナニコレ?
598初心者:2005/07/30(土) 03:00:24
すみません。質問をさせてください。ろだ内に問題を挙げると、ろだ内で回答を
いただけるのでしょうか?
599デフォルトの名無しさん:2005/07/30(土) 03:04:31
ちょっと読んでみたがヒドいな
たぶん、慌てて書き写したんだろうがこれはヒドい

もちついて再うpしなさい
600デフォルトの名無しさん:2005/07/30(土) 03:08:53
タイプミスというレベルを超えてる
601デフォルトの名無しさん:2005/07/30(土) 03:14:15
>>598
うpしてここにリンク貼ればいいんじゃね?
602デフォルトの名無しさん:2005/07/30(土) 03:15:16
>>593
#include <math.h>
#include <stdio.h>
double sqrt_approx(double x, double dx, size_t n);
int main()
{
  printf("sqrt(101) = %f\n", sqrt_approx(100, 1, 10000));
  printf("sqrt(201) = %f\n", sqrt_approx(200, 1, 10000));
  printf("sqrt(301) = %f\n", sqrt_approx(300, 1, 10000));
  printf("sqrt(401) = %f\n", sqrt_approx(400, 1, 10000));
  printf("sqrt(501) = %f\n", sqrt_approx(500, 1, 10000));
  return 0;
}
double sqrt_approx(double x, double dx, size_t n)
{
  static double term = 0.0;
  double result;
  if (n <= 0) return term = sqrt(x);
  result = sqrt_approx(x, dx, n - 1);
  term *= (3.0 - 2.0 * n) / 2.0 / n * dx / x;
  return result + term;
}
書いてから気付いたけど、
[5] その他の制限:制御構造、条件式まで
ってもしかして再帰習ってないとか言いそうな雰囲気?
603初心者:2005/07/30(土) 03:24:53
>>601
レスありがとうございます。Upは、ろだの添付ファイルに宿題を書いて
書き込み、リンク張りはこちらにすればよろしいのでしょうか?
また、添付ファイルのパスはどこに表示されるのでしょうか?
質問ばかりですみません。
604デフォルトの名無しさん:2005/07/30(土) 03:42:17
>>603
短ければ直接ここに貼る。長ければロダに上げて添付ファイルのURIを
貼る。ただし、いずれにしても>>1の質問テンプレに従うこと。
添付ファイルのURIの取得は、InternetExplorerを使っているなら、リンクを
右クリックしてショートカットのコピーでクリップボードにコピーされる。
PC初心者板並みの内容な訳だが。
605デフォルトの名無しさん:2005/07/30(土) 04:09:27
ムズい宿題が来る予感
606デフォルトの名無しさん:2005/07/30(土) 05:36:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/818.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ(バージョン):bcc++
 [3.3] 言語:C
[4] 期限:2005/7/30/正午まで
よろしくお願いします。
607デフォルトの名無しさん:2005/07/30(土) 06:38:19
アミバ様がベンチメンバーなのが気に食わない
ここで勉強しなおしてこい
http://www.fsinet.or.jp/~oraho/oraho/amiba/title.htm
608デフォルトの名無しさん:2005/07/30(土) 07:10:07
main()
{
printf("整数:%d\n",15);
printf("実数:%f\n",15);
printf("1文字:%c\n",'m');
printf("文字列:%s","ひろゆき");
}
これを実行したのですが、中止とかの選択を選ぶ表示が出てきてしまいます。
なぜでしょうか?
609デフォルトの名無しさん:2005/07/30(土) 07:18:54
void main()
printf("実数:%f\n",15.0);
610デフォルトの名無しさん:2005/07/30(土) 07:19:14
>>608
>printf("実数:%f\n",15);
printfのような可変引数関数に引数を渡すときは暗黙の型変換がかからない。
15.0と書けば問題ない。

あとすれ違い。
611607:2005/07/30(土) 07:26:03
どうもありがとうございましたm(__)m
612デフォルトの名無しさん:2005/07/30(土) 07:26:36
↑607→608
613デフォルトの名無しさん:2005/07/30(土) 08:53:07
>>606の、

↓↓↓↓↓↓実行結果(例)↓↓↓↓↓↓


↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

っていうのをどっかで見た覚えがある。。
課題多いんだろうなぁ・・・も疲れ様。
614デフォルトの名無しさん:2005/07/30(土) 09:57:31
どなたか>>585を・・・
615デフォルトの名無しさん:2005/07/30(土) 10:02:38
すべての質問に答えがかえってくると思うな!!
616デフォルトの名無しさん:2005/07/30(土) 10:34:03
>>606
ポジション、半角8桁だとファースト、キャチャー、ピッチャーが入らない悪寒
617デフォルトの名無しさん:2005/07/30(土) 10:48:40
>>615
偉そうに言うなチンカス野郎
618デフォルトの名無しさん:2005/07/30(土) 10:56:43
>>616
半角8桁なら入るだろ。半角かな使えば。
619デフォルトの名無しさん:2005/07/30(土) 11:08:18
>>585
数学がらみだとレスが鈍い。
(プログラマは、知らんことも多い)
あと、プログラムを改修してくれってのも、レスが鈍い。

それと、再現できるよーに、レポートを書くべし。
1つめのデータファイル、2つめのデータファイル。
入力、出力をかかんと。

あと・・・そーだなぁ・・・。フラグとか変数、初期化すべきものをしてないんじゃないかなぁ。
620デフォルトの名無しさん:2005/07/30(土) 12:02:54
>>614==>>617
絶対に答えないでおこうぜ皆んな。
621585:2005/07/30(土) 12:42:19
>>620
違いますけどね
622デフォルトの名無しさん:2005/07/30(土) 12:48:21
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る頭を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃  /⌒ヽ    ( ヽノ    新しい輝き
        |    / レ  二( ^ω^)二⊃ ノ>ノ    
         ( ヽノ      |    /   レレ
         ノ>ノ       ( ヽノ                      
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る風を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃  /⌒ヽ    ( ヽノ    新しい輝き
        |    / レ  二( ^ω^)二⊃ ノ>ノ    
         ( ヽノ      |    /   レレ
         ノ>ノ       ( ヽノ                   ⊂二二二( ^ω^)二⊃ 喪れも参戦するお
     三  レレ        ノ>ノ
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る風を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃
623デフォルトの名無しさん:2005/07/30(土) 12:58:39
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る頭を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃  /⌒ヽ    ( ヽノ    新しい輝き
        |    / レ  二( ^ω^)二⊃ ノ>ノ    
         ( ヽノ      |    /   レレ
         ノ>ノ       ( ヽノ                      
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る風を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃  /⌒ヽ    ( ヽノ    新しい輝き
        |    / レ  二( ^ω^)二⊃ ノ>ノ    
         ( ヽノ      |    /   レレ
         ノ>ノ       ( ヽノ                   ⊂二二二( ^ω^)二⊃ 喪れも参戦するお
     三  レレ        ノ>ノ
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る風を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃
624デフォルトの名無しさん:2005/07/30(土) 13:00:39
>>621
ちなみに答えはもうできている。
うpしようか?しなーーーーーい。アヒャ Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒(。A。)!!!
625デフォルトの名無しさん:2005/07/30(土) 13:10:16
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る頭を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃  /⌒ヽ    ( ヽノ    新しい輝き
        |    / レ  二( ^ω^)二⊃ ノ>ノ    
         ( ヽノ      |    /   レレ
         ノ>ノ       ( ヽノ                      
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る風を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃  /⌒ヽ    ( ヽノ    新しい輝き
        |    / レ  二( ^ω^)二⊃ ノ>ノ    
         ( ヽノ      |    /   レレ
         ノ>ノ       ( ヽノ                   ⊂二二二( ^ω^)二⊃ 喪れも参戦するお
     三  レレ        ノ>ノ
  /⌒ヽ
二( ^ω^)二⊃          /⌒ヽ
  |    /  /⌒ヽ  ⊂二二( ^ω^)二⊃        光る風を追い越したらー
  ( ヽノ 二( ^ω^)/⌒ヽ   |    /
  ノ>ノ   ⊂二二二( ^ω^)二⊃ ヽノ    /⌒ヽ
 レレ     ( ヽノ|    /   ノ>ノ  二二( ^ω^)二⊃   君にきっと逢えるねー
        ノ /⌒ヽ     レレ      |   /
  ⊂二二二( ^ω^)二⊃
626デフォルトの名無しさん:2005/07/30(土) 13:25:41
>>618
>606 のリンク見てみろ
627デフォルトの名無しさん:2005/07/30(土) 13:38:47
>>626
どっかに半角8桁って書いてある?
628デフォルトの名無しさん:2005/07/30(土) 14:19:36
日本語の8桁=8文字
629デフォルトの名無しさん:2005/07/30(土) 15:41:22
内藤ホライゾンがC/C++の宿題を片付けます 49
http://pc8.2ch.net/test/read.cgi/tech/1122705615/
630デフォルトの名無しさん:2005/07/30(土) 16:43:33
>>585
新婦レックス法の説明とか参考URLとか載せんと、
知らん奴はぜんぜん解かんし、だいたい
普段使うもんじゃないから誰もとかねェYO!
631デフォルトの名無しさん:2005/07/30(土) 17:39:18
いや、シンプレックス法が問題なのではない。
彼はデバッグしてほしいのだ。
632デフォルトの名無しさん:2005/07/30(土) 17:41:04
うるせえな、ヤジ飛ばすだけの外野どもめ
633デフォルトの名無しさん:2005/07/30(土) 18:36:51
いや、それは分かるぞ。
人のコード修正しろなんていう依頼は一番やりたくない仕事だ。
634デフォルトの名無しさん:2005/07/30(土) 20:04:44
>>585
一番上の行の最小要素を探すときにjpibotって変数がバカになってる。
min=matrix[0][1];
の後のforを
for(j=2, jpibot=1;
とでも書いとけ。
どうでもいいけど、ソースみずらすぎ

635606:2005/07/30(土) 22:44:04
606です。ソースをろだ内にUPしていただけませんでしょうか?
お願いいたします。
636585:2005/07/30(土) 23:29:49
早く解かんかいバカどもめ
637デフォルトの名無しさん:2005/07/30(土) 23:49:12
頭のいい>>636が解けばいい

いや>>636はバカが早く解けると思っている
つまり>>636はバカだということだ
ということは>>636>>585を解けばいいと言うことだ
638デフォルトの名無しさん:2005/07/31(日) 00:13:13
>>487の締め切り延ばしてもらいました
回答お願いします;;
639デフォルトの名無しさん:2005/07/31(日) 00:36:24
>>606=>>635
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/821.c

簡単な動作確認しかしてません。
#期限が今日(昨日)の正午ってなってるけどいいのか?
640デフォルトの名無しさん:2005/07/31(日) 00:38:53
>>638
仕様が曖昧。これだけでは答えられない(2分探索木だろうけれども)。
・「currentから下からxをvalueに持つ節を探して」
  →探索方法の指定は?木の辿り方は複数ある。
・「その節のポインタを返す関数」
  →該当する節が複数ある場合は?
・「xを追加する場所を探す関数」
  →追加する場所の基準は?
・「nodeをfreeする関数」
  →node以下全部?
641606:2005/07/31(日) 00:47:17
639さんありがとうございました。
642606:2005/07/31(日) 04:17:15
>>639
のソースを実行したら、強制終了してしまいます。氏名のファイル出力時
に躓いているようなのですが、全角文字を出力させる修正点を教えていただけないでしょうか?
643デフォルトの名無しさん:2005/07/31(日) 04:34:51
プログラマ募集中ー
有志によるMMO製作です。

24時間体制でガンガン開発するでぇーーー

CreateGame~陸海空オンライン~

プログラマ募集中!力ある奴だけこぃ!!

ついてこれる奴だけ。募集。
あと、歴史に名を残したいやつ
644デフォルトの名無しさん:2005/07/31(日) 04:48:39
>>643
どうせ見てないだろうケド、お前に付き合ってたら、
歴史に不名誉な名を残したままあの世に行くことになりそうだから、
どっかに消えてくれ。
645639:2005/07/31(日) 12:05:15
>>642
>>606のサンプルにあるデータでは動作確認済み(文字数の関係でピッチャーは半角で入力)
だけど、どんなデータを入れたか教えてもらえます?
646デフォルトの名無しさん:2005/07/31(日) 17:54:59
linuxでここみるときは、emacs+navi2chで素直に見れるのだが、
windowsだと、リンク先をコンパイルするのが、めんどーだ。
windowsで環境構築すんの、どーすりゃいーのかのぉ?
647デフォルトの名無しさん:2005/07/31(日) 18:15:07
さて、明日から8月なわけだ・・・・・・・・。
しばらくお休みかな。
648デフォルトの名無しさん:2005/07/31(日) 18:47:07
8月下旬になって突然書き込みが多くなる罠w
649デフォルトの名無しさん:2005/07/31(日) 19:15:15
>>646
http://www.vector.co.jp/vpack/filearea/win/prog/c/
こんなにたくさんあるじゃない
650デフォルトの名無しさん:2005/07/31(日) 20:04:33
>>646 cygwinのX立ち上げて使えば?
651デフォルトの名無しさん:2005/07/31(日) 20:23:27
>>646
えーと、windowsで手軽にこのスレを見ながらコンパイルをしたいということかな?
だとしたら以下の手段で。
・telnet端末エミュレータでlinuxにログイン、gccを使用。
・cygwin環境を構築、gccなどを使用。
・DOSプロンプトからbccなどを使用。
尚、Windowsでのエディタには軽くてWindows的なI/Fも具えるXyzzyがお勧め。
652606:2005/07/31(日) 21:49:32
>>645
氏名と、ポジションは全角で登録したいんです。
氏名は全角12文字、ポジションは全角で8文字入るようにするにはどうしたらいいのでしょうか?
653デフォルトの名無しさん:2005/07/31(日) 22:17:55
>>652
構造体の配列要素数と、input()関数内の文字数判定個所を変更(×2)する。
654デフォルトの名無しさん:2005/07/31(日) 22:23:36
>>653
ありがとうございます。
関数内のみ構造体の配列要素数を(×2)するの忘れてました・・・。
655:2005/07/31(日) 22:24:44
日本語を間違えました。”関数内のみ”は、いりません。
656デフォルトの名無しさん:2005/08/01(月) 15:56:48
[1] 授業単元: C言語研究
[2] 問題文(含コード&リンク):
int型のデータを格納するためのスタック構造を実現したクラスを作って下さい.
仕様は自由ですが, 少なくとも以下の仕様を満たすようにして下さい.
   ○一引数のコンストラクタを持ち, 格納できるデータの最大数を設定できること.
   ○デフォルトコンストラクタを持ち, その場合の格納データ最大数は100であること.
また, 同様の条件で, キューを表すクラスも作って下さい.
[3] 環境
 [3.1] OS:Windowsxp
 [3.2] VisualStudio(2003)
 [3.3] 言語:C ++
[4] 2005/08/01 17:00迄
[5] その他の制限:なし

よろしくお願いします
657デフォルトの名無しさん:2005/08/01(月) 16:03:31
C言語の授業で言語がC++?
658656:2005/08/01(月) 16:07:04
C++もやってるんですょぉ。゜゜(´□`。)°゜。
659デフォルトの名無しさん:2005/08/01(月) 16:16:31
Thread Safeとか考えなくてええんか?
660Ruby:2005/08/01(月) 16:18:37
教えて下さい…(泣)
Rubyである数 n が素数であるかどうかの簡単な判定について
以下が条件です。
1. n をコマンドラインから入力する。to_i メソッドを使って整数化すること。
2. nが素数でないことを見つけるための変数 pflag に false を代入しておく。
3. n の平方根を超えない最大の整数を ne とする(たとえば n が 10 であれば, 10の平方根は 3.16... であるから, ne は 3 になる)。 (ここまでは下のソースに記述してある)
4. ここから for ループになる。
5. n を 2 から始まって ne までの数で割った,その余りが 0 であるかどうかを調べる。
6. もし 0 であったら, pflag に true を代入して,ループから脱出する。
7. ループを閉じる。
8. ループが閉じた後,もし pflag が true であれば,次のように出力する。最後は改行する。
"xx は素数です。"
9. そうでなければ,次のように出力する。最後は改行する。
"xx は合成数です。"
661デフォルトの名無しさん:2005/08/01(月) 16:19:11
スレッドセーフ考えるとboostやらなんやらでメンドイくさいので、
例外安全・中立を重視する方向でよろしくお願いします
662デフォルトの名無しさん:2005/08/01(月) 16:19:15
>>660
氏ね
663デフォルトの名無しさん:2005/08/01(月) 16:19:16
>>660
Rubyはスレ違い。
664Ruby:2005/08/01(月) 16:22:08
>>663
失礼しました(焦)
665デフォルトの名無しさん:2005/08/01(月) 16:38:49
>>656
機能は最低限。
class array_stack {
    int DATA_MAX, data_num, *data;
public:
    array_stack(int max = 100) : DATA_MAX(max), data_num(0) {data = new int[DATA_MAX];}
    ~array_stack() {delete[] data;}
    bool empty() {return data_num == 0;}
    int pop() {if (empty()) throw "empty!"; return data[--data_num];}
    void push(int t) {
        if (data_num + 1 == DATA_MAX) throw "full!";
        data[data_num++] = t;
    }
};
class array_queue {
    int DATA_MAX, data_num, *data;
public:
    array_queue(int max = 100) : DATA_MAX(max), data_num(0) {data = new int[DATA_MAX];}
    ~array_queue() {delete[] data;}
    bool empty() {return data_num == 0;}
    int pop() {if (empty()) throw "empty!"; return data[--data_num];}
    void push(int t) {
        if (data_num + 1 == DATA_MAX) throw "full!";
        int* first = data, * last = data + data_num;
        while (last != first) {--last; *(last + 1) = *last;}
        data[0] = t;
        ++data_num;
    }
};
666656:2005/08/01(月) 16:48:59
>>665
本当にありがとうございます!
667デフォルトの名無しさん:2005/08/01(月) 18:43:01
>>640
ネットに繋げず遅くなりました、すいません
・「currentから下からxをvalueに持つ節を探して」
  →探索方法の指定は?木の辿り方は複数ある。
指定は特にありません。

・「その節のポインタを返す関数」
  →該当する節が複数ある場合は?
それなりに動けば良いらしいです

・「xを追加する場所を探す関数」
  →追加する場所の基準は?
特にないです

・「nodeをfreeする関数」
  →node以下全部?
全部です
668デフォルトの名無しさん:2005/08/01(月) 18:47:55
[1]授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
(問い1)
長さがN文字である文字列Sの中で,異なる場所に2回以上繰り返して登場する部分列の
うち,最も長いものを見つけるアルゴリズムを設計し,その詳細を説明せよ.ただし,部
分列同士の一部が重なるような場合を許すものとする(例えばS=“ababa”の場合,求め
る部分列は“aba”となる).また,そのアルゴリズムの最大時間計算量のオーダーをNで
表せ.なお,授業で紹介したストリングマッチングのアルゴリズムを一部で使用する場合
には,その詳細を省略してよい.
(問い2)
C言語(あるいはそれに類似した他の言語でも可)を用いて「複素数」というデータ構造
を定義し,これに対する四則演算(加算,減算,乗算,除算),絶対値の計算,および値の
表示を行う関数をプログラムせよ.値の表示は,実部と虚部による直交座標表現と,絶対
値と偏角による極座標表現の,2通りを用意すること.解答はそれぞれの関数についてソ
ースコードの形で示せ.構造体,ポインタ,クラスなどの概念を使用してもよい.
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ(バージョン):emacs
 [3.3] 言語:C
[4] 期限:2005年8月4日24:00まで
[5] その他の制限:高度過ぎなければよいです
669デフォルトの名無しさん:2005/08/01(月) 18:54:52
ブロックソーティングでいいんじゃないかい?
670デフォルトの名無しさん:2005/08/01(月) 20:40:43
emacsはコンパイラじゃねーべよ。
紹介したストリングマッチングのアルゴリズム、そんなんエスパーじゃないんでわかりません。
671デフォルトの名無しさん:2005/08/01(月) 21:12:33
>>668
力技。
typedef struct{ char *p1, *p2; int len; }result_t;
result_t *substrcmp(char *str, result_t *result)
{
  unsigned int len = strlen(str);
  char *str_end = str + len;
  for(; len != 0; --len)
  {
    char *p1,*p2;
    for(p1 = str; p1 != str_end - len; ++p1)
      for(p2 = p1+1; p2 != str_end - len; ++p2)
        if(0 == strncmp(p1,p2,len))
        {
          result->p1 = p1;
          result->p2 = p2;
          result->len = len;
          return result;
        }
  }
  return NULL;
}
672671:2005/08/01(月) 21:21:58
訂正
673デフォルトの名無しさん:2005/08/01(月) 21:22:30
貼り忘れた。スマソ
typedef struct{ char *p1, *p2; int len; }result_t;
result_t *substrcmp(char *str, result_t *result)
{
  unsigned int len = strlen(str);
  char *str_end = str + len;
  for(; len != 0; --len)
  {
    char *p1,*p2;
    for(p1 = str; p1 != str_end - len + 1; ++p1)
      for(p2 = p1+1; p2 != str_end - len + 1; ++p2)
        if(0 == strncmp(p1,p2,len))
        {
          result->p1 = p1;
          result->p2 = p2;
          result->len = len;
          return result;
        }
  }
  return NULL;
}
674デフォルトの名無しさん:2005/08/01(月) 21:51:13
[1] 授業単元: コンピュータ言語
[2] 問題文(含コード&リンク):
下記の条件を満たすクラスstudentを作成し、メインプログラムにて
個人名オブジェクトを設定して、出席回数に応じて成績判定し、出力せよ。
1.データメンバとして、出席回数、点数を含むこと。
2.メンバ関数として、出席回数増・減、点数計算、成績判定するものを定義せよ。
 点数の計算は 5点×出席回数(全15回)+25点=100点
 成績判定はA・B・C・D 4段階  判定の度合いは自由に決めていい
 ※5回以上欠席するとD(不可)になるようにすること。
3.コンストラクタにより、点数、回数の初期化を行うこと。
4.メインプログラムは複数名の入力を可能とすること。
5.ファイルはstudent.h   ・・・データメンバ定義、メンバ関数宣言
       student.cpp  ・・・メンバ関数定義、コンストラクタ定義
       test.cpp    ・・・オブジェクト宣言、点数・成績判定
の構成にすること。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ(バージョン):Visual C++ 6.0
 [3.3] 言語:C++
[4] 期限:2005年8月3日9:00まで
[5] その他(どこまで習っているか):教科書を早足でなぞった位・・・
675デフォルトの名無しさん:2005/08/01(月) 22:40:09
>>667
本当にそんな仕様でいいんだったら
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/822.txt
676デフォルトの名無しさん:2005/08/02(火) 02:17:44
>>674
全部書き込めるか不安
/****************************************************/
/*student.h内*/
/****************************************************/
typedef enum{
RANK_A = 1,
RANK_B,
RANK_C,
RANK_D,
} RANK;

#define POINT_A 85
#define POINT_B 90
#define POINT_C 80
//RANK_Dは0~55

class student{
// データメンバとして、出席回数、点数を含むこと。
int point;

int student::CalcPoint(void); // pointとnum_existから計算

public:
int num_exist;

student::student(void); // num_exist
int student::ControlNumExist(int); // 増減
RANK student::JudgeResult(void);// pointから計算
};
677デフォルトの名無しさん:2005/08/02(火) 02:20:39
>>674
ごめん、改行が多くて書き込めないから他の誰かにがんばってもらって。
678デフォルトの名無しさん:2005/08/02(火) 02:21:19
>>674
なんか問題文がおかしいような気もするが、
とりあえずそれなりに仕様を満たすように書いてみた。

// --- student.h -------------------------------
#ifndef __student_h__
#define __student_h__

#ifndef UINT
#typedef unsigned int UINT;
#endif
#define MAX_DAYS 15

class student{
public:
student();
void Attend();
void Absent();
UINT GetCount();
UINT GetScore();
char GetGrade();
private:
UINT m_Attendance; // days attended
UINT m_Absence; // days absented
UINT m_Score; // scoring point
};
#endif //__student_h__
679678:2005/08/02(火) 02:23:19
他にも書いてる人いたのか・・・
// --- student.cpp (1) -------------------------
#include "student.h"

#define BORDER_A 95
#define BORDER_B 85
#define BORDER_C 75

student::student()
{
m_Attendance = 0;
m_Absebce = 0;
m_Score = 25;
}

void student::Attend()
{
if(m_Attendance + m_Absence < MAX_DAYS) {
m_Attendance++;
m_Score += 5;
}
}

void student::Absent()
{
if(m_Attendance + m_Absence < MAX_DAYS)
m_Absence++;
}
680678:2005/08/02(火) 02:24:02
// --- student.cpp (2) ------------------------
UINT student::GetCount()
{
return m_Attendance;
}

UINT student::GetScore()
{
return m_Score;
}

char student::GetGrade()
{
UINT totalAbsence = MAX_DAYS - m_Attendance;

if( totalAbsence > 5 || m_Score < BORDER_C){
return 'D';
}else if( m_Score < BORDER_B ){
return 'C';
}else if( m_Score < BORDER_A ){
return 'B';
}else{
return 'A';
}
}
681678:2005/08/02(火) 02:26:25
// --- test.cpp --------------------------------
#include "student.h"
#include <iostream.h>
#include <stdlib.h>

int main()
{
student A;
student B;
int i;
// A
for(i=0; i<rand()%MAX_DAYS; i++){ A.Attend(); }
for( ; i<MAX_DAYS; i++) { A.Absent(); }
cout<< "A: count = "<< A.GetCount();
cout<< ", score = "<< A.GetScore();
cout<< ", grade = "<< A.GetGrade() << endl;
// B
for(i=0; i<rand()%MAX_DAYS; i++){ B.Attend(); }
for( ; i<MAX_DAYS; i++) { B.Absent(); }
cout<< "B: count = "<< A.GetCount();
cout<< ", score = "<< A.GetScore();
cout<< ", grade = "<< A.GetGrade() << endl;

return 0;
}
682678:2005/08/02(火) 02:29:16
ちなみに、たぶん↑のやり方は普通じゃないので
>>676の方を参考にした方が良いと思う。
つか、これそのままコピペしたら絶対先生に呼び出されるw
683デフォルトの名無しさん:2005/08/02(火) 03:05:55
せめて7行きぼん
684デフォルトの名無しさん:2005/08/02(火) 03:12:49
[1]授業単元: アルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/clip.gif
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年8月3日24:00まで
[5] その他の制限:なし
685デフォルトの名無しさん:2005/08/02(火) 03:16:07
↑ミス はずかしい><

[1]授業単元: アルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/823.lzh

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年8月3日24:00まで
[5] その他の制限:なし
686デフォルトの名無しさん:2005/08/02(火) 04:02:16
Bresenham でぐぐれ。
画像描画系は、ライブラリの指定をください。
687685:2005/08/02(火) 04:33:25
>>686
ライブラリの指定ってなんなんでしょうか?
私無知すぎですよね。。
688デフォルトの名無しさん:2005/08/02(火) 07:17:16
Pascalの宿題なんですがここでもよろしいでしょうか?
以下URLに問題と答えを載せたのですが、答えがどうも腑に落ちません。
F(2)を行った結果x=1+2=3になりましたが、これがF(3)におけるx=1の宣言後であるにも関わらず
F(3)ではx=1に戻ってしまっています。
またF(3)でx=4となった後メインプログラムに戻りますが、
ここでもx=3の宣言後にF(3)をしたはずですがX=3が最終出力になっています。
根本的に私の考えがおかしいのでしょうか?どうも流れからして納得できません。
よろしくお願いします。

http://www.za.ztv.ne.jp/yosi-h/
689デフォルトの名無しさん:2005/08/02(火) 07:53:23
>>688
残念、ここは解説スレでもなければPascalスレでもない。
ヒント:xはどこで宣言されて、どの範囲で有効かな?
690デフォルトの名無しさん:2005/08/02(火) 08:51:54
[1] 授業単元:プログラミング 配列
[2] 問題文(含コード&リンク):
L行M列の行列Xと M行N列の行列Y の積を求めるプログラムを 作成しなさい.ただし,任意の大きさの行列が計算できるようにしなさい.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:05年8月3日まで
[5] その他の制限:

お願いします。
691デフォルトの名無しさん:2005/08/02(火) 08:53:46
>>685
何回かに分けてみます
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_WIDTH 100
#define MAX_HEIGHT 100

#define POINT_NONE 0x30
#define POINT_EXIST 0x31

#define _DEBUG_

typedef struct{
int x, y;
} Point;

int main(void)
{
int ret = 0;
char buf[128];
Point s_point, e_point;
int set_flag = 0;
double a, b;// y = a * x + b
int i;
int h;
char pix[MAX_WIDTH][MAX_HEIGHT];
#ifdef _DEBUG_
FILE *d_file;
#endif
692デフォルトの名無しさん:2005/08/02(火) 08:54:38
>>685
// ピクセルの初期化
for(i=0; i<MAX_WIDTH; i++){
for(h=0; h<MAX_WIDTH; h++){
pix[i][h] = POINT_NONE;
}
}
while(set_flag == 0){
// 始点入力
printf("Please Input Start Point x:");
gets(buf);
s_point.x = atoi(buf);
printf("Please Input Start Point y:");
gets(buf);
s_point.y = atoi(buf);

// 終点入力
printf("Please Input End Point x:");
gets(buf);
e_point.x = atoi(buf);
printf("Please Input End Point y:");
gets(buf);
e_point.y = atoi(buf);

set_flag = 1;
693デフォルトの名無しさん:2005/08/02(火) 08:55:30
>>685

// 始点、終点チェック
if((s_point.x < 0) || (s_point.y <0) || (s_point.x >= MAX_WIDTH) || (s_point.y >= MAX_HEIGHT)){
printf("Irregular Start Point\r\n");
set_flag = 0;
}
if((e_point.x < 0) || (e_point.y <0) || (e_point.x >= MAX_WIDTH) || (e_point.y >= MAX_HEIGHT)){
printf("Irregular End Point\r\n");
set_flag = 0;
}
}

// ライン計算 height = A * width + B
if(s_point.x != e_point.x){
a = (double)(e_point.y - s_point.y) / (e_point.x - s_point.x);
b = (double)e_point.y - a * e_point.x;
}
else{
a = 0.0;
b = 0.0;
}
694デフォルトの名無しさん:2005/08/02(火) 08:56:31
>>685
// 上記width, heightの整数部を取り出し
// 該当pointの値をチェック
if(s_point.x < e_point.x){
for(i=s_point.x; i<=e_point.x; i++){
h = (int)(a * i + b);
pix[i][h] = POINT_EXIST;
}
}
else if(s_point.x > e_point.x){
for(i=e_point.x; i<=s_point.x; i++){
h = (int)(a * i + b);
pix[i][h] = POINT_EXIST;
}
}
else{// start = end
if(s_point.y < e_point.y){
for(h=s_point.y; h<=e_point.y; h++){
pix[s_point.x][h] = POINT_EXIST;
}
}
else{
for(h=e_point.y; h<=s_point.y; h++){
pix[s_point.x][h] = POINT_EXIST;
}
}
}
695デフォルトの名無しさん:2005/08/02(火) 08:57:03
>>685

#ifdef _DEBUG_
d_file = fopen("debug.txt", "w+");

// ピクセルの初期化
for(h=0; h<MAX_HEIGHT; h++){
for(i=0; i<MAX_WIDTH; i++){
if(pix[i][h] == POINT_EXIST){
fprintf(d_file, "1");
}
else{
fprintf(d_file, "0");
}
}
fprintf(d_file, "\r\n");
}

fclose(d_file);
#endif

return(ret);
}

おわり。いかがでしょうか?
696695:2005/08/02(火) 09:19:24
>>695
// ピクセルの初期化
これはウソです。

コメントはウソしか書いていないというのはまさに真実ですね、まったく。
697デフォルトの名無しさん:2005/08/02(火) 12:25:31
>>676
>>678
ありがとうございました。参考にさせていただきます。
698デフォルトの名無しさん:2005/08/02(火) 14:21:14
藻前ら(特に回答者)アプロダ(>>1)使えよ
スレが読みにくくてたまらん。。
699デフォルトの名無しさん:2005/08/02(火) 18:34:50
>>690
行列のかけざん問題よく見かけるなぁ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/824.txt
700デフォルトの名無しさん:2005/08/02(火) 20:46:17
[1]授業単元: アルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/826.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年8月4日18:00まで
[5] その他の制限:なし
701デフォルトの名無しさん:2005/08/02(火) 21:21:46
>700
(1).
int hash(char *name)
{
int h = 1;
while(*name != '\0'){
h *= (*name)%100;
}
return h%100;
}
(2).
名前の文字列の中に偶数値を持つバイトがあると
ハッシュ値が必ず偶数となり、ハッシュ値の出現に偏りが出る。
(3).
上記の問題から法とする数を奇数にすればよいと考えられる。
702デフォルトの名無しさん:2005/08/02(火) 21:23:16
>>700
[1] int h(const char * str) { return 0; }
[2] 確実に0が返ってしまう
[3] ハッシュ関数 : 各バイトを“終端文字を除いて”すべて掛け算し、その下2桁を採用する。
  より良い性能を与えると思われる根拠 : 0以外も返るようになる。
703デフォルトの名無しさん:2005/08/02(火) 21:59:15
[3] 足し算にする
704デフォルトの名無しさん:2005/08/02(火) 23:14:50
1] 授業単元: プログラム
[2] 問題文(含コード&リンク):
●□□□□
□□□□□
□□□□□
□□□□□
□□□□□
1:← 2:→ 3:↑ 4:↓
キーボードで数値を入力した時、矢印方向に●が動くようなプログラムを作成せよ。
(□から出たら終わらせる)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] Microsoft Visual C++ .NET
 [3.3] 言語:C
[4] 期限:8月3日まで
705デフォルトの名無しさん:2005/08/02(火) 23:16:22
>>704
指定どおりに動いたらはみ出す場合にはどうする?
706デフォルトの名無しさん:2005/08/02(火) 23:17:58
>>705
は?
707デフォルトの名無しさん:2005/08/02(火) 23:24:43
あ、終わらせるって書いてあった。失礼しますた。
708704:2005/08/02(火) 23:25:23
>>705
はみ出した場合は終了でいいです。
709デフォルトの名無しさん:2005/08/02(火) 23:32:19
>>708
了解
#include <stdio.h>
#define WIDTH (5)
#define HEIGHT (4)
int main(void) {
    int x = 0, y = 0, i, j, c;
    for (; ; ) {
        for (i = 0; i < HEIGHT; i++) {
            for (j = 0; j < WIDTH; j++) if (j == x && i == y) printf("●"); else printf("□");
            printf("\n");
        }
        printf("1:← 2:→ 3:↑ 4:↓\n"); if (scanf("%d", &c) != 1) return 1;
        switch (c) {
            case 1: --x; break;
            case 2: ++x; break;
            case 3: --y; break;
            case 4: ++y; break;
            default: return 1;
        }
        if (x < 0 || WIDTH <= x || y < 0 || HEIGHT <= y) return 0;
    }
}
710704:2005/08/02(火) 23:44:44
>>709
すいません
図形は下の行に書かずに上書きでお願いします。
711デフォルトの名無しさん:2005/08/02(火) 23:54:01
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
712デフォルトの名無しさん:2005/08/03(水) 00:10:22
>>700
(2)
・文字の出現順は関係ないので、アナグラムしたものは同じハッシュ値を持つ。
・文字コードが100の倍数を含んでいるとき、常に0を返す
(3)
文字コードだけでなく、出現位置も利用してハッシュ値を生成する。
713デフォルトの名無しさん:2005/08/03(水) 00:12:26
>>710
画面消去のエスケープシーケンスってば↓だっけ? ためしてないけど。
"\x1B[0K"
714デフォルトの名無しさん:2005/08/03(水) 00:18:01
>>713
いいかげんな事を書くなボケ
715デフォルトの名無しさん:2005/08/03(水) 03:08:03
漏れも課題がヤバイです。

[1] 授業単元:
[2] 問題文(含コード&リンク):
  キャラクタ(半角一文字)を動かすプログラムです。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/829.txt
  ここのコメントの中の処理お願いします。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): Microsoft Visual C++ .NET
 [3.3] 言語:C++
[4] 期限:2005年8月3日
[5] その他の制限:
716715:2005/08/03(水) 03:16:47
やっぱりいいです。失礼しました。
717OS:2005/08/03(水) 05:51:20
次スレからの指示できました。

[1] 授業単元:オペレーティングシステム
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ(バージョン): ちょっとわかりません
 [3.3] 言語:C言語
[4] 期限:今年の8月10日までです。
問題文は
・マルチスレッドプログラミング
 (1)簡単なスレッドプログラミング及びスレッドの動作について解説せよ。
 (2)相互封鎖や相互実行が起こるプログラムを作成し、その動作を解説せよ。
 (3)マルチスレッドで、turnやflagを使った排他制御のプログラムを作成し、その動作を解説せよ。
 (4)消費者・生産者問題のプログラムを解説せよ。
・プロセス
 (1)簡単なプロセスを使ったプログラミング及びプロセスの動作について解説せよ。
 (2)スレッドとプロセスの違いを具体的な例を挙げて解説せよ。
 (3)プロセス間通信で、turnやflagを使った排他制御のプログラムを作成せよ。
 (4)2つのプロセスが共有変数を操作するプログラムを作成し、その動作を解説せよ。
・ライブラリ
 (1)スレッドについてどのようなライブラリがあるか調査し、
   簡単なプログラムを作成して、そのライブラリの使い方を解説せよ。
 (2)プロセスについて、どのようなライブラリがあるか調査し、
   簡単なプログラムを作成して、そのライブラリの使い方を解説せよ。

です。よろしくです。
718717:2005/08/03(水) 06:17:56
やっぱりいいです。失礼しました。
719デフォルトの名無しさん:2005/08/03(水) 07:42:44
[1]授業単元: C言語
[2] 問題文(含コード&リンク):
問題文↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/835.lzh
ソース↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/834.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年8月4日24:00まで
単位まじでやばいんでお願いです!
理由とかもできればお願いしますozl
720デフォルトの名無しさん:2005/08/03(水) 10:28:44
可読性の低いコードなので却下
721デフォルトの名無しさん:2005/08/03(水) 10:32:15
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=837
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005年8月3日23:50まで
[5] その他の制限:
どなたかよろしくお願いします。
722デフォルトの名無しさん:2005/08/03(水) 10:38:13
>>721
test1_1.cには
#include <stdio.h>
#include "my_header.h"
とmain関数全体をそのまま書き写す。

my_func1.cには
#include "my_header.h"
#define NUM 100
とfunc1関数全体をそのまま書き写す。

my_header.hはint func1(int value);の一行。
723721:2005/08/03(水) 10:59:52
>>722
お答えいただき有難うございます。
ソースはこれで合っているのでしょうか?↓
#include <stdio.h>
#include "my_header.h"

int main(int argc,char **argv)
{
int input,output;

scanf("%d",&input);
output = func1(input);
printf("%d\n",output);
return 0;
}

#include "my_header.h"
#define NUM 100

int func1(int value)
{
int i,ans=0;
for(i=0;i<NUM;i++){
ans+=value;
}
return ans;
}

my_header.h
int func1(int value);
724OS ◆hCRkzTKxdQ :2005/08/03(水) 11:17:15
>>718は俺じゃないです。
わからないの>>717で教えていただきたいです。
725デフォルトの名無しさん:2005/08/03(水) 11:21:17
>>719
見ず知らずの他人が置いたアーカイブを展開するなんて怖いことできないから却下。
問題文くらい自分で書き直すくらいのことしなさいよ。
726デフォルトの名無しさん:2005/08/03(水) 11:22:49
>>724
ここはプログラミングの宿題を片付けるスレ。
文章問題はスレ違い。
つーか、教科書ないのか?
727デフォルトの名無しさん:2005/08/03(水) 11:41:34
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
STLであるSETを編集し(必ずファイルのバックアップを取るように注意してください)、
データの比較回数、データの移動回数(実際のデータ挿入、回転は別のものとし
てとカウントすること)を計測するコードを追加しなさい。
・ポイント
データの比較及び移動がどの部分で行われているかを考慮してください。
どのようにカウントしたデータを受け渡すべきか。grobalとして定義するべきか。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ(バージョン):Visual Studio C++.NET
 [3.3] 言語:C++
[4] 期限:8月6日
詳細を訪ねたところ、
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\set
 を(バックアップ後に)編集し、比較回数、移動回数をmainに渡すということで
した。どうかよろしくお願いします。
728デフォルトの名無しさん:2005/08/03(水) 11:51:20
>>727
アホかい。そこまでやることが指示されてて何もできないなら諦めた方がいいぞ。
つーか、他人の宿題のために自分の環境に手を入れるなんて酔狂なことしたかないぞ。
729デフォルトの名無しさん:2005/08/03(水) 12:02:08
>>719
ヒント:
(1)自明なので割愛
(2)Aでは探索に掛かる計算量が面積比例、Bでは毎回のスキャンの計算量が面積比例でスキャンの最大数は面積比例。
(3)Aはスタックが必要。Bは画像内に情報を持たせているので不要。
但し、画像内に情報を持たせることができないのなら、面積に比例したフラグの分メモリが必要になる。
どっちにしても、よりよいアルゴリズムを採用すべきw
#つーか、素晴らしく汚いコードだな。
730デフォルトの名無しさん:2005/08/03(水) 12:47:08
[1] 授業単元:Proa
[2] 問題文(含コード&リンク):
ナイト巡回問題の解を求めるプログラムをより速くせよ。下がナイト巡回問題です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=838
[3] 環境
 [3.1] OS:VineLinux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年8月4日24:00まで
すいませんがどなたかお願いいたします。
731デフォルトの名無しさん:2005/08/03(水) 12:53:56
最大公約数と、最小公倍数を求めるプログラムです
#include<stdio.h>

int gcd( int m, int n );
int lcm( int m, int n );

int main(void)
{

    int m,n,x,y;

    while(1){
        printf("(実数)\n");
        scanf("%d%d",&m,&n);
        if(m>2000000000||n>2000000000)
            printf("ERROR\n");
        else
            break;
    }

    x=gcd(m,n);
    y=lcm(m,n);
    printf("\n%d\n",x);
    printf("%d\n",y);

    return 0;
}
732731:2005/08/03(水) 12:54:33
/*********************************************************
// 最大公約数(Greatest Common Divisor)を返す。
//*********************************************************
int gcd( int m, int n )
{
    while( m != n )
    {
        if ( m > n ) m = m - n;
        else n = n - m;
    }
    return m;
}

//*********************************************************
// 最小公倍数(Least Common Multiple)を返す。
//*********************************************************
int lcm( int m, int n )
{
    return ((m / gcd(m, n)) * n);
}

このプログラムを最小公倍数が20億を超えないように、また、mainプログラムで入力したときにオーバーフローするかどうか判定するにはどうすればよろしいでしょうか??
よろしくお願いいたしますm(__)m

733デフォルトの名無しさん:2005/08/03(水) 13:02:03
>>731
あちこちに張るなボケ
734デフォルトの名無しさん:2005/08/03(水) 13:03:17
>>733
すみませんm(__)m
でも、結構切実です。m(__)m
735デフォルトの名無しさん:2005/08/03(水) 13:07:08
>>734
>でも、結構切実です。m(__)m
それがどうした?
736デフォルトの名無しさん:2005/08/03(水) 14:14:22
>>734
アク禁要請出そうか?
737デフォルトの名無しさん:2005/08/03(水) 15:07:24
>>734
藻前が切実であろうと漏れらには何の問題もない。うせろ。
738デフォルトの名無しさん:2005/08/03(水) 15:16:24
>>730
参考に ttp://www.kyoto-su.ac.jp/~yamada/ap/backtrack.html を読んでいるのだが、
枝刈りの方法が分らず、手がだせない。
小手先の高速化なら、一次元配列にしてしまうだとか、ifの順番を変えるとか。
ちょっと考えたのは、マスにナイトの動きで隣接するマスの数…
ああ、なに言ってるかわかんねぇ。
739デフォルトの名無しさん:2005/08/03(水) 15:26:16
kyoto-uと見せかけてkyoto-suか・・・なんでSANGYOなんだろorz
740デフォルトの名無しさん:2005/08/03(水) 15:40:12
To: yamada
Subject: 課題について

拝啓
おたくの学生が宿題を丸投げしています。
urlは……。
ところで、
上達するために、でコーディングスタイルを述べてらっしゃいますが、
#define MAX_INDEX;
ちゅーのはなんですか?
きちんとした言葉を使うを参考にされてください。

>>739 Kyoto Sangyo University だそーで。
741デフォルトの名無しさん:2005/08/03(水) 16:12:59
>>730
左上からスタートして、左上に帰ってくる順回路を求めているということに注目。

左上を 0,0 ( コード上では 2,2 ) とした場合、2,1 と 1,2 の両方が埋まってしまうと
左上に帰ってこれなくなるので、n < M * N-1 でかつboard[3][4]とboard[4][3]の
両方が非ゼロの場合は枝刈りして良し。

具体的には、例えばfindSolutionでcycle[0][0]=2;cycle[0][1]=2; board[2][2]=-1;
backtrace(board,cycle,1, 4, 3) とまず東南東へ飛んだところから開始して、
backtrack の頭で if (n<M*N-1 && board[3][4]<0) return; と帰還1歩前より前で
北北東の帰還路がふさがっている枝を刈る。
742デフォルトの名無しさん:2005/08/03(水) 16:29:53
>>730
前略
#define ABS(x) ((x)>0?x:-(x))

int isMovable(const int * start, const int * goal) {
  return (ABS(goal[0] - start[0]) == 2 && ABS(goal[1] - start[1]) == 1) ||
         (ABS(goal[1] - start[1]) == 2 && ABS(goal[0] - start[0]) == 1);
}

int printCycle(int cycle[M*N][2])
{
  int i, j;
  char board[M][N];

  for (j = 0; !isMovable(cycle[j], cycle[M*N-1]) || !isMovable(cycle[j+1], cycle[0]); j++) if (j == M*N - 1) return 0;

  for (i = 0; i <= j; i++) board[cycle[i][0]-2][cycle[i][1]-2] = i;
  for (i = M*N - 1; i > j; i--) board[cycle[i][0]-2][cycle[i][1]-2] = j + (M*N - i);
  for (i = 0; i < M; i++) {
    for (j = 0; j < N; j++) printf(" %2d", board[i][j]);
    puts("");
  }
  return 1;
}

void backtrack(int board[M+4][N+4], int cycle[M*N][2], int n, int i, int j)
{
  if (n == M * N) {
    if (printCycle(cycle))
      exit(0);
後略
743デフォルトの名無しさん:2005/08/03(水) 16:56:59
>きちんとした言葉を使うを参考にされてください。

参考になさってください。
744デフォルトの名無しさん:2005/08/03(水) 17:10:58
きっと受動態なんだろ。
参考にされるような、言葉を使えるようになってくださいという意味だ。
745デフォルトの名無しさん:2005/08/03(水) 22:22:22
[1] 授業単元:
[2] 問題文(含コード&リンク):
  コンソール上でキャラクタ(半角1文字)を動かす関数を作成する。
   ・縦だけに動く関数
   ・横だけに動く関数
   ・ランダムに動く関数
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン): Microsoft Visual C++ .NET
 [3.3] 言語:C++
[4] 期限:2005年8月3日(できるだけ早くお願いします)
[5] その他の制限: 特になし
746デフォルトの名無しさん:2005/08/03(水) 22:56:40
>>745
ということは、コンソールの制御を自前でやることになるわけで、激しく
環境依存になるし、main()の手前のスタートアップで勝手にコンソールの
初期化とかされたら困るからWinMain形式のソースになるわけで、すると
必然的にその「動かす関数」とやらだけでは済まなくなるわけだが、
どうすればいいんだ?
747デフォルトの名無しさん:2005/08/03(水) 22:59:27
わかんなけりゃ黙ってればいいのに
748745:2005/08/03(水) 23:09:54
>>746
main()の手前のスタートアップで勝手にコンソールの初期化はありません。
コンソール制御は
ヘッダーファイル
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/840.txt
ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/839.txt
です。



749デフォルトの名無しさん:2005/08/03(水) 23:28:21
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
750デフォルトの名無しさん:2005/08/03(水) 23:53:37
とりあえずWin32API 直に弄ってた漏れはやる気なくした
751デフォルトの名無しさん:2005/08/03(水) 23:53:44
ぼるじょあって誰ですか?
752ぼるじょあ ◆yBEncckFOU :2005/08/04(木) 00:31:58
(・3・)エェー ぼるじょあですYO!
753フィボナッチ:2005/08/04(木) 01:01:40
200までのフィボナッチ数列を列挙するCのプログラムが書きたいのですがわかりません。
48くらいを超えるとint型では無理になりますよね?そこで配列と関数を使いたいのです。
c[0]には1の位、c[1]には2の位・・・といった感じで。
f = f1 + f2をフィボナッチとすると、
関数は、加算をする関数。
f2 = f1をする関数。
f1 = fをする関数。
出力する関数。

といった感じで作りたいのです。
あと、#includeは<stdio.h>のみで。
誰かわかる方はいらっしゃいませんか??
754デフォルトの名無しさん:2005/08/04(木) 01:07:31
>>753
フィボナッチに特化して考えずに、多桁演算ライブラリを作るような積もりで作るといいと思う。
で、1の位2の位って2進一桁を格納するんかい(苦笑)。
素直に10進1桁(or8桁)ずつ格納した方がよさそうな希ガス。
755フィボナッチ:2005/08/04(木) 01:14:18
早いレスありがとうございます!なんせ学校のゼミの課題なのでこの「配列を使う」
とか「関数」と使うって条件は必須なんですよ(涙)
ただ48までのフィボナッチだったらなんてことなく書けるのですが配列を使うとなると
ぜんぜんわからないんです・・
756フィボナッチ:2005/08/04(木) 01:16:23
あ、ちなみに一桁ずづ格納しろってのも変更できないんです・・
757デフォルトの名無しさん:2005/08/04(木) 02:04:17
ヒント:足し算
void ladd(int a[], int b[], int c[]) { /* a[] <- b[] + c[] */
int i, carry = 0;
for( i = 0 ; i < 100 ; i++ ) { /* 任意桁は面倒なので100桁以下と仮定する。 */
a[i]=b[i]+c[i]+carry;
if(a[i]>9){ carry = 1; a[i] -= 10; } else carry = 0;
}
}
758デフォルトの名無しさん:2005/08/04(木) 02:08:57
280571172992510140037611932413038677189525
眠い。
759デフォルトの名無しさん:2005/08/04(木) 02:15:47
漏れも、書いてみる。
#define RADIX 10
#define COLUMN 50

int add(int a[], int b[], int c[])
{
  int i, tmp, carry = 0;
  for (i = 0; i < COLUMN; i++) {
    tmp = b[i] + c[i] + carry;
    a[i] = tmp % RADIX;
$nbsp; $nbsp; carry = tmp / RADIX;
  }
  return carry;
}
760フィボナッチ:2005/08/04(木) 02:30:14
まだまだぜんぜん完成してませんけどヒントを参考にこんな感じで書いてみました。
間違えだらけなきがする・・・未熟でほんとうにごめんなさい。改行が多すぎるってエラー
が出ちゃったんで分割して書き込んでみます。

#include <stdio.h>

int a[0] = 0;
int b[0] = 0;

void outputC(void)
{
for(i = 0;i < 50;i++)
printf("%d", a[i]);
}

void copyBtoA(void)
{
c[i] = b[i];
}

void copyCtoB(void)
{
b[i] = a[i];
}
761フィボナッチ:2005/08/04(木) 02:31:10
void copyBtoA(void)
{
c[i] = b[i];
}

void copyCtoB(void)
{
b[i] = a[i];
}

void addBCintoA(int a[], int b[], int c[])
{
int i, carry = 0;
for( i = 0 ; i < 50 ; i++ ) {
a[i] = b[i] + c[i] + carry;
if(a[i] > 9)
carry = 1; a[i] -= 10;
else
carry = 0;
}
}
762フィボナッチ:2005/08/04(木) 02:32:11
carry = 1; a[i] -= 10;
else
carry = 0;
}
}

void main(void)
{

printf("%d %d",a[0],b[0]);

for(i = 3;i < 199;i++) {
addABintoC();
copyBtoA();
copyCtoB();
outputC();
}
763フィボナッチ:2005/08/04(木) 02:34:21


ながくなっちゃいましたがこれで終わりです。
764デフォルトの名無しさん:2005/08/04(木) 02:46:45
まー。コンパイルくらいはしてるんだろうし、
思いどおりに動かないと言ってるわけでもないので、
動作はするんだろう。
いいじゃん、動けば。課題はそんな程度で出してOKよん。
765フィボナッチ:2005/08/04(木) 03:28:40
なぜかコンパイルが通りませんがアドバイスありがとうございました。
非常に助かりました!なんか2chって初めて使ったんですけど
書き込もうとするとなぜかエラーになることが多いですね。
766デフォルトの名無しさん:2005/08/04(木) 04:42:50
[1] 授業単元:工学基礎演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/841.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):すみませんわかりません。
 [3.3] 言語:C
[4] 期限:8月5日16:00まで
[5] その他の制限
今年4月から学習しているヒヨッコ大学一年生です.
単元的にはfor文かwhile文使うみたいです。
二日間ほぼ徹夜状態で考えてもわからず困り果ててますorz
どうかよろしくお願いします。
767デフォルトの名無しさん:2005/08/04(木) 05:06:55
もしそれが本当なら今後のみの振り方考えた方がいいんじゃない?
768766:2005/08/04(木) 05:33:25
>>767
3年になったら転学科しようかと思ってたりしてます。
そのためにも単位は落としてはいけないわけでして。
(もともと今の学科は第三志望でした。)
769デフォルトの名無しさん:2005/08/04(木) 05:53:22
なんだかなぁ。身の上話のほーがメインな気がする。
理系に向いてないかもしれん。とは思うな。
770デフォルトの名無しさん:2005/08/04(木) 05:57:42
( ´ー`)y―┛~~夏だねぇ・・・・・
771デフォルトの名無しさん:2005/08/04(木) 06:17:43
>>769
少なくとも短気でバカなおいらにプログラミングは荷が重すぎます。
同じ悩むなら電子工学系の問題で悩む方がよっぽど幸せです。
772デフォルトの名無しさん:2005/08/04(木) 07:58:23
>766程度で悩むようじゃ、何専攻したってダメだろ。
つーか、その程度の問題文で一々アップローダにアクセスさせる神経が気に入らん。
773デフォルトの名無しさん:2005/08/04(木) 09:56:05
>>772
すみません、ちょっと図形が入っていたので
ウプローダーつかったほうがいいかなあと思いまして…。
演習のページに載ってある内容で試しても
自分ではどうにもうまくいかないんですよ。
ググッてみても今の自分にはわからない事が使われていたりして
チンプンカンプンだったりしてどうにも…。
774デフォルトの名無しさん:2005/08/04(木) 10:29:08
ここの住人は質問者弄りが好きですね。
親心ですか?

>>766
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/842.c
775デフォルトの名無しさん:2005/08/04(木) 10:58:40
■■■■■■■■■■■■■■■■
■                     ■  違う板にコピペすると、四角の枠の中に
■                     ■  メッセージとURLが現れる不思議な絵。
■                     ■
■                     ■  (その仕組みがリンク先に書いてある)
■                     ■
■                     ■  この原理を応用すると、まったく新しい
■                     ■  コピペが作れる予感。
■■■■■■■■■■■■■■■■
776デフォルトの名無しさん:2005/08/04(木) 11:11:30
珍しい宿題ですね。
777デフォルトの名無しさん:2005/08/04(木) 12:20:54
>>766
>774の置き換え
#つまらぬものを作ってしまった..._|⌒iO
778デフォルトの名無しさん:2005/08/04(木) 12:46:35
1] 授業単元: プログラム
[2] 問題文(含コード&リンク):
与えられた有向グラフGに対し,強連結成分を求めるプログラムを作りなさい(言語は何でも良い)
ただし,Gの入力は以下の形式に記述されたテキストファイルによるものとする:

Gの頂点数
Gの隣接行列

たとえば、次は頂点数が4のグラフの例である.


 0  1 -1  0
-1  0  1 -1
 1 -1  0 -1
 0  1  1  0

また,出力は各強連結成分について,含まれる頂点を1行に書き出すこと.
たとえば,上の例のグラフの場合,出力は以下のようになる:

component 1: 4
component 2: 1 2 3
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] Borland
 [3.3] どちらでも可
[4] 期限:8月10日まで

おねがいします
779デフォルトの名無しさん:2005/08/04(木) 12:47:58
>>778
マルチか。氏ねよ。
780デフォルトの名無しさん:2005/08/04(木) 12:48:08
>>778
向こうで謝っとけ
781デフォルトの名無しさん:2005/08/04(木) 12:53:57
すみません・・・
782デフォルトの名無しさん:2005/08/04(木) 13:47:38
1] C初級
[2] RPGにおけるアイテムの売買のフローチャート
[3] 環境
 [3.1] OS:Windows/
 [3.2] VisualStudio(2003):
 [3.3] 言語:C
[4] 期限:8月4日  15:30迄 無理なら今日中
[5] その他の制限:ポインタまで


てかフローチャートっておkなのかな?
ちょっとあいまいですけど基本的な部分だけでいいのでおねがいします。
783デフォルトの名無しさん:2005/08/04(木) 13:49:46
おkじゃないです。
784デフォルトの名無しさん:2005/08/04(木) 13:51:14
VisualStudio と C で、フローチャートかけって言われてもなw
785デフォルトの名無しさん:2005/08/04(木) 13:52:46
そこをなんとかかんとか(;´Д`)人"

と言いたいけどスレ汚しスマソ ノシ
786782:2005/08/04(木) 13:54:19
>>785
そうなんだけどさw
↑みたいにろだ使ってみたいな感じに…期待してた
787786:2005/08/04(木) 13:57:34
だー>>784だた

一応書いてみたんだよ…




788デフォルトの名無しさん:2005/08/04(木) 16:55:10
>>778
digraph { 1->1; }
とか、
digraph { 1->2; 2->1; }
が表現できんのですが。

ちょっと気になったので、調べた。
ttp://kanaya.aist-nara.ac.jp/Zope/member/nishio/japanese/memo/ComparativeProgramming/lec05
789OS ◆hCRkzTKxdQ :2005/08/04(木) 17:45:59
たびたびすいません。
(4)flagやturnを使い、排他制御を行い、2つのプロセスが共有変数を操作するプログラムを作成しせよ。
ひとつだけ問題がわかりません。

[1] 授業単元:オペレーティングシステム
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ(バージョン): ちょっとわかりません
 [3.3] 言語:C言語
[4] 期限:今年の8月10日までです。
[5] 問題;flagやturnを使い、排他制御を行い、2つのプロセスが共有変数を操作するプログラムを作成しせよ。

です。わかる方いたら是非お願いします。
790デフォルトの名無しさん:2005/08/04(木) 19:17:36
んー。検索のしかたを学ぶといいかも。
ttp://www.ncad.co.jp/~komata/c-kouza13.htm
791766:2005/08/04(木) 21:24:40
>>774
さっそくの解答本当にありがとうございました。
習ってないものが使われてるみたいで自分にとっては
難しいですがなんとか理解したいと思いますm(__)m
792デフォルトの名無しさん:2005/08/04(木) 21:53:25
それはともかく、ぼるじょあが宿題をかたづけてくれた試しはあるのか?
書き逃げのチキン鮮人野郎?
CもC++も知らないくせにスレだけ立てるってやつか?
793デフォルトの名無しさん:2005/08/04(木) 22:16:21
>>792
何度か回答側にまわった事はあるが、バカまるだし頓珍漢ばかりなシロモノだった
794デフォルトの名無しさん:2005/08/04(木) 22:35:24
ぼるじょあがC/C++の宿題で片づけられたわけだなw
795デフォルトの名無しさん:2005/08/04(木) 22:36:05
迷惑な奴だよな・・・
796ぼるじょあ ◆yBEncckFOU :2005/08/04(木) 22:45:56
ぼるじょあ◆yEbBEcuFOUが質問を聞いてあげるYO!
ぼるじょあ◆yBEncckFOU は共同体で連続体で群生体だから
無限の知識と無尽蔵の体力を持ってるんだYO!
(・3・)アルェー こっちが嫌になるほど質問しろYO!
雑談したり答えたりする人は、みんなぼるじょあ◆yBEncckFOUだYO!
ぼるじょあ◆yBEncckFOUはコテハンじゃないYO!
名前欄に「ぼるじょあ#ぶるじょあ」で、キミも今日からぼるじょあ◆yBEncckFOUだYO!
(・3・)エェー 最近ぼるじょあ不足だからドンドン書き込んでNE!
797デフォルトの名無しさん:2005/08/04(木) 22:49:20
>>796
ややこしくなるからやめろ
798ぼるじょあ ◆yBEncckFOU :2005/08/04(木) 22:51:43
>>797
禿同だYO!
799デフォルトの名無しさん:2005/08/04(木) 22:52:41
>>796
お前の低脳を他人のせいにするな。
800ぼるじょあ ◆yBEncckFOU :2005/08/04(木) 22:54:14
>>799
禿同だNE!
801デフォルトの名無しさん:2005/08/05(金) 09:19:28
>>800
時代は内藤ホライゾンだよ

内藤ホライゾンがC/C++の宿題を片付けます 49
http://pc8.2ch.net/test/read.cgi/tech/1122705615/
802デフォルトの名無しさん:2005/08/05(金) 10:51:37
そのうちジョルジュ長岡と荒巻スカルチノフも出てきそうだ
803デフォルトの名無しさん:2005/08/05(金) 11:17:57
こんにちは 日本語の正規表現をつかいたいんですけど
どうすればいいですか?
804ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 11:38:57
>>803
(・3・)エェーがんばれYO!
805ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 12:40:29
>>804
(・3・)エェー まじめに答えてやれYO!
806ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 12:46:21
>>805
(・3・)エェー まじめに答えてやれYO!
807デフォルトの名無しさん:2005/08/05(金) 12:57:54
何人いるんだ。ぼるじょあ。
808ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 13:04:18
(・3・)エェー 共同体で連続体で群生体の特徴だNE!
809ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 13:46:27
(・3・)エェー これで僕もぼるじょあかYO!
810ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 15:38:07
>>803
perlを使いなさい。これで完璧。
811ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 19:49:10
>>803
(・3・)エェーC++だったらboost::regexを使うといいYO!でも、日本語を
扱うならワイド文字列にしなくちゃダメだNE!
812デフォルトの名無しさん:2005/08/05(金) 23:03:26
[1] 授業単元:情報処理概論(最終レポ)
[2] 問題文(含コード&リンク):
(1)指定した2点間に線分を描く関数を作成せよ。引数は始点のX座標とY座標、終点のX座標とY座標、色番号の5つとする。
(2)次に、その関数を使って「H.K」「E.T」「M.S」「M.W」という文字を線で描画せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):不明
 [3.3] 言語:どちらでも可(Cで出来ればなるべくそちらでお願いします)
[4] 期限:2005年8月10日15:00まで

2つあるのですが、よろしくお願いいたします。
813デフォルトの名無しさん:2005/08/05(金) 23:17:43
>>812
GDI使っていいならLineToなり使って・・・
使っちゃいけないなら点は何で打つの?
814ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 23:19:21
>>812
(・3・)エェー Cには線を引く機能はないし標準ライブラリにもそんな関数存在しないYO!
だから画像描画系の宿題はライブラリの指定があるとうれしいYO!
もう片方の言語がわからないけどそっちの方が最適かもしれないNE!
815デフォルトの名無しさん:2005/08/05(金) 23:25:19
ほんとにこれでぼるじょあになれるべか?
816デフォルトの名無しさん:2005/08/05(金) 23:46:24
>>814
テンプレ読め。そうでなくてもこのスレなんだからC++って想像くらいできるだろ。
817ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 23:48:11
>>815
名前欄に「ぼるじょあ#ぶるじょあ」で、キミも今日からぼるじょあ◆yBEncckFOUだYO!
818デフォルトの名無しさん:2005/08/05(金) 23:57:16
>>816
(・3・)エェー C++にも線を引く機能はないYO!
819ぼるじょあ ◆yBEncckFOU :2005/08/05(金) 23:58:34
(・3・)エェー なまえをいれわすれたYO!
820812:2005/08/06(土) 00:15:40
「C言語を使ってプログラムを作成する」というのが課題だから
その条件さえ満たしていれば何使ってもいいと思うんですけど
821デフォルトの名無しさん:2005/08/06(土) 00:18:49
822ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 00:19:06
>>820
(・3・)エェー 口答えするなYO!
823デフォルトの名無しさん:2005/08/06(土) 00:41:26
>>822
>>813へのレスジャマイカ?
824ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 00:52:09
>>823
(・3・)エェー じゃまするなYO!
825ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 01:06:26
(・3・)エェー 最近ぼるじょあが暴れすぎですYO!
826デフォルトの名無しさん:2005/08/06(土) 01:07:15
ぼるじょあ詩ね
827ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 01:15:44
(・3・)アルェ~ 暴れてないYO!
828ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 01:35:05
>>812
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/845.txt
あとはdraw_all()の中を勝手に変えて文字でも何でも書いてNE!
829ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 02:00:07
(・3・)アルェ~ 質問なんか書くなYO!
830デフォルトの名無しさん:2005/08/06(土) 03:21:59
だからぼるじょあはやめろとあれほど
831デフォルトの名無しさん:2005/08/06(土) 11:12:15
ヤバイ。ぼるじょあヤバイ。まじでヤバイよ、マジヤバイ。
ぼるじょあヤバイ。
まず質問を聞いてあげるYO♪。もう質問を聞いてあげるYO♪なんてもんじゃない。超質問を聞いてあげるYO♪。
質問を聞いてあげるYO♪とかっても
「いつならいいの?」
とか、もう、そういうレベルじゃない。
何しろ24時間、いつでも質問オッケー。スゲェ!なんか時間に制限とか無いの。無限の知識とか無尽蔵の体力とかを超越してる。
名前欄に「ぼるじょあ#ぶるじょあ」って書けばキミも今日からぼるじょあ◆ySd1dMH5Gkだしなんでも質問を聞いてあげるYO♪。
しかもいつだって全力投球らしい。ヤバイよ、いつだって全力投球だよ。
だって普通はコテハンとか共有しないじゃん。だって自分のコテハンが人に使われたら困るじゃん。騙りとか煽りとか困るっしょ。
自分のコテハン使われて、マジレスしてたのに、他人に「ウンコ」とか書かれたら泣くっしょ。
だからトリップとか公開しない。話のわかるヤツだ。
けどぼるじょあはヤバイ。そんなの気にしない。公開しまくり。>>1とか見れば誰でもぼるじょあ。ヤバすぎ。
24時間、いつでも質問オッケーって言ったけど、もしかしたら寝てるときもあるかもしんない。でも寝てるときもあるって事にすると
「じゃあ、ぼるじょあの共同体で連続体で群生体ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超自作自演。IDが出ない。専門用語で言うと(・∀・)ジサクジエンデシタ。ヤバイ。自作自演しすぎ。他人がレスする暇もなく自演。怖い。
それに超雑談。超マターリ。そのくせ超進行速い。次スレとか1日で立ってくる。偉大なる軌跡て。革命家でも言わねぇよ、最近。
なんつってもぼるじょあはAAが凄い。コピペとか平気だし。
うちらなんてAAとかたかだかモナー板で出てきただけで上手く扱えないから職人さんを待ったり、
作成依頼スレに置いてみたり、AAエディター使ったりするのに、
ぼるじょあは全然平気。モナーの顔を・3・のまま扱ってる。凄い。ヤバイ。
とにかく貴様ら、ぼるじょあのヤバさをもっと知るべきだと思います。
そんなヤバイぼるじょあスレに出て来た「油デブ」とか「よゐこ」超偉い。もっとがんばれ。超がんばれ。
832七七四:2005/08/06(土) 12:05:57
[1]情報処理技術者実習Ⅰ [2]ある文字列tの中に別の文字列sが含まれているかを調べて、t中のsの出現位置を整数型配列nに格納し、sの出現回数を関数strchknum(t,s,n)を作成せよ。」
[3-1]os:windowsXP [3-2]visualC? [3-3]C言語 [4]期限:できるだけはやくでお願いします。
833デフォルトの名無しさん:2005/08/06(土) 12:07:23
>>832
http://pc8.2ch.net/test/read.cgi/tech/1123268208/
オマエか?このクソスレ立てたのは
削除依頼は出したのか?
834デフォルトの名無しさん:2005/08/06(土) 12:23:42
調子に乗るな。おたく野郎が。
835デフォルトの名無しさん:2005/08/06(土) 12:34:18
はぁ?
在日は本国に帰ったら?
836デフォルトの名無しさん:2005/08/06(土) 14:14:59
>>832
#include <string.h>
#include <stdio.h>
int strchknum(const char * t, const char * s, int * n) {
    int i;
    const char * const p = t;
    for (i = 0; (t = strstr(t, s)) != NULL; ++t, ++i)
        n[i] = t - p;
    return i;
}
int main(void) {
    const char * const t = "abababacbabbab";
    const char * const s = "ab";
    int n[256], n2, i;
    n2 = strchknum(t, s, n);
    printf("出現回数: %d\n出現位置:", n2);
    for (i = 0; i < n2; ++i) printf(" %d", n[i]);
    putchar('\n');
    return 0;
}
837812:2005/08/06(土) 15:46:37
>>828さんありがとうございます、でもこんなエラーが出てコンパイルされません
http://web.drive.ne.jp/1/html/VIP00946.html
これをなおすにはどうしたらいいのでしょうか?
838ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 16:06:55
>>837
(・3・)エェー それくらいWinMainでぐぐれYO!
839デフォルトの名無しさん:2005/08/06(土) 16:39:45
>>837
名前のない引き数がエラーになるのはC言語の制約。
>828はC++を前提としたのだろう。
したがって、ファイル名を*.cではなく*.cppとすればエラーではなくなし、最後の警告も消える。
どうしてもCとしてコンパイルしたいなら、適当な名前を補い、最後の警告は無視しろ。
840デフォルトの名無しさん:2005/08/06(土) 16:40:25
>>838
頓珍漢なレスをするな。
841ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 16:43:10
>>840
(・3・)アルェ~ チミ頓珍漢な事言ってるNE!
842デフォルトの名無しさん:2005/08/06(土) 16:50:24
>>841
それでは「WinMainでぐぐ」って>>837のエラーをなおすためにどう役立てたのか教えてください。
843デフォルトの名無しさん:2005/08/06(土) 16:54:02
>>842
ポカーン
あんたぼるじょあより低レベル?
844デフォルトの名無しさん:2005/08/06(土) 16:56:22
(・3・)エェー まさに頓珍漢だNE!
845ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 16:58:45
>>844
(・3・)アルェ~ チミは誰だYO!
846デフォルトの名無しさん:2005/08/06(土) 17:03:34
もしかして、>843や>844は引き数の名前を調べないといけないなんて戯けたことを言いたいのだろうか。
別に、
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE foo, LPSTR bar, int baz) {
でいいのだけれど。
847デフォルトの名無しさん:2005/08/06(土) 17:06:25
(・3・)エェー まさに頓珍漢だNE!
848デフォルトの名無しさん:2005/08/06(土) 17:28:44
焦り捲くった挙句、ついにトリップ付け忘れるぼるじょあ
849デフォルトの名無しさん:2005/08/06(土) 17:35:41
予想
↓今度はError: 外部シンボル '_main' が未解決というエラーが出てコンパイルされません
↓これをなおすにはどうしたらいいのでしょうか?
850ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 17:37:53

│ ≡  ( ( ( (・3・)
│≡ ~( ( ( ( ~)
│ ≡  ノノノノ ノ  サッ
851ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 17:50:01
(・3・)アルェ~ コンソールとWindowsのプログラムの区別もつかないのかYO!
852デフォルトの名無しさん:2005/08/06(土) 21:02:01
だからぼるじょあはやめろとあれほど
853>>828のぼるじょあ ◆yBEncckFOU :2005/08/06(土) 22:21:49
854デフォルトの名無しさん:2005/08/06(土) 22:26:48
だからぼるじょあはやめろとあれほど
855ぼるじょあ ◆yBEncckFOU :2005/08/06(土) 22:33:34
>>854
(・3・)エェー 真面目に答えてるんだから良いじゃねぇかYO!
856デフォルトの名無しさん:2005/08/06(土) 22:48:03
あ?馬鹿ネタ解答専用のコテで真面目に答えるなよ
・・・とおもったら内容見たら馬鹿解答だから問題は無いようだ
本人真面目に答えてるつもりならネタ通り越して寒すぎる所だがな
857デフォルトの名無しさん:2005/08/06(土) 22:55:43
>>855
おまえ、流れ読めてないだろ。
858デフォルトの名無しさん:2005/08/06(土) 23:12:02
>>796
1行目と2行目以降のトリップが違う…
859606です:2005/08/07(日) 00:44:56
>>639
↑のロジックを変更し、前回のC:\野球の内容をクリアしないようにするにはどこをどう変更したらよいでしょうか?
860606です:2005/08/07(日) 00:47:17
連レス申し訳ありません。
>>606
↑に問題があります。
861デフォルトの名無しさん:2005/08/07(日) 00:48:49
>>859
追記したいってこと? それなら"w"の代わりに"a"を指定。
862デフォルトの名無しさん:2005/08/07(日) 00:52:34
>>859
main()でのwhileの前にファイルをリストに読み込む処理を追加すればいいと思う。

>>861
ファイルの内容を並び替えたりしなくちゃいけないから、多分ファイルに追記というよりも
リストそのものに追加ということだとオモタ。
863デフォルトの名無しさん:2005/08/07(日) 01:32:27
[1] 授業単元:プログラミング概論
[2] 問題文(含コード&リンク):
駅の電光掲示板をC言語によって表現せよ。ただし、2行目は30秒後に文字が流れるように設定すること。
こんな感じ↓
tp://curiosat.jpn.org/atos1/led/images/led_led3_nos1l.jpg
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):Borland
 [3.3] 言語:C言語
[4] 期限:2005年8月8日17:00まで
864デフォルトの名無しさん:2005/08/07(日) 01:40:20
>>863
だーかーらー
描画ライブラリくらい指定しろっての
865デフォルトの名無しさん:2005/08/07(日) 01:42:03
文字が流れればいいだけですが、何か?
866デフォルトの名無しさん:2005/08/07(日) 01:43:47
>>865
じゃあお前がさっさと答えろよ
867デフォルトの名無しさん:2005/08/07(日) 01:44:40
は?なにいってんだこいつ
868デフォルトの名無しさん:2005/08/07(日) 01:46:03
標準関数でできるのか、期待しちゃうよ
869デフォルトの名無しさん:2005/08/07(日) 01:50:06
は?標準関数?
870デフォルトの名無しさん:2005/08/07(日) 01:50:35
>>863=>>865=>>867
マダー? チンチン
871863:2005/08/07(日) 02:28:48
さっさと答えろこの脳無しどもめ
872デフォルトの名無しさん:2005/08/07(日) 02:34:44
描画ライブラリっていう言葉の意味すら分からないんじゃねーのw
873デフォルトの名無しさん:2005/08/07(日) 02:48:11
>>863

ほらよ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/848.txt


動き出すまで30秒は長すぎるから5秒にしてある。
この時間を変更したかったら、最初のほうで定義している START_DELAY
の値を変更しろ。単位は秒。
874606、859です:2005/08/07(日) 03:13:45
すみません。修正したロジックをロダ内にUPしていただけませんでしょうか?
875デフォルトの名無しさん:2005/08/07(日) 05:18:26
>>874
ロジックは>>862で修正したが。コードがほしいのかい?
876606、875です:2005/08/07(日) 08:52:55
>>875
はい。コードをいただけますか?>>862を参考に自分なりに書いてみたんですけど、
同一背番号のときに上書きせず追加登録になってしまったり、何やらかんやらで・・・。
877デフォルトの名無しさん:2005/08/07(日) 11:29:39
>>864
OSがWindowsって書いてあるんだからWindowsのAPIを利用するのが一番親切だと思う。
878デフォルトの名無しさん:2005/08/07(日) 15:17:55
>>876
こんなのをwhileの前に突っ込んでもダメ?試してないけど。
/* ファイルを読む */
void ReadFromFile() {
    Person person;
    FILE* stream = fopen(OUTPUT_PATH,"r");
    if (stream) {
        while (fprintf(stream,"%d\t%s\t%s\n",&person.number,
                                             &person.name,
                                             &person.position) == 3)
            SetMember(&person);
        fclose(stream);
    }
}
879デフォルトの名無しさん:2005/08/07(日) 16:32:53
思ったんだが>>863はそのまんま電光掲示板を表現したいんジャマイカ?
880デフォルトの名無しさん:2005/08/07(日) 16:57:34
環境があいまいだと色んな妄想がふくらむな。
とりあえず>>863が帰ってくる前にさりげなく

つ [printf("<marquee (ry]
881ぼるじょあ ◆yBEncckFOU :2005/08/07(日) 18:26:34
(#・3・)エェー Homepage Builder付属の電光掲示板Javaアプレットでも改造すれBa?
882デフォルトの名無しさん:2005/08/07(日) 18:59:45
だからぼるじょあはやめろとあれほど
883デフォルトの名無しさん:2005/08/07(日) 19:12:29
>>882
お前が相手にするからうれしいんだろ
884デフォルトの名無しさん:2005/08/07(日) 19:40:26
ぼるじょあさん、もっと来て来て~
885デフォルトの名無しさん:2005/08/07(日) 20:24:49
[1] 授業単元:プログラミング演習Ⅲ
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/851.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:8/8 20時まで
[5] その他の制限:無し

どうかお願いします。
886606、875です:2005/08/07(日) 21:59:38
>>878
試してみたんですけど駄目でした。
関数の呼び方が悪いのでしょうか?
できれば、関数を突っ込んだすべてのコードをUPしていただけると
ありがたいのですが。。。すみませんお願いします。
887デフォルトの名無しさん:2005/08/07(日) 22:41:10
よくEXEにアイコンみたいなイメージがついてるのがありますが
それはどうすればできますか?ウィンドウクラスの登録とかの時に
Iconの設定を変えればかわるのはわかってるんですがウィンドウを作成
しない場合はどうすればできますか?
現在int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow)
の中ですぐにtxtよみこんでいろいろしててウィンドウを作る理由がありません。
そういった場合はどうすればできますか?
どなたか教えていただければ幸いです
)
888デフォルトの名無しさん:2005/08/07(日) 22:42:37
何もかもスレ違いなんだよボケが
889ぼるじょあ ◆yBEncckFOU :2005/08/07(日) 23:29:49
>>887
(・3・)エェー 釣りなんか書くなYO!
890ぼるじょあ ◆yBEncckFOU :2005/08/07(日) 23:39:10
>>888-889
(・3・)アルェ~ 釣りに餌を与えてるYO!
891デフォルトの名無しさん:2005/08/07(日) 23:39:42
だからぼるじょあはやめろとあれほど
892デフォルトの名無しさん:2005/08/07(日) 23:42:48
あと100レスほどの辛抱だ
893デフォルトの名無しさん:2005/08/07(日) 23:55:56
>>886
もうマンドクセ
894デフォルトの名無しさん:2005/08/07(日) 23:56:40
>>892
100レスほどで内藤ホライゾンな訳だが
895デフォルトの名無しさん:2005/08/08(月) 00:39:09
>>885
画像とか読み込み関数とかって全部自前?
画像形式の指定とかないの?
896>886:2005/08/08(月) 02:15:58
野球.txtがあるなら配列<もしくはリスト>に読む
while("終わり"になるまで)
 配列<もしくはリスト>に背番号、名前の入力操作を行う
配列<もしくはリスト>から野球.txtに"消去"以外のものを書き出す

ってだけだ
897デフォルトの名無しさん:2005/08/08(月) 10:42:00
>>895
> >>885
> 画像とか読み込み関数とかって全部自前?
はいそうです。

> 画像形式の指定とかないの?
画像形式の指定はR,G,Bがそれぞれ1バイトで表現されているデータということでした。
.rgbファイルです。

追記ですが、ロイドアルゴリズムを用いてコードブックを作るとありますが、
最悪の場合、データからランダムに代表ベクトルを選出したコードブックでもいいので誰か
お願いできませんか。ぜひお願いします。
898デフォルトの名無しさん:2005/08/08(月) 14:14:02
>>873
禿ワロスww
『誰が為に鐘はなる』
899863:2005/08/08(月) 14:46:29
なんか偽物がたくさんいるようですが…

>>879さんの言う通りで、できればそのまんま表現していただきたいです

なんとか明日くらいまでには出来ませんでしょうか?
900デフォルトの名無しさん:2005/08/08(月) 14:51:21
>>899
お前の書き込みはどれだ?番号で言ってくれ
901863:2005/08/08(月) 16:22:18
>>900
>>863>>899ですが?
902デフォルトの名無しさん:2005/08/08(月) 16:24:21
>>901
こちらからの質問は無視という事か
よくわかった
903ぼるじょあ ◆yBEncckFOU :2005/08/08(月) 16:29:12
>>899
(・3・)アルェ~ まだいたのかYO!
904デフォルトの名無しさん:2005/08/08(月) 16:29:56
時間が無いという割には質問投げっぱなし。
気分のいいものじゃないな。
905デフォルトの名無しさん:2005/08/08(月) 16:33:30
>>901
時間をかけて作ったコード出してもらっておいて、そいつを無視かよ!!!
906デフォルトの名無しさん:2005/08/08(月) 16:53:54
907デフォルトの名無しさん:2005/08/08(月) 17:05:38
そうは言うがな大佐
性欲をもてあます
908デフォルトの名無しさん:2005/08/08(月) 17:25:40
電光掲示板をそのまんま表現ってどういう意味?
909デフォルトの名無しさん:2005/08/08(月) 19:12:18
いい加減スルー汁
910デフォルトの名無しさん:2005/08/08(月) 19:53:32
だからぼるじょあはやめろとあれほど
911デフォルトの名無しさん:2005/08/09(火) 02:46:04
[1] 授業単元: プログラミング言語C
[2] 問題文(含コード&リンク):
Cプログラムからすべてのコメントを除去するプログラムを書け。
引用符で囲まれた文字列や文字定数を正しく扱うことを忘れないこと。
Cのコメントは入れ子になっていない。
[3] 環境
 [3.1] OS: Windows / Linux
 [3.2] コンパイラ(バージョン): LSI C / gcc
 [3.3] 言語:ANSI C
[4] 期限:2005年08月10日
[5] その他の制限:どこまで習っているか、等々
912デフォルトの名無しさん:2005/08/09(火) 06:34:37
>>911
ケータイで書いてたら意味不明になってしまった。(+_+)

#include<stdio.h>
int unko(){
int c=fgetc(stdin);fputc(c,stdout);return c;}
int main(void){int c;
while(1) {
c=fgetc(stdin);
if(c==EOF)break;
if(c=='"'){
fputc(c,stdin);
while(1) {c=unko();
if(c=='\\') fgetc(stdin);
else if(c=='"') break;}continue;}if(c=='\''){
fputc(c,stdout);
c=unko();
if(c=='\\') unko();unko();
}if(c=='/') {
c=fgetc(stdin);
if(c=='/'){while(c==EOF||c=='\n'||c=='\r')c=fgetc(stdin);
if(c!=EOF)fputc(c,stdout);continue;}if(c=='*'){
while(1){while(c!='*')c=fgetc(stdin);c=fgetc(stdin);
if(c=='/')break;
}}fputc('/',stdout);fputc(c,stdout);
}}
return 0;
}
913デフォルトの名無しさん:2005/08/09(火) 07:24:04
>>911
書いたので一応うpしておこう。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/852.txt
914912:2005/08/09(火) 07:45:35
あーダメだ。間違えまくってる。
>>912 は危ないから実行しないように!
915デフォルトの名無しさん:2005/08/09(火) 09:36:38
>>918
>引用符で囲まれた文字列や文字定数を正しく扱うことを忘れないこと。

がちゃんと処理されていないようですが。
916913:2005/08/09(火) 10:08:21
>>915
あー本当だ。ありがとう。>>911スマソ
917913:2005/08/09(火) 10:16:39
大した手間じゃなかったので書き直した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/853.txt
コードくそ汚いな・・・
918デフォルトの名無しさん:2005/08/09(火) 14:40:43
[1] 授業単元:
[2] f(x)=4・x-x・e^(2x)+2=0の根をニュートン・ラフソン法で求めよ。ただし初期値 x1=1 収束判定定数ε=0.00001 とする。
  
  ガウスの単純消去法、ガウスの消去法、改頂コレスキー法、LU分解法のどれかにより次の連立一次方程式の解を求めろ。
 
    │623│ │6│
    │234│(x) = │9 │
    │347│ │15│

  θ=0°、10°、20°、30°、40°~90°までのsinθの値を与え、線形、ラグランジュ、ニュートン、スプラインのどれかの補間法によりθ=5,15,・・・・・85 °における値を補間して誤差を求めろ。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):borland C/C++ 5.5
 [3.3] 言語:C/C++どちらでも可
[4] 8月15日
[5] その他の制限:あまりない

3問あります。友達もみんなできません。全員であきらめる前に皆様に頼りに来ました。お願いします。
919デフォルトの名無しさん:2005/08/09(火) 14:43:11
2問めは行列がずれてますねすいません。

│623│ │6 │
│234│(x)= │9 │
│347│ │15 │
920デフォルトの名無しさん:2005/08/09(火) 14:44:11
すいません・・・なんどやってもずれます

3行3列X(x)  = 3行1列 

です。
921デフォルトの名無しさん:2005/08/09(火) 15:30:08
>>918
とりあえず1問目
double newton_raphson(double x, double (* f)(double), double (* fprime)(double))
{
  const double e = 0.00001;
  double next = x - f(x) / fprime(x);
  if (std::fabs(next - x) <= e) return next;
  return newton_raphson(next, f, fprime);
}
double f(double x)
{
  return 4 * x - x * std::exp(2 * x) + 2;
}
double fprime(double x)
{
  return 4 - (1 + 2 * x) * std::exp(2 * x);
}
922デフォルトの名無しさん:2005/08/09(火) 15:31:49
おっと、呼び出し(main内?)はこんな感じで

double x = newton_raphson(1, f, fprime);
std::cout << "x = " << x << std::endl << std::endl;
923デフォルトの名無しさん:2005/08/09(火) 15:40:00
>>918
2問目ぐぐった
http://www.geocities.jp/supermisosan/gauss.html
数字だけ変えればいけそう
924デフォルトの名無しさん:2005/08/09(火) 15:59:22
>>918
3問目。ラグランジュ補間法による。
#include <stdio.h>
double lagrange_interpolation(double* data, unsigned int n, double x) {
    int i, j;
    double result = 0., temp;
    for (i = 0; i < n; ++i) {
        temp = 1.0;
        for (j = 0; j < n; ++j)
            temp *= (i == j ? 1 : (x - j) / (i - j));
        result += data[i] * temp;
    }
    return result;
}
int main(void) {
    double data[] = {0., 0.17364817766693033, 0.3420201433256687, 0.5, 0.6427876096865393, 0.766044443118978, 0.8660254037844386, 0.9396926207859083, 0.984807753012208, 1.};
    int i;
    const unsigned int n = sizeof(data) / sizeof(data[0]);
    for (i = 5; i <= 85; i += 10)
        printf("sin%d°≒%f\n", i, lagrange_interpolation(data, n, i / 10.));
}
925デフォルトの名無しさん:2005/08/09(火) 16:43:58
>>921
感謝感激です 本当にありがとうございます 3番はそのままコンパイルが通りました。
1番なのですが、
#include<stdio.h>
#include<math.h>
double main(double x = newton_raphson(1, f, fprime);
std::cout << "x = " << x << std::endl << std::endl; )
{
double newton_raphson(double x, double (* f)(double), double (* fprime)(double)) ;
{
const double e = 0.00001;
double next = x - f(x) / fprime(x);
if (std::fabs(next - x) <= e) return next;
return newton_raphson(next, f, fprime);
}
double f(double x)
{
return 4 * x - x * std::exp(2 * x) + 2;
}
double fprime(double x) ;
{
return 4 - (1 + 2 * x) * std::exp(2 * x);
}
return 0;
}
そのまま通らなかったのでいろいろいじったけどなんかエラーが三つでるのです。もしよければアドバイスおねがいします。
エラー E2293 suutikaiseki1.c 4: ) が必要
エラー E2141 suutikaiseki1.c 5: 宣言の構文エラー
エラー E2040 suutikaiseki1.c 5: 宣言が正しく終了していない
926デフォルトの名無しさん:2005/08/09(火) 17:03:23
すげぇジョークだなぁおい。
main内って、仮引き数リスト内にコード書くなんて思いもつかなかったぜ。
>>925
楽しいネタをありがとよ。
927>>924:2005/08/09(火) 17:09:26
>>925
一応俺が>>921でないことは付け加えておく。
928921:2005/08/09(火) 17:27:38
>>925
#include <iostream>
#include <cmath>
int main()
{
  std::cout << "x = " << newton_raphson(1, f, fprime) << std::endl;
  return 0;
}

っていうか実はCで書けって話だった?
その場合は
#include <stdio.h>
#include <math.h>
int main() { printf("x = %f\n", newton_raphson(1, f, fprime)); return 0; }
あとは std:: を全て削除で。
929デフォルトの名無しさん:2005/08/09(火) 17:48:57
>>928
#include <iostream>
#include <cmath>
int main()
{
std::cout << "x = " << newton_raphson(1, f, fprime) << std::endl;
return 0;
}
double newton_raphson(double x, double (* f)(double), double (* fprime)(double))
{
const double e = 0.00001;
double next = x - f(x) / fprime(x);
if (std::fabs(next - x) <= e) return next;
return newton_raphson(next, f, fprime);
}
double f(double x)
{
return 4 * x - x * std::exp(2 * x) + 2;
}
double fprime(double x)
{
return 4 - (1 + 2 * x) * std::exp(2 * x);
}
致命的エラー F1003 c:\Borland\Bcc55\include\stdcomp.h 5: error 指令: Must use C+
+ for STDCOMP.H

なんどもすいません。致命的なエラーが一つです。後期からはしっかり反省して勉強したいです(;・Д・)
930デフォルトの名無しさん:2005/08/09(火) 17:50:37
CでもC++でもどっちもいいはずです。2年のときにはC言語の授業があって、なんとかそれは単位をとったのですが、
3年の数値解析学からぜんぜんついていってないんですorz。
レポートだけの授業なんでレポートをだせば単位は取れるらしいです。必修ではないけどなんとかしなければ。
931デフォルトの名無しさん:2005/08/09(火) 18:00:28
>>929
まさか、ファイル末尾が".c"だったりしないだろうな。
932デフォルトの名無しさん:2005/08/09(火) 18:10:32
>>931

拡張子をcからcppにしましたこっそり。それでもエラーみっつです。orz

エラー E2268 suutikaiseki1.cpp 5: 未定義の関数 'newton_raphson' を呼び出した(関
数 main() )
エラー E2451 suutikaiseki1.cpp 5: 未定義のシンボル f(関数 main() )
エラー E2451 suutikaiseki1.cpp 5: 未定義のシンボル fprime(関数 main() )
*** 3 errors in Compile ***
933デフォルトの名無しさん:2005/08/09(火) 18:15:34
>>932
関数の順番をfとfprime→newton_raphson→mainの順にしろ。(fとfprimeは順不同)
関数を呼ぶ前までに呼び出す関数が見つかっていなければならないから。
934デフォルトの名無しさん:2005/08/09(火) 18:27:39
>>933
関数の順番を変えるというのが私にはわからないです。馬鹿ですいませんorz
935デフォルトの名無しさん:2005/08/09(火) 18:29:39
>>934
コンパイラの気持ちになればわかる
936918:2005/08/09(火) 18:37:38
学校のパソコン室しまるんで今日は帰ります。自宅だとパソコンあってもネットないんです。
短い間でしたがいろいろアドバイスくれた人に感謝します。

いままでずっと放置だったのに、せっかくやろうとしてるので、締め切りまで頑張ってみたいと思います。
本当に僕みたいなのでも助けてくれようとする人がいて感動しました(;´Д`)

今日はありがとうございました。また明日くるかもしれないです。
937デフォルトの名無しさん
>>929
2行目と3行目の間(includeの直後・mainの直前)に以下の3行を挿入してくれ。

double newton_raphson(double x, double (* f)(double), double (* fprime)(double));
double f(double x);
double fprime(double x);

これは>>933の方法とは別の方法だけど。
あと、エラーの意味もちょっとは考えてみそ(上達したいのなら)。
5行目でエラーでてるわけだけど、それより上の部分(1~4行目)には
newton_raphson とか f とか fprime とか一度も登場してないでしょ。
だからコンパイラ様にとっては5行目の時点では未定義なの。
コンパイラ様にきちんとわかってもらうために上記の方法か>>933の方法のどちらかを使う。