C/C++の宿題を片付けます 99代目at TECH
C/C++の宿題を片付けます 99代目 - 暇つぶし2ch175:デフォルトの名無しさん
07/11/10 01:23:30
[1] 授業単元: 確率論
[2] 問題文:
URLリンク(www.uploda.org)
ここに書きました。
図はこんな感じです。
URLリンク(www.uploda.org)

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

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

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

178:デフォルトの名無しさん
07/11/10 06:18:17
誰かいますか?

179:デフォルトの名無しさん
07/11/10 06:25:27
います

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

181:デフォルトの名無しさん
07/11/10 06:28:07
どれどれ。

182:デフォルトの名無しさん
07/11/10 06:32:14
ありがとうございます!!!!

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

197:デフォルトの名無しさん
07/11/10 09:06:46
ついでに、SEQまではとりあえずやってみて秋田。

URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

DSATURは誰か頼む。

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


199:デフォルトの名無しさん
07/11/10 09:12:24
問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。
URLリンク(ja.wikipedia.org)

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

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

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

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

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

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

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

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

203:デフォルトの名無しさん
07/11/10 11:03:59
*****
****
***
**
*

204:203
07/11/10 11:04:43
投稿ミスですorz

205:203
07/11/10 11:14:23
下の図形をfor文で作るのですが・・
よくわかりませんorz
*****
****
 ***
  **
  *

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

206:203
07/11/10 11:15:26
なんだか一個づれてますが
ピラミッド型です。。本当にすみません

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

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

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

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

211:203
07/11/10 11:37:17
>208
ぉぉーー どうもです;;

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

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

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

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

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

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

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

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

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

217:デフォルトの名無しさん
07/11/10 18:49:41
>>212
無理

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

219:デフォルトの名無しさん
07/11/10 19:04:07
誰かいますか?


220:デフォルトの名無しさん
07/11/10 19:14:21
公にはいないことになっている

221:デフォルトの名無しさん
07/11/10 20:25:26
数独ソルバー
URLリンク(www.ffconsultancy.com)

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


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

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

225:デフォルトの名無しさん
07/11/10 21:26:13
>>224
無能でも無能なりにテンプレを埋めてください

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

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

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

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

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

return head;
}


229:aho
07/11/10 21:35:14
>>228
printf("type 'q' to exit\n");
while(fgets(buf, sizeof(buf), stdin)){

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

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

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

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

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


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

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

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

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

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

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

237:デフォルトの名無しさん
07/11/10 22:18:05
>>236
#include<stdio.h>

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

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

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

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

return 0;
}

238:aho
07/11/10 22:20:42
>>234
addList()については以下のページを参照。わかりやすくかいてある。
URLリンク(www9.plala.or.jp)

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

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

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

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

return(0);
}

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

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

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

240:aho
07/11/10 22:22:15
>>235
その通り。
その中から暇人達がやりたい問題を選んでやるわけなのだよ、明智君。


241:デフォルトの名無しさん
07/11/10 22:26:14
協力お願いします。
スレリンク(news4vip板)

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

先生の元データ:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
自分の途中データ:
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

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

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

244:aho
07/11/10 22:32:52
>>175 >>243
もう一度upしてくれ!
ファイルが見つからん!

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

246:175
07/11/10 22:52:39
[1] 授業単元: 確率論
[2] 問題文:
URLリンク(toku.xdisc.net)
ここに書きました。
移動50回するものとします。
図はこんな感じです。
URLリンク(toku.xdisc.net)

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

お願いします。







247:デフォルトの名無しさん
07/11/10 23:05:10
>>246
gstateの定義は自由?

248:デフォルトの名無しさん
07/11/10 23:22:28
>>246
なんだ 簡単じゃん

249:175
07/11/10 23:26:17
自由でいいです。

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

URLリンク(toku.xdisc.net)
こういう感じが本番なんですけどね。

250:デフォルトの名無しさん
07/11/10 23:27:36
増えただけで考え方は全く同じ

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

252:デフォルトの名無しさん
07/11/10 23:40:15
>>246
行列につっこめれば、ただの積ですむのに……

253:175
07/11/10 23:42:31
上だけなら行列につっこめばいんだけど
下が邪魔なんですよ。

254:デフォルトの名無しさん
07/11/10 23:48:54
>>253
いや、かわんないだろ?

255:デフォルトの名無しさん
07/11/10 23:50:15
>>253
なぜ分けて考える

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

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

かなり長くなるのでアップロードしました
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

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

257:デフォルトの名無しさん
07/11/11 00:11:22
>>246
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

258:デフォルトの名無しさん
07/11/11 00:13:05
>>246
構造体の名前は変更しておいて

使い方は data.txt をリダイレクトするだけ
ans246 < data.txt
URLリンク(kansai2channeler.hp.infoseek.co.jp)

259:175
07/11/11 00:21:33
>>257
>>258
ありがとうgございます

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

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

URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

261:215
07/11/11 00:36:10
ちなみに>>215はリンク切れで>>242にもう一度あげています。

262:デフォルトの名無しさん
07/11/11 00:57:13
246ですけどもうひとつ付け足しでいいですかね?

263:デフォルトの名無しさん
07/11/11 01:00:52
>>262
では断る

264:デフォルトの名無しさん
07/11/11 01:16:00
グラフって楽しいね

265:デフォルトの名無しさん
07/11/11 01:17:11
>>260
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

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

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

267:デフォルトの名無しさん
07/11/11 01:21:24
>>266
ちょwww またでんつーだーいかよwwww

268:デフォルトの名無しさん
07/11/11 01:22:22
[1] 授業単元: 確率論
[2] 問題文:
ここに書きました。
URLリンク(toku.xdisc.net)

図はこうです。
URLリンク(toku.xdisc.net)

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



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

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

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

272:デフォルトの名無しさん
07/11/11 01:32:49
>>271
^Zって書いてるけど、ctrl+Dで代用。

Windows用の豆知識な。

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

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

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

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

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

よろしくお願いします。


276:デフォルトの名無しさん
07/11/11 01:35:17
>>274
それって計算するとき関係ねーじゃんw

277:デフォルトの名無しさん
07/11/11 01:39:39
>>276
自分の力量からして区別しないといけないかとおもってました。すみません。
別要素で扱わなくてもいいです。

上がABBAC と 下がDABCの計算とか
上がBA と 下がADACADBCの計算をできるようにできれば。


278:デフォルトの名無しさん
07/11/11 01:54:26
URLリンク(de.eurosport.yahoo.com)

279:デフォルトの名無しさん
07/11/11 10:13:27
>>275
公式をもう一度確かめてもらえませんか?おかしな結果になります。

280:デフォルトの名無しさん
07/11/11 10:22:59
>>279
具体的になんの気体かを書いたほうが良いのでは?
気体→液体のときにかかるエネルギーとか、
なぜか温度が-273度を下回るとか、
そういう計算が出てきちゃうから

281:デフォルトの名無しさん
07/11/11 10:34:31
>>273
公式が違うような気が
T=T0*E^(κ-1)
P=P0*E^κ
計算結果も変な気が
何で圧縮比1つまり体積が変化いてないはずなのに
V0=1.0m^3の空気が1000.00m^3になってるの?

282:デフォルトの名無しさん
07/11/11 11:27:07
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
80~120の数値を正規乱数で発生させるプログラムを作成しなさい。
平均100・標準偏差0.1とする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5

 [3.3] 言語: C++
[4] 期限: 11/12 12時
[5] その他の制限:

よろしくお願いします


283: ◆wFVK8h9bmM
07/11/11 11:28:34
>>279-281
問題文はそのままコピペなのでこれ以上の情報が無いんです。

284:デフォルトの名無しさん
07/11/11 12:22:40
>>283
講師に間違ってると指摘するとボーナス点が貰えるかもよ。
取り合えず、V0=1.00m^3、E=1の時V=V0/E=1000.00ってどう言う事ですか?と質問してみな。
1.00m^3=1000Lだけど単位変えないよな普通
良いのが見つからないんだけどこの辺見れば式が間違ってる事に気付く筈
URLリンク(www.photon.t.u-tokyo.ac.jp)

