トップページ⇒tech
987コメント331KB

宿題みてあげるっ

■ このスレッドは過去ログ倉庫に格納されています
0001怜NGNG
前スレのお兄ちゃんの恋人の怜です。
かわいい弟クンのために、宿題みてあげるね。
でも、丸投げとかしたらおこっちゃうよ。まずは自分で考えてね。

前スレ
http://pc.2ch.net/test/read.cgi/tech/1003838158/
0002怜NGNG
基本的な用語とか、名前がわかっているアルゴリズムとかの解説は
自分でインターネットで検索した方が早いかな。
http://www.google.co.jp/
で検索してから質問してね。
0003デフォルトの名無しさんNGNG
Cでクエスチョン

int a=1;
a=a+-+a;

aの値は、環境依存?
0004デフォルトの名無しさんNGNG
a = a + (-(+a));
別に環境依存でもないんじゃ?
0005デフォルトの名無しさんNGNG
0 (VC6)
0006デフォルトの名無しさんNGNG
% gcc -v
Reading specs from /usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/specs
gcc version 2.95.2 19991024 (release)

0
0007デフォルトの名無しさんNGNG
o(^0^)/
0008デフォルトの名無しさんNGNG
怜ちゃんごくろーサマンサ
0009怜NGNG
>>3
うーんとね、
単項の+,-は二項形高い優先順位を持つのね。で、右から左に結合するの。
だから、a=a+-+aっていうのは
→a=a+-(+a)→a=a+(-(+a)) っていうふうに解釈される。
だから、>>4さんが言ってくれてるように、環境依存ではないと思うよ。
0010怜NGNG
あら、書き間違えてしまったみたい。
>二項形高い優先順位
「二項形式より高い優先順位」ね。二項形式っていうのはa+bみたいなやつ。
単項は-aとかいう感じのね。
0011デフォルトの名無しさんNGNG
麻衣よりお姉さんだな。
0012怜NGNG
>>前スレのハンターの話の生徒さん

 その仕様って獲物クラスについてだけだよね?
 ゲームを管理するクラスとか、ハンタークラスについて
スケルトンはもらってない?
 メソッドについてはいくらでも追加していいと思うよ。
でも一応privateで宣言しようね。
0013933(生徒)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];
0014933(生徒)NGNG
/** Game クラスのコンストラクター
@param i 獲物のx座標
@param j 獲物のy座標
*/
public Game(int i,int j,int n){
x = i;
y = j;
N = n;
for(int e = 0;e <= 4;e++){
mode_dir[e] = e;
}
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;
}
}
}
}

/** 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;
}
0015933(生徒)NGNG
/** 獲物の行動を決定します
@param h1,h2,h3 ハンターの位置情報
*/
/* ハンターの位置情報を箱に確保します */
/* 視界の中にハンターがいればフラグを立てます */

 public void escapeGame(Hunter h1,Hunter h2,Hunter h3){
  h[0] = h1;
  h[1] = h2;
  h[2] = h3;
  int flag;
  flag = 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((0 < (x - h[c].getX())) && ((x - h[c].getX()) <= ((see-1)/2)) && (y == h[c].getY())){
      Hunt[a][b][c] = h[c].getX() - x;
      flag += 1;
     }else if((0 < (y - h[c].getY())) && ((y - h[c].getY()) <= ((see-1)/2)) && (x == h[c].getX())){
      Hunt[a][b][c] = h[c].getY() - y;
      flag += 1;
     }else if((0 < (h[c].getX() - x)) && ((h[c].getX() - x) <= ((see-1)/2)) && (y == h[c].getY())){
      Hunt[a][b][c] = h[c].getX() - x;
      flag += 1;
     }else if((0 < (h[c].getY() - y)) && ((h[c].getY() - y) <= ((see-1)/2)) && (x == h[c].getX())){
      Hunt[a][b][c] = h[c].getY() - y;
      flag += 1;
     }
    }
   }
  }
0016933(生徒)NGNG
 /* ハンターが獲物の視界内にいればフラグを立てる */

 /* 壁があります */
 /* 壁がない方向の箱を拾って壁がある方向の箱は控除します */
  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{}

  /* ハンターの位置が視界内・視界外の判定をします */

  if(flag == 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の内容をシャッフルすることで入れ替えます */
   }
  }
