宿題見てやるよ
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただし、「考え方」を教えてやるから「答え」は自分で見つけろよ。
麻衣スレ
http://piza2.2ch.net/test/read.cgi/tech/982853418/
0002デフォルトの名無しさん
NGNG女の身内と交代してください。( ● ´ ー ` ● )
0003デフォルトの名無しさん
NGNG0004tiger book
NGNG問2
a = 5+(6+(7+b));
をコンパイルした結果はどうなるかを、自分の頭で考えて示せ。
a = 0+(1+(2+(3+(4+(5+(6+(7+b)))))))-(0+(1+(2+(3+(4+(5+(6+(7+b))))))));
は、どうなるだろうか? 自分が、どのように考えて、その結果を出したのか、そして、それをアルゴリズムにするにはどうすれば良いのかを考えよう。
ヒント
まず式を木の形に書いて、構造を調べる
push, pop を使ってスタックを使う方法もある
実際のコンパイラの出力と比較してみよう。
--------------------------------------------------------------------------------
問2
上のプログラムをIntel CPU上で、gcc -O -S test.c を使ってコンパイルすると最適化がかかる。最適化した場合としない場合で、どのような違いが出るか? (ヒント diff を使うと簡単...)
問1で、これらの結果を実際のアセンブラで実行しテストするには、どうすれば良いか考えて実行せよ。
これらの命令が実際に生成されるCのソースコードを考えて、それをコンパイラに通し、実際に命令が生成されることを確認せよ。(ただし、データのアドレスは、変わっても良いとする)
0005デフォルトの名無しさん
NGNG問
3×3魔方陣の左上のマスに値を一つ入れたとき
他の値を入れてくれるプログラムを作成せよ。
総当り方式だと90行ぐらいになってしまうので、
エレガントに2〜30行ぐらいで作りたいです。
ヒント下さい。
0006デフォルトの名無しさん
NGNG3×3でしょ?
総当たりでも、90行にはならないと思うけど。
対角線の和も、行・列の和と等しくないといけないの?
それとも、対角線の和はどんな値でもいいの?
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG行って、ソースの行?
こういう問題ってシンプルに解いた方がソースは短くなるから、
総当り方式が一番ソースは短くなると思うけどね。
で、どうなんだろうと試しに書いてみたけど、読みやすく書いて
50行くらい。20〜30行にするとかなり読みにくくなりそう。
あと、>>6 で触れてくれてるけど左上を固定しちゃうと、入れる数
によっては解がないみたいね。
0009デフォルトの名無しさん
NGNGここで適当に答え書き写して単位もらって
いずれ開発会社に入ってくるのかと思うと気が重いよ。
0010デフォルトの名無しさん
NGNG入社前にテストでもやってはじけばいいじゃん。
0011デフォルトの名無しさん
NGNGこれは、考え方を教えてと言われても非常に困るし、解答書いて
しまっても意味ないしなぁ。どの程度わかってるの?
問一については式木を作って、それから変換してみろとヒント程度
の事しかいえない。
問二に関しても同じだなぁ。
gcc -O -S test.c
gcc -S test.c
で出てくる、二つのtest.s を比較してみて、その違いがどういう意味を持つのか・・
考えてみろ・・としか。
いずれにしろ、ぱっとこういう問題張られても答えようが無い。どこがわからない
か書いてくれ。もしどこがわからないかわからないくらいわからないのなら、単位取
得あきらめろ。
ってことで。
0012デフォルトの名無しさん
NGNG>>7
1〜9までの数で、全ての列の和が15になる一般的なやつです。
>>8
ソースです。
解がないときは「無し」と表示する感じです。
>>9
一応解けたんですが、もっといい解き方を学びたいので。
総当り方式と公式みたいのものを使う2通りがあるそうです。
適当に関数作ってif,for使いまくって総当りしたら、
100行近くなってしまって・・・。
1〜9の値を重複判定するときになにかいい方法はありますか?
0013デフォルトの名無しさん
NGNG対角線の和は考慮しない、なんちゃってなやつなら、こんな風に
作れるぞ。
なんちゃってだから、こんなん提出したら、おこられるかもな。
全角の空白使ってるから、半角の空白に変換してくれ。
#include <stdio.h>
void main(void)
{
int i, j, n;
int a[7][7] = {{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 6, 1, 8, 0, 0},
{0, 0, 7, 5, 3, 0, 0},
{0, 0, 2, 9, 4, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0}};
int x[10] = {0, 3, 2, 4, 4, 3, 2, 2, 4, 3};
int y[10] = {0, 2, 4, 3, 4, 3, 2, 3, 2, 4};
printf("input n: ");
scanf("%d", &n);
if (x[n] == 3) {
for (i = 2; i < 5; i++) { a[i][5] = a[i][2]; }
}
if (x[n] == 4) {
for (i = 2; i < 5; i++) { a[i][1] = a[i][4]; }
x[n] = 1;
}
if (y[n] == 3) {
for (i = 1; i < 6; i++) { a[5][i] = a[2][i]; }
}
if (y[n] == 4) {
for (i = 1; i < 6; i++) { a[1][i] = a[4][i]; }
y[n] = 1;
}
for (i = y[n]; i < y[n] + 3; i++) {
for (j = x[n]; j < x[n] + 3; j++) { printf("%2d", a[i][j]); }
putchar('\n');
}
}
00145
NGNG0015デフォルトの名無しさん
NGNGあ、「解なし」って表示することもある、ってことは、対角線の
和も考慮するわけね。
はよーそれを言えっちゅうの。
0016デフォルトの名無しさん
NGNGあらかじめ答えを書いておいて、それを回転させるのか(汗)
それは・・いいのか? さすがにまずいだろう・・・
0017デフォルトの名無しさん
NGNGvoid main(void){
int you,i;
srandom(time());
printf("===じゃんけんゲーム==="\n");
printf("1:グー 2:チョキ 3:パー\n");
i=random() % 3 +1;
printf("ジャンケンポン:");
scanf("%d",&you);
printf("あなた:%d,わたし%d\n",you,i);
if((you==1&&i==2)||
(you==2&&i=3)||
(you==3&&i=1))
{
printf("あなたの勝ちです。\n");
}
else if(you==i)
{
printf("あいこです。\n");
}
else{
printf("あなたの負けです。\n");
}
}
このプログラムを以下のようにしてください。
1:勝敗をカウントし、先に3勝した方が勝ちとします。
2:ジャンケンの手は整数に置き換えて入力する。例えば
グーは1、チョキは2、パーは3、それ以外は入力エラー
とし、再度入力するものとします。
誰か教えて〜〜〜。。。
0018デフォルトの名無しさん
NGNGそう。なんちゃってプログラムだからね(汗
13の方法はタテ・ヨコの和は保存されるけど、対角線の和は保存
されないから、12の要求を満たしてないらしい。
0019デフォルトの名無しさん
NGNGさすがに100行はかからないと思う。
1〜9の重複判定は、サイズ9の配列作って、その数を使っているか使って
いないかを0か1かで記憶しておくのが素直だと思われます。
0020デフォルトの名無しさん
NGNGあと、総当りの1パターンを作るのはバックトラックをするのが素直
だと思われます。
00215
NGNG回転・・・ですか。
でもある意味いい方法でしょうね。
3×3が結局1通りしかないとわかっていれば・・・。
>>19
その方法を最初に思いついて関数として使いました。
でも重複判定+総当りif,for羅列でなぜか100行・・・。
>>20
バックトラックですね、調べてみます。
皆様ありがとうございます。
まだC++始めて3週間ですので・・・。
0022デフォルトの名無しさん
NGNG#include <stdio.h>
#define SQ 3 //一辺
#define COUNT SQ*SQ
int flag=0xFFFF,x[COUNT];
void foo(int d){
int i,j,a,b;
if (d==COUNT){
for ( i=a=0; i<SQ; i++) a+=x[i];
for ( i=b=0; i<SQ; i++) b+=x[i*(SQ+1)]; if (b!=a)return;
for ( i=b=0; i<SQ; i++) b+=x[(SQ-1)*(1+i)];if (b!=a)return;
for ( j=0; j<SQ; j++){
for( i=b=0; i<SQ; i++) b+=x[i+SQ*j]; if(b!=a)return;
for( i=b=0; i<SQ; i++) b+=x[i*SQ+j]; if(b!=a)return;
}
for (i=0;i<COUNT;i++)
{
printf("%d",x[i]);
if (i%SQ==SQ-1) printf(" ");
}
printf("\n");
return;
}
for (i=0;i<COUNT;i++)
if (flag & (1<<i) ){
flag &= ~( 1<<i );
x[d]=i;
foo(d+1);
flag |= (1<<i);
}
}
void main(){
foo(0);
}
0023デフォルトの名無しさん
NGNG順列の生成方法を、奥村晴彦著、C言語による最新アルゴリズム事典、
ISBN 4-87408-414-1の119ページからぱちって来た。
#include <stdio.h>
#define N 9
int check(int a[])
{
if ((a[0] + a[1] + a[2] == 15) &&
(a[3] + a[4] + a[5] == 15) &&
(a[6] + a[7] + a[8] == 15) &&
(a[0] + a[3] + a[6] == 15) &&
(a[1] + a[4] + a[7] == 15) &&
(a[2] + a[5] + a[8] == 15) &&
(a[0] + a[4] + a[8] == 15) &&
(a[2] + a[4] + a[6] == 15)) { return 1; } else { return 0; }
}
void perm(int a[], int n, int i, int j)
{
int k;
a[i] = j;
if (j == N) {
if (a[0] == n && check(a)) {
putchar('\n');
printf ("%d %d %d\n", a[0], a[1], a[2]);
printf ("%d %d %d\n", a[3], a[4], a[5]);
printf ("%d %d %d\n", a[6], a[7], a[8]);
}
}
else {
for (k = 0; k < N; k++) {
if (a[k] == 0) { perm(a, n, k, j + 1); }
}
}
a[i] = 0;
}
void main(void)
{
int i, n;
int a[N];
printf("input n: "); scanf("%d", &n);
for (i = 0; i < N; i++) { a[i] = 0; }
for (i = 0; i < N; i++) { perm(a, n, i, 1); }
}
0024デフォルトの名無しさん
NGNG#include <stdio.h>
#define SQ 3 //一辺
#define COUNT SQ*SQ
int flag[9]={1,1,1,1,1,1,1,1,1},x[COUNT];
void foo(int d){
int i,j,a,b;
if (d==COUNT){
for ( i=a=0; i<SQ; i++) a+=x[i];
for ( i=b=0; i<SQ; i++) b+=x[i*(SQ+1)]; if (b!=a)return;
for ( i=b=0; i<SQ; i++) b+=x[(SQ-1)*(1+i)];if (b!=a)return;
for ( j=0; j<SQ; j++){
for( i=b=0; i<SQ; i++) b+=x[i+SQ*j]; if(b!=a)return;
for( i=b=0; i<SQ; i++) b+=x[i*SQ+j]; if(b!=a)return;
}
for (i=0;i<COUNT;i++){
printf("%d",x[i]);
if (i%SQ==SQ-1) printf(" ");
}
printf(" : (%2d)\n",a);
return;
}
for (i=0;i<COUNT;i++)
if (flag[i]){ flag[i]=0; x[d]=i+1; foo(d+1); flag[i]=1; }
}
void main(){ foo(0); }
002523
NGNG逝ってきます…。
0026デフォルトの名無しさん
NGNG#include <stdio.h>
int flag[9]={1,1,1,1,1,1,1,1,1},x[9];
void foo(int d){
int i,j,a,b;
if (d==9){
if (x[0]+x[1]+x[2]!=15)return;
if (x[3]+x[4]+x[5]!=15)return;
if (x[6]+x[7]+x[8]!=15)return;
if (x[0]+x[4]+x[8]!=15)return;
if (x[2]+x[4]+x[6]!=15)return;
if (x[0]+x[3]+x[6]!=15)return;
if (x[1]+x[4]+x[7]!=15)return;
if (x[2]+x[5]+x[8]!=15)return; printf("%d%d%d,%d%d%d,%d%d%d\n",x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8]);
return;
}
for (i=0;i<COUNT;i++)
if (flag[i]){
flag[i]=0;
x[d]=i+1;
foo(d+1);
flag[i]=1;
}
}
void main(){
foo(0);
}
0027デフォルトの名無しさん
NGNG何行目まで理解できてる?
どこでつまづいたか言ってみよ。
0028デフォルトの名無しさん
NGNGわかりにくいプログラムになるので注意しましょう。
0029デフォルトの名無しさん
NGNGってゴルァ! その1行目は何だよ。やる気うせる〜。
00305
NGNG完璧ですね・・・。30行ぐらいしかないですね。すごいです。
これですっきりさせることができそうです。ありがとうございました。
関数の中でその関数を使う方法があるとは目からウロコでした。
そうすればforで関数を終わらせることなく計算できますね。
勉強になりました。
>>23
参考になりました。ありがとうございます。
00315
NGNG気になった点が一つあるのですが・・・。
if(flag[i]){
flag[i]=0;
・
・
}
の部分のif(flag[i]){}
は何に対して条件分岐をしているんですか?
始めて見る書き方なので教えてください。
0032デフォルトの名無しさん
NGNGCのifには常に暗黙の!=0が付く。と考えておけばよい
00335
NGNG調べたらわかりました。
if(flag[i]==1)の略だったんですね。
くだらない質問してすみません。
0034デフォルトの名無しさん
NGNGノータリン
flag[i]が2でも flag[i] は真じゃボケ
0035デフォルトの名無しさん
NGNGで、そこそこある程度できたんだけど、
どうしてもtry節の模擬がうまくいきません。
マクロでうまく隠蔽したいんだけど、
どんな手法が考えつきますか?
0036デフォルトの名無しさん
NGNGhttp://www.sage-p.com/index2.html
0038ネタです
NGNG#include <stdlib.h>
#define TIMES 1000000
int a[]={1,2,3,4,5,6,7,8,9};
void dump(int a[]);
int check(int a[])
{
if ((a[0] + a[1] + a[2] == 15) &&
(a[3] + a[4] + a[5] == 15) &&
(a[6] + a[7] + a[8] == 15) &&
(a[0] + a[3] + a[6] == 15) &&
(a[1] + a[4] + a[7] == 15) &&
(a[2] + a[5] + a[8] == 15) &&
(a[0] + a[4] + a[8] == 15) &&
(a[2] + a[4] + a[6] == 15)) { return 1; } else { return 0; }
}
void make_random(int a[]){
int i,j;
int swap;
for(i = 0;i < 9;i++){
j = rand()%9;
swap = a[j];
a[j] = a[i];
a[i] = swap;
}
}
void set_start(int a[],int index,int val){
int i;
int temp;
for(i = 0;i < 9;i++){
if(a[i] == val){
temp = a[index];a[index] = val;a[i] = temp;return;
}
}
}
void dump(int a[]){
int i;
for(i=0;i < 9;i++){
printf("%d ",a[i]);
}
printf("\n");
}
int main(){
int start_index,val,i;
int j;
val = 1;
start_index =3;
srand(time(NULL));
for(i=0;i < TIMES;i++){
make_random(a);
set_start(a,start_index,val);
if(check(a)){
dump(a); return 1;
}
}
printf("may be error\n");
return 1;
}
0039デフォルトの名無しさん
NGNGうひゃ。読みにくいけどためになるページですね!
でもtry〜catchあたりがいまいち載ってないですね
0040デフォルトの名無しさん
NGNG004139
NGNGlongjmpはよく分からなかったので最初から逃げてました。
googleだと引っかかりすぎて難しいです。
いいサイトがあったら教えてください。
なければ自分で勉強します。
0042デフォルトの名無しさん
NGNGいきなり
> クラスは、構造体の発展形です。
とか結構イタいがな。
0043デフォルトの名無しさん
NGNGでも、Java知らん人を3日で戦力にしろっていう
上司命令がきたら オレでもこう教えるよ。
面倒くさいし、局所的に見れば間違ってないし。
0044デフォルトの名無しさん
NGNGそれって、以前ゲーム専門学校の宿題スレで俺が出した
仕様では…
まだやってたのか、それ。
00455
NGNGうわー恥ずかしい・・・。
適当に自分でいじってみて1は通って0は通らなかったから
==1だと思ってしまった・・・。真だったんですね。
ノータリンです逝ってきます。
0046ふざけるな
NGNG麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
麻衣を出せ
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG0049美衣
NGNGCとJavaならお任せよ♥
0050美衣
NGNG質問がなければこのまま下がります〜
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGvoid initialize_timer(){
int t=time();
while (t==time());
for (count_sec=0; t==time(); count_sec++);
}
void wait(int sec){
for (int i = 0 ; i <= count_sec; i++);
}
005351
NGNG0054デフォルトの名無しさん
NGNGそれだったら、
void wait(int sec){
for ( int t = time(); t + sec >= time(); ;
}
だけでよいのでわ。。。
0055美衣
NGNGライブラリ使うならsleepとか使わなきゃ。
0056デフォルトの名無しさん
NGNG痛すぎる・・・
005751
NGNG痛くない解答をお願いします
0058デフォルトの名無しさん
NGNGプリエンティブなマルチタスク環境ならいいんじゃなーい?(無責任)
0060デフォルトの名無しさん
NGNGアプリのCPU使用率の制限かけられる立派なOS使える奴
ばっかりじゃねんだよ。
0061デフォルトの名無しさん
NGNGレベルが低いのがぞろぞろいる。
0062あああ
NGNGk個の整数 (k<=N)(k closests to the median)を探し出す
プログラムを書きなさい。
0063デフォルトの名無しさん
NGNG1. ソートする。M=N/2番目(奇数なら切り上げ)が中央値。
2. {M - k/2番目...M + k/2番目}が求める整数の集合。
(kが奇数なら、M - k/2 - 1番目とM + k/2 +1番目のうち、
M番目に近い方を解に含める。)
0064無学ですまん
NGNG006563
NGNG1. 昇順にソートする。M=N/2番目(Nが奇数なら切り上げ)が中央値。
中央値をmedとし、ソート結果をa[0]..a[N-1]とする。
for (low = high = M; high - low < k; ) {
if (low == 0) {
high++;
} else if (high == N - 1) {
low--;
} else if (med - a[low - 1] < a[high + 1] - med) {
low--;
} else {
high++;
}
}
a[low], a[low + 1], ..., a[high]が解。
0066ooo
NGNGが、、、ひとついい忘れました。
ソートを使わずにアルゴリズムが O(N)になるようにするには?
0067デフォルトの名無しさん
NGNG1.美衣の年齢
2.美衣の身長・体重
3.美衣の3サイズ
4.美衣の経歴
5.美衣の好きなもの・嫌いなもの
よろしくお願いします。
0068デフォルトの名無しさん
NGNG加算、減算、乗算、除算を行う関数を定義し、それらを呼び出すmain関数を作成しなさい。関数の名前を決めるための参考として、加減乗除の英語名を示します。
加算 addition 減算 subtraction 乗算 multiplication 除算 devision
0069無学ですまん
NGNGint a(int a, int b)
{
return a+b;
}
int s(int a, int b)
{
return a-b;
}
int m(int a, int b)
{
return a*b;
}
int d(int a, int b)
{
return a/b;
}
int main()
{
a(1,1);
s(1,1);
m(1,1);
d(1,1);
return 0;
}
0070デフォルトの名無しさん
NGNGソートしなけりゃ無理な気がするが・・・・。
ビンソートならO(N)。
Sの最大値、最小値は分からないの?
0071デフォルトの名無しさん
NGNGありがとうございました!
0072デフォルトの名無しさん
NGNG{
return a + b;
}
int subtr(int a, int b)
{
return a - b;
}
int multi(int a, int b)
{
return a * b;
}
float dev(int a, int b)
{
return a / (float) b;
}
int main(int argc, char *argv[])
{
printf("add(1, 2) = %d\n", add(1, 2));
printf("subtr(3, 4) = %d\n", subtr(3, 4));
printf("multi(5, 6) = %d\n", multi(5, 6));
printf("dev(7, 8) = %f\n", dev(7, 8));
return 0;
}
0073デフォルトの名無しさん
NGNGかもしれないだろ。
class CInt{
int value;
operator '+';
operator '-';
operator '*';
operator '/';
}
007467
NGNG0075デフォルトの名無しさん
NGNGこっちできけ
http://piza2.2ch.net/test/read.cgi/tech/982853418/l50
0076デフォルトの名無しさん
NGNGNが偶数なら、
配列の両端から順次2つの値を比較していって
上半分に値の大きい物を集める。
で、上半分の中で値が一番小さい物が中央値。
Nが奇数の場合は
「中央を除いた下半分の最大値」
「中央の値」
「中央を除いた上半分の最小値」
を使ってごちゃごちゃやってれば出来そうな気がする。
それから問題の後半はまだ分からないです。
BASICの例
200 ' 中央値を得る
210 for i=1 to int(N / 2)
220 if a(i) > a(N-i+1) then swap a(i), a(N-i+1)
230 next
240 '
250 med = a(int(N/2))
260 '
270 for i=int(N/2) to N
280 if med > a(i) then med = a(i)
290 next
007776
NGNG0078デフォルトの名無しさん
NGNGvoid find_min_max(int *data, int count, int *min, int *max)
{
int i;
*max = *min = data[0];
for (i=1; i<count; i++){
if (*max < data[i]) *max = data[i];
if (*min > data[i]) *min = data[i];
}
}
int find_median(int *data, int count)
{
int i,median,max,min,delta,mean;
find_min_max(data, count, &min, &max);
mean = (max + min)/2;
delta = abs(data[0] - mean);
for (i=1; i<count; i++)
if ( delta > abs(data[i] - mean) ){
median = data[i];
delta = abs(data[i] - mean);
}
return median;
}
これを前提として…
median = find_median(data, count);
for (i=0; i<count; i++)
if ( data[i] < median )
printf("%d\n", data[i]);
とすればOK
008076
NGNGそれだとmeanの値に一番近い数値を求めているだけの様な...
0081デフォルトの名無しさん
NGNGこの問題って、
(データの最大+データの最小)÷2 よりも小さい値を
全て抜き出せって意味じゃないの?
0082デフォルトの名無しさん
NGNGちゃうよ。
中央値っつったら、順に並べて真ん中に来る値のことだろ。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG他に言い忘れてることないだろな、コ゛ルァ!
O(N)って無理じゃないか?
O(NK)でも良いのか?
0085デフォルトの名無しさん
NGNG/* upper を超えない最大の値を返す */
int find_max(int *data, int count, int upper)
{
int i,max;
max = data[0];
for (i=1; i<count; i++)
if ( max < data[i] && data[i] <= upper)
max = data[i];
return max;
}
/* lower を下回らない最小の値を返す */
int find_min(int *data, int count, int lower)
{
int i,min;
min = data[0];
for (i=1; i<count; i++)
if ( min > data[i] && data[i] >= lower)
min = data[i];
return min;
}
int find_median(int *data, int count)
{
int i, upper, lower;
upper = MAX_INT;
lower = -MAX_INT;
while ( upper > lower ){
upper = find_max(data, count, upper);
lower = find_min(data, count, lower);
}
if ( upper == lower )
return upper;
else
return ???;
}
008681=83=85
NGNGO(NK)とは?
0087デフォルトの名無しさん
NGNGif ( max < data[i] && data[i] <= upper)
は
if ( max < data[i] && data[i] < upper)
ね。それと
if ( min > data[i] && data[i] >= lower)
は if ( min > data[i] && data[i] > lower)
ね。
0088デフォルトの名無しさん
NGNG計算量のオーダーも知らないやつがアルゴリズム語ろうとするなよヲイ(w
0089デフォルトの名無しさん
NGNGオーダ
O(N)だと処理速度はNに比例。
O(NK)だと処理速度はN*Kに比例。
009086
NGNGどうして?
0091デフォルトの名無しさん
NGNGO(Log N) って書くのね。理解。
0092デフォルトの名無しさん
NGNGオーダ知らんかったらアルゴリズムの評価なんかできねえだろ。
0093デフォルトの名無しさん
NGNG書き方はしらなんだ。すまんな。
0094デフォルトの名無しさん
NGNGつかそれ以外の書き方しらんのだけど。
0095デフォルトの名無しさん
NGNGまだ社会人ではないのでまったく想像できません。
ソフトってものはどんなものなのか・・・・・?
それが何の役に立つか何を作っているのか・・・・・?
みなさん教えてください。
0096デフォルトの名無しさん
NGNGそれ、なんの宿題?
0097デフォルトの名無しさん
NGNGごめん
宿題じゃありません_(._.)_
ちょっと質問したのですが
やっぱりいいです
0098デフォルトの名無しさん
NGNGプログラマ=プログラムをする人、プログラム技術を持っている人
と定義するならば、そもそもパソコンなんぞ誰も
使えない気が…
0099デフォルトの名無しさん
NGNGどんな会社を想定してるのか。
SI会社におけるプログラマは稼ぎ頭というか戦闘部隊というか。
それ以外の会社では小間使いというか後方支援ちおうか。
0100デフォルトの名無しさん
NGNGo(NK)で、できる?
中央値ってO(N)で求められたっけ?
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGO(N^2)だ。「中央値に最も近いk個」というのも満たしてない。
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGヒゲ
0107デフォルトの名無しさん
NGNGでも「ソートしない」が条件らしいぜ?
それに、「整数」というだけで、他に条件ないとしたらダメだろ。
>>104
ビンソート知らない人は、質問する側に回りなさい。
「ビンソートとは何か」という宿題なら教えてあげる。
0108デフォルトの名無しさん
NGNGすみません、書き込んだ後、検索して理解しました。
0109デフォルトの名無しさん
NGNGつまり中央値を求めるだけ。
キーの範囲が限定されてないとして、
これってO(N)でできる?
0110デフォルトの名無しさん
NGNG100 N = 100: Nbox = 10
110 dim a(N), slot(Nbox)
..配列に値を入れる。
200 gosub getMinMax
210 max = max + 1 '念の為、1つずらしておく
220 midN = int((N +1)/ 2)
230 repeat
240 delta = (max - min ) / Nbox
250 gosub clearSlot
260 gosub fillSlot
270 gosub selectSlot
280 max = min + delta * (slotN + 1)
290 min = min + delta * SlotN
300 until memberN = 1
310 gosub getMedian
320 print "median " ; median
330 end
400 getMinMax:
410 min = a(1): max = a(1)
420 for i=1 to N
430 if min > a(i) then min = a(i)
440 if max < a(i) then max = a(i)
450 next
460 return
500 clearSlot:
510 for i=0 to Nbox
520 Slot(i) = 0
530 next
540 return
600 fillSlot:
610 for i=1 to N
620 j = int((a(i) - min) / delta)
630 if j >= 0 and j <= Nbox then Slot(j) = Slot(j) + 1
640 next
650 return
700 selectSlot:
710 sum = 0: i=-1
720 repeat
730 i = i + 1
740 sum = sum + Slot(i)
750 until sum > midN
760 SlotN = i
770 midN = midN - (sum - Slot(SlotN))
780 memberN = Slot(SlotN)
790 return
800 getMedian:
810 for i=1 to N
820 if a(i) >= min and a(i) < max then median = a(i)
830 next
840 return
0111デフォルトの名無しさん
NGNG>「整数」というだけで
値は重複しないらしいです。
0112
NGNGそれらの数字は小さい順になるように表にしたいです。[例:{1,2,3}
{1,2,4}{1,2,5}{1,2,6}{1,3,2}]
よろしくお願いします。
0113デフォルトの名無しさん
NGNG何度かリトライするのでオーダー不明。(テストでは3回リトライしていた。)
--------
var
median, midN, i, countS, countL: integer;
--------
begin
median := a[1];
midN := (N + 1) div 2;
i := 1;
repeat
if a[i] < median then
countS := countS + 1;
if a[i] > median then
countL := countL + 1;
if countS >= midN then
begin
median := a[i];
countS := 0;
countL := 0;
i := 1;
end;
if countL >= midN then
begin
median := a[i];
countS := 0;
countL := 0;
i := 1;
end;
i := i + 1;
until i > N;
writeln('Median = ', median);
end;
0114デフォルトの名無しさん
NGNGごめん、読んでて頭痛くなってきた(汗
適当に一個決めて、上と下に何個あるか数えるのね。
えっとオーダーは、O(N^2)というべきか、それとも永遠に終わらない可能性も
あるから、O(+∞)というのがいいのか。
0115113
NGNGだんだん近づいていくのか。・・・いくのかな?
0116113
NGNG見つからない時は無限ループにはまってしまうし。
0117デフォルトの名無しさん
NGNG非再帰版
#include <stdio.h>
void main(){
int i1,i2,i3;
for (i1=1; i1<=6; i1++)
for (i2=i1+1; i2<=6; i2++)
for (i3=i2+1; i3<=6; i3++)
printf("%d %d %d\n",i1,i2,i3);
}
0118デフォルトの名無しさん
NGNGDel厨で失礼。
出力も手抜き
program Permitation;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure PrintResult(
var Result : array of integer;
const Length : integer
);
var
i : integer;
begin
for i := 1 to Length do begin
Write (Result[i],' ');
end;
Writeln;
end;
procedure PermitationSub(
const Items:integer ;
const Length:integer ;
const CurrentLength:integer ;
var Result : array of integer
);
var
i,j : integer;
used : boolean;
begin
for i := 1 to Items do begin
used := false;
for j:= 1 to CurrentLength do begin
if Result[j]=i then begin
used := true;
break;
end;
end;
if used then continue;
Result[CurrentLength+1] := i;
if CurrentLength+1 < Length then begin
PermitationSub(Items,Length,CurrentLength+1,Result);
end else begin
PrintResult(Result,Length);
end;
end;
end;
var
Result : array[0..6] of integer;
begin
PermitationSub(6,3,0,Result);
end.
0119デフォルトの名無しさん
NGNG1,3,2 とかが出ないような…
0120117
NGNG0121
NGNG少し考えてみたけど、O(N)でいきますね。
アルゴリズム示します。
(1)まずメディアンを求める。
(1-1)配列a[m]の中から小さい法からl個目を抜き出す関数f(a,m,l)を考える。
これに、m = N, l = N / 2を入れればいい。
(1-2)m個の数字を、その中のある数字を閾値にそれ以上(big)と以下(small)にわける。
(1-3)小さい方がs個だったとする。
(1-3-1) s < lなら、小さい方にメディアンがある。f(small,s-1,l)を呼び出す
(1-3-2) s > lなら、大きい方にメディアンがある。f(big, m-s, l-s)を呼び出す。
(2) 全ての数字について(1)で求まったメディアンとの差の絶対値を求める。
これで、この差の絶対値から小さい方からk個抜き出すという問題に置き換わった。
(3)(1)と同様に大きいほう、小さい方にわけていく。これは、小さい方からk個目を
求め、その呼び出し関数のsmallに入っている数字は全て、小さいほうからk個の中に
入っていることになる。
計算量を検証します。
(1)上手く1/2ずつ絞り込めていけば。
N + 2/N + 4/N + 8/N + ..... = 2N
で計算できますので、O(N)。
まあ、実際にそんな上手くはいかないでしょうが、クイックソートがO(nlog(n))
の計算量というのと一緒ですね。
(2)N個の絶対値求めるだけなので、O(N)
(3)(1)と同様にO(N)
0122
NGNG問題がよくわからないんだけど、小さい順ってどういうこと?
左側の数字から順にkeyにして小さい順ってこと?
0123デフォルトの名無しさん
NGNG不等号の向きが違う気がするけど、おおむね合ってそう。
in-placeで入力配列を分割していけば、クイックソートと
2分探索を組み合わせたようなコードになるね。
0124デフォルトの名無しさん
NGNG上位いくつかを求めるには効率的なんだけれど>ヒープ
0125デフォルトの名無しさん
NGNGvoid main(void)
{
char c;
int sa;
sa='a'[-�@-]'A';
printf("\n文字を入力してください");
scanf("%c",[-�A-]);
if(c>='A'[-�B-]c<='Z'){
c+=[-�C-];
printf("小文字 → %c\n",c);
}
else if(c>='a'[-�D-]c<='z'){
c-=sa;
printf("大文字 → %c\n",c);
}
}
-----------
大文字は小文字に小文字は大文字に変換するやつなんだけど
�@〜�Dには何が入るんだ?
0126125
NGNG0127デフォルトの名無しさん
NGNG121のやり方だと最悪O(N^2)だが、ヒープを使えば
最悪O(N log N)にできるね。最良でもO(N log N)だが。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGi1, i2, i3を変数としますね。
i1を1〜6の範囲でループさせます。その中で
i2を1〜6の範囲でループさせます。さらにその中で
i3を1〜6の範囲でループさせます。
そして、そのループの中で
i1, i2, i3が全て異るかどうか判定し、異なれば
i1, i2, i3の順に表示する。
というプログラムを書けば大丈夫です。
教育的配慮から、ソースは書きませんので、わからないことがあったら
きいてください。
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGたとえばint x = 1000;をストリングとして出したい場合(char*型として)、
どうしたらよいのですか??
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG0134131
NGNGなるほど、sprintfでできました。
ありがとうございました!
0135デフォルトの名無しさん
NGNGメモリに出力するときは確保した領域内に
収まるように注意して
気づかないうちに他の領域を壊したり
Segmentation fault の原因になるから
013667
NGNG0137デフォルトの名無しさん
NGNG1.6ヶ月
2.52cm、4900g
3.25cm、27cm、27cm
4.実は麻衣の子
5.森永のミルクは口に合わないらしく明治のを飲ませると喜ぶ。
013867
NGNGこれでゼミに逝けます。
0139デフォルトの名無しさん
NGNGアドレスを指定してその領域の内容を表示するには
どうしたらよいのですか??
short *p;
p=12;
printf("%d",*p);
などではエラーが出てしまいます
0140デフォルトの名無しさん
NGNG値を入れる実体がないぞ。
short i;
short *p;
i = 12;
p = &i;
printf("%d", *p);
0142牡蠣フライ
NGNG指定した元ファイルから
指定した先のファイルへの
コピーの仕方教えてください。
0144牡蠣フライ
NGNGどうもです。
わざわざBuffereReaderとPrintWriterを
使ってコピーするにはどしたらいいでしょうか。
0146145 補足
NGNGhttp://java.sun.com/j2se/1.3/ja/docs/ja/api/java/io/PrintWriter.html#PrintWriter(java.io.Writer)
0147牡蠣フライ
NGNGどうもです。参考になりましたが、やっぱりわからないとこがあります。
private Vector readfile (String fileName vector lines)
provate boolen writefile(String fileName)この2つを使って
コピー元ファイルからコピー先ファイルをテキストファイルにコピー。
private Treefile readfile (String fileName)を使って
テキストファイルより任意の人数分の番号、名前、住所を読み込んで
コマンドオプションから受け取った番号に該当する情報を画面表示。
この2つを教えてください。
夜遅くですがなにとぞよろしくお願いします。
0148147 訂正
NGNGprivate Vector readfile (String fileName vector lines)
provate boolen writefile(String fileName)この2つを使って
コピー元ファイルからコピー先ファイルをテキストファイルにコピー。
private Treemap readfile (String fileName)を使って
テキストファイルより任意の人数分の番号、名前、住所を読み込んで
コマンドオプションから受け取った番号に該当する情報を画面表示。
この2つを教えてください。
夜遅くですがなにとぞよろしくお願いします。
0149デフォルトの名無しさん
NGNGboolenってなに?
0150148 再訂正
NGNG質問してるのにしっかり問題すらあけなくてスミマセン。
private Vector readfile (String fileName vector lines)
private boolean writefile(String fileName)この2つを使って
コピー元ファイルからコピー先ファイルをテキストファイルにコピー。
private Treemap readfile (String fileName)を使って
テキストファイルより任意の人数分の番号、名前、住所を読み込んで
コマンドオプションから受け取った番号に該当する情報を画面表示。
よろしくお願いします。
0151デフォルトの名無しさん
NGNGそのメソッドの定義がよくわからんが、
private Vector readfile (String fileName)
private boolean writefile (String fileName, Vector lines)
の間違いじゃないか?だってたぶん、
readfile=filenameを名前とするファイルの内容を読み込み、新しいVectorオブジェクトに格納して返す
writefile=filenameを名前とするファイルにlinesの内容を書き込む
だろ?
なんにもわかっとらんとみなす。1から勉強おし。
0152名無し
NGNG茨木俊秀、アルゴリズムとデータ構造、昭晃社、1989。P92
各列、各列の中央値による行のソートをされた
5*(n/5)行列に分解してn/4個を除去する方法を取るらしい。
正直ぜんぜん分からん・・・・鬱だ
0153151
NGNGそれにしても writefile の引数がファイル名だけってのが謎だ。
一体どういうクラスなんだ?定義をぜんぶ出さんとわからんぞ。
…いやまて、手で打ち込んでタイプミスしてるってことは、
問題は印刷物でしか与えられてないのか?
0154スミマセン
NGNGそのとおりです。
甘えるつもりはないんですが、ほんとになんもわっかてないっす。
今、周りに追いつくので必死なので、
こんな単純な間違いにも気づかない厨房です。
どうかあきらめずに救いの手を。
0155151
NGNG>こんな単純な間違い
って結局どこがちがったんだ?それともちがわないのか?
ともかく、どういう問題かが伝わってくるまで手が出せんぞ。
0156スミマセン
NGNGこちらこそスミマセン。
テキストファイルの読み込み、書き込みの
資料を紙一枚いただいただけです。
問題に関しては2問合わせて4行程度です。
問1の問題は、その2つのメソッドの定義と
2つのファイル名をコマンドオプションから受け取る。
ぐらいしか、情報はありません。
問2の問題も、コマンドオプションからファイル名を
取得せよとのことです。
まだJAVAをはじめて一週間しかたっていなのですが、
よろしくお願いします。
0157156
NGNG単純な間違いとはタイプミスのことです。
すみません。
BufferedReaderとBufferedWriterを
問題の前に説明を受けました。
(2つ合わせて10分ぐらい)
あとtry catch を4回使うとも言ってました。
0158151
NGNGファイルに書き込みをするってことは、
「<あるファイル>に<ある内容>を書き込む」
というふうに、投入口と品物がないと成立しない。
その引数リストでは、どうやって書き込むべき<内容>を指定するのか、
がわからん。
もし長くなければ、writefile の定義を書いてみれ。
0159151
NGNGどうやら「readfile」「writefile」とかいうメソッドは、
呼び出し方だけ定義されていて、内容は自分で埋めなきゃいけないのか?
0160デフォルトの名無しさん
NGNGがんばれ151と156。
0161156
NGNG言われていることは分かるのですが、
問題にはテキストファイルの内容
(ファイル名はコピー元txt(メモ帳に"あああ"と書いたもの)
とコピー先txt2)をコピーしろとしか書いてないので定義と
言われてもこんなことしか分かりません。
0162デフォルトの名無しさん
NGNGまず、問題を一字一句間違いなくこの掲示板にカキコしてみ。
答えてやるから。
0163156
NGNGはい。
呼び出し方しか決まっていません。
すみません。説明が小出し小出しに
なってしまっていて。
0164デフォルトの名無しさん
NGNG読み込んだテキストを String の Vector のインスタンス変数で持つんでないの?
0165151
NGNGなんか講義自体が雑だって言いたいのか?そりゃそうかもしれんが、
おまえの説明もちんぷんかんぷんだ。特に writefile/readfile以降、
不正確な言い回しが目立つ。
>問題にはテキストファイルの内容
>(ファイル名はコピー元txt(メモ帳に"あああ"と書いたもの)
>とコピー先txt2)をコピーしろとしか書いてないので
だから言っとくが、それだけならもうわかってるんだろ。
本当は「それだけしか書いてない」じゃなくて、
「writefileとreadfileを使え」とか「BufferedReaderとPrintWriterを使え」
とか、うるさい条件がついてんじゃなかったのか?
はっきりさせろよ、伝わってないんだから。
0166156
NGNGテキストファイルの内容をコピーするプログラムを作成しなさい。
とにかく習ったものだけでプログラムをつくれとのことです。
BufferedReaderとPrintWriter writerを習いました。
0167156
NGNGすみません。
言葉が軽率でした。
0168151
NGNGじゃあ、writefileとかreadfileとかはなんだったわけ?
0169156
NGNG問題をやる前に
private Vector readfile (String fileName)
private boolean writefile (String fileName, Vector lines)
この2つを使ってやってみろ、という指示が出ました。
0170デフォルトの名無しさん
NGNGimport java.io.*;
public class FileCopy
{
public static void main(String[] args)
{
String from, to;
BufferedReader reader = null;
PrintWriter writer = null;
if (args.length != 2) {
System.err.println("usage: java FileCopy file_from file_to");
return;
}
from = args[0];
to = args[1];
try {
String line;
reader = new BufferedReader(new FileReader(from));
writer = new PrintWriter(new FileWriter(to));
while ((line = reader.readLine()) != null) {
writer.println(line);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
reader.close();
writer.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
0171デフォルトの名無しさん
NGNGimport java.io.*;
public class FileCopy
{
public static void main(String[] args)
{
String from, to;
BufferedReader reader = null;
PrintWriter writer = null;
if (args.length != 2) {
System.err.println("usage: java FileCopy file_from file_to");
return;
}
from = args[0];
to = args[1];
try {
String line;
reader = new BufferedReader(new FileReader(from));
writer = new PrintWriter(new FileWriter(to));
while ((line = reader.readLine()) != null) {
writer.println(line);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
reader.close();
writer.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
0172151
NGNGそれって
「本問題を解く<前>に、練習として〜を使ってまずやってみろ」
なのか?わからんぞイヤマジデ
まあいいや、どのみち使うってことだな。
で、そのふたつを完成させてから、それを組み合わせてコピーするってわけな。
わかった。
じゃあまず。。
0173151
NGNG0174151
NGNGどうよ?>156
0175156
NGNG丁寧にありがとうございます。
>>151
本問題です。
使って頂きたいです。
よろしかったらお願いします。
private Treemap readfile (String fileName)を使って
テキストファイルより任意の人数分の番号、名前、住所を読み込んで
コマンドオプションから受け取った番号に該当する情報を画面表示。
もし、よろしければこちも希望。
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGまず、その番号、住所などが書かれたテキストファイルの
フォーマットを示せよ。
0178デフォルトの名無しさん
NGNGこんなメソッドを作れって指示する教官はJavaのことを
よくわかっていないので、習うのをやめれ。
0179151
NGNG引っ張っといて悪いが、そろそろ風呂入って寝たいので
ひとこと。
readfileについて:
writefileの「lines」っていう引数名から察するに、
一行を一要素としてファイル全体をVectorオブジェクトに格納していくんだよな。
それ想像できるか?できないならいえよ。
それには「BufferedReaderから一行ずつ読み込む」ってことと、
Vectorオブジェクトの扱い方がわかってればできるはずだよな。
で、どっちがわかんないのかは知らんが、とりあえず
とにかくそこんとこAPIドキュメントを読め。
Javaはじめて一週間ってことは、ひょっとして基本的な構文の理解から
すでにあやしいのか?そこまではちょっとな。。
0180151→風呂
NGNGそれはすでに暗黙の前提。たしかに156は不幸ではある。
0181156
NGNGすみません。
問題の意味もよく分かっていないので
テキストファイル自体にどのように番号、名前、住所を
書き込んだらよいのかも分かっていません。
メモ帳にそれらをずらずらっと書き込んだらよいのでしょうか。
ファイル名はTXT3にしようと考えています。
0182156
NGNG長い時間ありがとうございました。
"もうめんどうくせぇ"
と思いでしょうが、また次の機会もよろしくお願いします。
基本的な構文をきちんと復習します。
本当にありがとうございました。
0183デフォルトの名無しさん
NGNGimport java.io.*;
import java.util.*;
public class Address
{
public static void main(String[] args)
{
String num;
TreeMap map;
String[] item;
if (args.length != 1) {
System.err.println("usage: java Address [number]");
return;
}
num = args[0];
try {
map = readfile(addressFile);
if (!map.containsKey(num)) {
System.out.println("no such number");
return;
}
if ((item = (String[]) map.get(num)) != null) {
System.out.println("number: " + num);
System.out.println("name: " + item[0]);
System.out.println("addr: " + item[1]);
}
else {
System.err.println("no value defined");
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static TreeMap readfile(String file)
throws FileNotFoundException, IOException
{
BufferedReader reader;
TreeMap map;
StringTokenizer st;
String line;
reader = new BufferedReader(new FileReader(file));
map = new TreeMap();
while ((line = reader.readLine()) != null) {
String num;
String[] item = new String[2];
st = new StringTokenizer(line, ",");
num = st.nextToken();
item[0] = st.nextToken();
item[1] = st.nextToken();
map.put(num, item);
}
return map;
}
private static String addressFile = "TXT3";
}
0184デフォルトの名無しさん
NGNG6,あいうえ花子,東京都3
1,山田太郎,東京都1
2,山田花子,東京都1
3,砂糖太郎,東京都2
4,砂糖花子,東京都2
0185デフォルトの名無しさん
NGNGimport java.io.*;
import java.util.*;
public class Address
{
public static void main(String[] args)
{
String num;
TreeMap map;
String[] item;
if (args.length != 1) {
System.err.println("usage: java Address [number]");
return;
}
num = args[0];
try {
map = readfile(addressFile);
if (!map.containsKey(num)) {
System.out.println("no such number");
return;
}
if ((item = (String[]) map.get(num)) != null) {
System.out.println("number: " + num);
System.out.println("name: " + item[0]);
System.out.println("addr: " + item[1]);
}
else {
System.err.println("no value defined");
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static TreeMap readfile(String file)
throws FileNotFoundException, IOException
{
BufferedReader reader;
TreeMap map;
StringTokenizer st;
String line;
reader = new BufferedReader(new FileReader(file));
map = new TreeMap();
while ((line = reader.readLine()) != null) {
String num;
String[] item = new String[2];
st = new StringTokenizer(line, ",");
num = st.nextToken();
item[0] = st.nextToken();
item[1] = st.nextToken();
map.put(num, item);
}
return map;
}
private static String addressFile = "TXT3";
}
0186156
NGNGありがとうございました。
基本をまずはしっかり復習して
がんばりたいと思います。
本当にありがとうございます。
0187112です
NGNGよろしくお願いします。
0188
NGNGとりあえず、自分で書いたコードみせてみ。
間違ってるところ教えてやるから。
0189デフォルトの名無しさん
NGNGブロックまでの経路の全通りを作るプログラムを作りたいのですけど
経路の全通りを作る部分がわかりません。教えてください。
ただし一度通過したブロックは通過できない、経路は最短距離
ではない、です。
こんな感じです
●○○○○○○
○○○○○○○
○○○○○○○
○○○○○●○
○○○○○○○
○○○○○○○
↓4回、→5回、↑一回って経路も必要なのです。
0190デフォルトの名無しさん
NGNG迷路をスネークパターンで生成する技術が応用できますね。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGあたりまえだろ?
これはその総数を計算で求めるんじゃないの?
0193デフォルトの名無しさん
NGNG総数でいいんだよね?
全通りを「作る」って書いてあるが・・
0194189
NGNG総数は膨大になると思いますが・・・
0195デフォルトの名無しさん
NGNG本当に100×100?
0196デフォルトの名無しさん
NGNGというか、100×100での経路の全通りを求めるのが宿題なの?
もし、それが宿題の自分なりのアプローチの1プロセスだとしたら、
そのアプローチの仕方はまずいと思う。
0197189
NGNG「こういうアルゴリズムで作っていく」
というのが教えてほしいのです。
0198デフォルトの名無しさん
NGNGそういうことだったら。って、言葉で上手くできる自信ないが一応試みてみます。
基本的には再帰。で、一度通ったところは配列作ってチェックしていく。
とりあえず、めんどくさいのでグローバルに定義されている二次元の配列aに、
x,yを通ったか通ってないかを、1か0かで保持しているとしましょう。
また、今までの経路を何か配列か何かにつめてとおきましょう。
地点x,yから、ゴールまでの全ての経路を求める関数f(x,y)を考えるとします。
f(x,y)では、次のような処理をします。
(1)そこがゴールならば、今までの経路が答えの一つなので、それを保持します。
で、一つ前に戻ります(return)。
(2)そこがゴールでないなら、
(2-1) 今居る地点を「通ったと記憶します」(a[x][y]=0)。また経路の配列にも
記憶します。
(2-2) 上、右、左、下、それぞれについて。
選んだ隣接ブロックが存在して、そこにはまだ行ったことがないなら
ax,ayにその隣接ブロックの場所を入れてf(ax,ay)を呼び出します。
(2-3) 一歩もどります。その前に、今いる地点を「通っていない」状態に戻し
ます(a[x][y]=0)、あと経路の配列も一つ戻します。で、return
これで、適当な初期化してfを呼び出せば大丈夫です。
0199198
NGNG高速化するために枝狩りした方がこの場合はいいと思います。
fを呼び出すたびに、「現在の地点からゴールまでたどり着く
可能性があるか」を判定し、それがなければreturnするのが
いいかと思います。
0200198
NGNG記憶します。
a[x][y]=1ですね、わかると思うけど。
0201デフォルトの名無しさん
NGNG(40116600通り)
100x100の全ての経路を数えるだけでも一筋縄では行かない。
まして、全部プリントしたら、一生かかっても終わらない。
0202189
NGNGどうもありがとうございました。
15×15で4千万通り以上ですか・・・
ちょっと考え直してみます。
0203デフォルトの名無しさん
NGNGhttp://www.google.com/search?as_q=%83o%83b%83N%83g%83%89%83b%83N
0204デフォルトの名無しさん
NGNG誰かめんどうみてやれや。
0205五目並べ
NGNGあとはおのずと道が開けていくと思うんたげど。
0206デフォルトの名無しさん
NGNGまあ、そうだねぇ。まず盤面を表すクラスを作って、その中で、3、4,5が何個あるか
を判定するメソッドを書いてみるあたりからはじめるのがよいかねぇ。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNGO-O
XX-
---
って状態で、Oが次の手をどう打つかっていうのを、
move([[o,-,o],[x,x,-],[-,-,-]], o, B)
と与えると、Bに [[o,-,o],[x,x,o],[-,-,-]] を代入する
みたいなのを作りたいんです。
「i 行目に x が2つ並んでなかったら」とか
「i 列目に x が2つ並んでたら」とかいうロジックを
どうやって書いたらいいっすか。
0209デフォルトの名無しさん
NGNGいろんなやり方あるが
count([Item|Rest], Item, N):-!, count(Rest, Item, M), N is M + 1.
count([_|Rest], Item, N):-!, count(Rest, Item, N).
count(_, _, 0).
futatsu(List, Item):-count(List, Item, 2).
とか使うと簡単では?
3x3なら羅列してもできちゃうけど。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG>各列、各列の中央値による行のソートをされた...
というのは>>128あての(順列を求める問題の)回答ではなくて
「ソートせずに中央値を求める」方の問題の回答ですね
これですか。
ttp://www-or.amp.i.kyoto-u.ac.jp/members/ibaraki/algo.shtml
4. 整列のアルゴリズム の
「第p要素を選ぶSELECT」
ttp://www-or.amp.i.kyoto-u.ac.jp/members/ibaraki/shokodo/select.c
全体をソートするのでなくてグループに分けてソートして
それらの中央値を集めて...
なにかやってるみたいですね。
0212
NGNGその、ソースちらっと眺めんですが、何してるのかよくわからんっす(^^;
誰かしっかり読んだ方解説お願いできませんか?
0213212
NGNG>>121
のやり方で、基準とする要素を適当に選ぶのではなく、中間値
の中間値を採用するってこと・・ですよね、多分。
で、最悪でO(N^2)になるのをさけると。
0214デフォルトの名無しさん
NGNGMedian のアルゴリズムは情報系の学生には常識だと思ってたけど,
結構知らない人が多いみたいだね.
ちなみに,茨木先生の本に書いてある5個ずつに分けるアルゴリズムよりも,
徳山先生が情処かどっかに解説書いてたサンプリングによる方法の方が平均的
には圧倒的に速くて実用的.こっちを勉強しなよ.
0216デフォルトの名無しさん
NGNG>>121 の考え方をHaskellで素直に書くとこんな感じだね。
すごく楽だ。
nearest_to_median :: Int->[Int]->[Int]
nearest_to_median k list =
map snd (nth_smaller k distance)
where distance = [(abs(x - median), x) | x <- list]
median = last (nth_smaller (length list)/2 list)
-- 小さい方からn個を求める。
nth_smaller n list :: Int->[Int]->[Int]
nth_smaller n (m:more)
| n == 0 = []
| otherwise = if (length left) < n then
left ++ m:(nth_smaller n - (length left) - 1 right)
else
nth_smaller n left
where left = [x | x <- more, x < m]
right = [x | x <- more, x >= m]
0217216
NGNG○ nth_smaller n list :: (Ord a) => a->[a]->[a]
0218デフォルトの名無しさん
NGNGサンプリングを取るっていうのは、適当に何個か抜き出して、そのMedianを採用
するってこと? この場合何個抜き出せばいいかっていうことに対して何か指針は
あります?
最悪値をo(n)に抑える為に、要素を定数で割った数だけサンプリングすることに
なるんでしょうか。
0219デフォルトの名無しさん
NGNG面白いね。
手続き指向で考えると、盤面を配列に持って手が進むごとに代入によって変化
していく作りになりがちな気がする。っていうかそんな風に作った。
ちょっと工夫が足りなかったと反省。
0220デフォルトの名無しさん
NGNG再帰的なプログラムって関数型言語で書くと綺麗にかけるねぇ。
0221超初心者の名無しさん
NGNG弟ではなく、妹ですがどうぞ、力を貸してください。
3問あるのですが、この問題が試験に出るそうなので、どうかお願いします。
/*
演習課題1.配列と整数nを与えて、その配列の先頭からn個の要素の和を
求める関数テンプレートを定義しなさい。
ヒント:整数配列の和を求める関数
int arraySum(int a[], int n)
{
int s = 0;
for (int i = 0; i < n; i++)
s += a[i];
return s;
}
*/
#include <iostream>
#include <conio>
using namespace std;
//関数テンプレート
int main(void)
{
int a[] = { 1, 2, 3}; //大きさ3の整数配列の例
double b[] = { 4.5, 6.7}; //大きさ2の実数配列の例
cout << arraySum(a, 3) << endl; // 出力は6。 arraySum<int>と書いても同じ。
cout << arraySum(b, 2) << endl; // 出力は11.2。arraySum<double> 〃
cout << "\Press any key to continue... ";
getch();
return 0;
}
0222超初心者の名無しさん
NGNG演習課題2.要素の型をクラスパラメータとした、2次元ベクトルクラステンプレート
を定義しなさい。
参考:要素がdouble型の2次元ベクトルクラスの定義
class Vec {
friend ostream &operator<<(ostream &os, const Vec &v); //フレンド関数の宣言
private:
float x, y;
public:
Vec(double xx = 0, double yy = 0) //コンストラクタ
{
x = xx;
y = yy;
}
Vec operator+(const Vec &b) const // メンバ関数として、+演算子を多重定義
{
return Vec(x + b.x, y + b.y);
}
};
ostream &operator<<(ostream &os, const Vec &v)
{
os << "(" << v.x << ", " << v.y << ")"; // フレンド関数として<<を定義
return os;
}
*/
#include <iostream>
#include <conio>
using namespace std;
//クラステンプレートの定義
int main(void)
{
Vec<int> intVecA(1, 2), intVecB(3, 4), intVecS; //整数ベクトル
Vec<double> doubleVecA(1.1, 2.2), doubleVecB(3.3, 4.4), doubleVecS;
//実数ベクトル
intVecS = intVecA + intVecB;
doubleVecS = doubleVecA + doubleVecB;
cout << intVecS << endl; //出力: (4, 6)
cout << doubleVecS << endl; //出力:(4,4, 6,6)
cout << "\Press any key to continue... ";
getch();
return 0;
}
0223デフォルトの名無しさん
NGNGてぃー あれい_さむ(てぃー *あ、いんと ん)
{
てぃー さむ=0;
ふぉー(いんと い=0;い<ん;い++) {
さむ+=あ「い」;
}
りたーん さむ;
}
0224超初心者の名無しさん
NGNG/*
問題3 スタックのデモプログラム
文字列を入力し、1文字ずつスタックに入れて、逆にスタックから1文字ずつ
取り出すことによって、逆順の文字列を出力するプログラムを作りなさい。
文字列型は使用しないこと。
ヒント:空白を含めて、行末まで1文字ずつ読む部分は次のように記述する
for (;;) { //無限ループ
char ch = cin.get();
if ( ch == '\n' )
break;
// ここで、chをスタックに入れる;
}
*/
#include <iostream>
#include <conio>
#include "stack_tp_l.h"
using namespace std;
int main(void)
{
cout << "\n\nPress any key to continue... ";
getch();
}
これから、私もできないなりに勉強をします。
お願いします。
0225デフォルトの名無しさん
NGNGもう答え書いてあるも同然…
C++とかSTLの本買って嫁嫁。
0226デフォルトの名無しさん
NGNGclass Vec {
private:
T m_x, m_y;
public:
Vec(T x=0, T y=0) : m_x(x), m_y(y) { }
Vec operator+(const Vec& rhs) const
{ return Vec(m_x + rhs.m_x, m_y + rhs.m_y); }
friend ostream &operator<<(ostream& lhs, const Vec& rhs)
{ lhs << "(" << rhs.m_x << ", " << rhs.m_y << ")"; return lhs; }
};
0227デフォルトの名無しさん
NGNGstk.clear();
for (;;) { //無限ループ
char ch = cin.get();
if ( ch == '\n' ) {
break;
}
// ここで、chをスタックに入れる;
stk.push(ch);
}
while ( !stk.empty() ) {
cout<<stk.pop();
}
// 初めてSTL使ったんだけど、これで合ってる?
0228214
NGNGn 個の要素から K 番目に大きい要素を取り出すアルゴリズムは以下の通りです.
1. √n 個のサンプルをデータからランダムに選ぶ.
2. サンプルをソートして,K/√n - 2√√n 番目に大きいサンプル x と,
K/√n + 2√√n 番目に大きいサンプル y を求める.
3. n 個の要素から,y より小さなデータを全て破棄する.K 個未満になって
しまったら 1. からやり直し.
4. その中で x より小さなデータを全て選ぶ.K 個以上になってしまったら
1. からやり直し.
5. y 以上 x 以下のデータをソートして,大きい方からデータを選び,
全体で K 個目選ばれるまで続ける.
6. 終了
上記のアルゴリズム中,ステップ 3., 4. で失敗して 1. からやり直す確率は
4% 以下らしい(チェルノフの不等式より).だから,1.〜4. を繰り返す回数は
平均すれば約 1.04 回.全体に対する処理は全て O(n) で,√n 個のサンプルに
対する処理は O(√n log n).全体に対する処理がさほど多くないので速いと
いうのがこのアルゴリズムの売り.
チェルノフの不等式の他の応用例としては,テレビの視聴率調査が分かりやすい
かな?たった数千軒のサンプルで数千万世帯の推測がかなり高い確率であっている
ということは,チェルノフの不等式が保証してくれます.
参考文献:
徳山豪, "ランダムアルゴリズムの話題から", 電子情報通信学会誌, vol.77,
no.9, pp.957-967, 1994. (いくつか細かいミスがあります.要注意.)
0229218
NGNG細かいところで、5番の処理で残ったデータ数mに対しo(mlog m)になるのが
気になりましたが、可能性としてはこのmが√nより大きいオーダになってしまう
ことがあるとしても、現実的には、4√nくらいを中心に散らばるから問題ない
ということですね。 気になるなら再帰的にやればいいのかな。
勉強になりました。
0230デフォルトの名無しさん
NGNGどのように考えればいいのでしょう?
0231デフォルトの名無しさん
NGNG問題文の意味不明。もう少しわかりやすく書け。
話はそれからだ。
0232デフォルトの名無しさん
NGNG1
__
n-1
2 nに整数値を入力してこの式の答えを出力させなさい
但し
1 1
___ __
0 -3
2 , 2 などにも対応させること、ということです。
0233デフォルトの名無しさん
NGNG2のn-1乗ってしたかったんですが・・。
0234デフォルトの名無しさん
NGNGnの入力を促す
↓
2の(n-1)乗を計算する
↓
結果を表示する
↓
(゚Д゚)ウマー
0235デフォルトの名無しさん
NGNGdouble func(int n)
{
return pow(0.5, (double)n - 1.0);
}
0236名無しですけど
NGNG自然対数の底eは、無限級数eにより次のように定義される。
e≒1+1/1!+1/2!+1/3!+1/4!+…+1/n!
�Aライプニッツの公式により、円周率の近似値を求めるプログラムを作成
しなさい。
ヒント…マイナスとプラスになる項を別々に考えると楽。
さっぱりわかりません。教えてもらえませんか?
0237デフォルトの名無しさん
NGNGvoid main()
{
printf("�@: %lf\n", M_E);
printf("�A: %lf\n", M_PI);
}
0238デフォルトの名無しさん
NGNGとりあえず何がわからないか整理しろ。
以下の項目それぞれについて「わかる」か「わからない」か答えてみろ。
1.自然対数
2.底
3.無限級数
4.n!
5.自然対数の底eの求め方
6.ライプニッツの公式
7.円周率
8.近似値
9.マイナスになる項、プラスになる項
10.円周率の近似値の求め方
0239236ですけど
NGNGいろいろ本とかで調べたのですが、どうしてもエラーがでて・・・
どこが間違ってるのかさえもわかりません。
0240デフォルトの名無しさん
NGNGエラーの出る部分を載せてみ。
0241236ですけど
NGNG円周率=4(1/1-1/3+1/5-1/7+1/9-1/11+…-1/47+1/49)を使わなきゃみたいなんですよ。
それで
main(){
int i,j,k,l,m,sum=0i
for (i=1;i<=49;i=i+4)
sum+=i;
for (j=3;j<47;j=j+4)
k=1/i;
l=-(1/i);
m=4*(k+1);
printf("%d\n",m);
}
といれました。どこが間違ってるんでしょうか?
0242236ですけど
NGNG0243デフォルトの名無しさん
NGNGまず数学の勉強をやり直した方が…
これはプログラム以前の問題…
0244236ですけど
NGNGもうちょっとがんばってみます。ありがとうございました。
0245236ですけど
NGNG0246236ですけど
NGNG7行目のiはjです。8行目の1はlです。間違えまくってすみません。
0247デフォルトの名無しさん
NGNGint では、その計算はできません。float か double にしなさい。
0248デフォルトの名無しさん
NGNGsumは何に使ってるの?
0249デフォルトの名無しさん
NGNGfor文は { } を使って範囲を明確にする方が良いです。そうしなさい。
↓こんな感じで
for( ; ; ){
}
0251236ですけど
NGNGすいません。見落としてました。
floatでやってみます。
0252デフォルトの名無しさん
NGNG修正したら、またソース載せな。
0253遭難中
NGNG0254デフォルトの名無しさん
NGNGmain関数の
struct bodyStr *body;
と、
do{
data[i]=readbody(num);
}while(body[i++].a);
を説明せよ。何をやってるのか自分で整理しろ。
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257遭難中
NGNG0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG当方、ポインタ、レコードわからんのですが
0260デフォルトの名無しさん
NGNG今までクイックたらマージたらしか書いてないのに無理だ(;´Д`)
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNGでも実際、ポインタとレコードが分からんかったら線形リストは無理じゃん?
0263デフォルトの名無しさん
NGNG今必死に理解しようとしているところ…
データを格納しようとするとき、新たに動的にレコード型の変数を作成する。
レコード型の最後だったやつのポインタの部分を新しく作ったレコード型の変数を指すようにする。
新しく作ったレコード型変数のポインタの指すところをnilにする。
適当なタイミングでデータを格納する。
…これでいい?
0264デフォルトの名無しさん
NGNGOK!
0265259
NGNG(`□´)くわ〜っ(`□´)くわ〜っ
0266デフォルトの名無しさん
NGNG型とデータの定義あたりは出来るかな?
0267デフォルトの名無しさん
NGNGstruct list_t {
void *data;
struct list *next;
};
> データを格納しようとするとき、新たに動的にレコード型の変数を作成する。
struct list_t list1; /* list1が最後のリストとする */
struct list_t list2;
> レコード型の最後だったやつのポインタの部分を新しく作ったレコード型の変数を指すようにする。
list1.next = &list2;
> 新しく作ったレコード型変数のポインタの指すところをnilにする。
list2.next = NULL;
> 適当なタイミングでデータを格納する。
list2.data = malloc(sizeof(data));
memcpy(list2.data, &data, sizeof(data));
# C言語だけどな...
0268259
NGNGcharString =packed array [1..20] of char;
ptr =^item;
item =record
next:ptr;
word:charString;
end;
こんなもんかな…
0269259
NGNG0270259
NGNG>267
Cわからん…すまん…馬鹿だから
0271デフォルトの名無しさん
NGNGお、すげー。出来てるじゃん。
そしたら線形につなげる事はとりあえず置いといて、
itemをひとつ確保した後、そこに何かデータを入れてみて。
varブロックも含めて書いてね。
0272デフォルトの名無しさん
NGNGword:charString;
length:inetger;
begin
repeat
read(ch)
until (ch in ['A'..'Z','a'..'z','.']);
word[1] := ch;
while (ch in ['A'..'Z','a'..'z']) do
begin
length := length+1
if length <= 20 then
word[length] := ch;
read(ch)
end
end;
>271
…一応…でも不安だ…
0273デフォルトの名無しさん
NGNG入れるにはどうすればいいですか?
0274デフォルトの名無しさん
NGNG配列に入れる。
//MSDNからコピペ
FILE *stream;
char line[100];
if( (stream = fopen( "fgets.c", "r" )) != NULL )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets error\n" );
else
printf( "%s", line);
fclose( stream );
}
0275デフォルトの名無しさん
NGNG0277名無しさん
NGNG[プログラム板] お勉強ページ 勝手にリンク 第2版
http://pc.2ch.net/test/read.cgi/tech/967778156/
そのレベルならば上のスレに参考になるサイトがいっぱいあるよ。
0278デフォルトの名無しさん
NGNG最低限、質問の意味がこちらにわかるように書いてくれよな。
お前らの質問の仕方を見てるとよぅ、こんなに日本語が不自由な奴ら
じゃ、プログラムなんてできなくて当たり前、としか思えねえよ。
な、とにかく、質問の意味がこちらにわかるように書いてくれよな。
そこんとこ夜露死苦。
0279デフォルトの名無しさん
NGNG見ていらねえよ! オマエに分かるのかボケ プ
0280デフォルトの名無しさん
NGNG質問する奴自身が
問題の意味を理解してない場合なんかは
仕方ないような気もする…。
0281デフォルトの名無しさん
NGNG日本語<以下略>
0282デフォルトの名無しさん
NGNGそんな奴は無視でいいと思われ。
0283271
NGNGう、すまぬ、書き方が悪かったみたいだ。
由緒正しいPascalだと文字列の扱いがそんなに面倒になるのかな。
課題に「リストは文字列を保持すべし」という指定があるのかな。
もし無いなら、単純に整数値をひとつだけ保持する、という風に変えた方が
本筋を見失わないと思うんだけど。(後から直してもいいけど)
type
listPtr = ^item;
item = record
data: integer;
next: listPtr;
end;
という事にして
item型の領域をひとつ確保して、そのdataフィールドに値を設定する、
というのをやってみて欲しいんだけど。
0284259
NGNG>283
頑張りますわ…一応、リストの先頭を削除したり、見つかった文字列を先頭にもってきたり
と、多彩な問題…(;´Д`)
0285271
NGNG0286デフォルトの名無しさん
NGNG(1)リストへのアイテム追加
(2)リストからアイテムを取り外す
(3)目的のアイテムがリストのどこにあるか探索
の3つの操作を作れば、あとはこの組み合わせでたいていのことはできるぞ。
0287
NGNG上の文はアルファベットを1文字後ろにずらしているんですが引数の文
字がアルファベットだったら1文字後ろにずらした文字を返し、そうで
なかったら、そのまま返す関数を定義する。それを使ってキーボードか
ら入力した英文テキストを暗号化するプログラムを誰か教えてくれーー。
あとデータの終りはEOF(ctrl-d)で判断するようにしたいんですが。
0288デフォルトの名無しさん
NGNGよろしくたのみます。
#include<stdio.h>
int main()
{
char a[5];
char b;
int i,j;
a[0]='9';
a[1]='3';
a[2]='2';
a[3]='1';
a[4]='8';
for(j=0;j<5;j++){
for(i=0;i<5;i++){
if(a[i]>a[i+1]){
b=a[i];
a[i]=a[i+1];
a[i+1]=b;
}
}
}
printf("%s\n",a);
}
0289デフォルトの名無しさん
NGNGその1:i=4 のときに i+1 で a[5] にアクセスしてしまう。i のループは for(i=0;i<4;i++) にしとかないと。
その2:printf で表示するときに、文字列 a に終端を示す '\0' がない。最後に追加しとかないと。
0290デフォルトの名無しさん
NGNGはい、例によってどこが解かりませんか。
1.キーボードから例文テキストを入力する
2.アルファベットだったら1文字後ろにずらした文字を返し、そうで
なかったら、そのまま返す関数
3.2の関数を使ってテキストを暗号化する
4.暗号化したテキストを出力する
それから、EOFは Ctrl-D じゃないです。
0291デフォルトの名無しさん
NGNG2.3ですね
0292288
NGNGできました。いやぁ、助かりましたよ。
0293デフォルトの名無しさん
NGNGEOFは
MS-DOSなら、ctrl-z
UNIXなら、ctrl+d
じゃないっけ?
0294290
NGNGじゃあとりあえず2から。
その関数は、引数は暗号化前の文字で、戻り値は暗号化後の文字だから、
char f(char c)
{
}
って感じだろうか。この中に
引数の文字がアルファベットだったら1文字後ろにずらした文字を返し、そうでなかったら、そのまま返す
という処理を、自力で書けない?やってみそ。
0295290
NGNGそーだっけ。ごめ。
0296デフォルトの名無しさん
NGNG教えてくれてありがとう。
0297デフォルトの名無しさん
NGNG初心です。
char f(char c)
{ char cr
int cs=(int)c
if ((cs >= 65 && cs <= 90) ||(cs >= 97 && cs <= 122)){
if (cs=90||cs=122){
cs-=25
}else{
cs++
}
} else {
cs=0
}
if (cs=0){
cr=c
}else{
cr=(char)cs
}
return cr}
0298297
NGNG} else {
cs=0
} //←ここに括弧足りませんでした。
}
0299297(M)
NGNG0300デフォルトの名無しさん
NGNG> if ((cs >= 65 && cs <= 90) ||(cs >= 97 && cs <= 122)){
文字コードを直接書かない。マクロ使う。is〜で始まるマクロを調べよ。
>if (cs=90||cs=122){
このままだとcsに代入してしまう。
あと、後ろにずらすなら%演算子を使った方が賢い。
使い方は自分で調べよ。
無駄な変数とかがあるのはマアイイヤ。
0301デフォルトの名無しさん
NGNGあと、関数の先頭で{の直後に変数宣言するのはやめような。
んでもって、数値で判定するのは見難いから'a'とか'Z'とかにしような。
if(cs=0){は常に真になるから==にしとこうな。
関数最後の}も改行してから書こうな。
上を直してからもう一回書いて下さい。見難くて解析する気も起きません。
0302297(M)
NGNGありがとうございます。
興奮して"=="を忘れました。。。マクロも勉強します。
ここってこういう事をするスレなんですかね。(ワカラナイ・・)
そうだとありがたいです。また来たいです。それでは。
0303デフォルトの名無しさん
NGNG基本的に「わからないから答えクレ」というスレではないことは確か。
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNGint hanbetu(int a,int b);
main()
{
int a,b;
printf("小さい数字は %d です",hanbetu(scanf("%d",&a),scanf("%d",&b)));
}
int hanbetu(int a,int b)
{
if(a<b)
return a;
else
return b;
}
↑このコードが期待したとおりに動きません。
#include <stdio.h>
int hanbetu(int a,int b);
main()
{
int a,b;
printf("小さい数字は %d です",hanbetu(2,3));
}
int hanbetu(int a,int b)
{
if(a<b)
return a;
else
return b;
}
↑これなら動きます。
0306297(M)
NGNG{
char cr ;
int cs=(int)c ;
if ((cs >= 'A' && cs <= 'Z') ||(cs >= 'a' && cs <= 'z')){
if (cs==90||cs==122){
cs-=25 ;
}else{
cs++ ;
}
} else {
cs=0 ;
}
if (cs==0){
cr=c ;
}else{
cr=(char)cs ;
}
return cr;
}
すいませんでした。>>301
0307デフォルトの名無しさん
NGNGひょっとして、hanbetu 関数には引数としてscanf関数は入れられないのでしょうか?
schemeならできるのに...
0308デフォルトの名無しさん
NGNGscanfのプロトタイプを参照しよう
0309デフォルトの名無しさん
NGNGが直ってないんじゃ、片手落ちだよ。
0310デフォルトの名無しさん
NGNG(a>b)?a:bで済むな
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGsleep()
0315デフォルトの名無しさん
NGNGう〜ん、ホントは(int)'A'が正しいと思うよ。コンパイラに文句いわれないなら別にいいけど。
0316デフォルトの名無しさん
NGNG>>311
0317デフォルトの名無しさん
NGNG最初の内は ? : なんて無理に使う必要ないんじゃない?
ifで書けるんだから。
無理して使おうとすると>>312のようになる。
0318デフォルトの名無しさん
NGNGプロトタイプでは無くて仕様だな。
scanf()の戻り値は格納に成功した入力フィールドの数を返し、
ファイルエンドを読み込んだ場合にはEOFを返す。
よって、scanf("%d",&a)は入力が数値だったら1,
数値でなかったら0を返す。
0319デフォルトの名無しさん
NGNG0320319
NGNG0321デフォルトの名無しさん
NGNGC言語の場合、'A' の型はintだからキャスト不要だよ。
0322デフォルトの名無しさん
NGNGなるほどぉ。
だから何を入力しても1しか返ってこなかったんだ。
ありがとう。
0323デフォルトの名無しさん
NGNG> ホントは(int)'A'が正しいと思うよ。
C++なら'A'はchar型、Cなら'A'はint型
0324デフォルトの名無しさん
NGNGWindows2000でやってます。
ところで、Cってコンソールレベルでの互換性があるってきいたけど、waitは違うの?
0326デフォルトの名無しさん
NGNGそれからコンソール入出力とwait()となんの関係がありますか?
タスク(スレッド?)関係の関数と思いますが。
0327デフォルトの名無しさん
NGNGだから、sleep()だって
0328デフォルトの名無しさん
NGNGってなりますが。
0329デフォルトの名無しさん
NGNGC標準でウェイトかけるなら、clock関数で時間を計測しながら希望の時間が経過するまでループ待ち・・・かな。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGそれは"windows.h"に毒されすぎですか?(w
Cでやるなら329が普通
0332デフォルトの名無しさん
NGNGWin32API なら sleep() ではなく Sleep() だが。
0333デフォルトの名無しさん
NGNGそれはさすがにちょっと…。
この程度で許してもらえんかね。
#ifdef _WIN32
# include <windows.h>
# define sleep(sec) Sleep((sec)*1000)
#else
# include <unistd.h>
#endif
int main()
{
sleep(1);
}
0334デフォルトの名無しさん
NGNGBeOSとMacとDOSもよろしく
0335デフォルトの名無しさん
NGNG論理的(数学的)に説明できる方はいますか?
最大サイズが多因数で構成されていると、余りを求めるときに偏りができる
というのは「直感」として理解できるんですけど、うまく言葉で表せません。
0336デフォルトの名無しさん
NGNGハッシュに変換する前の元データの偏りは
周期性というか特定の数の剰余に偏りがあるだろ?
例えばShiftJISコードとか。
そういう偏りはハッシュに変換するとどうなる?
0337デフォルトの名無しさん
NGNGもう遅いかもしれないけど、自然対数の底の方は1年の頃課題で
出たなあ。今見たら、まだ残ってたよ。
但し、1年の前期に作ったものをそのまま載せたので、
一部形式が変であまり良いプログラムじゃないけどね。
#include<stdio.h>
main()
{
double a,b,c;
a=1;
c=0;
for(b=1; b>=1e-15; b/=a) {
++a;
c+=b;
}
printf(" e=%.13f\n",c+1);
}
0338デフォルトの名無しさん
NGNGプログラムなんですが
#include<stdio.h>
#define MAX 80
void main(void){
char in[MAX];
int i;
scanf("%s",&(in[MAX]));
for(i=0;in[i]!='\0';i++){
in[i]+=1;
}
printf("%s",in);
}
だと実行時にエラーになってしまいます
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG2で割る。これを繰り返し、(結果が1になるまで、)この数列を表示する。というプログラムを
書けという問題ですが、例えばn=5なら、
5,16,8,4,2,1 と表示されるようにしたいんですけど、実行すると
最後が"1,"となってしまいます。どのようにプログラムを書けば良いのでしょうか。
0341デフォルトの名無しさん
NGNG数と一緒に「,」を出さないで、次に進むときに「,」を出す
0342デフォルトの名無しさん
NGNG× scanf("%s",&(in[MAX]));
○ scanf("%s",&(in[0]));
0343デフォルトの名無しさん
NGNGsacnf のフォーマッタは %s でいいのか?
文字列と文字の違いはわかってるか?
非常に紛らわしいところではあるが、
その辺り解説書を読み直してこい。
0344デフォルトの名無しさん
NGNG×scanf("%s",&(in[MAX]));
○scanf("%s",in);
0345デフォルトの名無しさん
NGNGscanf("%s",&(in[MAX]));
が変。
scanf("%s", in);
でよろし。
でも、scanfじゃなくて、fgetsとかを使う方がいいかと思う。
0346343
NGNG>>342 が正しい。
入れ違いになった上にミスしていてスマソ
ただ、C言語の文字列の取り扱いを理解していないのは確かだと思われるので、
ちゃんと勉強するように。
0347デフォルトの名無しさん
NGNG0348338
NGNGscanf("%s",&(in[MAX]));
では80番目からいれていくことになってしまいますね
あとinは&in[0]おんなじことを意味しているんですよね
0349デフォルトの名無しさん
NGNGはい、そのとおりです。
0350たけちゃん
NGNGなにぶん初心者が頭抱えてやってるもので、上手く動きません。
何がおかしいのかな?んんー
dimention xcod(1000000), ycod(1000000)
write(6,201)
read(5,101)n
if(n.gt.1000000.or.n.le.1) stop
ix=n*9+9
call ranu2(ix,xcod,n,icon)
write(6,202) icon
ix=ix+9
call ranu2(ix,ycod,n,icon)
write(6,203) icon
icount=0
do 10 i=1,n
r=sqrt(xcod(i)**2+ycod(i)**2)
if(r.lt.1.0) icount=icount+1
10 continue
pi=float(icount)*4.0/float(n)
write(6,204) pi
stop
201 format(' Input N, max=1000000 (i10)')
202 format(' ICON for X =',i5)
203 format(' ICON for Y =',i5)
204 format(' Simulated PI=',e15.7)
101 firmat(i10)
end
subroutine ranu2(ix,a,n,icon)
real*4 a(n)
real*8 x
if(n.lt.1.or.ix.ilt.0) go to 8000
x=dfloat(ix)/2147483648.d0
do 10 i=1,n
x=x*32771.d0+0.574890473391860723d0
x=x-dint(x)
10 continue
ix=x*2147483648.d0
icon=0
return
8000 icon=30000
return
end
お願いします。
0352質問
NGNG/* linect.c */
#include <stdio.h>
#include <stdlib.h> /* exit */
main()
{
FILE *fin;
char buf[256];
char filename1[20];
int ct; /* 行数カウント用 */
printf("入力ファイル名=");
gets(filename1);
fin=fopen(filename1,"r");
if(fin == NULL){
printf("%sがオープンできません.\n",filename1);
exit(1);
}
ct=0;
while(fgets(buf,256,fin) != NULL){
++ct; /* 行数カウントアップ */
}
printf("%d lines\n",ct); /* 行数の表示 */
fclose(fin);
}
0353デフォルトの名無しさん
NGNG「1行」って、バックスラッシュnまで、ってこと?
0354デフォルトの名無しさん
NGNG・255文字まで読んだとき
・'\n'を読んだとき
・EOF
のいずれか。'\n'はbuf内に書き込んで返される。
行の長さが255文字以下だとすれば、上のコードで行数を数えることができる。
0356質問
NGNGメンドイから、ぜんぶ long doubleで宣言すればいいんでないの?
余計なこと考えずにすむし、バグも減る。
0357デフォルトの名無しさん
NGNG演算誤差でアドレスが数バイトずれたりして(w
0358デフォルトの名無しさん
NGNGループ終了後に、"\b "を出力させるというインチキも有り。
リダイレクトされると厄介だが。
0359デフォルトの名無しさん
NGNG文字列は long double の配列か?
チト無理があると思われ。
0360デフォルトの名無しさん
NGNG論理演算ができないよ…
036182
NGNG実数型は丸め誤差で狂うから、余計なバグを生み出すかも。
0362361
NGNG0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNGダイクストラ法で出来てるんなら、もうそれ以上何もする必要ないのでは。
この問題の意図は、収束が遅くてもいいからGAでやってみろってことでしょ、
多分。
とりあえず、なんらかの経路選択手法を遺伝子として持って、適応関数はかかる
距離みたいなので、やるのかな。うーむ。
0365デフォルトの名無しさん
NGNG今動いているダイクストラ法のなにが問題で、GAによってどう解決したいのかを
明確にすれ。
そして、その問題点を解決するのにGA以外の有効な手段かないかどうかを検証すれ。
コーディングうんぬんはその後だ。
0366can
NGNG0367デフォルトの名無しさん
NGNGGAは、一回で複数の解候補がみつかるとか、そういう話ではない。
解候補をたくさんつくって、その中からいいものを残して、そして
いいものに似たものを作る。で解の集合をだんだんしぼりこんでいく。
だから、解の候補が100個ある集団があるのなら、100個分の処
理をしないといけない。結局、ダイクストラ法で何回も再探索をかけ
るのと一緒。複数の最短経路を求めたいのだったら、二つの最短路を
選べる局面にきたら、その局面を記憶して、バックトラックかけた方
が絶対効率的。
GAっていうのは解探索の手法だが、できるだけ局所解に陥らないよ
うにして次善の解を探す手法。ダイクストラ法とは直行する考え方だと思
うし、アルゴリズミックに解けるならそっちの手法を取るのがよろし。
ってことで、課題の出題者の意図が今一つ、つかめなかったり。
0368can
NGNG0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGそんな解候補残しておきたいだけなら、GA使う必要ないやん。
0372独習
NGNGpublic static void main(String args[]) {
// 配列の宣言,割り当て,初期化
int size = args.length;
double data[] = new double[size];
for(int i = 0; i < size; i++)
data[i] = Double.valueOf(args[i]).doubleValue();
// 配列のソート
for(int i = 0; i < size - 1; i++) {
for(int j = i; j < size; j++) {
if(data[j] > data[i]) {
double temp = data[j];
data[j] = data[i];
data[i] = temp;
}
}
}
// 配列を昇順に表示する
for(int i = 0; i < size; i++)
System.out.print(data[i] + " ");
System.out.println("");
}
}
//配列のソート から //配列を昇順に表示する の間の部分が考え方わかりません。
お助け下さい。お願いします。
0373デフォルトの名無しさん
NGNG「バブルソート」で検索してみなされ、
0374デフォルトの名無しさん
NGNG他のCGIで作った変数の値を別のCGIの中に
とりこむにはどうしたらよいのでしょうか。
REQUIREを使うと、そのCGIが実行されてしまいます。
欲しいのは、あくまで変数だけなんです。
よろしくお願いします。
0375独習
NGNGもうちょっと検索して調べて見ます。
>>373さん、ご親切に有難う御座いました。
0376デフォルトの名無しさん
NGNG「作った」変数とは、具体的には?
ユーザにエディットさせるために、ソース内で変数に値を代入しているの?
それとも、二つのCGIを並列に動かして。。ってこと?
0377デフォルトの名無しさん
NGNGCGIパッケージの名前:変数名
で取り出せる
0378デフォルトの名無しさん
NGNGたとえば、複数のサイトのアクセスログをとりますよね。
それでその値をまとめて一つのCGIに出力したいんです。
それにはそれぞれのサイトのカウント数を
そのCGIに渡さないと出力できないですよね。
それでそのカウント数だけを使いたいんですが・・・
0379デフォルトの名無しさん
NGNG一度ファイルに吐き出して、そのファイルをマージするCGI書きなされ。
0380デフォルトの名無しさん
NGNGそれはデータファイルにそれぞれのカウント数を書き込んで
まとめて出力するCGIからそのファイルを読み出すことですよね。
なんかそれでできそうな気がします。
やってみます。
ありがとうございます。
0381デフォルトの名無しさん
NGNGアルゴリズムがさっぱり思いつきません
助けてー
0382デフォルトの名無しさん
NGNG行列式にしてGaussの消去法使え。
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG「アルゴリズムを思いつく」のは無理だろう。
0385デフォルトの名無しさん
NGNGありがとう!
線形代数の教科書捨てて無くてよかった
0386デフォルトの名無しさん
NGNG「2分探索法」のプログラムを組みたいのですが。
「2分探索法」のアルゴリズムは理解しているのですが、
それに合った、vbaのコードがさっぱり、わかりません。
どなたか、アドバイス頂けたら幸いなのですが。
当方、プログラム厨房です。
よろしく、お願いします。
0387デフォルトの名無しさん
NGNGさっぱりわからないと、アドバイスのしようが・・・。
とりあえず、どの辺までプログラムというかVBAわかってるの?
変数ってわかる?
If文の使い方ってわかる?
DO..LOOPステートメントの使い方とかわかる?
エクセルのセルの値の参照の仕方ってわかる?
0388デフォルトの名無しさん
NGNGへぼいところをつっこんでください。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int i,n;
n=-1;
srand((unsigned)time(NULL));
i=rand();
while(n!=i){
printf("数字を入力すれ\n");
scanf("%d",n);
if (n>i)
printf("もっと小さい数だよ\n");
else if(n<i)
printf("もっと大きい数だよ\n");
else
printf("正解\n");
}
}
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG&n だった。
ご指摘ありがとうございました。
0391デフォルトの名無しさん
NGNGただ付ければいいと覚えないでくださいね。
ちゃんとポインタの勉強もしてくださいね。
0392デフォルトの名無しさん
NGNG了解しました。
0393デフォルトの名無しさん
NGNG386です。レス遅くなり、すみません。
変数ってわかる?
>If文の使い方ってわかる?
>DO..LOOPステートメントの使い方とかわかる?
>エクセルのセルの値の参照の仕方ってわかる?
すべて、わかります。
今、自分で「2分探索」に必要なメソッドやプロパティ
の有無を調査中です。
が、どうやら、ないみたいです。
このような状態です。
0394デフォルトの名無しさん
NGNGえっと・・・
今一、目的がみえないんだけど。
2分探索を自分で実装するという宿題ではないの?
とりあえず、A1...Anに値が入っていて、昇順にソートされていると
しましょう。このとき、ある値xを2分探索で探したいと。
このとき、調べるべき範囲は、A1 - Anなので、二つの変数作って
min = 1
max = n
などとしておきましょう。
で、minとmaxの平均をtとします。
で、Atのセルの値と、xを比較します。
そうして、xの方が小さければ、max = t - 1として
xの方が大きければ min = t + 1として、
また同じことすればいいです。
で、xと一致したらそこで終了。
この処理は、>>387 で書いた4つのことがわかっていれば書けますよね?
0395デフォルトの名無しさん
NGNG宿題ではなくて、卒論になります。
ちなみに当方、文系です。
頂いた指示をもとに、やってみます。
出来次第、報告します。
ありがとうございます。
0396デフォルトの名無しさん
NGNGきみの大学の図書館で読める?
0397デフォルトの名無しさん
NGNG#include<stdio.h>
#include"test1.h"
func1()
{
for(i=0;i<3;i++){
printf("%s\n",a[i]);
}
}
/*test1-1.c終わり*/
#include<stdio.h>
#include"test1.h"
func2()
{
for(i=0;i<3;i++){
printf("%s\n",b[i]);
}
}
/*test1-2.c終わり*/
#include<stdio.h>
#include"test1.h"
int main()
{
func1();
func2();
}
/*test1-3.c終わり*/
char a[]={"a","b","c"};
char b[]={"d","e","f"};
int i;
/*test1.h終わり*/
このファイルを分割コンパイルすると
/usr/bin/ld: multiple definitions of symbol _a
/var/tmp/ccgpaaaa.o definition of _a in section (__DATA,__data)
/var/tmp/cciuaaaa.o definition of _a in section (__DATA,__data)
/usr/bin/ld: multiple definitions of symbol _b
/var/tmp/ccgpaaaa.o definition of _b in section (__DATA,__data)
/var/tmp/cciuaaaa.o definition of _b in section (__DATA,__data)
/var/tmp/cckzaaaa.o definition of _a in section (__DATA,__data)
/var/tmp/cckzaaaa.o definition of _b in section (__DATA,__data)
というエラーがでます。よろしくお願いします。
0398デフォルトの名無しさん
NGNGそうすると多重に展開されて aとbが多重に実体を作ろうとする。
それでエラーがでる。
aとbの実体は、ヘッダじゃなく.cで作って、
test1.hには
extern char a[];
extern char b[];
としておけばよい。
あと、インクルードガードもしといたほうがよいな。
0399デフォルトの名無しさん
NGNGint i;
はグローバルで持たずに、各関数でローカルにもったほうがよい。
というかそれが普通。
0400398=399
NGNGa[],b[]の配列はcharの配列だから
char a[] = {'a','b','c'};
char b[] = {'d','e','f'};
じゃなきゃ、まずい。
それからfunc1と2でのprintf出力がおかしい。
文字と文字列、シングルクオートとダブルクオートの使い方、
ちゃんと理解してる?
0401397
NGNG/usr/bin/ld: Undefined symbols:
_a
_b
というエラーがでてまだできないです。
文字と文字列、シングルクオートとダブルクオート
の使いかたはわかっているのですが、ちょっとまちがえてしまいました。
いやーおはずかしい。
ところで、インクルードガードってなんですか?
0402397
NGNG明日また全文のせようと思います。
その時はまたよろしく頼みます。失礼しました。
0403デフォルトの名無しさん
NGNGtest.h:
extern char a[];
test.c:
char a[] = "abc";
0404質問
NGNGint printf(const char *, ...);
これしか書いてありません。
0405デフォルトの名無しさん
NGNG宣言と定義の違いがわかるまでK&Rを復唱。
0406デフォルトの名無しさん
NGNGインクルードガードってのは、ヘッダファイルの先頭と末尾に
#ifndef _test1_h_
#define _test1_h_
.....(test1の内容)......
#endif /* _test1_h_ */
のように#ifndef〜#endifを入れること。…のはず。(w
たぶんこれのことを言ってるんだと思ったんだけど、インクルードガードという言葉は初めて
聞いたもので。あってる? >>398
これをやっとくと、ヘッダファイルの依存関係が複雑になってきて同じファイルを2回以上
インクルードすることになってしまった場合に、同じ宣言が二重に行われるのを防ぐことができる。
0407397
NGNG#include<stdio.h>
#include"test1.h"
void func1(i)
{
extern char a[],b[];
for(i=0;i<3;i++){
printf("%c\n",a[i]);
}
}/*test1-1.c終わり*/
#include<stdio.h>
#include"test1.h"
void func2(i)
{
extern char a[],b[];
for(i=0;i<3;i++){
printf("%c\n",b[i]);
}
}/*test1-2.c終わり*/
#include<stdio.h>
#include"test1.h"
int main()
{
char a[]={'a','b','c'};
char b[]={'d','e','f'};
int i;
func1();
func2();
}/*test1-3.c終わり*/
extern char a[];
extern char b[];
/*test1.h終わり*/
これをコンパイルすると
/usr/bin/ld: Undefined symbols:
_a
_b
というエラーがでます。ではよろしくお願いします。
0408デフォルトの名無しさん
NGNGvariables 'a' and 'b' should be defined as global variable in test1-3.c
0409397
NGNGなぜ英語なのかよくわからんが、まぁいいや。
例えばどういうふうにですか?
0410デフォルトの名無しさん
NGNGmainの中で定義したa, bは、mainの外からは見えないよ。
0411デフォルトの名無しさん
NGNGvoid func1(i)
void func2(i)
で i の型を書いてないが動作する。
そっちのほうが謎だ。
0412397
NGNG0413デフォルトの名無しさん
NGNGa,bの定義をmainの外に出せ。
上手くいったtest1-3.oとエラーがでたtest1-3.oを
nm -gp test1-3.oで比べろ。
実行までは行くだろうが、func1,func2を直さんと及第点はとれんぞ。
0414デフォルトの名無しさん
NGNGドウすればいいのでしょうか?
0415デフォルトの名無しさん
NGNGいまいち、何をしたいかよくわからないが、チェックボックスの内容に
したがって表示するJavaアプレットを切り替えたいってこと?
だったら、Java Scriptあたりで、ボタン押したらチェックボックスに従い
対応するページにジャンプさせるようにするとか。
0416デフォルトの名無しさん
NGNGあ、ありがとうございます。
そういう方法もありますね。
0417デフォルトの名無しさん
NGNG0418
NGNG単純な、stop and mark&sweepでいい?
0419デフォルトの名無しさん
NGNG単に古いK&Rタイプの定義とみなされてintになってるだけ
0420418
NGNGとか、思いつつcopying GCが一番実装はしやすいか。
これは、同じサイズのヒープ領域を二つ作って交互に使う方式。
まず、処理をとめて。
それで、ルートセットから順にたどっていきます。
で、たどり着いたオブジェクトをその段階でもう一方のヒープ領域にコピーします。
コピーしたときは、今オブジェクトが置いてあった位置に次のコピー先書きます。
こうすることで、別のオブジェクトがそのオブジェクトを指していたときに、リンクを
張り替えることができます。
で、次にそのオブジェクトが指しているオブジェクトを読みに行きます。
ここで、どんなに深く読んでも、その呼び出し先をスタックに積んでいたりすると厄介
なので、子オブジェクトを読みにいくときに、現在のオブジェクトから子オブジェクトを
さしているポインタを、一時的にさらにその親オブジェクトを指すようにします。
こうすることで、たどっていって戻っていくとき用にスタックを用意しておく必要がなく
なります。
こうやって、深さ優先でどんどんもぐっていって(ローカリティを考慮すると、深さ優先
だとよくないという議論もありますが無視)、すでにコピーされたオブジェクトに辿りつ
いたら、コピー先のポインタに置き換えて、戻ります。戻ったときはポインタをコピー先
のポインタに書き換えるのをお忘れなく。
とか、書きつつ、これを読んでわかるわけないよな、とか思ったり。
0421デフォルトの名無しさん
NGNG- アルゴリズム -
1つの平面上にn個の点があったとします。このとき、以下の条件を満たす多角形を求めたいのですが、
どのようにアプローチすればよいでしょうか。
条件1 凸型多角形である
条件2 多角形の内側に全ての点が存在する(「内側」には境界線上も含む)
条件3 多角形の頂点には、必ず点が存在する。
つまり、板にn個の釘が打ち付けられていて、
その釘を全て含むように輪ゴムを巻きつけたときにできる形です。
尚、多角形は頂点座標の配列で指定します。
条件1 凸型多角形である
条件2 多角形の内側に全ての点が存在する(「内側」には境界線上も含む)
条件3 多角形の頂点には、必ず点が存在する。
つまり、板にn個の釘が打ち付けられていて、
その釘を全て含むように輪ゴムを巻きつけたときにできる形です。
0422デフォルトの名無しさん
NGNG1 バウンディングボックスを考える
2 境界上の任意の点を始点とする
3 現在の点から内側に向かって最も右側の点を求める
4 その点を次の点として始点に戻るまで3を繰り返す
これだとn個の点でm角形ができるときにO(nm)なんだが、
もっと効率いい方法あるかな。
0423デフォルトの名無しさん
NGNG0424421
NGNG全ての点を含む最小の矩形を考える。
上の辺(y座標の値が小さい方)に接する任意の点を選び、これを始点とする。
「基準の角度」をゼロにセットしておく。
「始点」を「基準点」とする。
基準点と任意の点の成す角度(始点から右に伸びる半直線を基準0度とし、
始点を中心に時計回りを正の角度、反時計回りを負の角度とする)
が最も「基準の角度に近く」、かつ「基準の角度よりも大きい」点を選び、これを次の基準点とする。
基準点が最初の点に戻るまでこれを繰り返す。
…という感じですか。
0425398
NGNGちなみにCの規格ではアンスコで始まる名前は予約語なので、
#ifndef TEST1_H_INCLUDE 〜
とかにしたほうがいい。
結構違反しちゃうんだけどね。
>>397 はコンパイルできたのかな?
参考書があるなら「変数のスコープ」「グローバル変数」「ローカル変数」
っていうキーワードを調べて勉強するとよい。
0427デフォルトの名無しさん
NGNGそれだと、最初に最小矩形調べる必要ないんじゃない?
始点はY座標のもっとも小さいものを選べばいいと思うけど。
0428428
NGNG//////////////////////////////////////////////
import java.io.*;
class Sample{
:
:
public static void main(String[] args){
:
keyboard1 r3=new keyboard1();
r3.show();
}
}
class keyboard1{
void show(){
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
try{
String up=input.readLine();
:
:
}catch(IOException e){
System.out.println(e);
}
}
}
////////////////////////////////////////////////
な感じに書いてコンパイルは通るんですけど、
Exception in thread "main" java.lang.NoClassDefFoundError: Sample
って実行エラーがでます。何かヒント下さい。
直訳すると、メインでクラスが意義されていないエラー?
0429デフォルトの名無しさん
NGNGソースはちゃんと、Sample.javaで保存した?
javac Sample.java
java Sample
と、最初のSはちゃんと大文字にした?
0430428
NGNGしてます。文字コードとかは関係ないですよねぇ〜(win2k)
class keyboardやってないプログラムで動いてたんで
その辺の関連があやしいと睨んでるんですが。
0431428
NGNG////////////////////////////////////////////////
import java.io.*;
class Sample14{
int upperHem,lowerHem,height;
Sample14(){
setSize(10,5,8);
}
Sample14(int up,int low,int h){
setSize(up,low,h);
}
void setSize(int up,int low,int h){
upperHem=up;
lowerHem=low;
height=h;
}
float getArea(){
return (upperHem+lowerHem)*height/2;
}
public static void main(String[] args){
System.out.println("-----引数なし-----");
Sample14 r1=new Sample14();
System.out.println("r1.upperHem="+r1.upperHem);
System.out.println("r1.lowerHem="+r1.lowerHem);
System.out.println("r1.height="+r1.height);
System.out.println("r1.getArea()="+r1.getArea());
System.out.println("-----引数あり-----");
Sample14 r2=new Sample14(4,10,7);
System.out.println("r2.upperHem="+r2.upperHem);
System.out.println("r2.lowerHem="+r2.lowerHem);
System.out.println("r2.height="+r2.height);
System.out.println("r2.getArea()="+r2.getArea());
System.out.println("-----キーボード入力-----");
keyboard1 r3=new keyboard1();
r3.show();
}
}
class keyboard1{
void show(){
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
try{
System.out.print("上辺の値(整数)を入力してください:");
String up=input.readLine();
int upperHem = Integer.parseInt(up);
System.out.print("下辺の値(整数)を入力してください:");
String low=input.readLine();
int lowerHem = Integer.parseInt(low);
System.out.print("高さの値(整数)を入力してください:");
String h=input.readLine();
int height = Integer.parseInt(h);
float menseki=(upperHem+lowerHem)*height/2;
System.out.println(menseki);
}catch(IOException e){
System.out.println(e);
}
}
}
0432428
NGNGお願いします。
ってか、外部クラス使うこんな感じでいいんでしょうか(汗
0433429
NGNGうーん、もう一度きくけど、
Sample14.java で保存して
javac Sample14.java
java Sample14
ってやったんだよね?
こっちだと、コンパイルできて実行できたからなぁ。
あとは・・・クラスライブラリへのパスはしっかり通ってる?
0434429
NGNGあと、どうでもいいけど
float menseki=(upperHem+lowerHem)*height/2;
だと、まず整数計算してからfloatにキャストするから、小数点以下は
切捨てられちゃう。
0435428
NGNGクラスライブラリというとさすんでしょうか?
Java.io.で・・・
java\binには通ってます。
0436428
NGNG調べてみたんですが、エラーの内容からして
http://www.atmarkit.co.jp/fjava/onepoint/java/jv_jcmd.html
見る限り、クラスライブラリへのパスが通ってないって指摘で
あたりっぽいです。
>434
は/2.0にすればたしか問題ないですよね。
0437421
NGNG>>427
すべての点同士で角度を調べるという事は、ひたすらアークタンジェント使う事になりますよね。
すごく時間のかかるような…
とりあえず、この方向で作ってみます。どうもありがとう。
0438デフォルトの名無しさん
NGNGforとか使ってなんとか数字の列は作れました
しかし表がつくれなくて困ってしまいました
Cでの表の作り方を教えて下さい
0439デフォルトの名無しさん
NGNG#include <stdio.h>
main()
{
int i,j;
printf(" 1 2 3 4 5 6 7 8 9\n");
for(i=1; i<=9; i++){
printf("\n%2d ",i);
for(j=1; j<=9; j++){
printf("%4d",i*j);
}
}
puts("\n");
}
0440428
NGNG保存はSample14.javaでちゃんとしています。
実行時に作業ディレクトリ
cd /d F:\My Products\JAVAで移動して...
javac Sample14.java
で、ワーキングディレクトリにSample14.classとkeyboard1.class
が出来まして、、、
java Sample14でやはり...
Exception in thread "main" java.lang.NoClassDefFoundError: Sample14
です(T_T)
F:\My Products\JAVA>echo %classpath%
D:\jdk1.3\bin;
と通ってます。
文字コードはS-JISでもやってみましたが駄目でした。
0441勉強中
NGNG年月、一月分を表示するカレンダーを作成しなさい。
この問題のヒントをお願いします。二次元配列は禁止だそうです。
お願い君で申し訳ないです。どうかよろしく。
0442デフォルトの名無しさん
NGNGなんで禁止なのか。
その問題を出したやつはアホなので金玉を蹴っ飛ばしてやれ。
0443デフォルトの名無しさん
NGNG返信ありがとう御座います
その辺まではわかるのですが宿題では九九表なのでこんな感じの完成図なのです
技術ナシなので3×3表で
1 2 3
11 2 3
22 4 6
33 6 9
これにさらに表のセルも入れたいのです
頭痛いです。。。
私には無理なのでお願いします。
0444デフォルトの名無しさん
NGNG金玉はないかもしれん。
0445デフォルトの名無しさん
NGNGExcel でやればいいじゃん。
>444
タマ無しか。
じゃあ、このへん読んで、実践しとけ。
http://sports.2ch.net/test/read.cgi?bbs=budou&key=1003730842
0446428
NGNGjava -classpath . Sample14で解決しました。
Java VMって、クラスパスを自動的にカレントディレクトリに指定
するはずですし、java Sample14で動くと思っていたのですが・・・???
>Java VMは次のように、クラスを3段階に分けて検索します。
>1.ブートクラスパスを検索する
>2.エクステンション(拡張)ディレクトリ中のJARファイルを検索する
>3.“クラスパス”を検索する
何か関係あるのかなぁ・・・?同じような環境になったかた、解決
された方いますか?
0447デフォルトの名無しさん
NGNGですよねExcel使ったほうが早いと思います
なんでCでやらせるんだろう…。
セル無しで出してみようかと思います
ありがとう御座いました。
0448デフォルトの名無しさん
NGNG俺なら「そんな創造性のない課題に答える意味はない」というレポートを
証明付きで提出するね。
0449428
NGNG>446
強引ですが、Classpathに.;とカレントディレクトリの指定を追加して
解決。
>436
は2.0fですね^^;まだ、Cの癖がぬけきれてません。
warnigじゃなくerrorとはさすが型変換厳しいにゃーっと。
0450デフォルトの名無しさん
NGNG1.3辺りでカレントディレクトリは明示的にクラスパスに記述しなきゃいけなくなった。
セキュリティの問題かね。
0451デフォルトの名無しさん
NGNGどこに配列を使うんだ?
0452デフォルトの名無しさん
NGNGそういうことなんですかー謎が解決してすっきりしました。
じゃあ、糞して寝ます。
0453デフォルトの名無しさん
NGNG一週間7日で一次元、一ヶ月に4-5週で一次元、合わせて二次元、かと。
>>441
カレンダークラスでも使えば?
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/GregorianCalendar.html
0454451
NGNG0455デフォルトの名無しさん
NGNGツェラーの公式って何ですかと聞かれるに 1Duke
0456デフォルトの名無しさん
NGNG>441って
二次元配列禁止らしいじゃん(笑。
Cでしょ〜?大変そうだね。
[3][6]でやるとかでないんでしょー
2001年12月
1 土
2 日
3 月
4 火
5 水
6 木
7 金
とかでいいんでねーの。
にしてもそれ、クラスでも参照しないとかなりめんどいね。
あとはその公式とやらネットで調べて、うるう年に対処して
終りでは〜。
0457デフォルトの名無しさん
NGNG月:1 火:2とかふって、公式から出た1日の曜日を考慮しつつ、
7つ表示したら改行とか?
どこの大学何だろー。いかなくてよかったYO!
掛け算九九の問題が可愛くみえるねぇ〜(笑
0458デフォルトの名無しさん
NGNGループで一日ずつ出力しながら(day % 7) == 6)のとき改行。
0459457
NGNGあとは自分でやれやー
0460デフォルトの名無しさん
NGNGマルチポストっつーかJavaスレから移動してきたみたい。
0461スーパー暇
NGNG#include <stdio.h>
int cd[12]={31,28,31,30,31,30,31,31,30,31,30,31};
char wd[]="日月火水木金土";
int y=2001;
int m=11;
int vd;
int gap;
int gap1;
int gap2;
void main()
{
int i;
//月のついたちの曜日を得るために標準との差をもとめる。曜日は0〜6に対応
gap1=0;
for(i=0;i<m-1;i++)
{
gap1+=cd[i];
}
//1996.1.1と、y年.1.1の差を求める。
gap2=(y-1996)*365+((y-1993)/4)*1;//+1はうるう年の分
gap=gap1+gap2;
vd=gap%7+1;
//wd[vd*2];//月のついたちの曜日
printf("%4d年%2d月\r\n",y,m);
printf("日月火水木金土\r\n");
for(i=0;i<vd;i++)printf(" ");
for(i=0;i<cd[m-1];i++){
printf("%2d",i+1);
if((i+1+vd)%7==0)printf("\r\n");
}
}
0462スーパー暇
NGNG0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGきっと(w
あと、int index(x,y) 的関数を用意すれば、
配列は一次元でも二次元のアクセスができると思うけど。
0465デフォルトの名無しさん
NGNGint main(int argc, char **argv)
{
char cmd[256];
sprintf(cmd, "cal %s %s", argv[1], argv[2]);
return system(cmd);
}
charの一次元配列を使っているので出題の条件は満たしているはず。
なんちゃって。
0466422
NGNGいや、前の点から現在の点へ向かうベクトルと、現在の点から各点へのベクト
ルの外積を使えばatanはいらない。>>423はこう解釈してOK?
最初の点では外側に向かうベクトルを適当に与えておけば酔。
>>427
そだね。
0467437
NGNGうーん、外積をどのように利用するのでしょう...
0468デフォルトの名無しさん
NGNGそれは「凸包」(convex hull,convex closure)を求める問題ですね。
さんざん研究されているアルゴリズムなので、検索すれば良いアルゴリズムが
見つかります。普通に組めば O(n logn)です。
研究されている分野は「計算幾何学」(computational geometry)です。
0469デフォルトの名無しさん
NGNGどうやったら2次配列を使えるのかがわからん。。
外周を求めるのは、まぁ、はじめにx座標なりy座標
なりの最小あるいは最大の点を選び出し、(それは
ひとつの頂点ではあるはず)あと、x座標かy座標で
ソートもしとけばあとあと便利だけど、そーしておいて
順次となりの頂点を、内積つーかコサインつかって
時計回りなり半時計回りなりにもとめるのが分かりやすい
と思うYO.あとは区画を区切って区画の大きさに注意
しながらやる方法とかあるとおもう。めんどうけどな。
0470デフォルトの名無しさん
NGNGうるう年のカレンダの時だけ2月以降ひとつずれるのじゃ
0471デフォルトの名無しさん
NGNGwdはday of the week.
vdは(assigned)value of the day
ひまだったつーことでよろしく
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNG0474
NGNGargvの数。
0475457
NGNG作ったんだけど、うるう年テストしてないや...
2000年、2月でいいんだっけ?
0476デフォルトの名無しさん
NGNGどーせ2100年には俺は生きてない。
0477457
NGNGってことで・・・
>461のソースにネットに落ちてた関数足して
20分ぐらい、、、で、継ぎ接ぎしてみた。
0478457
NGNGint GetDayOfWeek(int,int,int);
int cd[12]={31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int i,year,month,week;
char szWeek[7][3]= {"日","月","火","水","木","金","土"};
printf("year,monthを入力しろや、ゴルァ!!\n例) 2001,10な感じだ(゚д゚)! \n");
printf("注) errorでたらCtrl+Cでもスレ or エラー処理書いとけ。\n");
scanf("%d,%d",&year,&month);
week=GetDayOfWeek(year,month,1);
printf("\n%4d年%2d月\n",year,month);
printf("日月火水木金土\n");
for(i=0;i<week;i++){
printf(" ");
}
if((year%4==0 && year%100!=0)||year%400==0){
cd[1]+=1;
}
for(i=0;i<cd[month-1];i++){
printf("%2d",i+1);
if((i+1+week)%7==0)
printf("\n");
}
}
// ツェラーの公式より
int GetDayOfWeek(int y, int m, int d)
{
// 1582 年 10 月 15 日以降でないと計算できない!
if (y*366+m*31+d < 1582*366+10*31+15)
return 7;
// 1 月か 2 月のときは、去年の 13 月、14 月として計算
if (m==1 || m==2)
{
y--;
m+=12;
}
return (y + y/4 - y/100 + y/400 + (13*m+8)/5 + d) % 7;
}
0479457
NGNGその行いらねーし。
0480デフォルトの名無しさん
NGNG分割法の問題です。
/* quick sort */
void quicksort(int a[], int left, int right)
{
int i;
if (right > left) {
i = divide(a, left, right); /* 振り分け処理 */
a[left]..a[i-1] 部分の分類(quicksortの再帰呼び出し)
a[i+1]..a[right] 部分の分類(quicksortの再帰呼び出し)
}
}
基準値(pivot)を使うみたいです。
分割を行なうとき、振り分け処理プログラム中のdivide関数を用意しなければ
ならないみたいです
このquicksort関数、及びdivide関数中の日本語部分をプログラムし作成せよ
というのが問題です。
プログラミングを覚えるコツはあるのですか?
0481
NGNGコツは、量書くことです。
とりあえず、人に聞いてもいいから、理解して書くこと。
本に載ってるソースで何をやってるか理解して、書き直すだけでも違う。
で、その問題だけど。どの程度わかっているか言ってくれないと。
配列はわかってる?
クイックソートってどういうものかはわかってる?
0482480
NGNGクイックソートとかはよくわからないんです。
分割法自体をまだ理解してません
0483481
NGNGクイックソートは・・・まあ検索して調べて。
簡単にいうと、ある敷居をきめて、それ以上のグループと、それ以下のグループ
を作って、それぞれのグループでまた二つにわけて・・って感じで順に並べていく。
分割法っていうのが何さしてるか、その辺の用語わからないんだけど。
多分、下のような事をやらせたいのかな。頑張って書いてみる。
この場合、例えば配列に
1638492750
と入っていると。で、これを、左側に例えば4以下、右側に5以上を
入れたいと思うわけです。
とりあえず、左から順に調べましょう。
1638492750
↑
まず、1を見ます。これは5以下だから、このままにしましょう。
1638492750
↑
次に6を見ます。これは5以上ですね。
このとき、一番右から順に見ていって、最初の4以下のものと入れ替えます。
このときは、0。ですので、0と5を入れ替えます。
1038492756
↑ ↑
まあ、また右側から全部チェックするのはバカらしいので、
6までは全部5以上だということを示すため、6をチェック
しときます。
さて、また0の右から順に4以下のものを探していきます。
8がみつかりました。では、こんどは6の左から順に左へ4以下の
ものを探していきます。2がみつかりますね
1038492756
↑ ↑
ここで、2と8を入れ替えます。
1032498756
↑ ↑
で、また、左から5以上のもの、右から4以下のものを探していきます。
つまり、左と右から順に矢印を真ん中にもっていくのですが、この矢印
が重なったら、その段階で終了です。
1032498756
↑↑
(順序が入れ替わってる)
で、この矢印の間がグループの区切りです。
これで、二つのグループに分割できました。
....って、わかりにくい説明でしたね。
意地悪してるわけでなく、こういうの文字で説明するの難しいってことで
許してください・・・。
0484481
NGNGブルーだ。
0485481
NGNG余計にむなしい。
ttp://www.cs.u-gakugei.ac.jp/~miyadera/LECTURE/SortAnim/ExAlgorithm5.html
0486デフォルトの名無しさん
NGNGすると速くなるよね
つーか漏れはそゆこと考えてたのだ
0487デフォルトの名無しさん
NGNGCと構文は似たようなもんだと思って
たんですが、ところどころ違うところ
があって戸惑ってます。
最初にscanf使ってエラーが出て何で?
と思ったぐらいの初心者です。
C++でのプログラムなんですが、モードが
2つあって1つはキーボードで打った文字を
ファイルに書き込む。もう一つはそのファイルを
読み込んで表示させるです。
Cはある程度分かっています。
C++の考え方の触りの部分を勉強中です。
自分に興味の無い言語覚えるのって辛いです。
ASPとかVBは覚えやすいんですけど。
CとかJAVAって難しくないですか?
言語覚えるこつとかあるんですか?
ひたすら組むしか無いですよね。
質問ばかりですみません。
よろしくお願いします。
0488デフォルトの名無しさん
NGNGプログラム結構かけてるよ
ちなみに僕のバイブルはいまだにC(!=C++)
のやつで、実習と応用の2冊しかないけど負けずに
ばんばっているのサ
0489デフォルトの名無しさん
NGNGそれも1つの選択だね
0490デフォルトの名無しさん
NGNG//標準入力からファイルへ書き込み
// argv[1] に出力ファイル名を渡す
///////////////////////////////////////
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
if(argc<2) return -1;
fstream fout;
string str;
fout.open(arg[1],ios::out);
for(;;){
cout << "> ";
cin >> str;
if(str=="exit")
break;
fout << str <<endl;
}
fout.close();
return 0;
}
////////////////////////////////////////
//ファイルから標準入力へ出力
// argv[1] に入力ファイル名を渡す
///////////////////////////////////////
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
if(argc<2) return -1;
string str;
fstream fin;
fin.open(argv[1],ios::in);
while(fin >> str){
cout << str <<endl;
}
fin.close();
return 0;
}
0491490
NGNG1こめの方は、exitって入力すると終了です。
2こめのコメントの「標準入力」は「標準出力」のまちがい。
0492487
NGNGしかもむちゃ早いレスで驚いてます。
やっぱ言語ってめげずにがんばるしか
ないですね。
やれるだけやってみます。
0493デフォルトの名無しさん
NGNGIF EXIST calc.bas run"calc"
って言うのをバッチファイルにしてcalc.basと同じフォルダに入れて
バッチファイルをダブルクリックしたのですが、1行目しか実行されません。
何がいけないのでしょうか?
DOSプロンプトで直接入力すれば実行できるのですが。
0494490
NGNGstreamとstringを覚えると、なにかと楽です。
でも、この2つは結構、奥が深いので完全に理解しようとするとハマります。
最初は使い方のお約束だけ覚えて、使うのがよいね。
0495デフォルトの名無しさん
NGNGどこにも宣言がないけどインクルードファイルに入ってるの?
0496490
NGNG////////////////////////////////////////
//ファイルから標準出力へ
// argv[1] に入力ファイル名を渡す
///////////////////////////////////////
#include<iostream>
#include<fstream>
using namespace std;
const int BufferLength = 256;
int main(int argc, char *argv[])
{
if(argc<2){
cout << "you must input filename!!" << endl;
return -1;
}
fstream fin;
char buf[BufferLength];
fin.open(argv[1],ios::in);
for(;;){
fin.getline(buf,BufferLength);
cout << buf << endl;
if(fin.eof() || fin.bad())
break;
}
fin.close();
return 0;
}
0497490
NGNG固定長配列はなんとなく美しくないのでstringクラスとかつかおうかと思ったけど、
結局こっちの方がシンプルにかけそう。
ちなみに490は何がダメだったかというと、fstreamの>>演算子はスペースやタブ
を区切り文字として捨ててしまうので、出力結果がファイルの内容とは違ってしまう
というところでした。
0498490
NGNG構造体ではないです。
fstreamクラスは、fstream.hとfstreamで定義されてる。
cin,coutはistream,ostream型のオブジェクト。これは確かtypedefされてる
んで実際に定義されてるclass名はまた違う。iostream.hとiostreamを見れば
わかるはず。
stringクラスは、stringファイルの中で定義されています。このファイルがは
さらにヘッダをインクルードしているんだけど、cygwinのg++とVC6では、
インクルードしているファイルが違ってた。
いずれにしても、stringクラスはバリバリのtempleteクラスなのでソースか
ら理解するのはかなりキビシイ。素直にマニュアル読むべし。
ところで>>496は strstreamを使うとスマートにかけるかもしれない。
うーん、実は漏れもstreamは使いこなしてないね。トホホ
0499490
NGNGこの程度のプログラムは、Cで書いてもC++で書いてもどっちがいいという
ものでもない。
Cがある程度わかってて、C++は全然わかんないというならCの方がいいかも。
scanfのエラーなんてのはCレベルでの問題だし。
C++やるにしてもCの基礎は重要だから、Cの標準ライブラリでこの程度の
ことはできるようにしといたほうがいいよ。
余計なお世話かもしれないけど・・・
0500490
NGNGお騒がせしました。
500ゲット(藁
0501質問
NGNG「これは32bitの環境用のソースです」
とかわざわざ書いてないような気がします。
0502デフォルトの名無しさん
NGNG動作確認したコンパイラなんかをドキュメントに書いたりするよな。
0503デフォルトの名無しさん
NGNGつーか、intの幅が違ったら動かなくなるようなコードを何の注釈もなく
配ってるような奴のソースを喜んで使わない。
0504487
NGNGC++にCの命令を混ぜて作りました。
fgetsとかfputsとか使って。
昨日教えて頂いたサンプルを一度
走らせてみたんですが、エラーが
出て自力では見たことのない命令
が多くて直しきれませんでした。
今はCとC++の違いを勉強しています。
coutとcitも慣れると便利です。
0505デフォルトの名無しさん
NGNGどっちかというと今の時代16ビットの方が珍しいので、
何も書いてなかったら32ビットで、16ビットの場合は明記する
と考えて良いのでは。
0506神
NGNGわかりやすく説明してください。
0507デフォルトの名無しさん
NGNGプログラムと言われても、どんな問題を解きたいかわからないと
書きようがない。
まず、何がわからないかを明らかにしてくれ。
取りあえずデータ木でも示してやろうと思ったが2木か多木かも書いてない。
大学行くのやめなさい。
0509神
NGNG教えてください。
0510_
NGNG大工生
左から宣教師、人喰い、船。
331 000
310 021
321 010
300 031
311 020
110 221
221 110
020 311
031 300
010 321
021 310
000 331
簡単。
0511デフォルトの名無しさん
NGNG隣接行列 adjacent[i][j],1<=i<=n,1<=j<=n が与えられたとき,
グラフの連結成分(つながった部分)ごとに,番号の1番若い点から出発して縦型検索
でたどり,点の番号を書き並べる。隣接行列 a[i][j]は点i,jが線でつながっていれ
ばa[i][j]=1,そうでなければ a[i][j]=0である。たとえば隣接行列が
a[1][2]=a[2][1]=a[2][3]=a[3][2]=a[1][3]=a[3][1] =a[2][4]=a[4][2]=a[5][7]=a[7][5]=1
他=0 であったとすると,出力は 1: 1 2 3 4 2: 5 7 3: 6 となる
0513511
NGNG0514511
NGNG0515デフォルトの名無しさん
NGNGとりあえずいけるところまで行って、だめだったら引き返す。
この繰り返し。
今の問題だったら、ためしに一人宣教師船に載せるするとー
あーだめだー。じゃあ次はー、って感じで進めてくのかな。
無限ループに注意。
0516教えてください
NGNGプログラムがここにぶつかったとき(たぶん)に、
セグメント例外 (コアダンプしました)
という表示がされて、止まってしまいます。
何ででしょう。たすけてください。
0517デフォルトの名無しさん
NGNG特におかしいようには見えないよ。
一応考えられるのは、
・chrがchar型でない
・fpが、正しくない(ファイルオープンに失敗してるとか)
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGでも多分、fopen()のエラーチェックをちゃんとやってなくて実はopenできて
ないとかではないかな?
0520デフォルトの名無しさん
NGNG0521516
NGNGレス本当にありがとうございます。
解決しました。
単に開くファイルの名前が間違っていただけでした。
ホントにすみません。
これからは、もう少し粘ってから質問します。
0522神
NGNG助かりました。ありがとうございます。
0523神
NGNGやっぱり、宣教師と人食い人種のやつの
プログラムの作り方教えてください。
って言うか作ってください。
お願いします。
0524デフォルトの名無しさん
NGNGここの>>1を100回復唱して留年しろ。
0525教えて
NGNG問題1
3つの整数a,b,cを受取り、それをa�I2(2乗)+bx+c=0としてxの解を求める関数「二次方程式」を作れ。
2つの解のうち、いずれか一方を返せばよい
ヒント 解の公式を適用する平方根は関数Sqrを使用する
問題2
セル範囲を2つ引数にし、対応するセルの値がすべて同じなら1を、一つでも違うなら0を返す関数「比較」を作れ。
ヒント Function 比較(c1, c2)
ここで、セル1つずつを比較する
End Function
0526デフォルトの名無しさん
NGNGPrologで作ったのならもっているぞ。
とりあえず、作った。でもここには載せません。
締め切りギリギリまで努力してください。
で、その努力の跡が見られ、それでも尚完成してなかればここに
ソース載せます。
(つまりは未完成でもいいから自分で書いて、載せてみろということ)
0528デフォルトの名無しさん
NGNG何がわからないのかくらい書いたらどうだ。
それすらわからないならおとなしく単位落とせ。
0529教えて
NGNG0530デフォルトの名無しさん
NGNG0531教えて
NGNG0532神
NGNGあなたが本当に作ったのなら頑張りますが
期限まで頑張らせといて最終的に無視とかいうのだけはやめて欲しいです。
本当に作ったのなら証拠を見せてください。
0534デフォルトの名無しさん
NGNGあなたが本当に自分の力で宿題を解くのなら協力しますが、
模範解答を出させておいて最終的に丸写しとかいうのだけはやめて欲しいです。
本当に自分で考えるなら証拠を見せてください。
0535デフォルトの名無しさん
NGNG相手にすんなよ(w
0536527
NGNG220 111
321 010
300 031
311 020
110 221
221 110
020 311
031 300
010 321
111 220
000 331
021 310
とりあえず、実行結果はこうだけど。
0537デフォルトの名無しさん
NGNGワラタ(w
宿題丸投げして証拠を見せろと来たか(w
こういう奴を卒業させる必要ねえぞ。
0538デフォルトの名無しさん
NGNGあくまで、宿題を手伝ってあげるスレであって、代わりにやって
あげるスレでないことは理解して欲しいものです。
0539デフォルトの名無しさん
NGNG「宿題やってやるよ」スレッドでも建てるか?
0540デフォルトの名無しさん
NGNG教育的配慮上、やめた方がいいと思う。
丸写しじゃ本人の為にならんよ。
0541デフォルトの名無しさん
NGNGhttp://www.asahi.com/national/update/1120/020.html
0542デフォルトの名無しさん
NGNG本人のためというか、そういう奴が卒業して近くに就職して来る可能性は
充分ある。卒業証書を持ってくる以上履修していて然るべき事をまた教え
直すのは無駄。あくまで自分へのフィードバックだと思って丸投げ厨を
無視すべし>プロ各位
0543神
NGNG僕はただ単に人工知能に興味があって独学で勉強してる文芸学部の一年生です。
最近、将棋のAIを作りたくなっていろいろ本を読んで勉強していたんですが、
何から手をつけていいのかわからなくて
とりあえず縦型探索とかいうのを実際に作ってみよう
と言うふうに思いましてここに書き込んだ次第です。
今縦型探索という所でつまってますがそこは基本的な部分なので
多分ここがわかれば横型探索やヒューリスティック探索とか言うのも
プログラムは組んでいけると思います。
なので、(忙しければ大体でいいので)プログラムの作り方を教えてください。
(できればわかりやすく・・・。)
0544デフォルトの名無しさん
NGNGまずは、プログラムの勉強からはじめてください。それが第一。
本読んで全く理解できないなら、ここで説明受けても理解できるはず
ありません。せめて、わからない部分書いてくれないと対処できません。
あと、横型探索は、縦型探索より遥かに(実装するのが)難しい(面倒)です。
将棋とかのプログラムについては結構知っていますが、総合的なプログラム
能力が必要となります。
いずれにしろ、地道にCの勉強からはじめることをお勧めします。
そうすれば、縦型探索くらい簡単に理解できると思います。
0545デフォルトの名無しさん
NGNG実際の業務でそんな宿題以下のつまらない仕様とかも
よくある話で、無茶な社内規定やコーディング規約に
縛られてプログラミングしてる人も多いと思う。
ヘンテコリンな宿題は、結構 頭の体操にもなるし
丸投げしてもらったのを解いて、答えを小出しにして
もがく学生を眺めるのも それはそれで面白い。
0546デフォルトの名無しさん
NGNG「あ、今まで俺がやってた事を縦型探索っていうのか」みたいな感じで。
何も分かってないうちから用語を振り回しているだけっていうのも...
0547デフォルトの名無しさん
NGNGたまに大嘘を混ぜておくとより効果的だね。
一見動いてるように見えて明らかなバグを仕込んでおくとか、口頭諮問で
絶対答えられないようなコードを書いてやるとか。
0548_
NGNGクソ大学の三年生が言ってるんだから間違いない。
もう一回やり直しな。
0549デフォルトの名無しさん
NGNG趣味で将棋のプログラムが作りたいならとりあえず
合法的な手をピックアップする事からはじめて
それらの中から初めは乱数で手を選ぶだけでも面白いと思うよ。
めちゃくちゃ弱いプログラムになるだろうけど、それはそれで面白いと思う。
あるいは選んだ手の中でコマの損得を計算して一番有利なものを選んでみるとか。
そうすると次は一手先を読んで同じ事をして...
ほら、先が見えてきましたね。
0550デフォルトの名無しさん
NGNGhttp://news.2ch.net/test/read.cgi?bbs=newsplus&key=1006242655
1 名前:猫汁φ ★ 投稿日:01/11/20 16:50 ID:???
暗記する勉強が好きという生徒は、考える勉強が好きという生徒の2倍。
通信教育大手のベネッセコーポレーション(本社・岡山市)が全国の中学生を対象にした
アンケート結果で、こんな姿が見えてきた。公立中では来春から生徒の自主性を重視した
「総合的な学習の時間」が本格的に始まるが、長年続いてきた「勉強=暗記」という意識は
そう簡単に変わりそうにない?(16:33)
http://www.asahi.com/national/update/1120/020.html
ソース続きは>>2
2 名前:猫汁φ ★ 投稿日:01/11/20 16:51 ID:???
今年5〜6月、全国の公立中学生約2500人を対象に調査した。
勉強方法を二分し、どちらに当てはまるかを尋ねると「暗記しようとする」との回答が67%で
「出来るだけ考えようとする」(30%)の2倍以上だった。
「分からないところはどうするか」には、「友達に聞く」が64%に上り「自分で考える」(34%)を
大きく引き離した。具体的な勉強方法では「分からない時には辞書を引く」は3人に1人。
「図鑑や辞典で調べる」は10人に1人だけだった。
公立小中学校で来年度から本格的に始まる「総合的な学習の時間」は
数字による成績評価もなく、従来の教科ではカバーしきれなかった
「自ら学び、考え、主体的に判断する能力」(文部科学省)を育てるのが目標だ。
多くの学校ではすでにカリキュラムに組み込み、実施している。
しかし、同社は「効率を追求する受験勉強の意識が根強く残っている」と分析。
「自分で考えようとする姿勢が子どもの間に根付くには、当分かかるのではないか」とみている。
(16:33)
http://www.asahi.com/national/update/1120/020.html
だから教えて君が多いのか…
0551デフォルトの名無しさん
NGNG友達に聞いて「なるほど」と思うことは、考えることと同じ。
でもレポートの丸写しはいけない。為にならない。
暗記は、テストという要素のぞけば、語学以外はそんな重要じゃない気がする。
考えているうちに自然と覚えるのが理想。
暗記できなくても、「あー、昔こんなのやったっけな」って思うだけでも違う。
で、何を言いたいかというと、わからない事を人に聞くのはいい事だから、
別にこのスレで質問するのを遠慮することはないと思う、ということ。
でも、あくまで何がわからないか、ということがわかるレベルまでは、自分
で考えないと意味は無いし、誰も教えてくれない。
0552デフォルトの名無しさん
NGNGわからない単語がでてきたら、辞書で調べる。
昔だったら、紙の辞書。いまなら、電子辞書やオンライン辞書。
で、決して覚えようとしない。代わりに理解する。理解したら忘れる。
しばらくしてまたその単語に出会うと忘れているので、また辞書を引く。
これを14回繰り返すと、自然に覚える。わざわざ覚えようと努力する必要はない。
一番大事なのは、理解すること。理解できれば、いつか覚える。
0553デフォルトの名無しさん
NGNG紙の辞書引いてる時にはほかの項目も目に入るから、
なんとなく語彙が増えてくんだよ。
0554デフォルトの名無しさん
NGNGでも、単語が出てきたときに暗記するよう努力した方が上達早いと思うよ。
特にしゃべったり聞いたりするときには、パッとでてこないと辛い。
ボキャブラリーには理解も何もないでしょう。
言葉の意味を覚えてるか覚えてないか。
0555デフォルトの名無しさん
NGNG例えば、Theを辞書で引けば意味や用法が30くらい載っている。それらを全部覚えるのか。
それとも、現在でてきたストーリーの中で使われている一部の意味だけ覚えるのか。
用法や意味がたくさんあっても、その語のイメージは一つしかない。そのイメージを把握するのが大切。
その元になる根本的なイメージからいろんな派生的な意味が出てくる。
何か長文を読んでいて、その中で、こういう意味でこの語が使われた。
こういうイメージをもつ、これが理解する、ということ。
英語デキナイ君は、ここを勘違いして暗記しようとしてしまう。だから就職しても height をハイトと発音したり width にいたっては「幅」とか逝ってごまかしたりする。
また、年中、「さっさとXXの日本語訳だせや!」
「●●英語版しかないんだ、、鬱」
とか泣き言いっとる。
だいたい、記憶とは、必要な情報は記憶し、必要ない情報は忘れる、というふうに寝てるあいだに海馬でフィルターかけて勝手に行う作業だよ。
「記憶しよう!」とがんばるのは
「心臓を動かそう!」
と一生懸命になってるのと同じ。
小学生の時期に、変な塾に通ってたやつに多い。子供なんてバカだから、恐怖心で煽れば怖くて必死になって覚える。
スパルタ式というやつだ。体育会系の講師が大声で怒鳴りまくる。こういう塾は最悪だ。
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG同意。
例文がいっぱい載っている辞書がいい。
0558デフォルトの名無しさん
NGNG例文を読んでいて、わからない単語があったら、jumpボタン一発で飛べる。
紙だといちいちメモしてひきなおさないといけない。
一度電子辞書を使ったら、二度と紙には戻れない。
政府は税金を使って、生徒一人に電子辞書一台与えるべきだ。
0559デフォルトの名無しさん
NGNGとこはわかんないんだろうけどさー、
「頻出英単語○○○」みたいなの使ってる奴よりも、きちんと辞書を引いてた
奴の方が、確実に英語が読み書きできてたぞ。
0560デフォルトの名無しさん
NGNG趣味で英語の小説とか読んでるけどさ、辞書なしで読むんで
わからない単語とか読み飛ばしていっちゃうから、新たにボキャ
ブラリは付かない。たまに単語わからないと文章が意味わからない
時には辞書ひいたりするけど、それでもやっぱ全然身に付かない。
そこで、少し文章読むのとめて、「ああ、これってこういう意味
で、こういう使い方するんだ」と思い、覚えようと努力すること。
これが結構重要なんじゃないかな、と最近思ってるわけです。
0561デフォルトの名無しさん
NGNGあなたの言っている「覚える」という意味は、私の言っている「理解する」と同じことです。
あと、わかんない単語がでてきたら、絶対に見逃さないですぐに辞書引いてください。
紙ベースのときは、24時間辞書持ち歩くので重くて大変だった。
電子辞書は軽くていいね。ポケットに入る。
0562デフォルトの名無しさん
NGNG読むに限る。
0563デフォルトの名無しさん
NGNGポルノ小説の原書読むのに俗語辞典とか引いて目的外の項目に目がとまって
予定外にハァハァしてしまったり(w
0564デフォルトの名無しさん
NGNG英語の勉強になった。
0565デフォルトの名無しさん
NGNGただ、語学と、数学やプログラムとの決定的な違いは、語学の場合は
覚えてないといけないことってのが多い。
数学で公式忘れたり、プログラムで命令忘れたりしても調べてればなん
とかなる。でも、読むときはともかく、しゃべってるときとか、聞いて
る時には、辞書なんて調べてられない。「何度も繰り返しやってれば、
そのうち覚えるさ」的ではダメで、いちいち覚えようと努力する貪欲さ
がないと、語学はダメだと思うのです。
その点他のものと区別しないといけないだろうってことで言いたかっ
たわけですが、板違いなのでsage。
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG違っても暗記した単語を使った方が通じやすいと思うよ。
もちろんイントネーションまで含めてしっかり暗記しないといけな
いけどね。
0569デフォルトの名無しさん
NGNG日頃からコンパで、ジェスチャークイズやっとけ。
0570k
NGNG以下を標準出力に書き出すプログラムを作成して下さい。
ここで単語間の区切りは、スペース、タブ、コンマ、ピリオド改行のいずれかであるとし
、入力の終了はEOF(^d)とします。
(1)テキスト中のそう単語数、総文字数、単語あたりの平均文字数を求め、
出力する。
(2)テキスト中の各文字(A〜Zの全26文字)の出現回数を求め、その一覧を
出力する。
(3)テキスト中の英字を出現回数の降順に並べ、出力する。
(4)テキスト中の1文字単語、2文字単語、3文字単語・・・
の出現回数を求め、その一覧を出力する。
(1),(2)はできました。(3)、(4)がわかりません
0571デフォルトの名無しさん
NGNG(3) (2)が出来たなら、その出力を文字順じゃなくて出現回数順にしてみろ。
(4) (1)で単語にわけるのは出来てるだろ。その単語の文字数をindexにして
(2)と同じようにやってみればいいんじゃないか?
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG改行までが一行だそうです
0575デフォルトの名無しさん
NGNGftp://ftp.ne.jp/GNU/textutils/textutils-2.0.tar.gz
ほれ。
textutils-2.0/src/wc.c な (藁
0576エッチマン
NGNGmain(int argc,char** argv){
int fd,c,num=0;
fd=open(argv[1],O_RDONLY);
while(read(fd,&c,1)>0)if(c=='\n')number++;
printf("%d\n",number);
}
動くかもしれないし動かないかもしれない
戻り値省くのあんまり非推奨。
0578デフォルトの名無しさん
NGNGそれ言ったら、openだって、標準じゃないし。
0579デフォルトの名無しさん
NGNGほい。もっと短くできるかも。
---- wc.rb
#!/usr/bin/env ruby
words = ARGF.read.split(/[\s\t,\.]/)
#1
puts "1)"
h = Hash.new(0)
words.each{|w| h[w] += 1}
puts wc = h.keys.size
puts cc = h.keys.join.size
puts cc.to_f / wc
#2
puts "2)"
h2 = Hash.new(0)
words.join.each_byte{|c| h2[c.chr.downcase] += 1}
ary = h2.to_a.select{|l,c| /[a-z]/ =~ l}
ary.sort{|a,b| a[0] <=> b[0]}.each{|l,c| puts "#{l}:#{c}"}
#3
puts "3)"
ary.sort{|a,b| b[1]<=>a[1]}.each{|l,c| puts "#{c}:#{l}"}
#4
puts"4)"
h3 = Hash.new(0)
h.keys.collect{|w| w.size}.each{|s| h3[s]+=1}
h3.to_a.sort{|a,b| a[0]<=>b[0]}.each{|s,c| puts "#{s}:#{c}"}
0581デフォルトの名無しさん
NGNG行数数えるだけならね。579 は 570 のプログラム。
テキストファイルの行数を数えるスクリプトなら一行で済む。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/14491
0582デフォルトの名無しさん
NGNGint main(void) { int c, i=0; while((c=getchar()) != EOF) if (c=='\n') i++; printf("%i\n", i); return 0; }
0583C++
NGNGint main(){char c;int i=0;while(cin.get(c))if('\n'==c)i++;cout<<i<<endl;return 0;}
0584質問
NGNGb=a>0 ? 1 : 0;
みたいなやつ。
0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG基本的に、ネタっぽい口調で質問すると、ネタっぽく答えてくれます。
この質問の仕方で有益な情報を得られる確率は実に80%を超える。
高圧的な態度や初心者(厨房)丸出しは晒されます。
0587デフォルトの名無しさん
NGNGif(c=='\n') と if('\n'==c) の違いがあるね。意味はおなじだが。
条件式からすると前者のほうが自然のような気がするのは折れだけ??
0588デフォルトの名無しさん
NGNG初心者でも、謙虚な姿勢で質問すれば晒されない。
ただ、板違いは晒される。
0589デフォルトの名無しさん
NGNG「==」を「=」とtypoした時、if (c='\n')だとエラーにならないけど
if ('\n'=c)ならエラーになるので、後者のスタイルで書く人もいるよ。
どっちのスタイルがいいかはC言語の初期から論争が繰り広げられているので
かかわらないのが吉。
0590デフォルトの名無しさん
NGNGほとんど、決着のついた論争でしょう。
if (c=='\n') こう書くほうが、圧倒的に多数派。
0592デフォルトの名無しさん
NGNG#define eq(a,b) ((a)==(b))
is ( eq(c, 'n') )
0593デフォルトの名無しさん
NGNG(・∀・)イイ!鴨
0594デフォルトの名無しさん
NGNGconst char c;
0595すきーまー
NGNG0596デフォルトの名無しさん
NGNGCMP AL,'\n'
JE xxxxxx
MOV AL,'\n'
CMP AL,[c]
JE xxxxxx
MOV AL,[c]
SUB AL,'\n'
JE xxxxxx
変わらん・・・
0597
NGNG普通のプログラマなら、何年かに一回あるかどうかだろ。
こんなバグ。
仮に間違えたとしても、警告でるし。
0598デフォルトの名無しさん
NGNG= を赤、
==を青
で表示させるといいよ。
0599デフォルトの名無しさん
NGNG賢い上にカッコイイ!
0600デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0601質問
NGNG「どんな小さなビット数で済むようなデーターも、それを表現するためには、8ビットを消費してしまうのが普通です。1ビットで済むデーターであっても8ビットを使ってしまいます。そこで、nビットで済むデーターなら、nビットを割り当てよう
という機能が追加されました。」
と書いてますが、そんな細かいことまで気にする必要はあるのでしょうか?
私にマシンにはメモリー512MBのってますよ?
0602納豆
NGNGその際、同じ数値が入力された場合は順位を同じにして同順処理を行うこと。
例 12,34,23,65,45,788,65,67,1,99
表示 No1=788 No2=99 No3=67 No4=65 No4=65 No6=45 No7=34 No8=23 No9=12 No10=1
入力部はできたんですが・・・
0603デフォルトの名無しさん
NGNGようするに、ソートして出力する、ってこと?
a[0],a[1].a[2].a[3].a[4].a[5],a[6],a[7],a[8],a[9] にそれぞれ数値を格納する。
a[0] と a[1] の大きさを比べる。a[0]>=a[1]だったら、a[1]>=a[2] を比べる処理に移る。
a[0]<a[1]だったら、a[0]とa[1]の数値をスワップする。そしてまた a[0] と a[1] の大きさを比べる。
0604デフォルトの名無しさん
NGNGむかしむかし、あるところに、128KBしかメモリのないパソコンがありました。
0605デフォルトの名無しさん
NGNGいいなあ
PV-7は8kだったよ
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG要するに、となりあう2つを比較して、大きい方を左側に入れ替える
のを繰り返すということだね。
入れ替えが起こらなくなったら、終了
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG(2) i より左側には data[i] より小さな値が、
(3) i より右側には data[i] より大きな値がくるように並び替える.
i より左側(data[0]〜data[i-1])について、(1)-(3)の処理を行う
i より右側(data[n+1]〜data[n-1])について、(1)-(3)の処理を行う
0612デフォルトの名無しさん
NGNG0613質問
NGNG0614デフォルトの名無しさん
NGNG0615質問
NGNGint main(void)
{
int a;
printf("%d",a);
}
このソースをコンパイルして実行したときに、何が表示されるか予想して当てることはできますか?
0616デフォルトの名無しさん
NGNGメモリは余計な所をいろいろ通るから遅いの。
0617デフォルトの名無しさん
NGNG普通は無理。
0618デフォルトの名無しさん
NGNGPascalで任意の入力式に対して真理値表を描くプログラムを
組んでいるのですが、その任意の入力式をどうプログラムで
処理できる形に変えるか悩んでいます。
0619質問
NGNG0620デフォルトの名無しさん
NGNGなぜいきなり4次元なのか。
その質問には>>619の思い込みがたんまりと染み込んでる気がするの。
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGでも2次でつっかえてます
0623質問
NGNGって、その回の処理をスキップする命令なのだから、
skip;
と改名したほうがいいと思いますが?
0624デフォルトの名無しさん
NGNGint main(void)
{
int a;
+ printf("%d",a);
printf("%d",a);
}
これで予測可能
0625デフォルトの名無しさん
NGNGいまさら改名されると逆に迷惑。
0626デフォルトの名無しさん
NGNGL = -2>>15
U = +2>>15
D = 10000
A = 0
do{
x の値を L から T まで D づつ変化させる
関数 f(x) がもっともゼロに近くなったときの X を A に記録
L = A - D
U = A + D
D /= 10
} ( D が 機会εを上回っている間 )
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGそれじゃあ、解が一個しか求まらない気がするが。
3次以上の場合、解があるのに、求まらない場合もある。
>>621-622
二次方程式ときたいだけなら、解の公式使いなされ。
でも、これじゃあ3次以上は応用できない。
「ニュートン法」を使いなされ。
詳細については「ニュートン法」で検索しなされ。
0629628
NGNGニュートン法もやっぱ一つしか解が求まらないから、
その求まった解を使って、次数を下げて再計算する。
0630628
NGNGえっと、前の二つのレス忘れてもらって。
まず、極大値・極小値を全部求める。つまり微分して解を求めるのだが。
この極値を求めるのは次数が一つ下がるから、再帰的にやればよい。
で、極値が全部もとまったら、そのときのf(x)の値を全部計算して、
+から−に変化しているところを探す。
そうすると、その間に解が一つだけあることがわかるから。
その区間を細かく区切っていって、+から−に変化してるところに
解があるんだから、だんだん範囲を絞り込んでいけばいい。
0631デフォルトの名無しさん
NGNGそれくらい、Q&A読んでから書け。とにかく自分で調
べようとしないで脊髄反射で書くから「頭悪い」とか言われてしまうん
だよ。分からないことをできるだけ自分で調べることは、勉強の基
本だろ、勉強が嫌いな奴にはまともなゲームなど作れない!
これは楽譜も読めないのに曲が書けるというより厳しい事実だぞ。
0632>>631
NGNG0633デフォルトの名無しさん
NGNGそれってさ、環境にもよるけどさ、セキュリティーホールなんだよね
ハッカーと呼ばれるような人たちはこれを利用して解析したと聞く
0634383
NGNG0635デフォルトの名無しさん
NGNG0636514
NGNG6000個のデータが入ったテキストファイルを1000個のデータ(double)の入った6つのテキストファイルに分割したいのですが、やり方がわかりません。
元のファイル名はdata.txt、新たに作られるファイルはそれぞれdata1.txt,data2.txt,data3.txt....という名前をつけなければいけません。
どなたか達人の方、教えてください。
お願いします。
0637デフォルトの名無しさん
NGNG他スレで514と名乗るもんじゃないよ。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGdata.txtをバッファに入れ、
1バイトづつ調べ、1000個目の","の位置までを、
data1.txtにコピーすればいい。
最後の","は削除しておこう。
0640デフォルトの名無しさん
NGNGああそうか。なにも','を取り除いて書き込まなくてもいいのか。
0641636
NGNG問題解決しました!!
0642デフォルトの名無しさん
NGNGvoid write1000(FILE* src, char* filename)
{
FILE *dst;
char c;
int count;
count = 0;
dst = fopen(filename, "w");
for(;;)
{
c = getc(src);
if (c == EOF)
{
fclose(dst);
return;
}
if (c == ',')
{
count++;
if (count == 1000)
{
fclose(dst);
return;
}
}
putc(c, dst);
}
}
void main(void)
{
FILE *src;
src = fopen("data.txt", "r");
write1000(src, "data1.txt");
write1000(src, "data2.txt");
write1000(src, "data3.txt");
write1000(src, "data4.txt");
write1000(src, "data5.txt");
write1000(src, "data6.txt");
fclose(src)
}
0644質問
NGNG0645デフォルトの名無しさん
NGNGデフォルト引数って何?
0646デフォルトの名無しさん
NGNGvoid f(int i=0)
{
}
0647646
NGNG0648デフォルトの名無しさん
NGNG今データベース設計してる段階なんだけど、そこら辺がよく分かんない。
0649デフォルトの名無しさん
NGNG無いね。
0650デフォルトの名無しさん
NGNGユニークだと思うけどな。つーか、受験番号に重複があったら、
新聞沙汰だと思うが。
0651デフォルトの名無しさん
NGNG0653質問
NGNG0654デフォルトの名無しさん
NGNGマイナーな略語は意味不明
0655sh
NGNG0656デフォルトの名無しさん
NGNG「システムコールはアセンブラで行うのが基本ですが、C言語からも呼ぶことができます。
C言語ではこれをBDOSコールと称しています。」
0657デフォルトの名無しさん
NGNGBIOSの書き間違いみたいな感じかと。
0658デフォルトの名無しさん
NGNGBDOS
Basic DOS
基本DOS
0659デフォルトの名無しさん
NGNGBridge to DOS かとも思ったけど...
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNGいったい何十年前の本を掘り起こして来た。
0662質問
NGNGプログラムを誰か出してください
0663デフォルトの名無しさん
NGNGまず、>>1 をよく読みなされ。
それから、どう聞くべきか考えなされ。
とりあえず、何がわからないのかは、最低限書きなされ。
0664662
NGNG0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGCASL2で検索するといっぱい解説ページでてくるんで、適当に選んで
勉強しなされ。
で、読んでてわからない部分あったらここで質問すれば答えてくれ
る人はいると思う。
0668デフォルトの名無しさん
NGNGくみこに訊け
http://pc.2ch.net/test/read.cgi/tech/988084737/
0669666
NGNGありがとです。
聞いてみました。
0670662
NGNG0671Kusakabe Youichi
NGNG> サブルーチン使うとSET ERRORと出て、15*8がすでにできないんですけど
15*8 じゃなくて
15*8にすれば通ったりして:)
0672ららら
NGNG全加算回路をNANDゲートだけで作りなさい。しかしゲートの数は10個以下にすること。
そして、論理式を簡単化した式と途中の式も記せ。
注:2入力NANDゲートのみ
いままでこの問題の最高記録、NANDゲート数8です。
0674デフォルトの名無しさん
NGNG入出力の桁数が指定されてないけど。
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNG高度な数学知識がなくても四則演算だけできればよいと
思いますが、どんなときに必要になるのでしょうか?
0677デフォルトの名無しさん
NGNG画像や音声などの信号処理系では数学の知識は必須。
プログラミング全般で言えば数学のセンスが必要。
ここでいうセンスとは、問題を適切な定理やアルゴリズムを使って論理的に証明する能力のこと。
ま、今それがなくても鍛えることは可能。
良い環境の会社に入ることだね。
0678デフォルトの名無しさん
NGNGNAND3個
0679676
NGNGこんな遅い時間にありがとうございます。
そんなに難しいアルゴリズムでなければ理解できますが、
画像や音声のなど処理は専門の知識が必要ということですね。
とりあえずは巷に出回っているようなフリーウェアのようなんを
作ってみようと考えていますので、難しい数学知識はいらない
ですよね。いろいろ勉強してみたいと思います。
0680デフォルトの名無しさん
NGNG下位からのキャリーと二系統の入力、系3系統を入力として、
出力+キャリー出力の、3つの出力ってことになるのかな。
・・・最小必要数求めたいなら全探索するプログラム書いた方がはやいかもな。
0681デフォルトの名無しさん
NGNG0682amo
NGNG注意;↓の方法
π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方?。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG2 Σ { 1/(2k-1) }
k=1
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG0688ななし
NGNG0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNGC言語でscanfを使うのはよくないって話を聞いたんですが、どうなんでしょう?
誰か説明してくれませんか?
0691デフォルトの名無しさん
NGNG書式指定かつ行単位でパラメータを得るのでエラー処理が柔軟にできない。
行儀のいい入力だけとは限らないからね。
俺はコードは長くなるが getchar 使ってる。
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.1.6.html
http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/letsc/4-body.html
0692デフォルトの名無しさん
NGNG文字列の入れ替えを行うswap関数を作りたいのですが、
void swap(char *&x, char *&y)
と、宣言して関数組んだら関数使うときは
char a[len]="nanika";
char b[len]="doreka";
swap(a,b);
でいいんですか?
0693デフォルトの名無しさん
NGNG620年〜680年に起こった出来事で、大化の改新以外に5つ上げろって言われてるんですが、
だれか教えてください。何かありませんか?
0694デフォルトの名無しさん
NGNGとりあえず、質問するときはageてください。
えっと、ポインタって参照渡しできるのかな・・。
何か出来ないような気がします。
型定義するか、参照渡しをあきらめるしか道がないような気がしますが、
もし、間違ってたらご指摘ください>識者の方
>>683
http://www.aura-press.com/scriba/index/tl-03.html
ここから適当に選んでください。自分だったら
630 第一回遣唐使
652 第一回の班田終わる
663 白村江の戦い
670 最初の全国的戸籍、庚午年籍が作られる
672 壬申の乱
あたりを選ぶ。
0695デフォルトの名無しさん
NGNG632 マホメット没
642 ササン朝ペルシャ滅亡
653 コーラン成立
661 ウマイヤ朝成立
0696デフォルトの名無しさん
NGNG> void swap(char *&x, char *&y)
こういう定義は出来ますが、この関数に
> char a[len]="nanika";
> char b[len]="doreka";
> swap(a,b);
これは渡せません。
0697デフォルトの名無しさん
NGNGワラタ。ちゃんと答えるなよ。
0698デフォルトの名無しさん
NGNG素直に
void swap(char *x,char *y)
としたら?
0699デフォルトの名無しさん
NGNGそれって良く無くない?
オレなら文字数も一緒に渡したいかも
0700デフォルトの名無しさん
NGNG文字数なんて渡す必要ある?
0701デフォルトの名無しさん
NGNGだってさー \0 が出てこなかったら怖いじゃん。
0703デフォルトの名無しさん
NGNGそれはその関数を使う奴が悪いよ。
例えば、strcpy()は文字数なんて渡さないよ。
0704デフォルトの名無しさん
NGNGまーそれもそうだね
0705デフォルトの名無しさん
NGNGなんで?
0706sage
NGNG0707702
NGNGいや
void swap(char **a, char **b){
char *temp;
temp = *a;
*a = *b;
*b = temp;
}
こういうことしたいのかな、と。
問題をとり間違ってたらすまん。
0708あぼーん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGいろんなところで宣伝してるね。
うっとうしいからやめてね♪
0711情けない・・すみません
NGNG昇順に並べ替えるだけなのに・・。困りました。
0712デフォルトの名無しさん
NGNG正解。
0713デフォルトの名無しさん
NGNGんで、どこでつまってるのよ。
0714デフォルトの名無しさん
NGNGバブルソートってなんだっけ?
こういうのだっけ?
m[M]とかだと
for( i=0;i<M-2;i++)
{
for( j=i;j<M-1;j++)
{
if( m[j]>m[j+1] )swap(&m[j],&m[j+1]);
}
}
こんな感じ?
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGそりゃ、宿題スレならそうなんじゃないか?
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGそれだったらこうじゃない?
string x = "aaaaa";
string y = "bbbbb";
x.swap(y);
0720デフォルトの名無しさん
NGNG> if( m[j]>m[j+1] )swap(&m[j],&m[j+1]);
ここが違うような……。
m[j] -> m[i]
0721デフォルトの名無しさん
NGNGバブルだからいいんじゃないの?
0722カオリネコ
NGNG0723デフォルトの名無しさん
NGNGファイルの内容を全てバッファに入れて、'\n'の数を調べて1を引けばいいんじゃない?
0724723
NGNG0725デフォルトの名無しさん
NGNGこのスレの580近辺をみなさい。
0726デフォルトの名無しさん
NGNGよっしゃ!日本語Cで書いてやる
main(引数)
{
int a=0;
ファイルオープン
while(cに一文字読み込み == 成功)
{
if(c=='\n')a++;
}
}
0727デフォルトの名無しさん
NGNG行数は改行文字の数+1だよ。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNG最後が改行でも、最後の行が空行になるだけでしょう?
0730デフォルトの名無しさん
NGNGEOF<-これは行?
0731デフォルトの名無しさん
NGNGうん。
もし、行としないのなら、もっと処理を複雑にしないと。
0732デフォルトの名無しさん
NGNG最後の改行を行とは思わなかった。
0733デフォルトの名無しさん
NGNGDOSの頃から使ってるのにいまいち意味がよく分からない。
EOFの後も読み込むソフトと読み込まないやつの両方が有るけど、
「ここまでがテキスト」っていう紳士協定みたいな物?
ほんとのEnd of FileはEOFが無くても検出出来るでしょ?
0734デフォルトの名無しさん
NGNGそうです。紳士協定です。薬師丸弘子です。
つーか、基本的に無いものと考えといて、もしもあっても
パニックにならないように書けばいいのです。
0735デフォルトの名無しさん
NGNGごめん。日本語C アップデートしました。
main(引数)
{
int a=0;
ファイルオープン
while(一行読み込み == 成功)
{
a++;
}
}
0736733
NGNGやっぱ、そうなんだ。サンクスコ
歴史的な理由でEOFが入ったテキストは存在するけど、
今では敢えて使わない物なんだよね?
0737デフォルトの名無しさん
NGNGの入力では。
0738デフォルトの名無しさん
NGNGそれは紳士同盟。
0739Kusakabe Youichi
NGNG> 歴史的な理由でEOFが入ったテキストは存在するけど、
ないですよ:)
その昔CP/Mでは、「ファイルのサイズ」っていう属性がなかったので、
テキストファイルでは末尾に0x1aつけてたので、そういうファイルが
あっても対応できるようにしていた初期のMS-DOSのエディターなどでは
意識してたけど、それとEOFは別物です。
EOFってのはファイルに入っているわけじゃあないです。
0740デフォルトの名無しさん
NGNGやっとツッコミが入ったよ! 俺ひとりだけかと思った。
やーい年寄り!(お互い様です)
0741デフォルトの名無しさん
NGNGものすごく広いボードの上で逃げ回ります。
逃亡者は自分を中心とした5×5マスの視界を持ちます。
そんで警察を視界内に見つけたら警察から遠ざかるように逃げます。
この「見つける」っていうのと「遠ざかる」っていう表現で
上手いのが思いつきません。
どなたかお願いします。
0742デフォルトの名無しさん
NGNG(x,y)=(1,1)〜(5,5)の(3,3)に自分がいるっちゅーこってす。
あるいは逆に、自分を中心として
x=i-2〜i+2
y=j-2〜j+2
の視界を持つって事です。
0743デフォルトの名無しさん
NGNG見つける ってのは自分を中心とした5×5マスの中に警察がいるということ
遠ざかる ってのは 上のほうに見つけたら下へ、右に見つけたら
左へ、下に見つけたら上へ、右に見つけたら左へ移動するということ
0744デフォルトの名無しさん
NGNG逃亡者は1ターンで上下左右1歩ずつしか動けませんが
斜め方向も見れることになるわけです。
・斜め右上に見つけた場合に左・下どちらかランダムに動く
あるいは
・同時に警察2人(以上)を視界内に捉えた場合、
その2人(以上)から同時に遠ざかるような動きをさせたいのですが、
その表現のし方が…。
1人の場合は確かに警察がいる場所と逆の方向に
(ランダム選択で)動かせばいいというのはわかるのですが。
0745デフォルトの名無しさん
NGNGためしに4方向に動いてみて
警察がいなくなる方向を調べて
0746デフォルトの名無しさん
NGNG警察だって、斜めに動けないんだよね?
だったら、警察との街区距離(x軸方向の差とy軸方向の差の和)が大きくなる
方に逃げればいい。二つ以上いる場合は、街区距離の最小値が最大になる方向
に逃げればいい。
0747デフォルトの名無しさん
NGNG警官→自分ベクトルの和を求めてその角度の方向に逃げる
0748747
NGNG警官→自分ベクトルを求めて、長さを逆数にして、
その和の方向に逃げる。でどうだ
0749デフォルトの名無しさん
NGNGマス目で移動してるわけなので自分は
746さんのおっしゃるとおり街区距離(っていうんですか?)の
考え方でいいと思ってたんですが…上手く行かず…。
>>746
2人以上の場合はその全ての街区距離が最大になる方向へ
動くと言うことは、
警察が左右から同時に現れたとしても
それで大丈夫なんですか?
ちょっと考えてみます。
(いずれ犯人は捕まるので、そこ袋小路になった時に
どういう処理をすればいいのかが困っています)
0750746
NGNG遅レスですが、もう理解してもらえたでしょうか。
一応書いてみます。
左右同時に現れたときは、上か下へ行くことになりますよね?
上、左、右、下、それぞれ動いたときに各警察との街区距離(マンハッタン距離
という方が一般的かな)を求めます。そして、一番近い警察との距離が最大に
なるようなものの中から一つ選びます。もしも、一番近い警察との距離が最大に
なる逃げ方が複数あるときは、二番目に近い警察との距離が大きい方を選びましょう。
●○△○●
(●=警察、△=犯人)
としますと、左か右に逃げると、一番近い警察との距離は1になりますけど、
上かしたに逃げると3になりますよね?
0751デフォルトの名無しさん
NGNG任意の文字列を入力すると逆に表示するプログラムを作成(ABCと入力するとCBAと表示する)
0752デフォルトの名無しさん
NGNG上下4マスの十字型の視界範囲がある戦士(座標(x、y))がいて
(斜めは見えません)
敵が視界内にいる、というのを判定したあとに
フラグを立てる、というところまでのプログラムを教えていただけますか。
0753デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
char s[256];
int i;
gets(s); //fgetsを使う方がよい
for(i = strlen(s)-1; i >= 0; i-- ) {
putchar(s[i]);
}
putchar('\n');
return 0;
}
0754753
NGNG↑これ、忘れてた。
動作確認はしてないので、バグがあったら、自分で直してね。
0755デフォルトの名無しさん
NGNG■文字列の中に特定の文字が含まれている数を出力するもの
(reとeを入力すると2を返す)
0756751
NGNGとても助かります。
0757デフォルトの名無しさん
NGNG意味がわかりまへん。
0758デフォルトの名無しさん
NGNGmain(int argc,char** argv)
{
int a=0;
char *p;
p=argv[1];
while(*p!='\0')if(*p==argv[2][0])a++;
printf("%d\n",a);
}
こんな感じ? 何分だ?
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGpのインクリメントは?
0761デフォルトの名無しさん
NGNGおっと。適当なところに入れてクレイ。
まー他人の宿題だしな。オレたちゃヒントだけ出して
あとは茶でもすすってりゃーいいと思うのよ。
それがこのスレの本来あるべき姿だと思うのよ。
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG>(reとeを入力すると2を返す)
reとeを竜力すると1を返すんじゃないの?
題意からはそういう風にとれるんだが。
勘違いならスマソ。
0764デフォルトの名無しさん
NGNG入力はOS聞くの面倒だったから省いた
だって面倒くさいんだもん
0765デフォルトの名無しさん
NGNGargv[2]は一文字目しか見ないのか?
0766765
NGNG0767(- -)
NGNG{
int a=0,b=0,c=0,ans=0;
char *p=argv,ap='特定文字';
for(a=0;a<argc;++a,p=argv[a])
while(*p)
if(ap==*p++)ans++;
printf("%d\n",ans);
}
0768(- -)
NGNG{
int a=0,ans=0;
char *p=argv,ap='特定文字';
for(a=0;a<argc;p=argv[++a])
while(*p)
if(ap==*p++)ans++;
printf("%d\n",ans);
}
0769デフォルトの名無しさん
NGNGなんだこりゃ
0770デフォルトの名無しさん
NGNGint ch_count(const char *s, int c)
{
int n;
for (n = 0; *s; s++)
n += *s == c;
return n;
}
0771デフォルトの名無しさん
NGNGstd::count(s.begin(), s.end(), c); //for C++ std::string
0772デフォルトの名無しさん
NGNGあまり感心できないプログラム
BooleanのTrueが1であるという規定はC言語にはない。
↓改良
int ch_count(const char *s, int c)
{
int n = 0;
while (*s) {
if (*s++ == c) n++;
}
return n;
}
0773デフォルトの名無しさん
NGNG> BooleanのTrueが1であるという規定はC言語にはない
規格書読んだ?
0774692
NGNGお返事おそくなりましてすいませんでした。
とりあえず、色々とやってみた結果、変数をポインタで宣言して、
さらに参照渡しする前に、メモリの動的割り当てやったらあの形式でできました。
ただ、アホみたいなプログラムなんです。ダメだしよければしてください。
const int max = 64;
void main()
{
char *a, *b;
a = new char[max];
b = new char[max];
// aとbに文字を入れる処理
swap(a, b);
}
void swap(char *&x, char *&y)
{
char temp[max];
strcpy(temp, x);
strcpy(x, y);
strcpy(y, temp);
}
0775デフォルトの名無しさん
NGNGどこに書いてある?しりたいです。
そういえば昔、MSXベーシックだと 真は-1だったね
0776デフォルトの名無しさん
NGNG例え真が1だとしても、>>770のプログラムは感心しない。
Booleanの1と数値の1をごっちゃにしている。
こんなプログラムは、業務では拒否される。
0777デフォルトの名無しさん
NGNGトリッキーなコード スレッドなら問題なし。
アーキテクチャ依存上等!コンパイラ依存上等!
つーのはおいといて
実務じゃ使わないが、それでも前任がヴァカだと
よくこうやって書かれてるからな・・・
保守の際、「このコードは多分こういう意図だろう」
ということを読み取るために必要な知識ではある。
拒否はされるが必要な知識ではあるわけだ。
0778デフォルトの名無しさん
NGNG折れなら、関数 swap の中身は
{
int i;
char tmp;
for (i=0; i<max; i++,x++,y++) {
c = *x;
*x = *y;
*y = c;
}
}
と書く。理由は、定数 max が 1000000 だったら困るから
0779デフォルトの名無しさん
NGNGchar tmp ではなく、char c に訂正
0780デフォルトの名無しさん
NGNGstringクラスは却下?
>>719みたいに、楽なのに。
0781デフォルトの名無しさん
NGNGあればね
0782770
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c9.html#2 参照のこと。
まあほめられた書き方じゃないことには同意するけど。
0783デフォルトの名無しさん
NGNG>組み込みの演算子によってブー ル値が産み出されるときは、1か0であることが保証されている
まあマメ知識として覚えとこう
0784デフォルトの名無しさん
NGNGいまどきstrcpy()が使えて、stringが無いC++処理系なんてイヤ過ぎる。
0785デフォルトの名無しさん
NGNG今でもCとC++のライセンスが別々になってる処理系もあるって事で。
0786Kusakabe Youichi
NGNG> >>774
> 折れなら、関数 swap の中身は
>
> {
> int i;
> char tmp;
>
> for (i=0; i<max; i++,x++,y++) {
> c = *x;
> *x = *y;
> *y = c;
> }
> }
>
> と書く。理由は、定数 max が 1000000 だったら困るから
数バイトの場合もmax回ループするのですね。
0787デフォルトの名無しさん
NGNGC99 の規格書でよければ 6.5.9 Equality operators の semantics に書いてある。
比較の結果は 0 or 1 で型は int まで決まってる。
>>776
> こんなプログラムは、業務では拒否される。
同意。知ってるのと実際に使うのは別問題。
0788デフォルトの名無しさん
NGNG> 比較の結果は 0 or 1 で型は int まで決まってる。
なんで比較の結果を_Boolにしなかったんだろうね。
rationale見ても書いてないし。
0789デフォルトの名無しさん
NGNG> void swap(char *&x, char *&y)
参照で渡す必要全然ないじゃん。
0790デフォルトの名無しさん
NGNG0791デフォルトの名無しさん
NGNG0792Kusakabe Youichi
NGNG> C は文字列とバイト列が曖昧だからねえ>>786 文字列と読めば変だけどバイト列かもしれないし
べつに「あいまい」なわけじゃあなくって、
文字列はただのバイト列にすぎないっていうだけでしょ?
「\0」で終わりを識別するバイト列のための標準関数はそろってるし、
""をつかったリテラルにもつくとかそういうのがあるだけで。
0793デフォルトの名無しさん
NGNG> 文字列はただのバイト列にすぎないっていうだけでしょ?
この時点で、全然だめだね、君。本物のセンセイに教わってきなさい。
0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNGテーブル2でA列にFOREIGN KEYを張るのは普通だろうけど、
このFOREIGN KEYを張った列自体をPRIMARY KEYに設定するのって
設計上おかしいですか?
テーブル2の方で、FOREIGN KEYを張った列ともう一つの列を組み合わせて
PRIMARY KEYを作りたいんです(2列でユニークに)
0796デフォルトの名無しさん
NGNG何を?
0797デフォルトの名無しさん
NGNG(キーボードからは,ドルの金額を入力する)に,
銀行員が支払うのに適当な紙幣,硬貨の組み合わせを表示するプログラムを作成せよ.
なお,最初に為替レート(例: 1 $ =120 *現在118〜122)
を入力し,その値を使って繰り返し窓口で計算できるものとする.
という課題で
/*課題4*/
#include<stdio.h>
main()
{
int score1,score2;
int a;
printf("何$換算しますか?");
scanf("%d", &score1);
printf("現在1$=何円ですか?");
scanf("%d", &score2);
a=score1*score2;
int y10000,y5000,y2000,y1000,y500,y100,y50,y10,y5,y1,y;
y=a;
y10000=y/10000;
y=y%10000;
y5000=y/5000;
y=y%5000;
y2000=y/2000;
y=y%2000;
y1000=y/1000;
y=y%1000;
y500=y/500;
y=y%500;
y100=y/100;
y=y%100;
y50=y/50;
y=y%50;
y10=y/10;
y=y%10;
y5=y/5;
y=y%5;
y1=y;
printf("\n");
printf(" 一万円札 五千円札 二千円札 千円札\n");
printf("紙幣の枚数 %5%5%5%5\n",y10000,y5000,y2000,y1000);
printf(" 五百円玉 百円玉 五十円玉 十円玉 一円玉\n");
printf("硬貨の枚数 %5%5%5%5%5\n",y500,y100,y50,y10,y1);
}
という風に作ったのですが,16行目がどうしてもうまくいきません,
いい方法はないでしょうか?
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG早速レスありがとうございます。
int y10000,y5000,y2000,y1000,y500,y100,y50,y10,y5,y1,y;
です。
0800デフォルトの名無しさん
NGNGint a;
の次の行に移動させたら?
0801Kusakabe Youichi
NGNG> という風に作ったのですが,16行目がどうしてもうまくいきません,
> いい方法はないでしょうか?
ほんとうに「どうしても」うまくいかないんだったら、いい方法はないでしょうね。
じっさいには「どうしても」じゃないのでは?
0802デフォルトの名無しさん
NGNG0803797
NGNGint a;のあとに移動させたところ,
結果は,ここでは宣言できない(関数main)
とエラーはかわりませんでした。
801>自分なりに熟考してみたのですが・・・。
802>すみません,言葉が足りませんでした。
上記のとおりです。
0804デフォルトの名無しさん
NGNGコンパイルできたぞ。結果は変だが。
0805797
NGNGレス,ありがとうございます。
すみません,そのコンパイルは,
797のソースでやられたのでしょうか?
0806デフォルトの名無しさん
NGNG0807797
NGNG無事コンパイルできました。
本当にお世話になりました。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG0810名無しだゴルァ
NGNGvoid main(void)
{
int x1=300,y1=100,x2=400,y2=200;
SetBkMode(OPAQUE);
SetLineStyle(PS_SOLID,2);
SetLineColor(CL_BLACK);
SetFillColor(RGB(0,0,255));
SetFillStyle(BS_HATCHED,HS_BDIAGONAL);
Ellipse(x1,y1,x2,y2);
printf(" Σ(゚д゚lll)")
printf(" 逝ってよし")
}
0811↑
NGNG0812デフォルトの名無しさん
NGNG最後の二つの文の末尾に;がついていない。
0813↑
NGNG0814デフォルトの名無しさん
NGNGint a[2];
a[0] = 0;
a[1] = 1;
a[2] = 2;
エラー:a[2] は宣言されていません。
とかでてきてもいいと思う。
0815デフォルトの名無しさん
NGNGでもね、値は保証されないの。
もちろん、書き込みはダメよ。
ナニが言いたいかというとね・・・どーでもいいじゃん、ってこと♥
0816デフォルトの名無しさん
NGNG保証されてるのは&a[2]というポインタは有効だということまで。
0817Kusakabe Youichi
NGNG> int a[2]; の場合は a[2] までは参照してもいいのよ。
本気にする人がいそう...。
0818Kusakabe Youichi
NGNG> C ってなんで、配列の境界をチェックしないのですか?
> int a[2];
> a[0] = 0;
> a[1] = 1;
> a[2] = 2;
>
> エラー:a[2] は宣言されていません。
> とかでてきてもいいと思う。
思うだけなら自由です。
0819Kusakabe Youichi
NGNG> 参照できねぇって。
> 保証されてるのは&a[2]というポインタは有効だということまで。
え? 参照しなくても範囲外の「アドレスをとる」のさえ規格では保証されていないですよ。
たとえばa[-1]は、代入や参照しなくても、
それのアドレスとして何かにつかう(たとえば引数で渡す)ってのも
保証されないはず。
0820デフォルトの名無しさん
NGNGあらあら。
天下のvoidさんも勉強不足のご様子ね。
もう一度K&Rをよくご覧になってはいかが?
0821普通のPC使い
NGNGたまにネットの環境によって接続が切断されてしまいます。
エラーがでて受信そのものが中断されてしまうんですが、
中断されたら再度、自動的に配信サーバにアクセスするようにさせたいのですが、
こういったことはWSHなどではできないのでしょうか?
(エラー表示がでてきたら、それに反応して再接続するような形)
*ちなみに32Kbpsで配信されている局です。
当方、ADSL。
0822Kusakabe Youichi
NGNG> あらあら。
> 天下のvoidさんも勉強不足のご様子ね。
> もう一度K&Rをよくご覧になってはいかが?
K&Rじゃなくて規格書のほうをみてますが?
0823デフォルトの名無しさん
NGNGま、このことを知ってる人は少ないし、
コンパイラとかライブラリを書くようなことをしなければ
知らずにすむからね。
Nifty あたりの規格書マニアが見たら喜びそうな話だ。
0824デフォルトの名無しさん
NGNG確かに。fj.comp.lang.c あたりで熱く議論されていたような気がする(w
#しかし、この程度のことを知らないようだと今いる void タン は偽者かねぇ。
配列に関しては int n[2]; と定義したら &n[0], &n[1], &n[2] までは有効なポインタ値を
返すことが保証されている。ただし &n[2] に関してはポインタ値は使えるけど、n[2] を
読み書きするとアウト。
たぶん、この仕様は
int n[2];
register int *p;
for (p = &n[0]; p < &n[2]; ++p)
// do something with p
みたいなコードの動作を保証するためだろうね。積極的にこんなコードを書くことは少
ないと思うけど、頭の片隅に置いておくと役に立つかもね。
0825Kusakabe Youichi
NGNG> >>823
> 確かに。fj.comp.lang.c あたりで熱く議論されていたような気がする(w
> #しかし、この程度のことを知らないようだと今いる void タン は偽者かねぇ。
っていうか「知らないことにしたい」わけですか? :)
0826デフォルトの名無しさん
NGNGvoid の >>815 へのツッコミは正しいだろ。
>>815 は a[2] は読み書き可能だが値は不定とほざいてるんだから。
0827デフォルトの名無しさん
NGNGま >>819 みれば、そう書いてあるからね(あれが本人かどうかは知ら
ん)。プログラマー板の隔離スレにコピペしておくから、続きはそっち
でね。
0828827
NGNG>>819 読め。で、続きはこっちでな。
日下部陽一のことなら、俺に聞け!<1>
http://pc.2ch.net/test/read.cgi/prog/1007305978/
0829Kusakabe Youichi
NGNG> >>825
> ま >>819 みれば、そう書いてあるからね(あれが本人かどうかは知ら
> ん)。プログラマー板の隔離スレにコピペしておくから、続きはそっち
> でね。
じゃあついでに宿題を出しておきます。
&a[-1] + 1
はOKでしょうか? (1点)
0831デフォルトの名無しさん
NGNGなにをもって「OK」なのかわかりませんね:P
0832デフォルトの名無しさん
NGNGすり替えうまいですね。
int a[2];において、&a[-1]は保証されませんが、&a[2]は保証されてますよ。
ISO/IEC 9899:1999の6.5.6 Additive operatorsの8を見てください。
0833Kusakabe Youichi
NGNG> >>829
> ダメだろ。
で、理由は? :)
0834Kusakabe Youichi
NGNG> >>829
> なにをもって「OK」なのかわかりませんね
ああ、参照できるかどうか、
アドレスとれるかどうかです (規格で保証されているかどうかっていう点について)
0835Kusakabe Youichi
NGNG> >>819
> すり替えうまいですね。
すり替えなどしてませんが?
> int a[2];において、&a[-1]は保証されませんが、&a[2]は保証されてますよ。
アドレスを取るはなしですよね?
で、「参照」のほうはどうなったの?
0836デフォルトの名無しさん
NGNGで、「アドレスをとる」ほうはどうなったの?(w
0837832
NGNG819を見ると
> In article >>816, デフォルトの名無しさん/816 wrote:
>
> > 参照できねぇって。
> > 保証されてるのは&a[2]というポインタは有効だということまで。
>
> え? 参照しなくても範囲外の「アドレスをとる」のさえ規格では保証されていないですよ。
&a[2]の話なのに
> たとえばa[-1]は、代入や参照しなくても、
> それのアドレスとして何かにつかう(たとえば引数で渡す)ってのも
> 保証されないはず。
なぜか&a[-1]に変わってます。
832でも書いた通り、&a[2]は有効なポインタです。
| If both the pointer operand and the result point to elements of the
| same array object, or one past the last element of the array object,
| the evaluation shall not produce an overflow; otherwise, the behavior
| is undefined.
> で、「参照」のほうはどうなったの?
| If the result points one past the last element of the array object, it
| shall not be used as the operand of a unary * operator that is
| evaluated.
0838デフォルトの名無しさん
NGNG約一名が言い逃れしてる以外、もう結論は出てるんだから、続きは void 隔離
スレでやってくれ。コピペも用意しといたから。これで void が延々と言い逃
れして良スレが腐る、ってパターンが繰り返されてるんだから、ほんとに頼む
ぜ(T_T)
日下部陽一のことなら、俺に聞け!<1>
http://pc.2ch.net/test/read.cgi/prog/1007305978/
0839Kusakabe Youichi
NGNG> >え? 参照しなくても範囲外の「アドレスをとる」のさえ規格では保証されていないですよ。
>
> で、「アドレスをとる」ほうはどうなったの?
そっちは問題ないでしょ?
0840Kusakabe Youichi
NGNG> > え? 参照しなくても範囲外の「アドレスをとる」のさえ規格では保証されていないですよ。
>
> &a[2]の話なのに
いえわたしは「範囲外」の話をしてますが
>
> なぜか&a[-1]に変わってます。
範囲外の例ででてきたのでは?
> 832でも書いた通り、&a[2]は有効なポインタです。
アドレスをとれる範囲には入ってますよね?
で、「参照」のほうはどうなったの?
0841デフォルトの名無しさん
NGNG0842Kusakabe Youichi
NGNG> >>836
> 約一名が言い逃れしてる以外、もう結論は出てるんだから、
ということにしたいのですね? :)
0843832
NGNG> で、「参照」のほうはどうなったの?
| If the result points one past the last element of the array object, it
| shall not be used as the operand of a unary * operator that is
| evaluated.
これじゃ不満ですか?
| A postfix expression followed by an expression in square brackets []
| is a subscripted designation of an element of an array object. The
| definition of the subscript operator [] is that E1[E2] is identical to
| (*((E1)+(E2))).
こっちも引用すればOKかな。
0844デフォルトの名無しさん
NGNG>> で、「アドレスをとる」ほうはどうなったの?(w
>そっちは問題ないでしょ?
なにが?
問題なんてはじめからありませんが?
0845デフォルトの名無しさん
NGNGかくて Kusakabe Youichi の煽りを無視できない人間によって、スレは荒れる
のであった。合掌。
(しばらくダメだな、このスレ)
0846デフォルトの名無しさん
NGNG>アドレスをとれる範囲には入ってますよね?
で、「アドレスをとる」話はどうなったの?
0847Kusakabe Youichi
NGNG> >>840
> > で、「参照」のほうはどうなったの?
> | If the result points one past the last element of the array object, it
> | shall not be used as the operand of a unary * operator that is
> | evaluated.
> これじゃ不満ですか?
いや、それじゃあなくて、参照についてコメントしていた件です。
0848デフォルトの名無しさん
NGNG>>約一名が言い逃れしてる以外、もう結論は出てるんだから、
(中略)
ということになりました。
0849デフォルトの名無しさん
NGNGもう相手にすんなよ。
> > 保証されてるのは&a[2]というポインタは有効だということまで。
>
> え? 参照しなくても範囲外の「アドレスをとる」のさえ規格では保証されていないですよ。
これを
> いえわたしは「範囲外」の話をしてますが
こう言い逃れしてるだけなんだから。
0850デフォルトの名無しさん
NGNGってキモすぎます。ヲタ用語?
0851デフォルトの名無しさん
NGNG>こう言い逃れしてるだけなんだから。
もちろんわかってます(w
0852デフォルトの名無しさん
NGNGフランケンはしつこいから・・・
0853832
NGNGうぃす。不用意だったね、スマソ。
それだけじゃナニなのでまとめ。
Q: int a[N]; とした場合、a[-1]やa[N]は参照できますか。&a[-1]や&a[N]ならどう?
A: 参照するべきではありません。また、&a[-1]は有効なポインタとは定義されて
いませんが、&a[N]は有効なポインタです。
解説:
ISO/IEC 9899:1999では、配列オブジェクトにおいて有効な範囲はa[0]..a[1]
のみであり、それ以外の要素については未定義(undefined)とされています。
しかしながら、&a[i]のように配列要素へのポインタを得る場合については、特例と
して最後の要素の次の要素、つまり&a[N]は有効なポインタであるとされています。
(see ISO/IEC 9899:1999 Section 6.5.2.1, 6.5.3.2, 6.5.6)
ただし、規格では未定義(undefined)であり、するべきではない(shall not)
とされているだけなので、有効と定義されていない要素にアクセスしたりポインタを
得たりするこのできる処理系でも規格に準拠(conform)していると言えます。
(see ISO/IEC 9899:1999 Section 4)
0854名無しくん
NGNG行末がカンマで終われば簡単なんですが、
正しくは行末は開業コードみたいで、
そうすると難しくなります。
0855デフォルトの名無しさん
NGNG改行コードならカンマと同じに処理できるが、
開業コードだと難しいな。
0856名無しくん
NGNGまちがえました改行です。
0857デフォルトの名無しさん
NGNGみたいにしてるところを
if (c == ',' || c == '\n')
でどうよ?
0858デフォルトの名無しさん
NGNGってゆーか改行をスペースに置き換えれば良いだけだろ。
0859デフォルトの名無しさん
NGNGこん"なの,とか
"これ
なんか",ひどい
マ板のCSVスレで出て来てたけど、ヤなフォーマットだねえ。
0860デフォルトの名無しさん
NGNGこれ"と,"これ""と",は同じ意味
0861デフォルトの名無しさん
NGNG状態遷移機械を作った方が早いだろ、きっと。
0862デフォルトの名無しさん
NGNG意味不明です(w
0863デフォルトの名無しさん
NGNGjavaですが、
「A〜Eの5つのカードがあります。
それをシャッフルし、任意のX枚を取り出します。
で、そのX枚のカードの中身を表示させます」
という宿題が出たのですが、全然わかりません。
シャッフルってどう表現すればいいんだろう…。
0864デフォルトの名無しさん
NGNGA〜Eのカードが入った配列を用意して
ぐちゃぐちゃにかき回せばいいじゃん。
つーか、じゃばもくそもねーっつーかんじ? みたいな〜
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNG0867Kusakabe Youichi
NGNG> > > いえわたしは「範囲外」の話をしてますが
> > こう言い逃れしてるだけなんだから。
>
> もちろんわかってます
ほほう。何か狙ってたけどうまくいかなかったので、「言い逃れ」だという
ことにしてしまうことにしたのですね:)
0868デフォルトの名無しさん
NGNG規格うんぬんより、使ってる処理系でどう動くかが問題。動かしてみて試せばいいやん。
範囲外参照するとエラー出してくれると、デバッグするの楽なんだけどねー。
>>863
とりあえず、どこまでわかって、どこがわからないか、書きなされ。
0869Kusakabe Youichi
NGNG> 規格うんぬんより、使ってる処理系でどう動くかが問題。
そういう宿題のやり方はもんだいですね。
0870869
NGNGじゃあ、どうあがいても動く書き方で書くのが一番いいということで、ここは一つ。
良いか悪いか規格書みないとわからないような書き方で、宿題を解くのはどうかと
思いますし。
0871Kusakabe Youichi
NGNG> >>869
> じゃあ、どうあがいても動く書き方で書くのが一番いいということで、ここは一つ
ではよろしく。
0872デフォルトの名無しさん
NGNGカードのなかみってなによ。
カードAのなかに何が入ってるのさ。
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGん? 呼んだ?
0875デフォルトの名無しさん
NGNG手伝ってもらえる所があると聞いてきてみたんですが…
0876デフォルトの名無しさん
NGNGそれをプログラムにすることができないヘタレな学生です。
javaなんですが。
0877デフォルトの名無しさん
NGNGマジで宿題か? ちょっとワラタよ。
0878デフォルトの名無しさん
NGNGどのボタンを押すと、コンパイルされるかって事か?
0879デフォルトの名無しさん
NGNG途中まで自力でやって頭ポワポワ状態なんで…
こっからどうすんだ?という感じです。
いろいろ見てもらいたいかなーと…。
0880874
NGNG0881デフォルトの名無しさん
NGNG今ひどく後悔している所です…
基本的なことが抜けてたりするので
人づてに手ほどき受けた方がいいかなと。
0882デフォルトの名無しさん
NGNGそれの獲物のクラス(を作って来いというヤツ)が自分の担当です。
簡単なルール
n*n の正方格子の中で、3人のハンターと獲物が追いかけっこをする
獲物もハンターも上下左右1歩ずつorとどまるのみ動作可能
獲物からターンが始まってハンターが獲物を捕まえたら終了
獲物の特徴
縦横に特定の範囲の視野を持っていて(斜めは見えない)
その視野の中にハンターをみつけた時には
自動的に逃げる(遠ざかる)ようプログラムすること
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG日が昇る前になんとかしたいんだろ?
0885デフォルトの名無しさん
NGNG自分も勉強しますんでお願いしますです。
import java.util.*;
public class Game{
private int N; /* nxn の正方格子の定義 */
private int x,y; /* 正方格子のX座標 Y座標 */
private int see; /* 見える範囲のマス数 */
Random r = new Random();
/** Game クラスのコンストラクター
@param i 獲物のx座標
@param j 獲物のy座標
*/
public Game(int i,int j){
x = i;
y = j;
}
/** nxn の正方格子数を設定します
@param n nxn の正方格子数
*/
public void setN(int n){
N = n;
}
/** 正方格子を設定します。
@param x 正方格子のX方向
@param y 正方格子のY方向
*/
public void setXY(int i,int j){
x = i;
y = j;
}
/** 見える範囲のマス数を設定します
@param see 見える範囲のマス数
*/
public void setSee(int s){
see = s;
}
/** X座標を取得します
@return X座標
*/
public int getX(){
return x;
}
/** Y座標を取得します
@return Y座標
*/
public int getY(){
return y;
}
(続く)
0886デフォルトの名無しさん
NGNG/** 獲物の行動を決定します
@param h1,h2,h3 ハンターの位置情報
*/
/* 1.初期条件設定 */
/* 1.1 5方向の箱を作ります */
int mode_dir[];
mode_dir = new int[5];
for(int e = 0;e <= 4;e++;){
mode_dir[e] = e ;
}
/* 1.2 ハンターを監視します */
/* 1.2−1 ハンターを監視するための箱を作ります */
int Hunt[][][];
Hunt = new int[n][n][3];
for(int a = 1;a <= n;a++;){
for(int b = 1;b <= n;b++;){
for(int c = 1;c <= 3;c++;){
Hunt[a][b][c];
/* (x,y)、h1〜3の配列作成 */
}
}
}
/* 1.2−2 ハンターの位置情報を箱に確保します */
/* 1.2−3 視界にハンターがいればフラグを立てます */
(続く)
0887デフォルトの名無しさん
NGNGpublic void escapeGame(Hunter h1,Hunter h2,Hunter h3){
for(int a = 1;a <= n;a++;){
for(int b = 1;b <= n;b++;){
for(int c = 1;c <= 3;c++;){
Hunt[a][b][c] = 0
/* 〜フラグの初期化 */
if(0 << x - hc.getX() <= (s-1) / 2 && y == hc.getY())
Hunt[a][b][c] == hc.getX() - x;
frag += 1;
if(0 << y - hc.getY() <= (s-1) / 2 && x == hc.getX())
Hunt[a][b][c] == hc.getY() - y;
frag += 1;
if(0 << hc.getX() - x <= (s-1) / 2 && y == hc.getY())
Hunt[a][b][c] == hc.getX() - x;
frag += 1;
if(0 << hc.getY() - y <= (s-1) / 2 && x == hc.getX())
Hunt[a][b][c] == hc.getY() - y;
frag += 1;
/* ハンターが獲物の視界内にいればフラグを立てる */
}
}
}
/* 1.3 壁があります */
/* 壁がない方向の箱を拾って壁がある方向の箱は控除します */
if(x = 1)
mode_dir[0] = 5;
/* これ以上上に行けません(上への進路無効化)*/
if(y = 1)
mode_dir[1] = 5;
/* これ以上左に行けません(左への進路無効化)*/
if(x = n)
mode_dir[2] = 5;
/* これ以上下に行けません(下への進路無効化)*/
if(y = n)
mode_dir[3] = 5;
/* これ以上右に行けません(右への進路無効化)*/
0888デフォルトの名無しさん
NGNG/* 2−1 ハンターが視界内にいる場合 */
/* 2−1.1 そのハンターから遠ざかるように動きます */
if(frag >= 1){
for(f=1;f<=3;f++;){
if(0 != Hunt[hf.getX()][y][f] <= 1)
mode_dir[0]= 5 ;
if(0 != Hunt[x][hf.getY()][f] <= 1)
mode_dir[1]= 5 ;
if(0 != Hunt[hf.getX()][y][f] >= 1)
mode_dir[2]= 5 ;
if(0 != Hunt[x][hf.getY()][f] >= 1)
mode_dir[3]= 5 ;
}
/* 〜ハンターがいない方向をランダムに選びそちらへ進みます
*/
0889デフォルトの名無しさん
NGNG近いハンターから遠ざかる方に動きます */
/* 〜�@ハンターが近いほうを避けてハンターが遠い方に動きます */
}else if(frag >= 2 && mode_dir[0] = 5
&& mode_dir[1] = 5
&& mode_dir[2] = 5
&& mode_dir[3] = 5){
for(f=1;f<=3;f++;){
if(0 != Hunt[hf.getX()][y][f] <= 2)
mode_dir[0]= 0 ;
if(0 != Hunt[x][hf.getY()][f] <= 2)
mode_dir[1]= 1 ;
if(0 != Hunt[hf.getX()][y][f] >= 2)
mode_dir[2]= 2 ;
if(0 != Hunt[x][hf.getY()][f] >= 2)
mode_dir[3]= 3 ;
}
/* 〜�Aハンターが等距離ならば移動可能な方向に限定して
ランダムに動きます */
0890デフォルトの名無しさん
NGNGmode_dir[4] = 4;
for(h = 0;h <= 100;h++;){
modeA = Math.floor(Math.random() * 5 );
modeB = Math.floor(Math.random() * 5 );
modeC = mode_dir[modeA];
mode_dir[modeA] = mode_dir[modeB];
mode_dir[modeB] = modeC;
}
/* 2−2 視界にハンターがいない場合 */
/* 〜視界にハンターがいなければランダムに動くもしくは停止します */
}else if(frag = 0){
for(h = 0;h <= 100;h++;){
modeA = Math.floor(Math.random() * 5 );
modeB = Math.floor(Math.random() * 5 );
modeC = mode_dir[modeA];
mode_dir[modeA] = mode_dir[modeB];
mode_dir[modeB] = modeC;
/* mode_dirの内容をシャッフルすることで入れ替えます */
}
}
0891デフォルトの名無しさん
NGNG/* 3. 獲物の行動を決定します */
switch(mode_dir[0]){
case 0:/* 上に動く */
y -= 1;
break;
case 1:/* 左に動く */
x -= 1;
break;
case 2:/* 下に動く */
y += 1;
break;
case 3:/* 右に動く */
x += 1;
break;
case 4:/* その場にとどまる */
break;
case 5:/* 抽選しなおす */
}
}
}
(以上っす)
長くてホントすいません…見にくいし…
0892デフォルトの名無しさん
NGNG・Hunt配列にハンターの情報を予め記しておく
↓
・その配列と獲物の視野を重ね合わせ、視野の中にハンターがいれば
フラグを立てる
↓
・壁あるいはハンターが見えた方向へは行かない(削る)
↓
・残った経路の中からシャッフルして1通り選ぶ
0893デフォルトの名無しさん
NGNG・mode_dir配列に0〜4を予め決めておく
([0]=0〜[4]〜4、
0:上 1:左 2:下 3:右 4:その場にて動かない)
↓
・壁の条件においては
その配列に5を便宜上入れておく
↓
・視野にハンターがいてもそちらに行かない、という意味で
5を入れておく
↓ ↓
・四方塞がりになり全部が5で埋まってしまった場合 ↓
(壁で遮られハンターにも囲まれた) ↓
まだハンターとの距離の猶予がある場所を選びなおす ↓
↓ ↓
・視野の中にハンターがいなかった場合は
そのまま何も変わってない0〜4から選ぶ
↓
・選んだ数字に従い行動決定
0894デフォルトの名無しさん
NGNG1:
2.1−2の�@以下は本来�Aとしたい時の趣旨の場合であり
ハンターとの距離が違えている時により遠い方を選ぶという
選択法を取ってない(上手い書き方がわからず)
2:
mode_dir[5]は本来もう一度抽選しなおそうという意味合いで使ったが
どうやれば回帰的な風に作れるのかわからない
3:その他に授業まともに出てないので文法メチャクチャ
なにとぞ…
恥を忍んで晒しましたゆえ。
0895デフォルトの名無しさん
NGNGするよね。でも、戻ったりしちゃダメだよ。
0896デフォルトの名無しさん
NGNG言われて気づきました…どうしよう。
一旦角に追いこまれてそこから抜けたとしても
絶対に戻るなと言うことですよね?
0897デフォルトの名無しさん
NGNG正直全く自信ないので…
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNG今夜時間あるときにゆっくりみるからちょい待ってくれ、
0901900
NGNGえっとだ・・・、ソースかなりひどかったが、それでも自分で書いているとこと
コメントをしっかりつけている点は評価できるので、チェックいれました。
/** 獲物の行動を決定します
@param h1,h2,h3 ハンターの位置情報
*/
/* 1.初期条件設定 */
/* 1.1 5方向の箱を作ります */
/* 1.2 ハンターを監視します */
/* 1.2−1 ハンターを監視するための箱を作ります */
これは、メソッドの中にいれるべきものではないの?
で、
/* 1.2 ハンターを監視します */
/* 1.2−1 ハンターを監視するための箱を作ります */
for(int e = 0;e <= 4;e++;){
mode_dir[e] = e ;
}
int Hunt[][][];
Hunt = new int[n][n][3];
for(int a = 1;a <= n;a++;){
for(int b = 1;b <= n;b++;){
for(int c = 1;c <= 3;c++;){
Hunt[a][b][c];
/* (x,y)、h1〜3の配列作成 */
}
}
}
これは、何をしたい? Huntに0をつけるとか?
いらないからforの部分は全部削除。
0902900
NGNGif(0 << x - hc.getX() <= (s-1) / 2 && y == hc.getY())
Hunt[a][b][c] == hc.getX() - x;
frag += 1;
これだと、ifは次の一行しかかからなくて、常にfragが+1される気がするけど
意図的にはそれでいいの? そもそも、fragどこでも宣言されてない気が。
int frag = 0;をメソッドの先頭にいれにゃ。それ以前にflagと書くべきでは。
あと、代入するときは== じゃなくて、=ね。
んで、hcって、cが変わるとh1,h2,h3となってくれるものと思って書いてる?
それは無理です。このような場合は配列使いましょう。
Hunter h[3];
h[0] = h1;
h[1] = h2;
h[2] = h3;
として、使うときは、 h[c].getX() みたいに。
if(x = 1)
x == 1ね。
for(f=1;f<=3;f++;){
↓
for(int f = 1; f <= 3; f++){
と書くべきでしょう。
/* 2.ハンターの位置が視界内・視界外の判定をします */
/* 2−1
ハンターが視界内にいる場合 */
/* 2−1.1 そのハンターから遠ざかるように動きます */
0903900
NGNGfor(f=1;f<=3;f++;){
if(0 != Hunt[hf.getX()][y][f] <= 1)
if(0 != Hunt[hf.getX()][y][f] <= 1)
こういう書き方できないと思う。んで
if(Hunt[hf.getX()][y][f] <= -1)?
と書くべきじゃ?
if(frag >= 1){
(中略)
}else if(frag >= 2 && mode_dir[0] = 5
&& mode_dir[1] = 5
&& mode_dir[2] = 5
&& mode_dir[3] = 5){
else ifっていうのは、ifが成立しなかったときに、次の条件が成り立つ場合
だから、frag >= 1が成り立たないときに、frag >= 2が成り立つわけはなし。
何かおかしい。
んで、これは上下左右どちらの方向にもハンターがいる、もしくは壁がある
って認識でよい?
0904900
NGNGif(0 != Hunt[hf.getX()][y][f] <= 2)
mode_dir[0]= 0 ;
if(0 != Hunt[x][hf.getY()][f] <= 2)
mode_dir[1]= 1 ;
if(0 != Hunt[hf.getX()][y][f] >= 2)
mode_dir[2]= 2 ;
if(0 != Hunt[x][hf.getY()][f] >= 2)
mode_dir[3]= 3 ;
}
これは、何をしたい?
ちょっと意図がつかめない。(hfはh[f-1]にね)
case 5:/* 抽選しなおす */
}
これじゃ、抽選しなおしてない。
i = 0;
boolean breakflag = true;
while(breakflag){
switch(mode_dir[i]){
case 0:/* 上に動く */
y -= 1;
breakflag = false;
break;
(略)
case 5:/* 抽選しなおす */
i++;
break;
}
}
みたいに書きましょう。
0905900
NGNGとりあえず、コンパイルエラーはなくすべくがんばってくれ。
アルゴリズム云々に関してはそれからだ。
んで、900超えたが、途中でスレかえると参照がめんどいので、
新スレ立てるの、これが解決するか950超えるまでまってくださ
い。
0906デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNGこんなひどいソースを…
大学でも似たようなことを指摘されたので
手直ししてるとこっす。
書き直したやつを夜中にあぷしますです。
ちとお待ちください。
900さん本当感謝します。
0909デフォルトの名無しさん
NGNG命令されてセクースするくらいつまらんな。
sage。
0910デフォルトの名無しさん
NGNG命令されてセクースするのは、普通にするよりもある意味興奮するかもしれん、
経験ないから知らんが
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNG> やばいっす、いくら直してもコンパイルにしかられまくってるんですけど…
いずれなくなるよ。根気よくやれ。
0913デフォルトの名無しさん
NGNG0914デフォルトの名無しさん
NGNG叱るのは「コンパイラ」だろ。
まぁなんにせよ、コンパイラがエラーを出してくれるうちが華。実行時エラーより、よほど
扱いやすい。
0915デフォルトの名無しさん
NGNG>>902
if(0 << x - hc.getX() <= (s-1) / 2 && y == hc.getY())
Hunt[a][b][c] == hc.getX() - x;
frag += 1;
↓
if(0 << {x - h[c].getX()} <= {(see-1)/2} && y == h[c].getY()){
Hunt[a][b][c] = {h[c].getX() - x};
flag += 1;
}
という風に直してあります。
h[c]は初期化してあってh[0,1,2]=h1,2,3となるようになってます。
ところが int,int 型では && が使えないよと叱られます。
「ハンターのy軸が獲物のy軸と同じの時に
獲物の視界の中にハンターがいる
→ハンターとの相対距離(数字)、方向(上・左ならマイナス、下・右ならプラス)を
Hunt 配列に入れてフラグを立てる」
と表現したいのですが、&& の替わりに何を使えばいいのでしょうか。
0916900
NGNGあ、これだね。
0 << {x - h[c].getX()} <= {(see-1)/2}
絶対値が、(see - 1) / 2より小さければいいんだよね?
(ところで、普通視界3だったら、左右3マスずつにならない? 定義はこれであってる?)
if(Math.abs( x - h[c].getX() ) <= {(see- 1 ) / 2} && y == h[c].getY() ){
ってすればいくと思う。
0917900
NGNGif( Math.abs( x - h[c].getX() ) <= (see - 1 ) / 2 && y == h[c].getY() ){
に修正
0918デフォルトの名無しさん
NGNG一度全部見てもらえますか?
どうも絶対値表示とかしてもエラーが減りません。
&&は本当に使っていいんですか?
※ちなみに獲物の視界は端から端まで、という取り決めになりました。なぜか。
see = 5 なら上下左右に2マスずつ(2+2+獲物の立ち位置)ってことになります。
0919デフォルトの名無しさん
NGNGint[] h = new int[3];
で初期化させたんですが
〜 }else if(Hunt[x][h[d].getY()][d] >= 1){
などのように h[d] を使った場合、「int は間接参照できません」と出ます。
※[]の2重括弧が原因?
0920デフォルトの名無しさん
NGNGimport java.util.*;
public class Game{
private int N; /* nxn の正方格子の定義 */
public void setN(int n){
N = n;
}
private int x,y; /* 正方格子のX座標 Y座標 */
private int see; /* 見える範囲のマス数 */
Random r = new Random();
/* 1.1 5方向の箱を作ります */
int[] mode_dir = new int[5];
/* 1.2 ハンターを監視するための箱を作ります */
int[][][] Hunt = new int[N+2][N+2][3];
int[] h = new int[3];
/** Game クラスのコンストラクター
@param i 獲物のx座標
@param j 獲物のy座標
*/
public Game(int i,int j){
x = i;
y = j;
}
0921デフォルトの名無しさん
NGNG@param n nxn の正方格子数
*/
/** 正方格子を設定します。
@param x 正方格子のX方向
@param y 正方格子のY方向
*/
public void setXY(int i,int j){
x = i;
y = j;
}
/** 見える範囲のマス数を設定します
@param see 見える範囲のマス数
*/
public void setSee(int s){
see = s;
}
/** X座標を取得します
@return X座標
*/
public int getX(){
return x;
}
/** Y座標を取得します
@return Y座標
*/
public int getY(){
return y;
}
0922デフォルトの名無しさん
NGNGpublic void setMode(int e){
for(e = 0;e <= 4;e++){
mode_dir[e]=e;
}
}
/* ハンターの場所をそれぞれ格納するオブジェクトを初期化 */
public void Hunt(){
for(int a = 0;a <= N+1;a++){
for(int b = 0;b <= N+1;b++){
for(int c = 0;c <= 2;c++){
Hunt[a][b][c]=0;
}
}
}
}
/** 獲物の行動を決定します
@param h1,h2,h3 ハンターの位置情報
*/
/* 1.2−2 ハンターの位置情報を箱に確保します */
/* 1.2−3 視界の中にハンターがいればフラグを立てます */
0923デフォルトの名無しさん
NGNGh[0] = h1 ;
h[1] = h2 ;
h[2] = h3 ;
int A = 0; /* フラグの有無 */
for(int a = 0;a <= N+1;a++){
for(int b = 0 ; b <= N + 1 ;b++){
for(int c = 0 ; c <= 2 ;c++){
if( Math.abs( x - h[c].getX() ) <= (see - 1 ) / 2 && y == h[c].getY() ){
Hunt[a][b][c] = { h[c].getX() - x };
flag += 1;
}
else if( Math.abs( y - h[c].getY() ) <= (see - 1 ) / 2 && x == h[c].getX() ){
Hunt[a][b][c] = { h[c].getY() - y};
flag += 1;
}else if( Math.abs( h[c].getX() - x ) <= (see - 1 ) / 2 && y == h[c].getY() ){
Hunt[a][b][c] = { h[c].getX() - x};
flag += 1;
}else if( Math.abs( h[c].getY() - y ) <= (see - 1 ) / 2 && x == h[c].getX()){
Hunt[a][b][c] = {h1.getY() - y};
flag += 1;
}else{}
}
}
}
/* ハンターが獲物の視界内にいればフラグを立てる */
/* 1.3 壁があります */
/* 壁がない方向の箱を拾って壁がある方向の箱は控除します */
if(x == 1){
mode_dir[0] = 5;
/* これ以上上に行けません(上への進路無効化)*/
}else if(y == 1){
mode_dir[1] = 5;
/* これ以上左に行けません(左への進路無効化)*/
}else if(x == n){
mode_dir[2] = 5;
/* これ以上下に行けません(下への進路無効化)*/
}else if(y == n){
mode_dir[3] = 5;
/* これ以上右に行けません(右への進路無効化)*/
}else{}
0924デフォルトの名無しさん
NGNG/* 2−1 ハンターが視界内にいる場合 */
/* 2−1.1 そのハンターから遠ざかるように動きます */
/* 2−2 視界にハンターがいない場合 */
/* 〜視界にハンターがいなければランダムに動くもしくは停止します */
if(A == 0){
for(int g = 0;g <= 100;g++){
int modeA;
int modeB;
int modeC;
modeA = (int)(Math.random() * 5 );
modeB = (int)(Math.random() * 5 );
modeC = mode_dir[modeA];
mode_dir[modeA] = mode_dir[modeB];
mode_dir[modeB] = modeC;
/* mode_dirの内容をシャッフルすることで入れ替えます */
}
}
else if(A == 1){
for (int d = 0;d <= 2;d++){
if(Hunt[h[d].getX()][y][d] <= 1){
mode_dir[0]= 5;
}else if(Hunt[x][h[d].getY()][d] <= 1){
mode_dir[1]= 5;
}else if(Hunt[h[d].getX()][y][d] >= 1){
mode_dir[2]= 5;
}else if(Hunt[x][h[d].getY()][d] >= 1){
mode_dir[3]= 5;
}else{}
}
0925デフォルトの名無しさん
NGNG/* 2−1.2 視界にハンターがいますが近いハンターから遠ざかる方に動きます */
/* 〜�@ハンターが近いほうを避けてハンターが遠い方に動きます */
/* (現在保留) */
/* 〜�Aハンターが等距離ならば移動可能な方向に限定してランダムに動きます */
}else if(A >= 2 ){
for (int e = 0;e <= 2;e++){
if(Hunt[h[e].getX()][y][e] <= 2){
mode_dir[0] = 0;
}else if(Hunt[x][h[e].getY()][e] <= 2){
mode_dir[1] = 1;
}else if(Hunt[h[e].getX()][y][e] >= 2){
mode_dir[2] = 2;
}else if(Hunt[x][h[e].getY()][e] >= 2){
mode_dir[3] = 3;
}else {
mode_dir[4] = 4;
}
}
}
/* 〜�B塞がれて動けなければその場にとどまります */
if(mode_dir[0] = 5
&& mode_dir[1] = 5
&& mode_dir[2] = 5
&& mode_dir[3] = 5){
mode_dir[4] = 4;
}
0926デフォルトの名無しさん
NGNGint p = 0;
boolean breakflag = true;
while(breakflag){
switch(mode_dir[p]){
case 0:/* 上に動く */
y -= 1;
breakflag = false;
break;
case 1:/* 左に動く */
x -= 1;
breakflag = false;
break;
case 2:/* 下に動く */
y += 1;
breakflag = false;
break;
case 3:/* 右に動く */
x += 1;
breakflag = false;
break;
case 4:/* その場にとどまる */
breakflag = false;
break;
case 5:/* 抽選しなおす */
p++;
break;
}
}
}
0927デフォルトの名無しさん
NGNG書いてるほうも大変だろうけど、
読むのもなかなか、厳しい。
0928デフォルトの名無しさん
NGNG処理内容で分割して、関数化したほうが見通しがよくなるだろ。
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG>int[] h = new int[3];
>で初期化させたんですが
>「int は間接参照できません」と出ます。
>※[]の2重括弧が原因?
hはint型の配列じゃなくてHunter型の配列にしないと。
Hunter[] h = new Hunter[5]
ね。
0931900
NGNG昨日はさすがにねてました。で
Hunt[a][b][c] = {h1.getY() - y};
みたいなときは、{}いらない。
Hunt[a][b][c] = h[c].getY() - y;
あと、今後の事考えるとここで、絶対値をとった方がいいと思う。
つまり、
Hunt[a][b][c] = Math.abs(h[c].getY() - y);
ね。
int A = 0; /* フラグの有無 */
このフラグはどこで書き換えることがあるの?
if(A == 0)
でかならずA = 0な気がするけど。
flag += 1;を
A += 1;
としたいってことでいいかな、そう思って読み進めます。
で、
else if(A == 1){
の中でやりたい事の意図がつかめない。
上下左右について、動いたときにハンターからみえなくなればいいと考えれば
if(Hunt[h[d].getX()][y][d] <= 1){
じゃなくて、
if(mode_dir[0] != 5 && Hunt[x][y - 1][d] != 0){
みたいに、つまり、「そちらの方向に動けて、その動いた先からハンターが見えるなら」
という条件に直すわけね。
/* 2−1.2 視界にハンターがいますが近いハンターから遠ざかる方に動きます */
は、だから、各方向に動いたとき、動いた先から見えるハンターのうち、一番近いやつ
との距離がもっともみじかくなるように動けばいいということで。書き直した方が
あと、このときにランダム要素をいれることも考えないと。
ということで、先は長いががんばってくれ(汗)
0932デフォルトの名無しさん
NGNG考え方として、このクラスは
「獲物が1回逃げる時のためだけのプログラム」のつもりです。
これはハンターが1回動くためのプログラム、
そしてその2つを組み合わせてゲームとして動かすプログラムを合わせて動きます。
なので、ここでは1回の処理しか考えていません。
そしてそれらのデータは次の動作に対し生かすこととかはなく、
それを1回の動作(ターン)ごとに初期化させなければ行けないと思ってたんですよ。
そういう意味のフラグ初期化などでありハンターの位置情報クリアの意味の
1回ごとの A = 0 , Hunt[a][b][c]= 0 です。
で、1回ごとにハンターとの位置の相対関係を示した上で
自分の行動を決める、そういう指針です。
ですが、自分が全く講義に出なかったので…バカ学生してたツケが…
0933デフォルトの名無しさん
NGNG正方形の格子ブロックの中でフラグが1しかない、という時は
壁が2方向囲まれて(獲物が角に追い詰められてて)
ハンターが視界内において1人迫ってきたとしても
確実に「壁がない+ハンターがいない方向」が一つ存在して
そっち方向に逃げるのが一番合理的な逃げ方だと思うんですよ。
で、生き残ってる箱を選ぶというやり方にすりかえようとしたのが
自分が考えたやり方です。
そんで壁も方向も全て囲まれてる!という場合がA(フラグ)=2以上になる場合
だと思って作ったんですが…
少し煮詰める必要ありそうです。それよりもまずデバッグを取らないと…
※
Hunter[] h = new Hunter[3];
がシンボルを解釈処理できない、と怒られてしまいます。なぜでしょうか?
友達の Hunter h1 = (云々)というプログラムと組み合わせると
解決する問題なんでしょうか?
0934デフォルトの名無しさん
NGNGclass Hunterが無いんじゃないの?
定義してないクラスを使うことはできないよ。
0935デフォルトの名無しさん
NGNGメソッド
1.獲物のコンストラクション
2.フェーズ処理のための初期化
3.ハンターの位置チェック(相対位置)
4.獲物移動方向決定
5.移動可能or不可判定(不可ならば4からやり直し、移動方向がなくなったらアボーン)
6.獲物移動
盤面情報は別クラスにしたいところだけど、この課題程度なら獲物クラスに持たせ
てもいいかなとおもう。
0936900
NGNG>そんで壁も方向も全て囲まれてる!という場合がA(フラグ)=2以上になる場合
>だと思って作ったんですが…
壁がなくても、ハンターが二方向から来たら、A=2になるますよね?
>Hunter[] h = new Hunter[3];
>がシンボルを解釈処理できない、と怒られてしまいます。なぜでしょうか?
>友達の Hunter h1 = (云々)というプログラムと組み合わせると
>解決する問題なんでしょうか?
>>934で書いてくれていますが、その通りです。
ダミーのHUNTERクラスを作ってデバッグするのがよいのかな。
>>935
おそらく、仕様を決められて獲物のクラスを作っていると思うから、
メソッドも指定されているんじゃないかな、と邪推してみる。
0937デフォルトの名無しさん
NGNGこのスレ住人は次のスレのためのイメージキャラクタのAAを吟味して
ください。野郎は却下です。
あまり大きいとうざいので10行前後に収まるものをよろしくお願いします。
言ってることが解らない人は前スレの麻衣を参照してください。
以上、業務連絡でした。
0938933(生徒)
NGNGはい、そのとおりです。
以下渡された仕様です
↓
import java.util.*;
public class Game{
private int N; /* nxn の正方格子の定義 */
private int x,y; /* 正方格子のX座標 Y座標 */
private int see; /* 見える範囲のマス数 */
Random r = new Random();
/** Game クラスのコンストラクター
@param i 獲物のx座標
@param j 獲物のy座標
*/
public Game(int i,int j){
x = i;
y = j;
}
/** nxn の正方格子数を設定します
@param n nxn の正方格子数
*/
public void setN(int n){
N = n;
}
/** 正方格子を設定します。
@param x 正方格子のX方向
@param y 正方格子のY方向
*/
public void setXY(int i,int j){
x = i;
y = j;
}
(続く)
0939933(生徒)
NGNG/** 見える範囲のマス数を設定します
@param see 見える範囲のマス数
*/
public void setSee(int s){
see = s;
}
/** X座標を取得します
@return X座標
*/
public int getX(){
return x;
}
/** Y座標を取得します
@return Y座標
*/
public int getY(){
return y;
}
/** 獲物の行動を決定します
@param h1,h2,h3 ハンターの位置情報
*/
public void escapeGame(Hunter h1,Hunter h2,Hunter h3){
}
}
0940933(生徒)
NGNG>>936
ダミーのハンタークラスを作れ、ということで
いろいろやってみたんですが
書き方がまずいのかエラーがダラダラ出てきます…。
多分自分がクラスの考え方が間違っている所に原因があると
思われますです…。
0941デフォルトの名無しさん
NGNGおれは立たないので(勃起障害ではないが)誰か。
0942デフォルトの名無しさん
NGNGハゲシクワラエナイ
0943弟
NGNG0944デフォルトの名無しさん
NGNGAAはシスプリ辺りからもらってこよう
http://piza2.2ch.net/test/read.cgi/kao/1001171038/
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGhttp://piza2.2ch.net/test/read.cgi/kao/1001171038/308-309n
0947デフォルトの名無しさん
NGNGバグが取れなくて困ったときは、一度クラスをスケルトン状態(メソッド内からっぽ)
にしてビルド。
それでうまくいったら、少しづつコードを入れていって、どこでエラーが出るか調べ
てみる、というのも一つの手だ。
まず空っぽの、Hunter,Gameでビルドしてみたら?
0948デフォルトの名無しさん
NGNGそれって激しくアホな課題だとおもうな。
つーかそんなわけ無いと思うがなぁ。
「解りやすいように構造化しました」
っていわれて怒る教官はいないだろ。
0949デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG>ことにしてしまうことにしたのですね:)
はぁ?(w
誰かに狙われてるのかね?
それともただの被害妄想かね?
0952933(生徒)
NGNGダミークラスつくるのはちょっと方針上あきらめました。
コンパイルが通ったやつです。
↓
import java.util.*;
public class Game{
private int N; /* nxn の正方格子の定義 */
private int x,y; /* 正方格子のX座標 Y座標 */
private int see; /* 見える範囲のマス数 */
/* 5方向の箱を作ります */
int[] mode_dir=new int[5];
/* ハンターを監視するための箱を作ります */
int[][][] Hunt=new int[N+2][N+2][3];
Hunter[] h=new Hunter[3];
0953生徒K
NGNG問1.
0から100万までの自然数をrand関数を使って50万個作りファイルに保存せよ。
(これはできた)
問2.
問1で作ったファイルを、選択ソート、挿入ソート、バブルソートをそれぞれ使って
ソートしてソート結果をファイルに出力せよ。
timeコマンドで実行時間を計測すること。
問2なんですが、ソートのやつは全部できたんですが、timeコマンドで実行時間を
計測する方法がわかりません。
使い方
time a.exe
としか説明がありません。
0954生徒K
NGNGちなみにC++を使ってます
0955デフォルトの名無しさん
NGNG言語名を書けよ。
Cなら、
/* CLOCK.C: プログラムの実行時間を入力するように要求してから、
* その時間の間、経過時間の表示を継続します。
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sleep( clock_t wait );
void main( void )
{
long i = 600000L;
clock_t start, finish;
double duration;
/* 指定された時間の遅延を設ける */
printf( "3 秒の遅延\n" );
sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "終了!\n" );
/* イベントの持続時間の計測 */
printf( "%ld 回のループの時間は ", i );
start = clock();
while( i-- )
;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%2.1f 秒です。\n", duration );
}
/* 指定されたミリ秒間だけ待機する */
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}
・・・・だそうだ。MSDNライブラリより抜粋。
0956デフォルトの名無しさん
NGNGtimeで時間計測で悩むなよ・・・
やってみりゃわかるべ。
timeはa.exeの実行時間を測ってくれるだけだよ。
0957生徒K
NGNG例えば僕のファイル名はkadai1.exeです。
time kadai1.exeと入力するんですよね?
それをどこに入力するのかわからないんですが・・・
0958デフォルトの名無しさん
NGNGkadai1.exe を実行してたところ
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNGストップウオッチで測れば。
0961生徒K
NGNGプログラムが終了してしまってPress any key to continueと出るので
ボタン押したら消えてしまいます。
scanfを使うのですか?
0962デフォルトの名無しさん
NGNG再帰関数。
0963デフォルトの名無しさん
NGNGDOS窓
0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966名無し
NGNG#include <math.h>
main()
{
int i,j,k,m,n,na;
float a[10][10],b[10],x[10],e,eps,dd,gb,gg,gx,es;
scanf("%d",&n);
for(m=1;m<=n;m++){
for(k=1;k<=n;k++){
scanf("%f",&a[m][k]);
}
scanf("%f",&b[m]);
}
gb=1;gx=1;es=1;
na=400;eps=1.0e-7;
for(m=1;m<=n;m++){
if(a[m][m]!=0){
x[m]=b[m]/a[m][m];
}
else{
gb=0;
}
}
for(i=1;i<=n;i++){
dd=0;
for(j=1;j<=n;j++){
if(j!=i){
dd=dd+fabs(a[i][j]);
}
else{
}
}
if(fabs(a[i][i])>dd){
}
else{
gx=0;
}
}
if((gb==0)||(gx==0)){
printf("条件を満たさない");
}
else{
printf("収束状態\n");
k=0;
printf("回数:%d\n",k);
for(m=1;m<=n;m++){
printf("x[%d]=%f\n",m,x[m]);
}
0967名無し
NGNGwhile(es>eps){
k=k+1;
e=0;
for(i=1;i<=n;i++){
gg=b[i];
for(j=1;j<=i-1;j++){
gg=gg-a[i][j]*x[j];
}
for(j=j+1;j<=n;j++){
gg=gg-a[i][j]*x[j];
}
gg=gg/a[i][i];
e=e+fabs(x[i]-gg);
x[i]=gg;
}
printf("回数:%d\n",k);
for(i=1;i<=n;i++){
printf("x[%d]=%f\n",i,x[i]);
}
printf("E=%g\n",e);
if(k>=na){
es=0;
}
else{
es=e;
}
}
if(e<eps){
printf("根\n");
for(m=1;m<=n;m++){
printf("x[%d]=%f\n",m,x[m]);
}
printf("回数:%d\n",k);
printf("E=%g",e);
}
else{
printf("収束しない\n");
}
}
}
0968名無し
NGNGプログラムを作ったのですが��条件を満たさない�≠ナ終了してしまいます。
何がおかしいのでしょうか?
式
5*(x1)+7*(x2)+6*(x3)+5*(x4)=23
7*(x1)+10*(x2)+8*(x3)+7*(x4)=32
6*(x1)+8*(x2)+10*(x3)+9*(x4)=33
5*(x1)+7*(x2)+9*(x3)+10*(x4)=31
0970デフォルトの名無しさん
NGNGよろしくお願いします。
#include<stdio.h>
int *key;
int *array[10];
int linear_search(int key)
{
int i,n;
n=sizeof(array)/sizeof(int);
for(i=0;i<n;i++){
if(*array[i]==key){
return i;
}
}
return -1;
}
main()
{
int i,n;
for(i=0;i<10;i++){
printf("input data>");
scanf("%d",&array[i]);
}
printf("input key>");
scanf("%d",&key);
printf("%d",*array[1]);
n=linear_search(*key);
printf("index=%d\n",n);
}
0971怜
NGNGint *key;
int *array[10];
を
int key;
int array[10];
に
で、
printf("%d",*array[1]);
n=linear_search(*key);
を
printf("%d",array[1]);
n=linear_search(key);
に
0972Kusakabe Youichi
NGNG> main関数の二つめのscanfでBusエラーがでます。
そんなもん使うからだ。
0973怜
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1007902384/l50
0976デフォルトの名無しさん
NGNGkey = malloc( sizeof( int ) );
for(i=0; i<(sizeof( array)/sizeof(int*)); i++)
array[i] = malloc( sizeof( int ) );
とか入れて、
scanf("%d",&array[i]); とかを
scanf("%d",array[i]); とかにすれば〜?
#劣化したJAVAみたいな感じやな。
0977怜
NGNGえーっとね、じゃあポインタとかの意味はわかってる?
だったら、まずポインタっていうのは場所を表しているのはわかる?
その指してる場所をintならint型のスペースとして保存しないと駄目。
これだと、ポインタ定義してるだけだから、そのポインタ自身はどこも
指してない。
だから、このプログラムは、scanfをする前に各ポインタ変数型ごとに
int型のスペースを作成して、その場所を指すようにする。で、その後、
scanf("%d",&array[i]);とかはscanf("%d",array[i]);みたいな形で読み
にいくわけ。
あえて正解書かないので、がんばってください。
0978竹村さん
NGNG0979竹村さん
NGNG#include<stdio.h>
main()
{
int a[100],i=0,x,s=0 ;
while(scanf("%d",a)!=EOF){
i++;
}
for(x=0;x<i;x++){
scanf("%d",&a[x]);
}
for(x=0;x<i;x++){
printf("%d\n",a[x]);
s+=a[x];
}
printf("%d\n",s);
}
配列要素の合計もとめたいんですけど
自分で作った上の奴では合計がでなくて困っています。
どなたか助けてもらえませんか。
0980怜
NGNGうーん・・・、
どういう感じで入力を与えたいのかな?
何か入力で失敗している気するね、そのコード見てる限り。
でも、合計が出ないっていうことは、各要素についてはちゃんと出力
できてるのかな?
0981デフォルトの名無しさん
NGNGi++;
}
がおかしいんでない?
while(scanf("%d",&a[i])!=EOF){
i++;
}
でいけるんかなあ。確認とれる状況じゃないのでごめん。
0982竹村さん
NGNGそのとおりやれば合計でました。
レイサン、ななしさんありがとうございます。(^0_0^)
ばかなんでi に気づきませんでした・・・。
0983デフォルトの名無しさん
NGNG解決したようなので、蛇足かもしれないけど
while (scanf("%d",&a[i])!=EOF){
i++;
}
と
for(x=0;x<i;x++){
scanf("%d",&a[x]);
}
は、どちらか一方書いときゃいいんじゃない?
while ... の方は配列のマックスを越える可能性が
ある一方、for の方は scanf の返り値をチェックし
てないので、どっちを残すかは迷うとこだけど(w
0984983
NGNGひょっとして最初のループは要素数を数えてるの?
0985竹村さん
NGNGそのあとにも課題があってその配列をソートする関数をつくらないと
だめなんですよ。だから一応i で 要素数はわかるかなとおもって。
またそのへんが不安なんですが・・
どもありがとうございます。
0986デフォルトの名無しさん
NGNG境界チェックを怠っていることと合わせて減点30
0987
NGNG0988デフォルトの名無しさん
NGNGなんか、ちょっと前にもマルチポストしてたね君。
0989
NGNG0990デフォルトの名無しさん
NGNG足し算を繰り返せばよい。
0991Kusakabe Youichi
NGNG> >>987
> なんか、ちょっと前にもマルチポストしてたね君。
はつみみです。
0993
NGNGやっぱり2とか#使わないと無理ですかね?
0994
NGNG加算はわかるので
それを繰り返すにはどうすればいいですか?
0995デフォルトの名無しさん
NGNGfor or while
0996デフォルトの名無しさん
NGNGそんなことか。区切り文字以外に
0-9もつかって十進掛け算にせよ。
0997デフォルトの名無しさん
NGNGちょっと考えればわかりますね:)
0998デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1007902384/
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。