285:デフォルトの名無しさん
07/11/11 12:45:04
機嫌損ねて減点とかもありえそうだから困る。

286: ◆wFVK8h9bmM
07/11/11 12:45:40
>>284
はい。まず質問してみます。
返事が返ってきたらまた書き込ませてもらおうと思います。

287:デフォルトの名無しさん
07/11/11 13:45:19
病苦 借金苦 精神疾患 絶望 鬱+借金苦 死にたいだけ 自分が要らないから。
いても仕方が無い。他の人が必要としても、私は必要ではない 消滅したいから
今持っているものを失うのが怖い 生きる希望がなぃ 生きてる意味を見出せないから
生きていて三'::::::............... .....::::::`y,. 皆にキモがられる・将来に対する漠然
とした不安ナ:::::::::::::::::::::::::::::::::::::::::::::ヾ 鬱 僕の存在はみんなに不快感を与えるだけだ
から「死ねV::::::::::::::::_{{ ({∫∬ノノjヾ:::::{ に耐えられない 恋 誰にも必要とされていない 脳の
片隅から ナ::::::::::::::i`__,,,,,,,ァ_  _,,,,,_ t;;:ヌ しするとしたら、支払い苦 過食症 親 配偶者の死
疲れた  イヘ::::::(ヾ~!,ャt、 !'''i ィtン )=f }fが嫌だから。 解離性同一障害で、別の人格に
体を乗っi {t)テ" ヘ' '___,イ ヽ_/ 介' じゃないから ここに載っている物から一つだけは
ムリだけrヘ_,j|!'     /ー--''!     |'不明でごめんなさい) 人間が嫌い。人間はどこ
まででも/| |       /二ク     !から。そんな生き物と上っ面だけとはいえ、
付き合/ { ! 、     ヾニン   ノ。 かゆいから 幸せなときに死にたい 毎日毎日
疑問が|  | ! \       _,,./だしても疑問はなくならない、それならばある日生きる
ことをやめるか丶\  `__>-ー´ると告げられても、そうかと思うだけだから 今の日本
は腐ってるから 辛い かゆい 人生つかれたから 自分が世界一かわいいから 金がな
いから 一度死に際を経験して生きる意味を見出したい 野球部だから 知らない 生き
る事自体が矛盾の繰り返しだから(自分の意思で生まれて来ないのに自分の意思で
生きて行く) 帰りたいから 身内が殺人を犯したから、その罪滅ぼしに 変わりはてた顔
自殺が自分にできる唯一の復讐だから そもそも生きている感覚が無かったし、今も無
いので、不問。 差別に耐えられない 今後受ける肉体的苦痛を回避するため 暇つぶし
(生きるのに退屈しか感じなくなった 別に死にたくない 体の障害のため 鬱&スロット依
存症 生きてても金食いつぶすだけ 死んだらどうなるんかなぁと 離婚 母親の裏切り、
恐怖 家にいるのが苦痛。受験のことを考えたり…将来に希望がない。親が勉強の事


288:デフォルトの名無しさん
07/11/11 14:14:07
[1] 授業単元:C++
[2] 問題文:シーザー暗号(文字をA-Zの順に、一定数シフトすることで暗号化する。例えば、Return to Romeは、3文字シフトでUhwxuq wr Urphとなる。)
       で書かれたファイルを解読し、解読文を表示するプログラムをつくれ。
      
      条件:
         1.ファイルの中で暗号化されているのは、アルファベットのA-Z(大文字)とa-z(小文字)のみである。
         2.空白、ピリオド、コンマ、セミコロン、コロンは、暗号化はされていないが、解読文のアウトプットを表示するとき、正しく表示すること。
         3.ファイルの中で最も頻繁に現れるアルファベットが、“e”であるという事実に頼り、シフト数を計算せよ。
[3] 環境
 [3.1] OS: Win
 [3.2] コンパイラ名とバージョン:DevC++
 [3.3] 言語: C++
[4] 期限: 2007年11月16日まで。
[5] その他の制限: 標準ライブラリのみ使用可能。Cのクラスは使用不可。

よろしくお願いします。

289:デフォルトの名無しさん
07/11/11 14:55:32
>>273
#include <stdio.h>
#include <math.h>

int main(void)
{
  double p, v, r, t, kappa;
  double p0, v0, t0;
  int e;

  p0 = 9.80e4, v0 = 1.0, t0 = 273.15;
  r = p0*v0/t0;
  kappa = 1.4;

  printf("----- 状態変化(計算結果) -----\n");
  printf("圧縮比 E 体積 V 温度 T 圧力 P\n");
  for(e = 1; e <= 5; e++){
    v = v0/e;
    p = p0*pow(v0, kappa)/pow(v, kappa);
    t = p*v/r;
    printf("%d %.2f %.2f %f\n", e, v*1000, t, p);
  }

  return 0;
}

290:デフォルトの名無しさん
07/11/11 16:29:22
元気ですかー?

291:デフォルトの名無しさん
07/11/11 16:32:26
ちょとsYレならんしょこれは・・?

292:デフォルトの名無しさん
07/11/11 16:54:11
ここって何人くらいで作業してるの?

293:デフォルトの名無しさん
07/11/11 16:55:29
>>292
確か前集計したとき、20人だったような……

294:デフォルトの名無しさん
07/11/11 17:40:09
>>166
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)

をお願いしたのですが
>>169 >>170 の方のを実行させてもらった所、0.05では正しいのですが
今度は0.1で1回少ないようです。どなたかお願いします

295: ◆QipEoOUdX2
07/11/11 17:41:55
[1] 授業単元:プログラム演習
[2] 問題文:等比数列の初項aと公比rと項数nを入力して、それらの総和を表示する。ただしa、rは実数値とする
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 11月12日 03:00
[5] その他の制限

よろしくお願いします

296: ◆EcwVYA3Joo
07/11/11 17:43:12
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
キーボードから1~20までの任意の整数を10個入力する。
さらにもう一つ入力し、最後に入力した値が、始めに入力した10個の整数の中に存在するか存在しないかを調べて、その結果を表示するプログラムを作成せよ。
※例
1~20までの整数を10個入力してください。
1 9 11 19 2 3 7 6 15 10
入力した値は 1 9 11 19 2 3 7 6 15 10 です。
探す値(1~20)を入力してください。:11
11は入力値にあります。
探す値(1~20)を入力してください。:18
18は入力値にありません。

[3] 環境
 [3.1] OS: Windows
 [3.3] 言語:C言語
[4] 期限:2007年11月11日19:10まで
[5] その他の制限:

よろしくお願いします。

297:デフォルトの名無しさん
07/11/11 17:45:24
[1] 授業 C言語上級
[2]
結果を出力できるようにプログラムを準備してください.
入力ファイルフォーマット:
source-node destination-node packet-loss-rate
a b 0.3
a c 0.1
.
.
z w 0.9
Step1: 二行目からデータを読み込みます.例えば,node a から node bまで
のパケット損失率0.3から最後までに読むこと.ノードペア毎のパケット損失率
を記録する.
※ 下記変数が必要
char *node_pair_name[1000]; //ノードペア名を記録する,行ごとは一記録と
します.何行があるならば,何個の記録がある.後で使う.
double packet_loss_rate[1000];//ノードペア毎に記録する,
Step2: 読み込んだデータpacket_loss_rateをJI関数f(double *x, int n)に
渡して,JIを計算します.
Step3: JI出力
以上のプログラムを組み込んでください.
[3] C言語
[4] 11月13日まで
JI関数はすでにできているので気にしなくて大丈夫です。
よろしくお願いします。


298:デフォルトの名無しさん
07/11/11 17:50:33
>>294 自己解決..?
for(x=0;x<1-h;x+=2*h){
sum+=(f(x) + 4*f(x+h) + f(x+2*h)) * h/3;
printf("%f %f\n",sum,x);
}

299:デフォルトの名無しさん
07/11/11 19:03:18
>>295
>>236

300:デフォルトの名無しさん
07/11/11 19:12:44
>>296
#include <stdio.h>
#define N 10
int main( int argc, char ** args ){
int a[N]={0}, i, o;
printf( "1~20までの整数を10個入力してください。\n");
for ( i = 0; i < N; ++i ) scanf( "%d", &a[i]);
printf( "入力した値は " );
for ( i = 0; i < N; ++i ) printf( "%d ", a[i]);
printf( "でし。\n" );
for (;;) {
printf( "探す値(1~20)を入力してください。:" );
scanf( "%d", &o );
for(i=0;i<N;++i) if ( a[ i ] == o ) break;
if ( i != N ) printf( "%d は入力値にあります。\n", o );
else printf( "%d は入力値にありません。\n", o );
}
return 0;
}


301:デフォルトの名無しさん
07/11/11 19:23:13
たまってるキューはどれくらい?

302: ◆EcwVYA3Joo
07/11/11 19:40:44
>>300
ありがとうございます。
起動出来ませんでしたが…

303:デフォルトの名無しさん
07/11/11 20:00:25
>>295
#include<stdio.h>

double geoSeries(double init, double ratio, unsigned int nth)
{
size_t ix = 1;
double res = init;
while( ix != nth )
{
res *= ratio, res += init;
++ix;
}
return res;
}

int main(void)
{
printf("%lf\n",geoSeries(1.0,2.0,1));
return 0;
}


304: ◆DGgnWkEBkw
07/11/11 20:11:20
[1] 授業単元: アドバンスドプログラミング
[2] 問題文(含コード&リンク):
(1) 最大で10 行10 列の要素取り扱える行列A に対して下記機能を満足するプログラムを作成せよ。
① main 関数内で3行4列の行列A にキーボードから、要素データを入力する。
② ①の後、行列の形式としてA を表示する。
③ ②の後、行列A の各要素の先頭アドレスを行列形式で表示する。
注意:入力データは、double 型とする。
(2) 最大で10 行10 列の要素取り扱える行列A,B,C,D に対して下記機能を満足するプログラムを作成せよ。
① 3 行3列の行列A にデータを入力する。
② 行列A の各要素2倍した行列B を生成する。
③ 行列A の転置行列を行列Cとして生成する。
④ 行列Aと行列Cの積を行列D に生成する(行列Dは、どんな性質を持った行列か?)。
(3) 最大で10 行10 列の要素取り扱える行列A に対して下記機能を満足するプログラムを作成せよ。
① 3 行3列の行列A にデータを入力する。
② 行列A を表示する。
③ 行列A の3行目を行列A の2行目に加え合わせる。(例えば、21 31 a + a を21 a に代入することを意味
する)
④ 行列A を表示する。
(4) (1),(2),(3)に対して、各機能の関数を作成して、プログラムのモジュール化を図りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ2005のコマンドプロンプト
 [3.3] 言語: C
[4] 期限: 2007年 11月12日 午前9時
[5] その他の制限: 特にその他の制限は無いですが出来るだけわかりやすくしてもらえるとうれしいです

このスレに書き込むのは初めてなので、何か至らないところがあれば指摘してもらえると助かります


305:デフォルトの名無しさん
07/11/11 20:23:39
>>303
double geoSeries(double init, double ratio, unsigned int nth)
{
double res = init;
while( --nth != 0 ) res = res * ratio + init;
return res;
}


306: ◆EcwVYA3Joo
07/11/11 21:25:25
>>300
起動出来ました。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):1~100の範囲の整数の乱数値を持つ要素数100の配列から、
キーボードで入力した1~100の範囲ま整数地を探索し、入力値と同じ値が配列に含まれるか調べて、
その探索結果を表示するプログラムを作成する。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限:2007年11月11日22:40まで
[5] その他の制限:

すみませんが宜しくお願いします。

307:デフォルトの名無しさん
07/11/11 21:52:46
しかしプログラミングって授業多いな



308:デフォルトの名無しさん
07/11/11 21:56:46
>>307
そりゃあ、授業内容がプログラミングを習ってるんだから、授業名「プログラミング」が多いのは当然かと。

309:デフォルトの名無しさん
07/11/11 22:11:56
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
=======datalist.txt=========
1st:yamada
2st:okamoto
3st:uchida
4st:kondou
===========================
のファイルを1st:、2st:などを取り除いて
名前だけをchar型配列にいれて表示せよ。

[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] C
[4] 期限:11月12日くらい

よろしくお願いします


310:デフォルトの名無しさん
07/11/11 22:17:03
>>306
#include <stdio.h>
#include <stdlib.h>
#define NOTFOUND (-1)
int find( int ar[], size_t l, int t ){
size_t i;
for (i=0;i<l;i++) if ( ar[ i ] == t ) break;
return (i!=l)?(int)i:NOTFOUND;
}
int main( void ){
int ar[100],i,t;
srand(time(NULL));
for (i=0;i<100;i++) ar[i]=rand()%100 + 1;
/*for (i=0;i<100;i++) printf("%d ",ar[ i ]); puts("");*/
while(1){
do{scanf("%d",&t);}while(!( t>0 && t<101 ));
puts( find ( ar, 100, t )==NOTFOUND ? "Not Found.":"Found");
}
return 0;
}


311:309
07/11/11 22:17:28
:とその左の部分を取り除くって形でいいです

312:デフォルトの名無しさん
07/11/11 22:41:17
宿題なんですが
[1] 授業単元: プログラミング演習
[2] 問題文: 整数型のデータ(サイズは200*200)を読み込み、輝度値を線型に変換(y=ax+b)した上でのプログラム。
ただしa,bはargv,argcを利用する。
さらに、上のプログラムを読み込み、指定の範囲を切り出して出力するプログラムを書け。
暇な人、お願いします。ついでにargcとargvについて教えて頂けるとうれしいです。
[3] 環境
 [3.1] OS:WINDOWS
[3.3]言語:C言語
 [4] 期限:11月13日


313:デフォルトの名無しさん
07/11/11 22:52:36
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語: C言語
[4] 期限:11月12日午前0時30分まで
よろしくおねがいします

314:デフォルトの名無しさん
07/11/11 23:09:51
>>309
#include<stdio.h>
main()
{
int i=0,j,k;
char line[1000],name[4][20];
FILE *fp;
if((fp=fopen("datalist.txt","r"))==NULL){
printf("file can't open.\n");
return;
}
while(fgets(line,1000,fp)!=NULL){
for(j=0;line[j]!=':';j++);
for(j++,k=0;line[j]!='\n';j++,k++)
name[i][k]=line[j];
name[i][k]='\0';
i++;
}
for(i=0;i<4;i++)
printf("%s\n",name[i]);
fclose(fp);
return;
}


315:デフォルトの名無しさん
07/11/11 23:17:02
>>313
(3)
#include<stdio.h>
#include<string.h>

void put_rstring(const char str[const])
{
size_t len = strlen( str ) + 1;
while( len != 0 )
putchar(str[--len]);
return;
}


316:デフォルトの名無しさん
07/11/11 23:23:56
>>313
(1)
int str_char(const char str[const], const char c)
{
char *p = strchr( str, c );
return p != NULL ? p - str : -1;
}


317:163
07/11/11 23:27:14
>>163の(2)誰かお願いします


318:デフォルトの名無しさん
07/11/11 23:28:44
>>313
(2)
void put_string(const char str[const])
{
if(str[0] != '\0')
{
printf("%c\n",str[0]);
put_string(&str[1]);
}
return;
}


319:デフォルトの名無しさん
07/11/11 23:34:33
再帰よりループのほうがいいか
void put_string(const char str[const])
{
size_t idx = 0;
while( str[idx] != '\0' ) printf("%c\n",str[idx++]);
return;
}


320:デフォルトの名無しさん
07/11/11 23:37:35
>>312
>[2] 問題文: 整数型のデータ(サイズは200*200)を読み込み、輝度値を線型に変換(y=ax+b)した上でのプログラム。
輝度値ってなに?
というかどういう宿題なのかもう少し詳しく。

321:デフォルトの名無しさん
07/11/11 23:49:27
>>320
たぶん画像処理関係

322:デフォルトの名無しさん
07/11/12 00:01:27
>>309
これじゃだめ?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char *getFileName(char str[])
{
char *p = strstr(str, "st:");
return p != NULL ? p+3 : str;
}

int main(int argc, char *argv[])
{
FILE *fp;
char buffer[BUFSIZ];
if( argc != 2 || (fp = fopen(argv[1], "r")) == NULL ) return EXIT_FAILURE;
while( fgets(buffer, sizeof(buffer)/sizeof(char), fp) != NULL )
printf("%s",getFileName(buffer) );
return EXIT_SUCCESS;
}


323:312
07/11/12 00:04:19
問題はそのまま書いたものです。
プログラミング初心者なので輝度値を線型に変換(y=ax+b)とかの意味もわからない状態です;
一応200*200の画像を出力するプログラムまでできたんですが。。でもこの場合画像がないと出力できないですよね?
200*200の画像をC言語で作ることできますか?




324:309
07/11/12 00:09:17
>>322
OK

325:デフォルトの名無しさん
07/11/12 00:11:05
>>324
なにその上から目線。

326:デフォルトの名無しさん
07/11/12 00:19:17
>>323
そりゃできるだろうけど、作っても意味ないだろ。

327:デフォルトの名無しさん
07/11/12 00:21:20
>プログラミング初心者なので輝度値を線型に変換(y=ax+b)とかの意味もわからない状態です
プログラミング初心者は関係ないし,言い訳にするな

328:デフォルトの名無しさん
07/11/12 00:43:47
2stに噴いた

329:デフォルトの名無しさん
07/11/12 01:09:32
>>304
URLリンク(kansai2channeler.hp.infoseek.co.jp)

330:デフォルトの名無しさん
07/11/12 01:20:55
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語: C++
[4] 期限: 13日21:00
時間のある方よろしくおねがいします

331:デフォルトの名無しさん
07/11/12 02:08:27
g++?

332:デフォルトの名無しさん
07/11/12 02:29:27
[1] 授業単元: 確率論  
[2] 問題文(含コード&リンク):
ここにかきました
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] C
[4] 期限:12日
お願いします



333:デフォルトの名無しさん
07/11/12 03:04:30
>>332
糞コードじゃなくて問題文を全文あげろよ

334:デフォルトの名無しさん
07/11/12 06:06:50
[1] 授業単元:アルゴリズム
[2] 問題文:巡回セールスマン問題を解くプログラムを作成しなさい。
今回は、あらゆる場合を全通り調べる方法で解を求めるプログラムでかまいません。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc
 [3.3] 言語: Cのみ
[4] 期限: 15日
[5] その他の制限: たいていあり



まじおねがいします

335:デフォルトの名無しさん
07/11/12 06:09:48
>>334
問題文が不足しています

#include<stdio.h>
int main(void){
printf("調べた\n");
return 0;
}

336:デフォルトの名無しさん
07/11/12 06:19:51
まず、地区分けするんだ
沖縄、東京、北海道、福岡など
その地区から巡回したらいい

337:デフォルトの名無しさん
07/11/12 06:23:36
mとnの距離を、d(m,n)とするとnとの距離が10以内のものなどを都市として分類する
都市どおしの距離にすれば簡単になる

338:334
07/11/12 07:18:53
すでに入力されたn個の整数のうちから選んだk個の整数の和の最小値を求めよ
という問題を全順列を使ってプログラムしたらどんなのになりますか?
これが分かれば>>334ができるんですけど・・・


for(i = 0; i < n; i++) used[i]=NO;
perm(0);
return(0);
}
void perm(int d)
{
int i;

if(d != n){
for (i = 0; i < n; i++) {
if (used[i] == NO) {
a[d] = i;
used[i] = YES;
perm(d + 1);
used[i] = NO;
}
}
}
}
↑全列挙のプログラム

339:デフォルトの名無しさん
07/11/12 07:44:28
半径rの中に入っている町は、最大2r離れている
他の地区への距離が2r以上になるようにrを設定して分割すればよい

340:デフォルトの名無しさん
07/11/12 08:06:10
>>333

>>268の部分的なところですよ。
[1] 授業単元: 確率論
[2] 問題文:
ここに書きました。

URLリンク(toku.xdisc.net)
図はこうです。

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



341:デフォルトの名無しさん
07/11/12 08:14:06
>>338
338 の問題について全順列を使うのは相当無駄な気がするが、
全順列を求めて先頭の k 個を選んだものと考えればいい。

342:デフォルトの名無しさん
07/11/12 09:15:02
>>329
自分でやってみてもなかなかできずに途方にくれていたところでした
本当にありがとうございます!

343:デフォルトの名無しさん
07/11/12 09:52:27
[1] 授業単元: プログラミング演習
[2] 問題文:画像で指定の範囲を切り出して出力するプログラムを作れ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: (C/C++/)
[4] 期限: 14日まで
お願いします


344:デフォルトの名無しさん
07/11/12 10:56:20
要素数5のint型配列datを用意し、適当に数値を入力する。
各要素の数値個「*」を表示するプログラムを作成しなさい
数値1入力==>3
数値2入力==>8
数値3入力==>5
数値4入力==>4
数値5入力==>2

3:***
8:********
5:*****
4:****
2:**

345:デフォルトの名無しさん
07/11/12 11:10:04
#include <stdio.h>
static void print(int dat)
{
printf("\n%d:", dat);
for (int i = 0; i < dat; ++i) putchar('*');
}
int main()
{
int dat[5];
printf("数値1入力==>"); scanf("%d", & dat[0]);
printf("数値2入力==>"); scanf("%d", & dat[1]);
printf("数値3入力==>"); scanf("%d", & dat[2]);
printf("数値4入力==>"); scanf("%d", & dat[3]);
printf("数値5入力==>"); scanf("%d", & dat[4]);
print(dat[0]);
print(dat[1]);
print(dat[2]);
print(dat[3]);
print(dat[4]);
return 0;
}

346:デフォルトの名無しさん
07/11/12 11:30:08
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):

平面上に多角形が二つ与えられたとき、
これらが共通部分を持つかどうかを判定せよ。
境界でのみ交わる場合は共通部分はないとする。

[3] 環境
 [3.1] OS: 指定なし
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語: どちらでも可
[4] 期限: 11月13日中
[5] その他の制限: 特になし

347:346
07/11/12 11:31:48
補足:多角形は半時計回りの頂点のリストで与えられる。

よろしくおねがいします

348:デフォルトの名無しさん
07/11/12 11:50:13
297のプログラムわかるひといらっしゃいませんか?
よろしくお願いします.


349:デフォルトの名無しさん
07/11/12 11:50:48
[2]の問題文がリンクだけだったら何をプログラムしていいか分からない。
だから簡単な説明を入れたほうがいいと思う。
例えば、


[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
巡回セールスマン問題を解く


とか、一行程度の説明が欲しい。
っていうのをテンプレに入れてはどうでしょう。

350:デフォルトの名無しさん
07/11/12 12:05:53
リンクだけだとなかなか見る気にならんからねえ。

351:デフォルトの名無しさん
07/11/12 12:24:42
>>297 >>348
要するに、通信経路の計算とかは全然関係なく、
下のようなテキストファイルの値を読み込め、という言う事なのか?


source-node destination-node packet-loss-rate
a b 0.3
a c 0.1
.
.
z w 0.9

352:デフォルトの名無しさん
07/11/12 14:36:10
[1] 授業単元: プログラミング言語・配列

[2] 問題文(含コード&リンク): 文字の出現回数を数える
標準入力から入力された 'a' から 'z' までの文字の出現回数を数えるプログラムを作成せよ。
各文字の出現回数は、大きさ 26 の配列 kaisuu に格納するものとする。初期化を忘れずに!
また、'a' から 'z' までの小文字の英字以外はカウントせず、無視するものとする。

以下のプログラムを参考にせよ。
char c;
...
while ( (c=getchar()) != '\n' ){ /* リターンが押されるまで読み込む */
/* ここに 'a' から 'z' のどれが出現したかを数えるプログラムを */
/* 書くこと */
}
/* どの文字が何個あったかを出力する */
ヒント 文字変数 c は、 c - 'a' を計算すれば、要素の番号になる。
例えば、 c に 'a' が入っていれば、 c - 'a' は、0 になる。

日本語が含まれない C 言語のプログラムのソースを読ませてみて、うまく動くか確かめてみること。

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
[4] 期限: 11月19日
[5] その他の制限: 特になし

参照URL:URLリンク(www.wakhok.ac.jp)





353:デフォルトの名無しさん
07/11/12 15:22:39
#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
#include NMAX 20
/* リストの構成要素となる構造体 node_tag */
struct node_tag {
int num; /* 月を格納する整数 */
char name[NMAX]; /* 名前を格納する配列 */
??????? /* 自己参照:次のデータへのポインタ next */
};
int main(void)
{
/* 12の要素をもつ構造体配列の定義 */
struct node_tag Month[12] = { {1, "January", NULL},
{2, "February", NULL},
{3, "March", NULL} };
struct node_tag *p; /* ポインタ p */
/* 各要素をつなぐ (以下の図を参考に)*/
???????
p=&Month[0];
while (p!=NULL){ /* p を用いてリストの表示 */
printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */
p=??????? /* p を p の next とする */
}
return 0;
}
-----------------------------------------------------------------
忙しいところすみませんが、どうかよろしくお願いします。
今回書き込みは、初めてなので、至らない点がありましたら、よろしくお願いします。

354:デフォルトの名無しさん
07/11/12 15:23:56

課題 A:

「 月(整数) と 月名(文字) と 次の要素を指すポインタ 」を要素に持つ自己参照構造体を定義する.
この構造体を利用して線形リストを作成し,月と月名を表示させるプログラムを完成せよ.

* 以下のプログラムの各行にコメントを付加すること.

* 以下のプログラムのコメントを参考にすること.

355:デフォルトの名無しさん
07/11/12 15:26:51
#include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */
#define MAX 20
#define MMAX 100
/* リストの構成要素となるセルの構造体 node_tag */
struct node_tag {
int num; /* 配列の番号を格納する整数 */
char name[NMAX]; /* 名前を格納する配列 */
??????? /* 自己参照:次のデータへのポインタ */
};
int main(void)
{
struct node_tag Meibo[MMAX]; /* 構造体配列の定義 */
int n=0; /* 配列の番号を格納する整数 n,初期値は 0 */
struct node_tag *head, *p; /* リストの先頭を指すポインタ head,新しく追加するノードを指すポインタ p */
head=NULL;
while ( scanf("%s", ???????) != EOF ){
Meibo[n].next=???????; /* 新しく追加するノード(Meibo[n]) の next が指すものは? */
head=???????; /* 先頭データ(head)は どこを指すか? */
???????=n++; /* Meibo[n] の num に配列番号を格納する整数を入れる */
}
p=head;
while (p!=NULL){ /* リストの表示 */
printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */
p=???????; /* p を p の next とする */
}
return 0;
}

2門続けてすみません。行き詰まってます。よろしくお願いします。

356:デフォルトの名無しさん
07/11/12 15:27:58

課題 B:

「 標準入力 (キーボード) から入力されたアルファベットの文字列 と 配列の番号 」を要素に持つ自己参照構造体を定義する.
この構造体を利用して線形リストを作成し,アルファベットの文字列と配列の番号を表示させるプログラムを完成せよ.

以下のプログラムのコメントに従ってプログラムを完成させること.適宜コメントを追加すること.

付け加えです。よろしくおねがいします。

357:デフォルトの名無しさん
07/11/12 15:31:58
>>353->>356

>>1にテンプレがあります。
それに沿って書き込むと、回答が多くなります。

358:デフォルトの名無しさん
07/11/12 15:40:25
ありがとうございます。

359:デフォルトの名無しさん
07/11/12 15:45:54
>>353->>356の者です。

[1] 授業単元:プログラミング言語2
[2] 問題文(含コード&リンク):先ほどの二つです
[3] L
 [3.1] OS: (/Linux/)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (Cです)
[4] 期限: ([2007年11月15日17:00まで] )
[5] その他の制限: リスト構造ぐらいまで

いろいろ御迷惑かけましてすみませんでした
よろしくお願いします。

360:デフォルトの名無しさん
07/11/12 16:15:02
>>353-356
微妙な問題だなあ……
配列とリスト併用して、それで順不同ならまだしもnextが指すのはすぐ次の要素だし……

リストの演習やるなら、もっとリストの利点が分かる物にしたらよかろうに
こんなんじゃ、ちょっとできるやつから「何でわざわざリストを使うんですか?」なんて質問されるぞ

361:デフォルトの名無しさん
07/11/12 16:21:31
課題の雛型なので、変えることが出来ないので。
申し訳ありません。

362:デフォルトの名無しさん
07/11/12 16:31:17
J科生乙

363:デフォルトの名無しさん
07/11/12 16:32:55
>#include <stdio.h> /* おまじない */
こんなことを書いて恥ずかしくないんかね。

364:デフォルトの名無しさん
07/11/12 16:37:20
>>363
それ書いたの担当の女だよ。
しょうがないんだよ餓えてるから少しでも男連中にアピールしてるんでしょ
かわいさアピール?

365:デフォルトの名無しさん
07/11/12 16:40:34
時にはややこしいことを隠して教えることも大事。うふ。


366:デフォルトの名無しさん
07/11/12 16:48:48
コメントにほぼ答えが書いてある穴埋め問題が解けないって奴はなんなんだろうな。

367:デフォルトの名無しさん
07/11/12 16:49:21
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
いま、要素数N(N≧1)のint型の配列a[]があり、適当な値がセットされている。以下の要求を満たすfor文を書け。
要素数NはマクロNとして定義されているものとする。要素数NはマクロNとして定義されているものとする。

●直前・直後の配列要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて印字する。
●配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、
それらの要素の添え字のうち小さな方を印字する。ただしおなじ添え字は1度しか出力しないこと。

[3] 環境
 [3.1] OS:VineLinux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 11月13日まで
[5] その他の制限: 特になし


368:デフォルトの名無しさん
07/11/12 17:26:32
>>367
>配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素
これは先頭からi番目の要素と、先頭からN-i番目の要素を比較しろということだよな?

あと、このような特殊な計算をどこに使うのか是非とも教えて欲しい

369:デフォルトの名無しさん
07/11/12 17:35:25
>>367
for(i=1; i<N-1; i++) if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n", i);

for(i=0; i<N/2; i++) if(a[i]==a[N-1-i]) printf("%d\n", i);

370:デフォルトの名無しさん
07/11/12 17:54:23
>>367先越された
#include<stdio.h>
void prArry(const int a[const], size_t sz)
{
size_t idx = 1;
while( idx != sz - 2 )
{
if( 2*a[idx] > a[idx-1] + a[idx+1] ) printf("%d\n",a[idx]);
++idx;
}
return;
}
void prHeqT(const int a[const], size_t sz)
{
size_t idx = 0;
while( 2*idx <= sz )
{
if( a[idx] == a[sz-1-idx] ) printf("%d\n",idx);
++idx;
}
return;
}

int main(void)
{
const int a[] = {1,2,4,1,55,32,1,4,7,6};
prArry(&a[0],sizeof(a)/sizeof(int));
prHeqT(&a[0],sizeof(a)/sizeof(int));
return 0;
}



371:367
07/11/12 18:07:48
>>368
そうです、誤字すいません。
トレーニング用だと思われます。。。
まだCを始めたばかりで難しくて・・・
アドバイスいただければ幸いです。

>>369
#include <stdio.h>
#define N 10
int main(void)
{
int a[N];
char buf[80];
int i;

for(i=1;i<N-1;i++)
{
fgets(buf,80,stdin);
sscanf(buf,"%d",&a[i]);
}
if(a[i]*2>a[i-1]+a[i+1])
printf("%d\n",i);
}

とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。
どんな数字を入れても9になってしまいます・・・

>>370
ごめんなさい、基礎プログラミングなので、そこまで高度な技術は分かりません^^;

372:デフォルトの名無しさん
07/11/12 18:09:21
どこら辺が高度?修正するけど。

373:367
07/11/12 18:18:16
わざわざすいません、テンプレに書くべきだったのですが、
自分はまだ制御構造のwhile文までくらいのコマンドくらいしか分からないので・・・

お勧めの入門書などがあれば教えてもらいたいです。

374:デフォルトの名無しさん
07/11/12 18:20:59
独習C

375:デフォルトの名無しさん
07/11/12 18:27:46
>とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。
>どんな数字を入れても9になってしまいます・・・

if(a[i]*2>a[i-1]+a[i+1])
printf("%d\n",i);
だとそりゃ9がでる。

for( i = 0; i != N; ++i )
{
if(a[i]*2>a[i-1]+a[i+1])
printf("%d\n",i);
}


376:デフォルトの名無しさん
07/11/12 18:31:49
>>371
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main(void)
{
int a[N];
int i;
for( i = 0; i != N; ++i) { scanf("%d",&a[i]); }
printf("--------------------------\n");
for( i=0; i != N; ++i )
{
if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i);
}

}


377:デフォルトの名無しさん
07/11/12 18:35:29
何度も同じ質問すみません
[1] 授業単元:アルゴリズム
[2] 問題文:巡回セールスマン問題を解く(厳密解)プログラムを作成しなさい。
     (解=最小値とその最小値を出す通路)
巡回セールスマン問題のデータファイルは次のデータ形式とする。1行目に頂点数、2行目以下に距離行列。例えば、次のようなもの。
5
0 3 2 99 4
3 0 99 12 99
2 99 0 5 6
99 12 5 0 16
4 99 6 16 0

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc
 [3.3] 言語: Cのみ
[4] 期限: 15日
[5] その他の制限: 全列挙を利用して



本当に列挙だけで最小値だけを出すということができません

378:デフォルトの名無しさん
07/11/12 18:42:41
[1] アルゴリズムとデータ構造
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限: 21日まで

問題の解きがいがないかもしれませんが
よろしくお願いします。

379:デフォルトの名無しさん
07/11/12 18:48:00
for (i=0; i<kosu; i++)
printf("%s\n", data[i];

のところで
printf("%s\n", data[i] ) ;
カッコが抜けてる

380:デフォルトの名無しさん
07/11/12 18:54:28
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
・ニュートン法と二分法の両方を用いて、直線 y = x + 1/2 と単位円 x^2 + y^2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ。
・一つのプログラムに書くこと
・二分法を用いる初期値は、 [a,b] = [-1,1] とせよ。
・ニュートン法で用いる初期値は、2つとも0とせよ。その際、1つの関数は収束しない。収束しない場合は、求められないとわかった時点でやめるように工夫せよ。
・ニュートン法も二分法もともに何回で収束したかがわかるようにしておくこと。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc(バージョン不明です)
 [3.3] 言語:C++
[4] 期限: [2007年11月21日まで(22日提出です)]
[5] その他の制限:
・見てわかりやすいように説明文なども各自付加しろ、と指示がありました。
・デスクトップ環境: GNOME 2.4.2

よろしくお願いします。

381:367
07/11/12 18:58:25
>>374,375,376
ありがとうございます!

382: ◆wFVK8h9bmM
07/11/12 19:09:28
ものすごく遅くなってしまいましたが、>>289ありがとうございました。
考えて下さった、279、280、281、284のみなさんもありがとうございました。
ちなみに>>284の質問の答えが返ってきましてV=V0/E=1.000が正しいらしいです。

383:デフォルトの名無しさん
07/11/12 19:23:58
>>377
巡回セールスマン問題については、
最適解(厳密解)を求めるアルゴリズム自体が、2007年現在、未だに確立されていません。
近似解を用いるのが一般的です。
最適解(厳密解)を求めるアルゴリズムを考え出すのはほとんど無理です。

384:378
07/11/12 19:27:58
>>379
ありがとうございます。
問2に関しても自己解決できました。

385:デフォルトの名無しさん
07/11/12 19:29:25
>>383
・・・へぇ

386: ◆a3LMU3qR26
07/11/12 19:29:33
頂点数が5個程度なら全列挙で解が得られるのではないでしょうか?

387:377 ◆a3LMU3qR26
07/11/12 19:30:27
すいません
377です

388:377 ◆a3LMU3qR26
07/11/12 19:40:48
ファイルから読み込むプログラムで
#include<stdio.h>
#define MAXN (100)
#define YES (1)
#define NO (0)
int n, a[MAXN], used[MAXN];
int adj[MAXN][MAXN];
void perm(int d);
void minimum(int s);
int main(int argc, char **argv){
int i, j;
FILE *fp;
if (argc != 2) {
printf("Usage: %s <filename>\n", argv[0]);
exit(1);
}
fp = fopen(argv[1],"r");
if (fp == NULL) {
printf("File not found.\n");
exit(1);
}
fscanf(fp, "%d", &n);
if ((n > MAXN) || (n < 0)) {
printf("Out of range: n.\n");
exit(1);
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
fscanf(fp, "%d", &adj[i][j]);
}
}
fclose(fp);

389:377 ◆a3LMU3qR26
07/11/12 19:43:37
printf("%d\n",n);
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
printf("%d ",adj[i][j]);
}
printf("\n");
}
printf("\n");
for(i = 0; i < n; i++) used[i]=NO;
perm(0);
return(0);
}
void perm(int d)
{
int i,j;
int s = 0;
if(d == n){
for(j = 0; j < n-2; j++) s+=adj[a[j]][a[j+1]];
s+=adj[a[0]][a[n-1]];
printf("%d\n",s);
}
else{
for (i = 0; i < n; i++) {
if (used[i] == NO) {
a[d] = i;
used[i] = YES;
perm(d + 1);
used[i] = NO;
}
}
}
}