0017933(生徒)NGNG
  else if(flag == 1){
   for (int c = 0;c <= 2;c++){
    if(Hunt[h[c].getX()][y][c] <= 1){
    mode_dir[0]= 5;
    }else if(Hunt[x][h[c].getY()][c] <= 1){
    mode_dir[1]= 5;
    }else if(Hunt[h[c].getX()][y][c] >= 1){
    mode_dir[2]= 5;
    }else if(Hunt[x][h[c].getY()][c] >= 1){
    mode_dir[3]= 5;
    }else{}
   }
   /* 〜ハンターがいない方向をランダムに選びそちらへ進みます*/
   /* 視界にハンターがいますが近いハンターから遠ざかる方に動きます */
   /* 移動可能な方向に限定してランダムに動きます */
   }else if(flag >= 2 ){
    for (int c = 0;c <= 2;c++){
     if(Hunt[h[c].getX()][y][c] <= 2){
     mode_dir[0] = 0;
     }else if(Hunt[x][h[c].getY()][c] <= 2){
     mode_dir[1] = 1;
     }else if(Hunt[h[c].getX()][y][c] >= 2){
     mode_dir[2] = 2;
     }else if(Hunt[x][h[c].getY()][c] >= 2){
     mode_dir[3] = 3;
     }else {
     mode_dir[4] = 4;
     }
    }
   }
   /* 塞がれて動けなければその場にとどまります */
   if(mode_dir[0] == 5
   && mode_dir[1] == 5
   && mode_dir[2] == 5
   && mode_dir[3] == 5){
   mode_dir[4] = 4;
   }
0018933(生徒)NGNG
  /* 3. 獲物の行動を決定します */
  private int p = 0;
  private int r = 0;
  private boolean breakflag = true;
  do{
  r = (int)(Math.random()*100);
  p = (r)%5;
  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;
   }
  }while(breakflag);
 }
}
0019933(生徒)NGNG
以上です。
こっからやっといろいろいじくれます…
まだコンパイルが通っただけですが…。
0020怜NGNG
コンパイルエラーはなくなったのね。
ここからが本当のデバッグの開始だからがんばっていこうね。

まず、mode_dirとHuntをコンストラクタの中で初期化してるけど、
これは、escapeGameを呼び出すたびに初期化する必要があるのよね。
まず、そこは直さないとね。

