C/C++の宿題を片付け ..
47:デフォルトの名無しさん
07/11/23 13:49:42
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5
[3.3] 言語: C++
[4] 期限: 11/25 24時
[5] その他の制限:
僕には難しいので誰かよろしくお願いします。
48:デフォルトの名無しさん
07/11/23 14:07:50
[1] 授業単元プログラミング2
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C
[4] 期限: 11/27
[5] その他の制限: 特になし
49:デフォルトの名無しさん
07/11/23 14:35:02
>>46
表示順序や二分木表現を書き換えてはいけない、という制限が
無いので木を O(1) 空間でリストに変形すればいい。
void show(node *root) {
node *tail = root;
while (root) {
printf("%d ", root->key);
while (tail->leftchild)
tail = tail->leftchild;
tail->leftchild = root->rightchild;
root = root->leftchild;
}
}
50:デフォルトの名無しさん
07/11/23 14:44:51
>>48
#define USER 50 /* 登録可能ユーザ数 */
#define NAME 100 /* ユーザ名の最大長 */
int main() {
int users; /* 登録されたユーザ数 */
char *user_list[USER]; /* ユーザ名のリスト */
/* ここにプログラムを書く */
char work1[NAME], work2[NAME];
int i;
printf("何名登録しますか?");
scanf("%d", &users);
for (i = 0; i < users; ++i) {
printf("ユーザNo.%d 苗字:");
user_list[i] = (char *)malloc(NAME*sizeof(char));
scanf("%s", work1);
printf("ユーザNo.%d 名前:");
scanf("%s", work2);
sprintf(user_list[i], "%s %s", work1, work2);
}
printf("登録された内容を表示します。\n");
/* ここまで */
for(i = 0; i < users; i++)
printf("ユーザ[%d]:<%s>\n", i, user_list[i]);
}
51:デフォルトの名無しさん
07/11/23 14:46:58
木を壊したままでも良いのか。
何とか復元してからリターンしようとして頭をひねってた。
52:デフォルトの名無しさん
07/11/23 14:48:24
>>47
内容はともかく、日本語が難しくて解読に疲れた。
53:デフォルトの名無しさん
07/11/23 14:50:15
木を変形するのはありなのか?確かに制限には書かれてないが
多分出題者の意図からは外れてるだろうな
54:デフォルトの名無しさん
07/11/23 14:53:46
ポインタの値が常に偶数だという仮定を置ければ復元もできそうだ。
どっちにしても一時的に木を変形する必要はあるけど。
55:デフォルトの名無しさん
07/11/23 14:57:41
削除の変わりに最下位ビットを立てるとかだね。
あと十分大きな値を足しておくとかでも大丈夫。
まあ計算モデルを仮定しなきゃいけないから綺麗じゃないが。
56:デフォルトの名無しさん
07/11/23 15:18:39
>>38
URLリンク(kansai2channeler.hp.infoseek.co.jp)
C++を勉強中の俺がためしに書いてみた
ツッコミ歓迎
57:デフォルトの名無しさん
07/11/23 15:26:59
Providerクラスが抽象クラスになってなくね?
58:デフォルトの名無しさん
07/11/23 15:27:14
>>56
いつのC++を使ってるの?VC6かい?
newは失敗するとnothrowバージョンでない限りstd::bad_alloc例外を
返し、NULLとか0は返しません。14882:2003
59:デフォルトの名無しさん
07/11/23 16:38:03
>>56
そのコードでは、派生クラスのデスクトラクタが実行されないよ
60:デフォルトの名無しさん
07/11/23 17:48:39
>>47
生産管理のアルゴリズムって、5つくらい前のスレにあったやつじゃダメなのか?
61:56
07/11/23 18:09:02
いまここで
抽象クラスの定義方法知った。
newとmallocの違いを知った。
デストラクタをちゃんと記述しないといけないことを知った。
・・・まだまだ勉強が足りないようで
ツッコミありがとう
62:デフォルトの名無しさん
07/11/23 18:43:13
>>56, 61
全くもって技術的な話ではないが
virtual double cale(double a){}
は綴りが微妙
63:デフォルトの名無しさん
07/11/23 18:51:23
>>23
親頂点に帰れるポインタがあれば、直前にいたポインタと比較することで定数メモリで木を周回できるはずだけど。
直前に親頂点にいたら、左の子供頂点に行く。
直前に左の子供頂点にいたら、自分の key を表示して、右の子供頂点に行く。
直前に右の子供頂点にいたら、親頂点に行く。
あとは親頂点親頂点に戻る方法を考えればいいんだけど。
毎回根から今の頂点を探すってできない気がするんだけど、どうなんだろう?
64:デフォルトの名無しさん
07/11/23 19:14:40
ポインタの付け替え(pointer reversalっていうらしい)を使えば巡回自体はできるんだけど、
そのままだと各節点を3回ずつ表示してしまう。
65:デフォルトの名無しさん
07/11/23 19:36:42
そりゃ単にやり方が悪いだけだ
66:デフォルトの名無しさん
07/11/23 19:50:42
[1]授業単元:Cプログラミング入門
[2]問題文:π(=3.14159265)を用いて入力された数値εに対して
次の不等式を満たす最小の自然数Nを求めるプログラム
をつくりなさい。
|(π^2/6)-{(k=1 N)1/k^2}|<ε
[3]環境
[3.1]OS:Unix
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限11/24まで
[5]その他の制限
・配列、数学関数は使ってはいけない
・表示は以下のようにする
εの値が:
最小のNは .
まったくわからないのでどうかお願いいたします。
67:デフォルトの名無しさん
07/11/23 19:51:15
>>65
じゃあどうすれば良い?
68:デフォルトの名無しさん
07/11/23 21:24:59
>>23
URLリンク(kansai2channeler.hp.infoseek.co.jp)
貼ってから気付いたけど、なぜか<malloc.h>をincludeしてるので無視してくれ。
ポインタの付け替えで一時的に木を変形する。子が両方ともNULLであるノードを
一時領域として使う。
10万件のランダムテストに合格したから多分合ってる。
69:デフォルトの名無しさん
07/11/23 21:58:13
>>61
>>59だが
>デストラクタをちゃんと記述しないといけないことを知った。
~Provider(){} //デストラクタは書いてますやん
俺が言いたかったのは、その書き方が間違いだってことだよ
「知った」ではなくなぜそうなのか理解できてないと、後で苦しむよ
Effective C++ 第3版の7項にきちんと、俺が指摘した理由が説明されている。
図書館で借りるか、本屋で立ち読みしてごらん。
さすがメイヤー先生、初学者が犯しやすい間違いをズバリ書いているので
びっくりした。
偉そうにかいてごめんね、ガンガッテ
70:デフォルトの名無しさん
07/11/23 22:06:45
>>61
大ヒント : 仮想関数を持つならばデストラクタは仮想にすべき
71:デフォルトの名無しさん
07/11/23 22:08:49
>>70
Javaの @Override アノテーションとかあればいいのにな
72:デフォルトの名無しさん
07/11/23 22:33:15
>>66
スレリンク(tech板:962番)
スレリンク(tech板:971番)
73:デフォルトの名無しさん
07/11/23 22:34:37
うざいわ。
baseクラスのデストラクタはvirtualにしとけ、でいいじゃん。
74:デフォルトの名無しさん
07/11/23 22:41:55
C++にはその名のとおりの必殺技 "死のダイヤモンド" が存在するからなぁ……
75: ◆S2Crp49aOM
07/11/23 22:52:04
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
1〜10000の範囲の乱数値を持つ要素数10000の配列から、キーボードで入力した1〜10000値を探索し、
同じ値をもつ配列要素の数を表示するプログラムを二分探索を用いて作成せよ。
[3] 環境
[3.1] O:Linux
[3.3] 言語:C
[4] 期限: 2007年11月24日01:30まで
[5] その他の制限:
76:デフォルトの名無しさん
07/11/23 23:00:03
>>75
あと二時間半www
77:デフォルトの名無しさん
07/11/23 23:15:25
[1] 授業単元:明解C++
[2] 問題文(含コード&リンク):演習10-2
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:.net 2003
[3.3] 言語:C++
[4] 期限:無期限
[5] その他の制限:明解C++で独学しています。単純なクラス作成まで終了。最後の演習問題でつまずいています。
78:デフォルトの名無しさん
07/11/23 23:15:31
>>73
こういう鵜呑みにしているヤツに限って肝心な箇所があやふやなんだよなぁ
オレの職場にもこういうヤツが一人いたよ
79:デフォルトの名無しさん
07/11/23 23:17:04
>>77
「明解C++」の演習10-2だと思われる。
でも、その本を持っていない人間には問題すら分からない。
80:デフォルトの名無しさん
07/11/23 23:19:40
>>78
お前のようなうざい奴はどこにでもいるけどな
81: ◆S2Crp49aOM
07/11/23 23:23:32
>>75
[4] 期限: 2007年11月24日11:30まで
打ち間違えました。
申し訳ないです。
82:デフォルトの名無しさん
07/11/23 23:24:25
80=73
図星なので○け犬の遠吠え
83:デフォルトの名無しさん
07/11/23 23:28:06
うざい上に粘着質
84:デフォルトの名無しさん
07/11/23 23:28:09
その本に答えないの?
85:77
07/11/23 23:32:00
>>84
ありません。
86:デフォルトの名無しさん
07/11/23 23:34:46
>>85
問題書く気はないの?
87:デフォルトの名無しさん
07/11/23 23:35:50
問題を書くのは著作権的にどうよ?
88:デフォルトの名無しさん
07/11/23 23:37:58
学校で先生が出題する問題にも著作権は発生するんだが……。
89:デフォルトの名無しさん
07/11/23 23:38:19
つーか、宿題じゃないでしょ、それ。
90:デフォルトの名無しさん
07/11/23 23:40:27
教科書に市販品使うなんて珍しくもない
91:デフォルトの名無しさん
07/11/23 23:40:55
>>88
著者人格権はあるけど学校の課題なんだkら複製権くらいあるだろ
92:デフォルトの名無しさん
07/11/23 23:42:16
>>79
クラスDate第2版に抽出子を追加せよ。
問題の意味もいまいちわからなくて考えられることは
1.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトを作成する。
2.抽出子の定義(演算子>>の多重定義)を使用してDateオブジェクトの内容を変更する。
だと思います。
しかし、わたしにはどちらであっても解答がわかりません。
クラスDate第2版ソース
URLリンク(kansai2channeler.hp.infoseek.co.jp)
93:デフォルトの名無しさん
07/11/23 23:42:50
著作権=COPY RIGHT=複製権
94:デフォルトの名無しさん
07/11/23 23:44:05
イコールじゃないよ
95:77
07/11/23 23:44:13
>>86
>>92に問題を書きました。
よろしくお願いします。
96:デフォルトの名無しさん
07/11/24 00:48:36
>>91
学校の課題なら特別扱いされるという根拠は?
97:デフォルトの名無しさん
07/11/24 00:52:40
>>96
先生=著者
98:デフォルトの名無しさん
07/11/24 00:58:29
2
99:デフォルトの名無しさん
07/11/24 00:59:03
1
100:デフォルトの名無しさん
07/11/24 00:59:42
お前ら著作権法くらい読めよ
プログラミングに関係の深い法律だぞ
101:デフォルトの名無しさん
07/11/24 00:59:43
▃▅▆▇██▇▅▃
█ ████████▆
█ ████████
▃▂ ▓▓▓▓▓▓▓▓▓
▀██▇███████████▇▅
▼▀█▀██▀▀▀▀■█■▀
▍ ▋ ▲▃ ▀▅▃▌ ▌▌
▐◣ ▐▂▅▀ ▀▅▃▀█ ▍▍
▐▃▀▂▃◢◤ ◥◣▃▂▌ ▎▌
◥▋ ▐◥▃▆◤ ◥▃▆◤▍ ▋
▊ ▐◣ ◢▌ ▼
◢▀▌▀◣ ▆▅ ▃▲ ▋
▼ ▀▇◣▃◢▇▀ ▼
▂▃◢◤▀ ▃▅▃▅▃▅
▐▲▃ ▅▀ ▌▌ ▀█
◢████▅▀▅▀▋▐▅▀▼
▅█████ ▊ ▊ ▌
102:デフォルトの名無しさん
07/11/24 01:00:30
>>97
先生が著作者だから実質的な問題は発生しないと言いたいわけか
複製権関係ねぇ
103:デフォルトの名無しさん
07/11/24 01:08:01
>>72 同志がいたのか・・。
参考にさせていただきます。
ありがとうございました。
104:デフォルトの名無しさん
07/11/24 01:39:30
つうか教育目的の場合、著作権は無視されるんじゃなかったか?
105:デフォルトの名無しさん
07/11/24 01:47:47
三十五条のことか?
106:デフォルトの名無しさん
07/11/24 01:56:19
>>75
URLリンク(kansai2channeler.hp.infoseek.co.jp)
107:デフォルトの名無しさん
07/11/24 01:59:13
>>104
小学校の教科書だか教材に使われてた詩が、著作権者がクレームつけて使えなくなったって話は聞いたことがあるけど。
108:デフォルトの名無しさん
07/11/24 02:12:50
>>104
それは三十三条のことか?
109:デフォルトの名無しさん
07/11/24 03:00:43
ここって教育の場なん?
110:デフォルトの名無しさん
07/11/24 03:03:26
うん
111:デフォルトの名無しさん
07/11/24 03:26:56
丸投げスレも出世したもんだな
112:デフォルトの名無しさん
07/11/24 04:05:52
でしょ
113:デフォルトの名無しさん
07/11/24 11:12:58
>>77
>>95
少し、もちつけ
コードだけ貼って、問題が全然ナイジャマイカ
モマイの貼った↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これを、どうしろというんだ?
エスパー君だったら分かるのかな?
漏れには全然理解できん
114:デフォルトの名無しさん
07/11/24 13:43:11
>>77
エスパー
ostream& operator<<(ostream& s, const Date& x);
を
ostream& operator<<(ostream& s, const Date& x){s << x.Year() << x.Month() << x.Day();return s;}
こう?
115:デフォルトの名無しさん
07/11/24 14:52:56
1] 授業単元:コンピュータプログラミング1
[2] 問題文:CD−Rは1枚〜10枚で1枚が100円、11枚から100枚で1枚が90円、101枚以上で1枚が70円とする。
枚数nに対する金額を計算するプログラムを作成しなさい。終了時にはCtrl+Z(Enter)と入力する。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン:Fujitsu Fortran & C
[3.3] 言語: C
[4] 期限: 11/24
[5] その他の制限: なし
どうかよろしくお願いします。
116:デフォルトの名無しさん
07/11/24 15:07:13
[1] 授業単元: システム解析
[2] 問題文(含コード&リンク):2変数非線形連立方程式の解を求めるnewton-rapson法のプログラムを作成し以下の問題を解け
@x^2+y^2-8=0 と x+y=0 で初期点(x(x0),y(y0))∈[-4,-4]×[4,4]を10000個とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
Ax^3-3xy^2-8=0 と x^3-3x^2y=0 で初期点(x(x0),y(y0))∈[-1/2,-1/2]×[1/2,1/2]を10000個以上(百万個程度を推奨する)とり、初期点に対する収束値の関係を2次元で図示する。
収束値の関係の座標を出すこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年11月25日23:00まで]
[5]その他:^は累乗を示します。たとえば、x*x=x^2です。
2問ありますが、一問だけでもといていただけると助かります。2変数ということで手も足もでません、、、
よろしくお願いします。
117:デフォルトの名無しさん
07/11/24 15:27:56
>>115
#include <stdio.h>
int main()
{
int i,n,price,pricelist[]={1,10,100, 11,100,90, 101,2147483647, 70};
while (scanf("%d", &n) != EOF)
{
for (i=0 ; i<3 ; i++)
{
if (pricelist[i*3]<=n && pricelist[i*3+1]>=n)
{
price=pricelist[i*3+2]*n;
printf("%d円\n", price);
}
}
}
return 0;
}
118:デフォルトの名無しさん
07/11/24 16:07:51
>>22
ありがとうございます。
やってみます。
119:デフォルトの名無しさん
07/11/24 17:11:28
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C++
[4] 期限: 11/26 〜10:00
[5] その他の制限: 特になし
よろしくお願いします。
120:デフォルトの名無しさん
07/11/24 17:24:42
>>117
ぎりぎり間に合いました。本当にありがとうございます。
121:デフォルトの名無しさん
07/11/24 20:02:02
>>118
>>22じゃないけど
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
srand(time(NULL));
for(i =0; i<10; i++)
printf("%d\n", (int)(rand()%100));
}
122:デフォルトの名無しさん
07/11/24 23:17:48
>>119
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
123:デフォルトの名無しさん
07/11/25 00:28:38
>>122
ここまで問題を無視できるのもすばらしい.
124:デフォルトの名無しさん
07/11/25 00:46:51
URLリンク(www.nicovideo.jp)
これだな
125:26
07/11/25 01:02:17
>>34
ありがとうございました。
126:デフォルトの名無しさん
07/11/25 01:38:31
>>5
>>8
どなたかお願いします。
127:デフォルトの名無しさん
07/11/25 01:57:17
>>126
#include <stdio.h>
typedef struct grade{
char name[40];
int score;
struct grade *next;
}glist;
int main(void){
glist header={"", 0, NULL}, node[3], *p;
int i;
p = &header;
for(i=0; i<3; i++){
printf("name->");
scanf("%s", node[i].name);
printf("score->");
scanf("%d", &node[i].score);
node[i].next = NULL;
p->next = &node[i];
p = p->next;
}
p = header.next;
while(p != NULL){
printf("p->name \t%s\n", p->name);
printf("p->score\t%d\n", p->score);
printf("p->next \t%p\n", p->next);
p = p->next;
}
return 0;
}
128:デフォルトの名無しさん
07/11/25 02:51:10
[1] コンピュータ実験
[2]あるファイル(※)を読み込み、数列の中の0の個数と1の個数、
数列の周期を求めるプログラムを作成せよ。
※ファイルの中身は0と1の文字が約20万文字と、改行文字\nで終わるものである。
文字列を01の数列としてみたとき、2周期以上の周期系列となっているのがわかっている。
ファイルに保存されている数字は文字として保存されているので、-'0'をして文字から数字に変換すること。
ファイル名は任意(○○.dat)でよい。
[3] 環境
[3.1]Windows XP
[3.2]gcc
[3.3]C
[4] 2007年11月26日(月)12:00まで
[5] 0と1が書いてあるファイルを用意できないのですが出来ますでしょうか?
よろしくお願いいたします。
129:デフォルトの名無しさん
07/11/25 05:38:26
>>122
ありがとうございます
ですが、ええええ!?
130:デフォルトの名無しさん
07/11/25 05:52:16
>>128
3,4個でいいから、入力データの性質を簡単に全て現したサンプルくらい書けるだろ
かけなきゃまずは問題を理解してここに投下しろ
131:デフォルトの名無しさん
07/11/25 07:54:28
>>128
まずファイルをてきとーに作る
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 20*10000
#define WAVLEN_MAX 10000
int main()
{
int p,t,i,m,n,s=SIZE;
char *buf,fname[]="test.dat";
FILE *fp;
srand(time(NULL));
t = (double)rand()/(RAND_MAX+1)*WAVLEN_MAX+1;
p = (double)rand()/(RAND_MAX+1)*t;
buf = (char*)malloc(t);
m=0;for(i=0;i<t;i++){buf[i] = rand()&1;m+=buf[i];}
if((fp=fopen(fname,"wt"))==NULL)exit(1);
n=0;for(i=0;i<s;i++){fprintf(fp,"%d",buf[(p+i)%t]);n+=buf[(p+i)%t];}
fprintf(fp,"\n");
fclose(fp);
free(buf);
printf("Total = %d (0:%d 1:%d) / T = %d (0:%d 1:%d)\n",s,s-n,n,t,t-m,m,p);
return 0;
}
132:131
07/11/25 08:01:02
>>128
次に作ったファイルを読み込んで処理する
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
long s,t,i,m,n,*tbl;
char *buf,fname[]="test.dat";
FILE *fp;
if((fp=fopen(fname,"rt"))==NULL)exit(1);
fseek(fp,0,SEEK_END);s=ftell(fp);fseek(fp,0,SEEK_SET);
if((buf=(char*)malloc(s))==NULL)exit(1);
for(s=0;(m=fgetc(fp))>='0';s++)
buf[s]=m-'0';
fclose(fp);
tbl=(long*)malloc(s/2*sizeof(long));
tbl[0]=tbl[1]=0;
for(t=2;t<s/2;t++){
tbl[t]=0;
for(i=t;i<s-t;i++)
tbl[t]+=buf[i] & buf[i+t];
}
n=0;for(i=0;i<s;i++)n+=buf[i];
m=0;for(i=0;i<s/2;i++)if(tbl[i]>m){m=tbl[i];t=i;}
m=0;for(i=t;i<t*2;i++)m+=buf[i];
free(tbl);free(buf);
printf("Total = %d (0:%d 1:%d) / T = %d (0:%d 1:%d)\n",s,s-n,n,t,t-m,m);
return 0;
}
133:デフォルトの名無しさん
07/11/25 09:50:24
>>5
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct grade
{
char name[40];
int score;
struct grade *next;
} glist;
glist *cons(glist car, glist *cdr)
{
glist *l;
if( (l = malloc(sizeof(glist))) == NULL ) exit( EXIT_FAILURE );
sprintf(l->name, car.name);
l->score = car.score;
l->next = cdr;
return l;
}
void printList(glist *ptr)
{
if(ptr == NULL) return;
printf("p->name \t%s\n", ptr->name);
printf("p->score\t%d\n", ptr->score);
printf("p->next \t%p\n", ptr->next);
printList(ptr->next);
return;
}
134:デフォルトの名無しさん
07/11/25 09:51:38
つづき
int main(void)
{
glist a,b;
glist *ptr;
sprintf(a.name, "dummy");
a.score = -1;
sprintf(b.name, "tsubasa");
b.score = 60;
ptr = cons(b, NULL);
ptr = cons(a, ptr);
printList(ptr);
return 0;
}
135:128
07/11/25 11:00:53
>>130>>131
よく読みなおしたら日本語おかしかった。ごめんなさい。
ファイルはもう.datファイルであるんですが、そこから0と1の数を数えて、
周期探し出すのがわからんのです。
お手数おかけしてすいません。
136:デフォルトの名無しさん
07/11/25 11:26:28
そのファイルがなければ探しようがないよ
137:デフォルトの名無しさん
07/11/25 11:30:02
>>135
圧縮したら対してサイズおおきくならないからうp
138:デフォルトの名無しさん
07/11/25 11:51:20
[1] 授業単元プログラミングU
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C言語
[4] 期限: 11/26
[5] その他の制限: 特になし
139:デフォルトの名無しさん
07/11/25 12:29:50
>>138
なんであだちゆみ?
140:デフォルトの名無しさん
07/11/25 12:31:40
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
直交座標系の2点A, B のx 座標とy 座標をキーボードから入力し,
三角形OAB の面積を求めるプログラムを作成せよ.ただし点O は
原点(0, 0) とする.
点の名前,x 座標,y 座標を構造体のメンバとせよ.
ポインタによる表現を使うこと.
面積を求めるには以下の公式を使うこと.
2点A (x1, y1),B (x2, y2) に対して,三角形の面積S は
S =1/2|x1*y2 - x2*y1|
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2007/11/26 18:00
よろしくお願いします。
141:デフォルトの名無しさん
07/11/25 12:33:55
>>138
#include <stdio.h>
#include <string.h>
#define USER 5
#define NAME 100
int main() {
int c,i,found=0;
char m[NAME],n[NAME];
char a_name[USER][NAME]={"Takeuchi Yuko",
"Yada Akiko",
"Ogura Yuko",
"Adachi Yumi",
"Yumi Adachi"}; /* 登録済みのユーザのリスト */
/* ここにプログラムを書く */
while(1){
do{
printf("検索?(Y or N):");
fflush(stdin);
}while((c=getchar())!='y'&&c!='Y'&&c!='n'&&c!='N');
if(c=='n'||c=='N')
break;
printf("名字:");
scanf("%s",m);
printf("名前:");
scanf("%s",n);
142:デフォルトの名無しさん
07/11/25 12:34:27
>>140の続き
for(i=0;i<USER;i++){
if(strstr(a_name[i],m)!=NULL&&strstr(a_name[i],n)!=NULL){
printf("Hit! User#%d:[%s]\n",i,a_name[i]);
found++;
}
}
if(found==0)
printf("入力されたユーザは登録されていません。\n");
else
printf("%d件ユーザが見つかりました。\n",found);
found=0;
}
printf("検索を終わります。\n");
return 0;
}
143:デフォルトの名無しさん
07/11/25 12:35:02
>>142は>>141の続きの間違い。
144:デフォルトの名無しさん
07/11/25 12:53:33
>>138
>プログラミングU
進化したプログラミングか
145:デフォルトの名無しさん
07/11/25 14:28:59
[1] 授業単元:暗号理論
[2] 問題文(含コード&リンク):
素数p.qに対してn=p*qが与えられている。
中国人剰余定理を応用して
任意のCとdに対して、modnでのC^dを求めるプログラムを作成せよ。
ヒント
C^d mod n ≡ (C^d mod p,C^d mod q)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明後日
[5] その他の制限:ポインタは習ってない
お願いします。
146:128
07/11/25 15:00:08
>>136>>137
圧縮してupすれば大丈夫でしたね・・・。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
この中の0と1の個数と、数列の周期を求めるプログラムをお願いします。
147:コーンポタージュ
07/11/25 16:21:51
【質問テンプレ】
[1] 授業単元:グラフ彩色問題
[2] 問題文
[2.1]グラフ彩色問題に対する近似解法SEQを作成せよ
[2.2].頂点を次数の降順にソートした後にSEQを適用するプログラムを作成せよ
[2.3]グラフ彩色問題に対する近似解法RLFを作成せよ
※検索エンジンで“グラフ彩色問題 SEQ”と入力して頂ければ、更に理解が深まるページが見つかるかと思います。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2007年12月7日
[5] その他の制限:特にありません。
よろしくお願いします。
148:もりもっこり
07/11/25 16:32:38
基本的なプログラムだと思うのですが、自分でやってみてもうまくいきません。また他にも課題が多く、非常に困っています。詳しい方よろしくお願いします。
1.数値を順番に読み込んで二次元の配列に格納する。
2.その配列を画面に出力する。
3.次に、2つの整数を読み込む。
4.二次元配列のうち、読み込んだ整数に対応する二つの行(あるいは列)の内容を交換する。
配列の内容を画面に出力する。
5.配列の読み込み、交換、出力はそれぞれ関数にすること。
149:KSCN
07/11/25 16:41:11
Mathematica でグラフを描き、EPS 形式で保存する。LaTeX を使ってレポートを作成してその中にグラフを挿入し、PDF ファイルに変換したものを提出すること。
っていう課題がでたのですが質問の意味からわかりません。どなたか質問の意味だけでも教えてください。
150:デフォルトの名無しさん
07/11/25 16:43:43
どうでもいいけど、名前を出す人の方が少ないんだから別人に見せようとしても逆効果だぞ
151:デフォルトの名無しさん
07/11/25 16:49:49
>>149
つURLリンク(www.google.co.jp)
152:デフォルトの名無しさん
07/11/25 16:50:15
>>149
何がわからないのかがわからない。
1.クラスで使っているMathematicaというソフトを使って数式を処理してグラフ表示、グラフの画像をEPS形式のファイルに保存。
2.いつもやっているようにLatexでレポート作成。EPS形式ファイルの埋め込みに関しては、配布したテキストを参照の事。
3.pdflatexをつかってPDF形式のファイルを出力。
一通り説明されてるはずなのに、なんで分からないとか言ってんの?
ずっとサボってたのか?
153:デフォルトの名無しさん
07/11/25 18:01:02
>>145
マルチ?( スレリンク(math板:156番) )
154:デフォルトの名無しさん
07/11/25 18:24:20
>>128 >>146
URLリンク(kansai2channeler.hp.infoseek.co.jp)
結果があってるかはわからんよ。
あと、文字列を数列に直すのは無駄だったから省略しちゃった。
どうしても直したければ、適当にやってくんろ。
155:131
07/11/25 19:42:04
>>154
自分の環境ではfscanfで32767文字までしか取得できなかったわけだが・・・
ファイルサイズは228793バイトあるわけで
>>128
>>132で答えたつもりだったんだけど間違ってたかな?
156:デフォルトの名無しさん
07/11/25 20:30:38
>>155
こっちの環境では問題なく scanf で取れたよ。
それ以上に、>>132 は O(n^2) だから、とても終わらないと思うけれど。
157:156=154
07/11/25 20:33:55
あ、こちらの環境は質問者にあわせて WindowsXP (cygwin) の gcc 。
質問者の環境で、これでうまくいかないようなら対処する。
158:デフォルトの名無しさん
07/11/25 20:48:56
>>153
プログラムがかけないのでお願いします
159:デフォルトの名無しさん
07/11/25 20:56:38
>>158
C, d, n, p, q として想定している桁数は?
任意桁なら、GMP の使用の可否は?
160:デフォルトの名無しさん
07/11/25 20:59:51
>>158
マルチ?って聞かれてそう答えるのって日本語不自由な人だよね。
161:デフォルトの名無しさん
07/11/25 21:04:14
>>160
留学生です
162:デフォルトの名無しさん
07/11/25 21:14:03
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限: 11月26日0時まで
よろしくおねがいします
163:デフォルトの名無しさん
07/11/25 21:14:37
帰れ
164:デフォルトの名無しさん
07/11/25 21:24:45
>>162
int dom[] = {-1,31,28,31,30,31,30,31,31,30,31,30,31};
void yesterday(int *y, int *m, int *d) {
--*d;
if (*d <= 0) *d = dom[--*m];
if (*m <= 0) --*y, *m = 12;
}
void tomorrow(int *y, int *m, int *d) {
++*d;
if (*d > dom[*m]) *d = 1, ++*m;
if (*m > 12) ++*y, *m = 1;
}
void sort3(int *n1, int *n2, int *n3) {
int tmp;
if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp;
if (*n2 > *n3) tmp = *n2, *n2 = *n3, *n3 = tmp;
if (*n1 > *n2) tmp = *n1, *n1 = *n2, *n2 = tmp;
}
165:デフォルトの名無しさん
07/11/25 21:47:29
>>116
当方で確認した環境は WindowsXP, 処理系は gcc 3.4.4 です。
(1) だけでもやってみました。とにかく初期値と収束解を出すだけのプログラムです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
この結果をつらつら眺めると、次の関係があると推測できます。
初期値を x0, y0 とするとき、
1) y0 > x0 ならば、収束値は (x, y) = (-2, 2)
2) y0 < x0 ならば、収束値は (x, y) = (2, -2)
3) x0 = y0 ならば、ヤコビ行列の行列式が 0 となるので、収束しない。
初期値から近い方の解に収束するようです。
なお、問題の(2) は、どうもフラクタル図形を描くかと思われます。
166:デフォルトの名無しさん
07/11/25 22:04:40
>>116
M教授の課題だろ
167:デフォルトの名無しさん
07/11/25 22:08:05
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):(URLリンク(kansai2channeler.hp.infoseek.co.jp))
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語: C言語
[4] 期限: 明後日
[5] その他の制限: 今は配列のところを習っています。制限は特にないです。
お願いします
168:デフォルトの名無しさん
07/11/25 22:13:59
>>167
404
169:デフォルトの名無しさん
07/11/25 22:24:46
1から50までの数のうち、素数を表示するプログラムを教えてください。
#difineで50を定義するってのが条件です
お願いします
170:デフォルトの名無しさん
07/11/25 22:33:04
>>148
M教授の課題だろ。俺もわかんねえんだおしえてくれ
171:デフォルトの名無しさん
07/11/25 22:34:48
>>169
#include <stdio.h>
#define 50
int main(void)
{
printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47");
return 0;
}
172:>>169
07/11/25 22:35:19
すみません。>>1読んでませんでした
書き直します
[1] C言語:
[2] 1から50までの数のうち、素数を表示するプログラムを作成せよ。
#difineで50を定義せよ
[3] 環境
[3.1] WindowsXP
[3.2] Visual C++2005
[3.3] C
[4] 期限:無期限
[5] 関数は使ってはいけない
173:デフォルトの名無しさん
07/11/25 22:37:23
>>172
>関数は使ってはいけない
本当にこう言われたのか?
174:173
07/11/25 22:39:11
>>173
すみません。違います
関数は使わなかったらできませんね(汗
175:デフォルトの名無しさん
07/11/25 22:40:05
ところで >>171 はスルーかね
176:デフォルトの名無しさん
07/11/25 22:40:57
あっ!#difineを使うのか!
177:173
07/11/25 22:41:37
あ、すまんです;;
ありがとうございます。こんなやりかたもあるんですね
178:173
07/11/25 22:43:44
あとdefineですね。間違いだらけですみません
179:デフォルトの名無しさん
07/11/25 22:44:59
>>172
#define N 50
main() {
int i, j;
int primes[N];
for (i = 0; i < N; ++i) {
primes[i] = i;
}
primes[1] = 0;
for (i = 2; i*i < N; ++i)
if (primes[i]) {
for (j = i*i; j < N; j+=i) {
primes[j] = 0;
}
}
}
for (i = 0; i < N; ++i) {
if (primes[i]) {
printf("%d ", primes[i]);
}
}
}
180:デフォルトの名無しさん
07/11/25 22:47:39
>>179
最悪な方法に比べればましだけどまだしょっぱい。
181:デフォルトの名無しさん
07/11/25 22:47:48
>>172
#include <stdio.h>
int main()
{
printf("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47\n");
return 0;
}
182:173
07/11/25 22:48:17
(汗
183:デフォルトの名無しさん
07/11/25 22:51:09
>>180
改善点があったら教えてください
184:デフォルトの名無しさん
07/11/25 22:52:10
>>172
#include <stdio.h>
#include <stdlib.h>
#define N 50
int main(void){
int border, i, k;
char *num;
border = N/2;
if((num = malloc( N+1 )) == NULL)return -1;
for(i=0; i<N; i++)num[i] = 1;
i = 2;
while(i <= border){
for(k=i*2; k<=N; k+=i)num[k] = 0;
while(1){
i++;
if(num[i])break;
}
}
for(i=2; i<=N; i++)if(num[i])printf("%d ", i);
free(num);
return 0;
}
185:122
07/11/25 22:53:42
>>119
>>129
ごめんなさい。訂正いたします。
なお、厳密には「有効桁数 4 桁で表示」っていうのは、このやり方ではうまくないです。
SEED に与える定数で、具合のいいものしか表示しないようにしています。すみません。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
186:デフォルトの名無しさん
07/11/25 22:59:55
>>172
#include <stdio.h>
int main()
{
int i,j,num[51]={0};
for (i=2 ; i<51 ; i++)
{
if (num[i]==0)
{
printf("%d\n", i);
for (j=i ; j<51 ; j+=i)
{
num[j]=1;
}
}
}
return 0;
}
187:122
07/11/25 23:00:07
>>119 >>129
訂正:具合のいいものを表示するように SEED の値を変えてください。
重ね重ねすみません。
188:デフォルトの名無しさん
07/11/25 23:04:03
>>186
//ちょっとだけ高速化
#include <stdio.h>
int main()
{
int i,j,num[51]={0};
for (i=2 ; i*i<51 ; i++)
{
if (num[i]==0)
{
printf("%d\n", i);
for (j=i ; j<51 ; j+=i)
{
num[j]=1;
}
}
}
for (i=2 ; i<51 ; i++)
{
if (num[i]==0)
{
printf("%d\n", i);
}
}
return 0;
}
189:コーンポタージュ
07/11/26 00:15:01
>>147
ちなみにサンプルプログラムは以下の通りです。
/* グラフ彩色問題に対する近似解法(サンプルプログラム) */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX_N 2000 /* 最大の頂点数 */
int n; /* 頂点数 */
int m; /* 辺数 */
double x[MAX_N], y[MAX_N]; /* 各頂点の座標 */
int a[MAX_N][MAX_N]; /* 隣接行列 */
int color[MAX_N]; /* 色 */
int max_color; /* 最大の色番号 */
/* アルゴリズム本体 */
void sample(){
int i;
for(i = 0; i < n; i++){
color[i] = i % 6;
}
}
190:コーンポタージュ
07/11/26 00:15:42
/* メインプログラム */
int main(int argc, char *argv[]){
FILE *input_file, *output_file;
double start_time, search_time;
int i,j,k1,k2;
/* 引数のチェック */
if(argc <= 1){
fprintf(stderr,"Please input the name of data file!\n");
exit(1);
}
/* 入力データの読み込み */
input_file = fopen(argv[1],"r");
fscanf(input_file, "%d %d\n",&n, &m);
for(i = 0; i < n; i++){
fscanf(input_file,"%lf %lf\n",&(x[i]),&(y[i]));
}
for(i = 0; i < n; i++){ /* 隣接行列の初期化 */
for(j = 0; j < n; j++){
a[i][j] = 0;
}
}
for(i = 0; i < m; i++){
fscanf(input_file,"%d %d\n",&k1,&k2);
a[k1][k2] = a[k2][k1] = 1;
}
191:コーンポタージュ
07/11/26 00:16:16
/* 解の初期化 */
for(i = 0; i < n; i++){
color[i] = -1;
}
/* 入力データの表示 */
printf("n= %d\n",n);
printf("m= %d\n",m);
/* for(i = 0; i < n; i++){
printf("%f\t%f\n",x[i],y[i]);
}
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(a[i][j] == TRUE){
printf("%d\t%d\n",i,j);
}
}
} */
/* 開始時刻の設定 */
start_time = (double)clock()/CLOCKS_PER_SEC;
/* アルゴリズム本体 */
sample();
192:コーンポタージュ
07/11/26 00:16:50
/* 実行時間の測定 */
search_time = (double)clock()/CLOCKS_PER_SEC - start_time;
/* 制約条件のチェック */
for(i = 0; i < n; i++){
if(color[i] == -1){
printf("No color is assigned!: %d\n",i);
}
}
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(a[i][j] == 1 && color[i] == color[j]){
printf("%d and %d have the same color %d!\n",i,j,color[i]);
}
}
}
193:コーンポタージュ
07/11/26 00:17:23
/* 入力データおよび解をファイルに出力 */
output_file = fopen("result.txt","w");
fprintf(output_file,"%d\t%d\n",n,m);
for(i = 0; i < n; i++){
fprintf(output_file,"%f\t%f\n",x[i],y[i]);
}
for(i = 0; i < n; i++){
for(j = i+1; j < n; j++){
if(a[i][j] == 1){
fprintf(output_file,"%d\t%d\n",i,j);
}
}
}
for(i = 0; i < n; i++){
fprintf(output_file, "%d\n",color[i]);
}
194:デフォルトの名無しさん
07/11/26 00:18:48
レスを跨るようならアップローダを使ってくれないかな。
195:デフォルトの名無しさん
07/11/26 00:26:22
アップローダなら半角スペースが残るので、カットアンドペーストできれいなソースが手元にわたりますし。
196:デフォルトの名無しさん
07/11/26 00:30:38
どこの誰が管理してるかわからないようなものを使えるか!
197:デフォルトの名無しさん
07/11/26 00:36:13
ん、それもそうですね。でもアップローダ経由じゃないソースは
私は基本的にはみません。だってめんどくさいから。
198:デフォルトの名無しさん
07/11/26 00:41:44
1レス内に自然に入るなら入れて欲しいけどね。空白を 置換して。
199:デフォルトの名無しさん
07/11/26 00:51:45
新しい宿題のネタになりますでしょうーか。< 変換
200:デフォルトの名無しさん
07/11/26 00:56:28
sed -e 's/&/\&/g' -e 's/^ /\ /g' -e 's/ / \ /g' -e 's/</\</g' -e 's/>/\>/g'
201:デフォルトの名無しさん
07/11/26 02:15:24
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):()
===memo.txt===
DATA52/a
DATA52/u
DATA52/chi
=============
とかかれたmemo.txtのファイルがあるとして
そのファイルを読み込み"DATA52/"という
文字列を取り除く.
次にa,u,chiをくっつけてauchiとして表示せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/26 12:00
[5] その他の制限:
ちなみに構造体配列を使い、struct tfield tdata[1]を宣言し
tdata[0].filenameに"memo.txt"を格納しているとする。
そのmemo.txtをよみこみ処理してtdata[0].wordとして"auchi"を表示してほしいです。
メンバのfilename,wordはchar型です
202:デフォルトの名無しさん
07/11/26 02:17:18
>>184
これは不思議。
アルゴリズムの名前とかある?
203:デフォルトの名無しさん
07/11/26 02:20:40
>>202
エラトステネスのふるい
204:デフォルトの名無しさん
07/11/26 02:26:06
>>203
まじか……。
調べる数をリストとして扱うと、こういう処理になるのか。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5314日前に更新/123 KB
担当:undef