390:377 ◆a3LMU3qR26
07/11/12 19:45:39
スレ汚しスマソ
ここまではできてるんですけどこれだけだと和の列挙にしかなりません
ここから最小値を取り出して出力させるには何を付け加えたらいいのか教えてください

391:デフォルトの名無しさん
07/11/12 20:16:37
>>390
TSPのアルゴリズムそのものを付け足せばいい

392:334
07/11/12 20:44:16
>>391
ググってみたけどもわからないんですけど
具体的にどういう風にすればいいのですか?

393:377 ◆a3LMU3qR26
07/11/12 20:45:08
すみません
>>334=>>337です


394:デフォルトの名無しさん
07/11/12 21:00:16
授業名:アルゴリズム
問題:
次の問題の題意を日本語で説明し問題の解答を与えるプログラムを作成せよ。
For what value of integer N is 10NlgN>2N^2?
環境:C言語でコンパイラはgcc
期限:来週の月曜まで

よろしくおねがいします。

395:デフォルトの名無しさん
07/11/12 21:01:09
>>394
せめて日本語で説明する部分くらいやってもいいのでは?

396:デフォルトの名無しさん
07/11/12 21:13:26
>>395
自分の日本語訳は
整数Nはなんのために10NlgN>2N^2ですか?
みたいな感じなんですけどあってるんでしょうか・・・
初めての英語問題で面食らってます