Hunt[a][b][c] = h[c].getX() - x;
ってやってるから、Hunt[a][b][c]にはマイナスが入ることもあるわよね?
だから、flag == 1のときに、
if(Hunt[h[c].getX()][y][c] <= 1){
}else if(Hunt[h[c].getX()][y][c] >= 1){
みたいな、判定をするのは、何か違う気がするの。0より大きい、もしくは小さい
でいいんじゃないの?
 それにマイナスになる事考えると、
flag >= 2のときの、
 if(Hunt[h[c].getX()][y][c] <= 2){
とかいうのも明らかにおかしいのよね。
 Math.abs(x)とやれば、xの絶対値が得られるからこれも上手く利用するといいか
も。

 まあ、とりあえず目についたのはこれくらいかな。
 これくらいといっても、基本的な部分で問題があるから、修正すると他にも色々
間違えそうだけど。
 プログラムなんて、デバッグをどれだけ頑張れるかで力がついていくものだから、
頑張ってね。
0021933(生徒)NGNG
mode_dir , Hunt は
escapeGame の中で初期化させろということですか?
移動すればいいんですよね?了解です。

マイナスをつけているのは左←→右にいる、上←→下にいる、っていうのを
1回でわかるようにするためにつけています。
だから距離だけじゃなくて方向も導入した方がいいと思いまして。
ただ、それだと確かに全体で筋が通らないのも事実で…
これをどうしようかと今考えてます。


それと、自分がageるべきなんでしょうか?やっぱ。
0022933(生徒)NGNG
flag に private つけるとエラーが出るんですけど…
なんでじゃ〜!!
0023怜NGNG
そうね、質問するときはageてね。

>マイナスをつけているのは左←→右にいる、上←→下にいる、っていうのを
>1回でわかるようにするためにつけています。

その意図はわかるんだけど、だったらまず、flag == 1のとき、
if(Hunt[h[c].getX()][y][c] <= 1)
とかじゃなく、
if(Hunt[h[c].getX()][y][c] < 0)
とかすべきよね、ってこと。

あと、flag == 2のときも、
if(Hunt[h[c].getX()][y][c] <= 2){
じゃなくて、
if(Hunt[h[c].getX()][y][c] <= -2){
とか。

あと、publicとかprivateとかつけるのはクラスのメンバ変数(クラスのメソッド
の外で定義されて、クラス全体で使う変数のことね)だけで、メソッドの中で定義
される変数にはつけないものなの。
publicとかprivateとかの意味はわかる?
0024933(生徒)NGNG
すんませんです、
>>18 の
  private int p = 0;
  private int r = 0;
  private boolean breakflag = true;
はうそです…
自分がここにコピペする時つけてもいいだろうと思ってたのでつけましたが
コンパイル通すと叱られました…
これらと flag は escapeGame より上のクラスで
private 指定しないといけないものなのですか?
というより、こういうことするのはおせっかいですかね?
0025933(生徒)NGNG
了解です。ageします。

public や private の意味とかはわかります。
語句の意味は。
だけど、そのプログラム的な扱い方なんかがホントわかってないんです。
言われて「あ、そっか…」と思ってます。
クラスのメンバ変数、っていう考え方があって
その上で「これからクラス内でこの変数を使いますよ〜」っていう宣言は
クラスより上で指定されなければいけないってことですか?
0026933(生徒)NGNG
今回の
  private int p = 0;
  private int r = 0;
  private boolean breakflag = true;
っていうのは private 外すとひょっとしたら class Game 外の他の値を
参照してしまう危険があるわけですよね?
だけど escapeGame 内で指定するのは間違ってるってことですよね。
0027怜NGNG
えーっとね、そうじゃなくて・・
privateをつけると、クラスの外部から参照される事がなくなるとか、
publicをつけると、クラスの外部からも参照、書き換えができるように
なるとかそういうものなの。

クラス全体で使うものはメソッド(関数)の中ではなくて、
public class ●●{
の直下で、宣言しないといけないのね。
0028933(生徒)NGNG
メソッドの中でだけ使う、というような考え方自体が
おかしいってことでしょうか?

一応 int p , int r , boolean breakflag , int flag
全て最初のクラスの下に private をつけて宣言しなおして
コンパイル正しました。
p = 0 ; , r = 0 ; , breakflag = true ; , flag = 0 ; は
全てそのままにしてあります。

こういう処理の方がいい、ということですよね?
0029933(生徒)NGNG
それと main 文を作って
Nの大きさ、seeの範囲、3人のハンター及び獲物の位置情報などを
入力して実際に動作確認をしてみたいのですが、
どの場所に main を置くのが正しいのか
または完全に独立させてメイン文書いたほうがいいのか
よくわかってません。

オブジェクト思考がなんたるかに沿いながら解説していただけると
非常に助かります。
(ホントなんでおれ講義出なかったんだよ…)
0030933(生徒)NGNG
※ちなみに
 int[] mode_dir=new int[5];
 int[][][] Hunt=new int[N+2][N+2][3];
 Hunter[] h=new Hunter[3];
の前にも private をつけました。

現在の仕様:
 ↓
 private int N; /* nxn の正方格子の定義 */
 private int x,y; /* 正方格子のX座標 Y座標 */
 private int see; /* 見える範囲のマス数 */
 private int flag;
 private int p;
 private int r;
 private boolean breakflag;

 private int[] mode_dir=new int[5];
 private int[][][] Hunt=new int[N+2][N+2][3];
 private Hunter[] h=new Hunter[3];

 public Game(int i,int j,int n){
  x = i;
  y = j;
  N = n;
 }

 public void setN(int n){
  N = n;
 }

 public void setXY(int i,int j){
  x = i;
  y = j;
 }

 public void setSee(int s){
  see = s;
 }

 public int getX(){
  return x;
 }
 public int getY(){
  return y;
 }
0031デフォルトの名無しさんNGNG
ひとつ質問。
この933ってのは何人もいるのか?
0032デフォルトの名無しさんNGNG
http://www2.bbspink.com/test/read.cgi?bbs=club&key=1005652592&st=30&to=30&nofirst=true
↑これ書いたの誰だよ。
0033933(生徒)NGNG
いや、今の所騙りはいませんが…
自分だけです。
>>31
0034デフォルトの名無しさんNGNG
http://cgi.members.interq.or.jp/gold/marken/bbs.htm

2001 12/10 12:28

えむえす

誰かつぎの問題のプログラムを制作してください。お願いします


問題1

n個の中から、r個を選ぶ組み合わせの数nCrををもとめる再帰呼び出しを使った
プログラムを作成せよ。ここでnCrには、次の関係式が成り立つ。
nCr=n-1Cr+n-1Cr-1
また、常に、nC0=1,nCn=1が成り立つ。
0035味噌醤油醸造株式会社NGNG
>>34
int C(int n, int r)
{
return C(n-1,r)+C(n,r+1);
}

int main()
{
printf("%d\n", C(-100, -10));
return 0;
}
0036デフォルトの名無しさんNGNG
933君はなかなかの強敵だな。
0037怜NGNG
>>29
テストするならダミークラスをつくらなくちゃ。
少なくとも、Hunterと、ゲーム進行を管理するクラスが必要。
ゲーム管理だからGameManagerとか名前付けたいんだけど、
獲物にGameなんてつけてるからそれじゃ解りにくくなっちゃうわね。
私なら獲物じゃなくて逃亡者(Runaway)とか命名するんだけどなぁ。

とにかくテスト用にこんな風にクラスを作ったらどうかな。

// 933君のGameクラス
class Game{
  private int x;
  private int y;

  public void escapeGame(Hunter h1, Hunter h2, Hunter h3){
    x = h1.getX() + h2.getX() + h3.getX();
    y = h1.getY() + h2.getY() + h3.getY();
  }

  // デバッグ用データ出力メソッド
  public void debugPrint(){
    System.out.println("[Game] x = " + x);
    System.out.println("[Game] y = " + y);
  }
}

//テスト用Hunter
class Hunter{
  private int x;
  private int y;

  public void setPos(int posx, int posy){
    x = posx;
    y = posy;
  }

  public int getX(){return x;}
  public int getY(){return y;}
}

//テスト用Main
public class Main{
  public static void main(String[] args){
    Hunter hunter1 = new Hunter();
    Hunter hunter2 = new Hunter();
    Hunter hunter3 = new Hunter();
    Game game = new Game();

    hunter1.setPos(10,10); //hunterの位置をセット
    hunter2.setPos(20,20); //hunterの位置をセット
    hunter3.setPos(30,30); //hunterの位置をセット

    game.escapeGame(hunter1,hunter2,hunter3);

    game.debugPrint(); // escapeGameの結果出力
  }
}

これをベースに、必要な処理を付け加えてね。
コンパイル、実行のやりかたはわかるわよね?
0038怜NGNG
それから、ちょっと気になったんだけど。
933君はフィールドとローカル変数の違い、ちゃんと理解してる?
0039デフォルトの名無しさんNGNG
933は、授業中に2chで質問してるのか?
0040デフォルトの名無しさんNGNG
>>39
たしかに(W
0041怜NGNG
>>35
うそ教えちゃかわいそうよ。
int C(int n, int r)
{
 if(r == 0 || r == n) return 1;
 return C(n-1, r) + C(n, r-1);
}

int main()
{
 printf("%d\n", C(-100, 10));
}
0042怜NGNG
>オブジェクト思考がなんたるかに沿いながら解説していただけると
>非常に助かります。

 とりあえず、本当にわかっていないっぽいので、簡単にオブジェクト指向について
説明するわね。ちょっと語弊ある言い方するかもしれないけど、感じをつかむという
意味でね。
 オブジェクト指向っていうのは、簡単に言えばプログラムを部品化したいのね。
内部で何をしているかを気にせずに、ある機能を持つプログラムを使いたいと。
この場合獲物のクラスっていうのがあるわよね? この場合、獲物がどのような
事を考えて行動を決めるかっていうのは、ゲームを管理するクラスからは興味ない
の。単にこういう場合にどういう行動したか、その結果が欲しいだけなの。
 だから、内部で色々分析するのに使った変数なんて、外部からは見たくないし、
また見せたくないのよね。だから、そういうのは全部privateで宣言するの。

 それで、このGameクラスっていうのは、獲物そのものを表現してるのね。だから、
これ単独で使うことはないから、mainはここにはいれないものなの。
 実際にどうするかっていうと、多分先生が用意するゲームを管理するクラスで
933クンが作ったGameクラスのインスタンスを作るの。インスタンスっていうのは、
なんていえばいいのかな。まあクラスに実体を持たせたものというか・・うーん。
その辺から説明しないといけないか。
 今、獲物を表すクラスを作ったよね。でも、これは獲物の一般的な定義なわけね。
これに対し「獲物A」みたいなの作りたいの。だから、このGameクラスのインスタンス
っていうのを(まあ変数みたいな気分ね)作ることによって、「獲物A」ができるの。
何個もインスタンスを作ることで「獲物B」「獲物C」、とかも作れるわけね。
 このときに、大切なのは、このクラスのメンバ変数っていうのは(ここでいうと
例えばNとかxとかy等のクラスの中で定義され、メソッドの外で定義されてるもの)、
「獲物A」「獲物B」「獲物C」それぞれ違う値をもっているの。だから、獲物Aに
逃げろっていえば、獲物Aのxとかyとかの値に従って、escapeGame()を実行すること
になるのよね。で、このメンバ変数っていうのは、「獲物A」とかが無くなるまで
保持されるの。でも、メソッドの中で定義された変数はそのメソッドが実行しおわって
しまうと消えてしまうわけ。
 まあ、そのインスタンスを作って、それに「こういう状況だけど逃げろ」って感じ
でゲームを進めていくわけね。
・・・って、説明難しい。とりあえずオブジェクト指向については、少ししっかり書いて
あるページでもみてみてね。
0043933(生徒)NGNG
長い間席を開けてしまいすいません。
共同制作の友達と大学で夜を明かして完成に至りました。
奇跡のように動くので感動してます。
(プログラムソースは…希望者があれば貼ります)
ここの住人の方々にはスレ消費などの迷惑をかけてしまい申し訳ないです。
以後もまたここでつたない質問などして茶を濁すかもしれません。

オネエさんの説明も今になってようやくわかります。
他にも砕身してくださった方、ありがとうございました。
0044あNGNG
へ
0045デフォルトの名無しさんNGNG
あへ?
0046 NGNG
よいしょ
0047デフォルトの名無しさんNGNG
前スレの1000、つまらん終わり方しやがって。
0048 NGNG
続き聞いてもいいかな?
While使うのはどうやって。。
素人なんでごめんなさい。
0049デフォルトの名無しさんNGNG
>>48

比べた後にフラグレジスターを見て条件付きジャンプ命令で飛ぶ。
0050デフォルトの名無しさんNGNG
チューリングマシンでwhileって?
万能機でも作るのか?
0051デフォルトの名無しさんNGNG
ごんぎつねの感想文
僕のかわりに書け
0052デフォルトの名無しさんNGNG
以前,佐賀県の過疎村にある小学校4年生の「ごんぎつね」の学習で感動を受けたことがある.
4年生はAちゃんという女の子一人しかいない小学校で,彼女は一生懸命ごんぎつねの感想文を書いた.
しかし,悲しいかなそれに答えてくれる同学年の子供は彼女の学校にはいないのである.
Aちゃんの感想文は先生の力によってホームページに載った.
それから暫くして日本中の学校から「感想文の感想」が送られてたのである.
いまでは「絵」あり「まんが」ありのとても充実した学習ページになっている.
彼女は一人ではなかったのである.
もちろんAちゃんの先生がコンピュータができるだけの人でなく,コンピュータの本来の使い方を知っていたということが最大のポイントであることは言うまでもない.
これもコンピュータがあればこそのことである.
0053 NGNG
乗算だけです
加算のチューリングマシンは
M+=(K2)^2LlTlB  こんな感じになってました
0054デフォルトの名無しさんNGNG
>>52はコンピュータの「本来の使い方」なのだろうか?
0055デフォルトの名無しさんNGNG
エーちゃん萌えっ!
0056デフォルトの名無しさんNGNG
>>53
その記号何語?
0057デフォルトの名無しさんNGNG
C言語ですが(for文だけで)
「人数を入力してその人数分の成績を入力すると
 合計点、平均点、最高点、最低点が表示される
 ようにせよ」という問題です。
0058デフォルトの名無しさんNGNG
for文だけじゃむりだなぁ
0059 NGNG
r 一駒右へ行く  l(小文字のL)一駒左へ行くとか
B ヘッドが見ている駒にBを書く

らしいですが・・・
0060デフォルトの名無しさんNGNG
すいません、while文を使わずにです。
0061デフォルトの名無しさんNGNG
>>60

forでもwhileでもそれだけじゃ無理だ。
○×は禁止。ならともかく。
0062Kusakabe YouichiNGNG
In article >>57, デフォルトの名無しさん/57 wrote:

> C言語ですが(for文だけで)
> 「人数を入力してその人数分の成績を入力すると
>  合計点、平均点、最高点、最低点が表示される
>  ようにせよ」という問題です。

変な課題出すひとですね。

でもまあ、そんな授業でも、聞いてなくて
こんなところで質問するのはかなりマヌケですが。
0063デフォルトの名無しさんNGNG
>>59
遷移表じゃないと分からないっす

>>57
真に受けないように
0064デフォルトの名無しさんNGNG
>>57
入力は分かるね。合計点は全部足せば良いし
平均点はそれを人数で割ればよい。
最高点は一番大きい数を更新すればよいし
最低点はその逆だ。何がわからん?
0065デフォルトの名無しさんNGNG
つか、「whileを使うな」という条件がどういう学習目的から来てるのか
小一時間問いつめたい。
むしろ俺なら「whileを禁止する無意味さ」を論文にして回答として提出するね。
0066デフォルトの名無しさんNGNG
#include<stdio.h>
#include<limits.h>
main()
{
int nin,i;
int ten,max=INT_MIN,min=INT_MAX,sum=0;
float avel;
printf("人数いれろ >> ");
scanf("%d",&nin);
printf("---------------\n");
for(i=0;i<nin;i++){
printf("点数いれろ >> ");
scanf("%d",&ten);
if(ten>max) max = ten;
if(ten<min) min = ten;
sum += ten;
}
avel = (float)sum;
avel /= nin;
printf("---------------\n");
printf("合計点%d\n",sum);
printf("平均点%f\n",avel);
printf("最高点%d\n",max);
printf("最低点%d\n",min);
}
0067Kusakabe YouichiNGNG
In article >>66, デフォルトの名無しさん/sage/66 wrote:

> #include<stdio.h>
> #include<limits.h>

こうやって書くやつは例の入門書読んだのだろうか? :)
0068デフォルトの名無しさんNGNG
>>67

作ってわかるCプログラミング?
0069 NGNG
eの値を小数点以下100桁まで求めるプログラムと
πの値を小数点以下100桁まで求めるプログラムを教えてください。
(´_ゝ`)
0070デフォルトの名無しさんNGNG
何だお前?
あっちこっちに書くな、鬱陶しいなあ
0071怜NGNG
>>69
丸投げはダメって言ったでしょ?

どこがわからないか言ってごらん。
1.e.πをどうしう式で表していいかわからない。
2.それをどうプログラムで表現していいかわからない。
2の場合、特にどのあたりで困っているか。
100桁っていう、doubleとかで扱えない桁数の処理かな?
0072デフォルトの名無しさんNGNG
ファイルから数値を読み取り
バブルで昇順にするのなんですけど
整数のはできたけど小数が入っている場合が
よく分からないので
どこをかえればいいか教えてください。
0073Kusakabe YouichiNGNG
In article >>72, デフォルトの名無しさん/72 wrote:

> ファイルから数値を読み取り
> バブルで昇順にするのなんですけど
> 整数のはできたけど小数が入っている場合が
> よく分からないので
> どこをかえればいいか教えてください。

小数が入っているとどうわからないのか、
整数のときはどう書いたのか、が書いてあれば答えてもらえるでしょうね。
0074デフォルトの名無しさんNGNG
5桁の2進数を10進数に変換するって問題で、
変換の方のプログラムはできるんですが、
キーボードから5桁の2進数を入力してそれを配列に格納する方法がわかりません。
色々検索して似たようなものを見つけたはみつけたのですが、
ttp://robotics.me.es.osaka-u.ac.jp/~masutani/Jouki/Kyouzai/binary.html
atoiとかを使ってやるのかなと考えたのですが判りません。
ダレか教えてください。
0075デフォルトの名無しさんNGNG
>>74
fgets()
0076デフォルトの名無しさんNGNG
asciiなら、文字列でもらってきて、str[0..len]-='0'すればぁ?
判らないなら、
if(strcmp(str,"00000") == 0) return "0";
if(strcmp(str,"00001") == 0) return "1";
if(strcmp(str,"00010") == 0) return "2";
とか並べればぁ?
0077デフォルトの名無しさんNGNG
>>76
変換方法はわかってるって言ってるじゃん。
0078デフォルトの名無しさんNGNG
my $message;
my $message2;
my $msg;

$message = param('input');
$message2 = param('input2');
$substract = 2001-$message2;

if($substract>1981)
{
$msg="20以下は駄目";
}

ここまでなんとかやったんですけど
40以下は、駄目って表示したい場合、どうやればいいんですか?
andみたいな奴ってあります?
0079デフォルトの名無しさんNGNG
>>78
my $message;
my $message2;
my $msg;

$message = param('input');
$message2 = param('input2');
$substract = 2001-$message2;

if($substract>1981)
{
$msg="40以下は駄目";
}
0080電気科の人NGNG

#include <stdio.h>
main()
{
int a,b;
printf("やす君:消費税を計算できるもてもてやす君16歳だべ。\n");
printf("やす君:商品は何円っスか。\n");
scanf("%d",&a);
b=a*1.05+1;
printf("入力者:%d円です。\n",a);
printf("やす君:その商品は%d円になるぞ。\n",b);
}
0081電気科の人NGNG
80↑は間違って書き込んでしまったものです。
すみません。
0082電気科の人NGNG
(改めて)すみません。Cのプログラムみてください。

#include <stdio.h>
main()
{
int a,b;
printf("やす君:消費税を計算できるもてもてやす君16歳だべ。\n");
printf("やす君:商品は何円っスか。\n");
scanf("%d",&a);
b=a*1.05+1;
printf("入力者:%d円です。\n",a);
printf("やす君:その商品は%d円になるぞ。\n",b);
}

このプログラムだと
なんか900円くらいまでは大丈夫みたいなんですけど、
1000円以上になると値がおかしくなるんです。
なんでですか??

1をプラスしないと答えが合わないのはなぜですか??
(1000円以上だとこっちのほうは答えがあう)

誰か教えてください。
0083デフォルトの名無しさんNGNG
>>82

1を足す意味がわからない。
0084デフォルトの名無しさんNGNG
>>82
Cの初心者HP逝って「型」を調べてみてね。
0085デフォルトの名無しさんNGNG
>>84

int型にしているのは小数点以下を切り捨てるためだと思うが。
0086デフォルトの名無しさんNGNG
b=(double)a*1.05;


・・・・・無駄だな。
0087デフォルトの名無しさんNGNG
いずれにせよ、+1している理由が不明である。
0088デフォルトの名無しさんNGNG
なんでfloatにしないの?
0089デフォルトの名無しさんNGNG
>>88

goto 85
0090とても親切な人NGNG
>>82
>1をプラスしないと答えが合わないのはなぜですか??

なぜ1をプラスすると答えが合うって言うんだい?
よし、仮に入力が1だったとしよう。
int(1 * 1.05 + 1) を計算すると答えは2だね。
で、キミの住む町というか妄想世界では1円の商品を購入
すると消費税1円が加算されて2円請求されるという事かい?
もしそうなら悪いことは言わない、早くその町というか
妄想世界から引越しなさい。
そうすれば、そのプログラムは b=a* 1.05; とするだけで
普通に答えが合うようになるぞ。
それとも「消費税を計算できるもてもてやす君16歳」
というのを忠実にシミュレートするプログラムだと
そうするしかないのかな?
0091デフォルトの名無しさんNGNG
どうでもいいが質問者が頭悪そうなので、次の問題にいこ〜
0092デフォルトの名無しさんNGNG
>>82
なんか、あってるんだけど。どこがおかしいの?
0093デフォルトの名無しさんNGNG
怜たんが居ないと荒れるなあ・・(w
取り合えず+1はやめれ 意味不明
全部floatでやって最後にintにキャストすりゃいいだろ
009492NGNG
あ、コンパイルしたら合ってたって事。
1500→1575(+1無しで)
0095デフォルトの名無しさんNGNG
>>92
0を入力して見ろよ。
それでも合ってるって言うのかお前ってヤツは!!
009692NGNG
>>95
0
009792NGNG
20000→21000
何がおかしいのか分からん。
小数点以下もちゃんとでないし。ちなみにVC++6。
0098デフォルトの名無しさんNGNG
>>96
まいりました。
0099デフォルトの名無しさんNGNG
>>97
質問の意図をはずしていると思われる。
まず元のソースを変更せずにコンパイルし、
900以下の数値を入力して得られる結果を「正しい」と思い、
1000以上の数値を入力して得られる結果が「おかしい」と思う
ところからスタートしなさい。
010092NGNG
>>99
じゃ、元のソースで。
800→841
20000→21001
だそうです。
ちゅうか、ソース見て+1の効果が分からんの?
0101デフォルトの名無しさんNGNG
消費税って切り上げだったっけ (^-^;
■ このスレッドは過去ログ倉庫に格納されています