397:デフォルトの名無しさん
07/11/12 21:25:29
>>377
ほらよ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>383
馬鹿か?

398:デフォルトの名無しさん
07/11/12 21:32:48
>>396
どんな値の範囲で10NlgN>2N^2が成り立ちますか?
じゃないかFor = 範囲

399:デフォルトの名無しさん
07/11/12 21:39:57
10NlogN - 2N*N = 0を満たすNをもとめりゃいい。

400:デフォルトの名無しさん
07/11/12 21:42:41
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、URLリンク(clickclickclick.com)
 ただひたすらクリックし、国別の総クリック数を世界中で競い合う!
 究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ!

 ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中!
 VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている!
 意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!!

 独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!!
 日本の技術力の高さを世界に見せつけてやろうぜ!
 プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中!
 ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ!

 本スレッド
 【簡単多重】一番クリックした国が優勝【8砲門】
 スレリンク(news4vip板)l50
 ※落ちているときはここから1発検索
 URLリンク(www.clickjapan.jp)

 日本チームの有志によるまとめサイトポータル
 URLリンク(www.clickjapan.jp) 
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

401:デフォルトの名無しさん
07/11/12 22:22:09
>>394
#include<stdio.h>
#include<math.h>

typedef double (*SingleFun)( double );
double newton(SingleFun fun,SingleFun fprime, double x)
{
double fx;
double fp;
double xprev;
do
{
fx = fun(x);
fp = fprime(x);
if(fp == 0) fp = 1;
xprev = x;
x -= fx / fp;
} while( x != xprev );
return x;
}

double fN(double N) { return 10.0 * N * log( N ) - 2*N*N; }
double dfdN(double N) { return 10.0 * log( N ) - 4.0 * N + 10.0; }

int main(void)
{
double res = newton( fN, dfdN, 1.0 );
printf("result = %1lf\n",res );
printf("10Nlog(N) > 2N^2 is true for N > %lf\n",res);
return 0;
}

402:デフォルトの名無しさん
07/11/12 22:25:38
>>398-399
ありがとうございます。やっと理解できました
>>401
ありがとうございます。

403:デフォルトの名無しさん
07/11/12 22:27:58
>>402
結果を実数で返してしまった。整数に直してくれ。
だから答えとしてはN > 1だな。

404:デフォルトの名無しさん
07/11/13 00:36:44
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ライブラリ関数atofと同じ動作を行う関数
double strtof(const char *nptr) {/*・・・*/}
を作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc3.4
 [3.3] C言語
[4] 11/15まで

お願いします

405:デフォルトの名無しさん
07/11/13 00:43:07
#include<stdio.h>
#include<stdlib.h>

double strtof_ (const char *nptr)
{
return strtod_ (nptr, (char **) NULL);
}


406:デフォルトの名無しさん
07/11/13 00:44:11
間違えた。
ていうか衝突するからstrtofって名前使わないほうがいいと思う。
#include<stdio.h>
#include<stdlib.h>
double strtof_ (const char *nptr)
{
return strtod (nptr, (char **) NULL);
}


407:デフォルトの名無しさん
07/11/13 00:52:40
>>406
すいません、条件を書き忘れました
申し訳ありません
標準ライブラリ関数を使わないでお願いします

408:デフォルトの名無しさん
07/11/13 01:52:52
>>404
double strtof(const char *nptr)
{
double ret = 0, div = 10, f = 1;

if(*nptr=='-') {
f = -1;
nptr++;
}
else if(*nptr=='+') nptr++;

while('0' <= *nptr && *nptr <= '9') ret = ret * 10 + *nptr++ - '0';

if(*nptr++!='.') return f * ret;

while('0' <= *nptr && *nptr <= '9') {
ret += (*nptr++ - '0') / div;
div *= 10;
}

return ret * f;
}


409:デフォルトの名無しさん
07/11/13 03:35:54
double strtof(const char *nptr)
{
const char *p;
int s, n, d;

s = 1;
n = 0;
d = 0;
for (p = nptr; *p != '\0'; p++)
if (*p == '+' || *p == '-') {
if (p != nptr)
break;
if (*p == '-')
s = -1;
} else
if (*p == '.')
d = 1;
else
if (*p >= '0' && *p <= '9') {
n = n * 10 + *p - '0';
d = d * 10;
} else
break;
if (d == 0)
d = 1;
return (double)s * (double)n / (double)d;
}

410:デフォルトの名無しさん
07/11/13 03:44:32
>>408>>409
つ[EBCDIC]

411:デフォルトの名無しさん
07/11/13 03:48:22
EBCDICは0~9の並びについては保証されてるよ
アルファベットがいけない

412:デフォルトの名無しさん
07/11/13 07:06:07
>>397
これ厳密解じゃないよ
しかもnodeを30とかにすると解くのに時間かかりすぎ
やり直してきたほうがいいのでは?

413:デフォルトの名無しさん
07/11/13 07:54:05
再帰じゃそんなもんざます

414:デフォルトの名無しさん
07/11/13 08:19:37
>>409
いろいろとひどいな

415:デフォルトの名無しさん
07/11/13 16:14:07
[1] 授業単元: プログラム演習
[2] 問題文:
ここに書きました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: LINUX
 [3.2] 言語: C
[4] 期限: 11月13日24時まで
[5] その他の制限: 特にありません
お願いします。


416:デフォルトの名無しさん
07/11/13 16:25:41
学校からのカキコミです。
わからないので教えてください。

課題25 1からキーボードで入力した値までの合計を求めるプログラムを作りなさい

>kadai25
いくつまで合計しますか> 10 /*10と入力
合計は55


↑こうしたいのですが、よろしくお願いします。
ちなみにscanfとforを使うみたいです

417:デフォルトの名無しさん
07/11/13 16:29:14
351さん、そうです。 そのやり方がよくわからないのです。

418:デフォルトの名無しさん
07/11/13 16:44:09
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞
は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新
聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ
の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。
[3] 環境
 [3.1] OS: Windows
 
 [3.3] 言語: C/C++
[4] 期限: 11月18日
[5] その他の制限:なし
よろしくお願いします。


419:デフォルトの名無しさん
07/11/13 16:44:33
>>415
勝手にテンプレ省略すんなハゲ

420:こまった
07/11/13 17:08:34
初歩の初歩の質問で本当にごめんなさい。
まったくわからなくって本当にこまってます。
問題:四則演算する電卓を作りなさい。また、あまりも出しなさい。
例:%a.out 5+8
5+8=13
式を入れれば自動計算するようにしたいのですが///さっぱりわからないのです。
すみません。

421:デフォルトの名無しさん
07/11/13 17:13:54
お前の質問も全くわからん

422:こまった
07/11/13 17:22:26
式を打ち込めば四則演算をしてくれて、かつ、あまりがあれば、それも表示してくれるプログラミング
なんですけど(;△;)
どうしたらよいのでしょう。

423:デフォルトの名無しさん
07/11/13 17:56:16
>>422
とりあえずがんばってみたら?
だめなら、ダメなりに、どこがどういうことで行き詰ったかかかなあかんよ

424:デフォルトの名無しさん
07/11/13 18:02:44
mapのデータ部分にクラスを利用する?ことができるらしいんですがイマイチどうすればいいか
わかりません・・・

425:デフォルトの名無しさん
07/11/13 18:05:28
>>424
普通の型と同じでおk

426:デフォルトの名無しさん
07/11/13 18:09:39
>>425
例えばDATAっていうクラスがあったとしたら
map<key,DATA>でいいってことですか?

427:デフォルトの名無しさん
07/11/13 19:40:02
[1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を
求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも
のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか
ったときは「なし」と印字せよ。
なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、
奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。
 [3.1]Linux
 [3.3]C言語
[4]できれば今日中
[5] 配列

428:デフォルトの名無しさん
07/11/13 20:45:57
【質問テンプレ】
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月20日
[5] その他の制限:if文、if-else文、switch文まで習いました

429:デフォルトの名無しさん
07/11/13 21:00:14
>>426
その通り
ついでにスレ違い

430:デフォルトの名無しさん
07/11/13 21:33:40
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 第1項・第2項の値を1とし、
直前の2つの項の和を項の値とする数列を「フィボナッチ数列」と言う。
この数列のi番目の項を計算する関数は、
以下のように再帰的に記述することができる。

f(i) = f(i-1) + f(i-2) (i > 1のとき)
f(i) = 1 (i = 1のとき)
f(i) = 0 (i = 0のとき)

キーボードから数字を入力して変数aに格納し、
フィボナッチ数列・第a項の値を計算するプログラムを作成せよ。

項の計算は上の定義を使い、
再帰的な呼び出しを実行する関数
int F(int n)
を作成して呼び出すこと。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで

431:デフォルトの名無しさん
07/11/13 21:35:17
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): キーボードから入力した数値(10進数)を
2進数に変換して画面に出力するコードを作成しなさい。

また,キーボードから入力した2進数の数値を
10進数に変換して画面に出力するコードを作成しなさい。

また、必要に応じて再帰を使っても使わなくてもよい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで

432:380
07/11/13 21:35:40
>>380です。単位かかってるレポなんでどなたかお願いします。

433:デフォルトの名無しさん
07/11/13 21:35:40
>>428
if(a==0) {
if(b==0) {
if(c==0) printf("It is trivial!\n");
else printf("Boo-boo!\n");
}
else {
x1 = -c / b;
printf("x=%.2f\n", x1);
}
}
else {
D = b * b - 4 * a * c;
if(D >0) {
x1 = (-b+sqrt(D)) / (2 * a);
x2 = (-b-sqrt(D)) / (2 * a);
printf("x=%.2f,%.2f\n", x1, x2);
}
else if(D==0) {
x1 = -b / (2 * a);
printf("x=%.2f\n", x1);
}
else printf("There exist no real-valued solutions.\n");
}
return 0;
}


434:デフォルトの名無しさん
07/11/13 21:36:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ハノイの塔を解くプログラムを作成する。
キーボードから円盤の枚数を入力し、
円盤を移動する手順を画面に表示すること。


・円盤は小さい物から順に1から番号で示す
・柱はL・C・Rで示し、円盤全体をLからRへ移すとする
・可能ならば手順の回数も表示すること


【実行結果(枚数を3と入力した場合)】
円盤枚数を入力 3

円盤1をL→Rへ移す
円盤2をL→Cへ移す
円盤1をR→Cへ移す
円盤3をL→Rへ移す
円盤1をC→Lへ移す
円盤2をC→Rへ移す
円盤1をL→Rへ移す
(終了)

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで

435:デフォルトの名無しさん
07/11/13 21:42:19
>>433
ありがとうございました。

436:デフォルトの名無しさん
07/11/13 21:49:56
>>434
Hanoiだし再帰使っていいよね?
#include<stdio.h>
void hanoi(int L,int C,int R,int n){
    if(n==0)return;
    hanoi(L,R,C,n-1);
    printf("円盤%dを%c→%cへ移す\n",n,L,R);
    hanoi(C,L,R,n-1);
}
main(){
    int n;
    printf("円盤枚数を入力");
    scanf("%d",&n);
    hanoi('L','C','R',n);
    printf("手順の回数 %d\n",~(~0<<n));
}

437:shin
07/11/13 21:54:59
[1]授業単元: 関数入門
[2]問題文:

100点満点の試験を入力して、5段階評価を返す関数 hyouka を作成せよ。
5段階評価は、100~90までは5、89~80は4、79~70は3、69~60は2、60未満は1とする。
この関数を利用して、学生10人の試験の点数を入力して、
それぞれの5段階評価を求め一覧表を表示するプログラム quality.cpp を作成せよ。

[3]環境
 [3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++

[4]期限: 2007年11月14日 17:00 まで
[5]その他の制限: 関数の作り方、使い方が分からないので、そこを教えていただけるだけでも結構です(´`;)

よろしくおねがいします!

438:デフォルトの名無しさん
07/11/13 22:03:46
ウィルスつくってください
anonm4@yahoo.co.jp

439:デフォルトの名無しさん
07/11/13 22:18:09
[1] 授業単元:プログラミング、関数基礎
[2] 問題文(含コード&リンク):
メイン関数において、2つの放物線
 y=ax2+bx+c
 y=px2+qx+r
の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。
関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし
てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場
合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が
有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数
から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個
存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限: 2007年11月19日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
C言語の基礎しか習っていません。
どなたかよろしくお願いします。

440:デフォルトの名無しさん
07/11/13 22:23:38
>>430
#include <stdio.h>
int F(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
return F(n-1) + F(n-2);
}
main()
{
int a,x;
printf("数字を入力:");
scanf("%d",&a);
x = F(a);
printf("フィボナッチ数列第%d項 = %d\n",a,x);
return;
}

441:デフォルトの名無しさん
07/11/13 22:35:55
>>440
それだと末尾最適化されないはず
こっちで
#include<stdio.h>
#include<stdlib.h>

typedef unsigned int uint;

uint iter(uint a, uint b, uint n) { return n == 0 ? 1 : n == 1 ? a : iter(a+b,a,n-1); }
uint fibonacci(uint n) { return iter(1,1,n); }

int main(void)
{
size_t idx = 0;
for( ; idx != 10; ++idx)
printf("%d: %d\n",idx,fibonacci(idx));
return EXIT_SUCCESS;
}


442:デフォルトの名無しさん
07/11/13 22:37:18
すまん。大元の問題読んでなかった。
>>440でいいね。

443:46
07/11/13 22:46:48
どなたか>>46をお願いします

444:デフォルトの名無しさん
07/11/13 22:53:23
>>443
使っているライブラリは何?よくわからないけど興味あるから勉強してみたい。
で、もしできたら答える。

445:デフォルトの名無しさん
07/11/13 22:59:41
>>444
意味わからん。

446:デフォルトの名無しさん
07/11/13 23:10:15
>>444
とりあえずforkをぐぐるところから始めるといいと思うよ

447:デフォルトの名無しさん
07/11/13 23:16:14
>>443, >>444
そんなおまいらに、
URLリンク(www.ipa.go.jp)

448:デフォルトの名無しさん
07/11/13 23:28:57
当方の環境は、WindowsXP / 処理系は gcc 3.4.4 です。
プログラムを起動すると、名前と点数を聞いてきます。
10人分入力すると、名前と評価(level)を表示します。
入力した名前が 1024 文字以上だと、バグります。ごめんなさい。

URLリンク(kansai2channeler.hp.infoseek.co.jp)


449:デフォルトの名無しさん
07/11/13 23:30:46
>>448>>437

450:デフォルトの名無しさん
07/11/13 23:32:18
>>448
何も考えずに string を勧める

451:shin
07/11/13 23:47:58
>>448
ありがとうございます!!!

452:shin
07/11/13 23:54:22
>>437です
自力でやったのですが、
エラーを消すためにいろいろとしていたらよくわからなくなりました..
誰かなおしてください…
お願いします!


453:shin
07/11/13 23:59:48
#include <iostream.h>
#include <iomanip.h>
int hyouka( int ) ; // 5段階評価する関数
main()
{
const int x = 10 ; // 入力できる人数
int a[x] ; // テストの点数
int b[x] ; // 1~5の成績
int i, result ;
      for( i=0 ; i<x ; i++){
cout << i+1 << "人目の成績 >>> " ;
cin >> a[i] ;
result = hyouka( a[x] ) ;
}
return 0 ;
}


454:shin
07/11/14 00:00:28
// 関数hyouka
int x ;
int hyouka(int a[x])
{
int x ;
int b[x] ; //1~5の成績

if(90<=a[i]){
b = 5 ;
}else if (80<=a[i]){
b = 4 ;
}else if (70<=a[i]){
b = 3 ;
}else if (60<=a[i]){
b = 2 ;
}else{
b = 1 ;
}
}

455:デフォルトの名無しさん
07/11/14 00:21:12
面白い

456:デフォルトの名無しさん
07/11/14 00:21:42
エラー直して欲しいだけならエラーメッセージ見たら大体分かるだろ。

457:デフォルトの名無しさん
07/11/14 00:30:00
>>437 (>>452)
#include <iostream>
#include <iomanip>
int hyouka( int ) ; // 5段階評価する関数
int main(void)
{
const int x = 10 ; // 入力できる人数
int a[x] ; // テストの点数
int b[x] ; // 1~5の成績
int i ;
for( i=0 ; i<x ; i++){
std::cout << i+1 << "人目の成績 >>> " ;
std::cin >> a[i] ;
b[i] = hyouka( a[i] ) ;
}
std::cout << "番号:点数:評価" << std::endl;
for( i=0 ; i<x ; i++)
std::cout << std::setw(4) << i + 1 << ':'
<< std::setw(4) << a[i] << ':'
<< std::setw(4) << b[i] << std::endl;
return 0 ;
}

458:デフォルトの名無しさん
07/11/14 00:31:25
承前
int hyouka(int a)
{
if(90<=a){
return 5 ;
}else if (80<=a){
return 4 ;
}else if (70<=a){
return 3 ;
}else if (60<=a){
return 2 ;
}
return 1 ;
}


459:デフォルトの名無しさん
07/11/14 00:42:21
>>458
横からスマンがこういうほうが個人的に好き

int hyouka(int a)
{
return 90 <= a ? 5 :
80 <= a ? 4 :
70 <= a ? 3 :
60 <= a ? 2 :
1;
}



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch