5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

宿題みてあげるっ

1 ::01/12/09 21:53
前スレのお兄ちゃんの恋人の怜です。
かわいい弟クンのために、宿題みてあげるね。
でも、丸投げとかしたらおこっちゃうよ。まずは自分で考えてね。

前スレ
http://pc.2ch.net/test/read.cgi/tech/1003838158/

2 ::01/12/09 21:55
基本的な用語とか、名前がわかっているアルゴリズムとかの解説は
自分でインターネットで検索した方が早いかな。
http://www.google.co.jp/
で検索してから質問してね。

3 :デフォルトの名無しさん:01/12/09 22:01
Cでクエスチョン

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

aの値は、環境依存?

4 :デフォルトの名無しさん:01/12/09 22:10
a = a + (-(+a));
別に環境依存でもないんじゃ?

5 :デフォルトの名無しさん:01/12/09 22:10
0 (VC6)

6 :デフォルトの名無しさん:01/12/09 22:11
% 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

7 :デフォルトの名無しさん:01/12/09 22:12
o(^0^)/

8 :デフォルトの名無しさん:01/12/09 22:13
怜ちゃんごくろーサマンサ

9 ::01/12/09 22:17
>>3
うーんとね、
単項の+,-は二項形高い優先順位を持つのね。で、右から左に結合するの。
だから、a=a+-+aっていうのは
→a=a+-(+a)→a=a+(-(+a)) っていうふうに解釈される。
だから、>>4さんが言ってくれてるように、環境依存ではないと思うよ。

10 ::01/12/09 22:19
あら、書き間違えてしまったみたい。
>二項形高い優先順位
「二項形式より高い優先順位」ね。二項形式っていうのはa+bみたいなやつ。
単項は-aとかいう感じのね。

11 :デフォルトの名無しさん:01/12/09 22:21
麻衣よりお姉さんだな。

12 ::01/12/09 22:23
>>前スレのハンターの話の生徒さん

 その仕様って獲物クラスについてだけだよね?
 ゲームを管理するクラスとか、ハンタークラスについて
スケルトンはもらってない?
 メソッドについてはいくらでも追加していいと思うよ。
でも一応privateで宣言しようね。

13 :933(生徒):01/12/10 04:17
新スレだ〜
デバッグは一応終わりました…
ダミークラスつくるのはちょっと方針上あきらめました。
コンパイルが通ったやつです。
 ↓
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];

14 :933(生徒):01/12/10 04:21
/** 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;
}

15 :933(生徒):01/12/10 04:26
/** 獲物の行動を決定します
@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;
     }
    }
   }
  }

16 :933(生徒):01/12/10 04:31
 /* ハンターが獲物の視界内にいればフラグを立てる */

 /* 壁があります */
 /* 壁がない方向の箱を拾って壁がある方向の箱は控除します */
  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の内容をシャッフルすることで入れ替えます */
   }
  }

17 :933(生徒):01/12/10 04:37
  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;
   }

18 :933(生徒):01/12/10 04:41
  /* 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);
 }
}

19 :933(生徒):01/12/10 04:42
以上です。
こっからやっといろいろいじくれます…
まだコンパイルが通っただけですが…。

20 ::01/12/10 06:42
コンパイルエラーはなくなったのね。
ここからが本当のデバッグの開始だからがんばっていこうね。

まず、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の絶対値が得られるからこれも上手く利用するといいか
も。

 まあ、とりあえず目についたのはこれくらいかな。
 これくらいといっても、基本的な部分で問題があるから、修正すると他にも色々
間違えそうだけど。
 プログラムなんて、デバッグをどれだけ頑張れるかで力がついていくものだから、
頑張ってね。

21 :933(生徒):01/12/10 13:08
mode_dir , Hunt は
escapeGame の中で初期化させろということですか?
移動すればいいんですよね?了解です。

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


それと、自分がageるべきなんでしょうか?やっぱ。

22 :933(生徒):01/12/10 13:19
flag に private つけるとエラーが出るんですけど…
なんでじゃ〜!!

23 ::01/12/10 13:36
そうね、質問するときは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とかの意味はわかる?

24 :933(生徒):01/12/10 13:42
すんませんです、
>>18
  private int p = 0;
  private int r = 0;
  private boolean breakflag = true;
はうそです…
自分がここにコピペする時つけてもいいだろうと思ってたのでつけましたが
コンパイル通すと叱られました…
これらと flag は escapeGame より上のクラスで
private 指定しないといけないものなのですか?
というより、こういうことするのはおせっかいですかね?

25 :933(生徒):01/12/10 13:46
了解です。ageします。

public や private の意味とかはわかります。
語句の意味は。
だけど、そのプログラム的な扱い方なんかがホントわかってないんです。
言われて「あ、そっか…」と思ってます。
クラスのメンバ変数、っていう考え方があって
その上で「これからクラス内でこの変数を使いますよ〜」っていう宣言は
クラスより上で指定されなければいけないってことですか?

26 :933(生徒):01/12/10 13:49
今回の
  private int p = 0;
  private int r = 0;
  private boolean breakflag = true;
っていうのは private 外すとひょっとしたら class Game 外の他の値を
参照してしまう危険があるわけですよね?
だけど escapeGame 内で指定するのは間違ってるってことですよね。

27 ::01/12/10 15:07
えーっとね、そうじゃなくて・・
privateをつけると、クラスの外部から参照される事がなくなるとか、
publicをつけると、クラスの外部からも参照、書き換えができるように
なるとかそういうものなの。

クラス全体で使うものはメソッド(関数)の中ではなくて、
public class ●●{
の直下で、宣言しないといけないのね。

28 :933(生徒):01/12/10 15:18
メソッドの中でだけ使う、というような考え方自体が
おかしいってことでしょうか?

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

こういう処理の方がいい、ということですよね?

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

オブジェクト思考がなんたるかに沿いながら解説していただけると
非常に助かります。
(ホントなんでおれ講義出なかったんだよ…)

30 :933(生徒):01/12/10 15:30
※ちなみに
 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;
 }

31 :デフォルトの名無しさん:01/12/10 15:53
ひとつ質問。
この933ってのは何人もいるのか?

32 :デフォルトの名無しさん:01/12/10 16:10
http://www2.bbspink.com/test/read.cgi?bbs=club&key=1005652592&st=30&to=30&nofirst=true
↑これ書いたの誰だよ。

33 :933(生徒):01/12/10 16:44
いや、今の所騙りはいませんが…
自分だけです。
>>31

34 :デフォルトの名無しさん:01/12/10 18:25
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が成り立つ。

35 :味噌醤油醸造株式会社:01/12/10 18:32
>>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;
}

36 :デフォルトの名無しさん:01/12/10 22:09
933君はなかなかの強敵だな。

37 ::01/12/10 22:57
>>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の結果出力
  }
}

これをベースに、必要な処理を付け加えてね。
コンパイル、実行のやりかたはわかるわよね?

38 ::01/12/10 23:17
それから、ちょっと気になったんだけど。
933君はフィールドとローカル変数の違い、ちゃんと理解してる?

39 :デフォルトの名無しさん:01/12/10 23:27
933は、授業中に2chで質問してるのか?

40 :デフォルトの名無しさん:01/12/11 00:11
>>39
たしかに(W

41 ::01/12/11 01:41
>>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));
}

42 ::01/12/11 19:01
>オブジェクト思考がなんたるかに沿いながら解説していただけると
>非常に助かります。

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

 それで、このGameクラスっていうのは、獲物そのものを表現してるのね。だから、
これ単独で使うことはないから、mainはここにはいれないものなの。
 実際にどうするかっていうと、多分先生が用意するゲームを管理するクラスで
933クンが作ったGameクラスのインスタンスを作るの。インスタンスっていうのは、
なんていえばいいのかな。まあクラスに実体を持たせたものというか・・うーん。
その辺から説明しないといけないか。
 今、獲物を表すクラスを作ったよね。でも、これは獲物の一般的な定義なわけね。
これに対し「獲物A」みたいなの作りたいの。だから、このGameクラスのインスタンス
っていうのを(まあ変数みたいな気分ね)作ることによって、「獲物A」ができるの。
何個もインスタンスを作ることで「獲物B」「獲物C」、とかも作れるわけね。
 このときに、大切なのは、このクラスのメンバ変数っていうのは(ここでいうと
例えばNとかxとかy等のクラスの中で定義され、メソッドの外で定義されてるもの)、
「獲物A」「獲物B」「獲物C」それぞれ違う値をもっているの。だから、獲物Aに
逃げろっていえば、獲物Aのxとかyとかの値に従って、escapeGame()を実行すること
になるのよね。で、このメンバ変数っていうのは、「獲物A」とかが無くなるまで
保持されるの。でも、メソッドの中で定義された変数はそのメソッドが実行しおわって
しまうと消えてしまうわけ。
 まあ、そのインスタンスを作って、それに「こういう状況だけど逃げろ」って感じ
でゲームを進めていくわけね。
・・・って、説明難しい。とりあえずオブジェクト指向については、少ししっかり書いて
あるページでもみてみてね。

43 :933(生徒):01/12/11 21:44
長い間席を開けてしまいすいません。
共同制作の友達と大学で夜を明かして完成に至りました。
奇跡のように動くので感動してます。
(プログラムソースは…希望者があれば貼ります)
ここの住人の方々にはスレ消費などの迷惑をかけてしまい申し訳ないです。
以後もまたここでつたない質問などして茶を濁すかもしれません。

オネエさんの説明も今になってようやくわかります。
他にも砕身してくださった方、ありがとうございました。

44 ::01/12/11 22:54


45 :デフォルトの名無しさん:01/12/11 23:23
あへ?

46 : :01/12/12 01:24
よいしょ

47 :デフォルトの名無しさん:01/12/12 01:25
前スレの1000、つまらん終わり方しやがって。

48 : :01/12/12 01:28
続き聞いてもいいかな?
While使うのはどうやって。。
素人なんでごめんなさい。

49 :デフォルトの名無しさん:01/12/12 01:30
>>48

比べた後にフラグレジスターを見て条件付きジャンプ命令で飛ぶ。

50 :デフォルトの名無しさん:01/12/12 01:31
チューリングマシンでwhileって?
万能機でも作るのか?

51 :デフォルトの名無しさん:01/12/12 01:33
ごんぎつねの感想文
僕のかわりに書け

52 :デフォルトの名無しさん:01/12/12 01:36
以前,佐賀県の過疎村にある小学校4年生の「ごんぎつね」の学習で感動を受けたことがある.
4年生はAちゃんという女の子一人しかいない小学校で,彼女は一生懸命ごんぎつねの感想文を書いた.
しかし,悲しいかなそれに答えてくれる同学年の子供は彼女の学校にはいないのである.
Aちゃんの感想文は先生の力によってホームページに載った.
それから暫くして日本中の学校から「感想文の感想」が送られてたのである.
いまでは「絵」あり「まんが」ありのとても充実した学習ページになっている.
彼女は一人ではなかったのである.
もちろんAちゃんの先生がコンピュータができるだけの人でなく,コンピュータの本来の使い方を知っていたということが最大のポイントであることは言うまでもない.
これもコンピュータがあればこそのことである.

53 : :01/12/12 01:37
乗算だけです
加算のチューリングマシンは
M+=(K2)^2LlTlB  こんな感じになってました

54 :デフォルトの名無しさん:01/12/12 01:38
>>52はコンピュータの「本来の使い方」なのだろうか?

55 :デフォルトの名無しさん:01/12/12 01:40
エーちゃん萌えっ!

56 :デフォルトの名無しさん:01/12/12 01:47
>>53
その記号何語?

57 :デフォルトの名無しさん:01/12/12 01:49
C言語ですが(for文だけで)
「人数を入力してその人数分の成績を入力すると
 合計点、平均点、最高点、最低点が表示される
 ようにせよ」という問題です。

58 :デフォルトの名無しさん:01/12/12 01:51
for文だけじゃむりだなぁ

59 : :01/12/12 01:52
r 一駒右へ行く  l(小文字のL)一駒左へ行くとか
B ヘッドが見ている駒にBを書く

らしいですが・・・

60 :デフォルトの名無しさん:01/12/12 01:52
すいません、while文を使わずにです。

61 :デフォルトの名無しさん:01/12/12 01:55
>>60

forでもwhileでもそれだけじゃ無理だ。
○×は禁止。ならともかく。

62 :Kusakabe Youichi:01/12/12 02:03
In article >>57, デフォルトの名無しさん/57 wrote:

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

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

でもまあ、そんな授業でも、聞いてなくて
こんなところで質問するのはかなりマヌケですが。

63 :デフォルトの名無しさん:01/12/12 02:03
>>59
遷移表じゃないと分からないっす

>>57
真に受けないように

64 :デフォルトの名無しさん:01/12/12 02:07
>>57
入力は分かるね。合計点は全部足せば良いし
平均点はそれを人数で割ればよい。
最高点は一番大きい数を更新すればよいし
最低点はその逆だ。何がわからん?

65 :デフォルトの名無しさん:01/12/12 02:09
つか、「whileを使うな」という条件がどういう学習目的から来てるのか
小一時間問いつめたい。
むしろ俺なら「whileを禁止する無意味さ」を論文にして回答として提出するね。

66 :デフォルトの名無しさん:01/12/12 02:18
#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);
}

67 :Kusakabe Youichi:01/12/12 02:22
In article >>66, デフォルトの名無しさん/sage/66 wrote:

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

こうやって書くやつは例の入門書読んだのだろうか? :)

68 :デフォルトの名無しさん:01/12/12 02:25
>>67

作ってわかるCプログラミング?

69 : :01/12/12 03:36
eの値を小数点以下100桁まで求めるプログラムと
πの値を小数点以下100桁まで求めるプログラムを教えてください。
(´_ゝ`)

70 :デフォルトの名無しさん:01/12/12 04:08
何だお前?
あっちこっちに書くな、鬱陶しいなあ

71 ::01/12/12 04:14
>>69
丸投げはダメって言ったでしょ?

どこがわからないか言ってごらん。
1.e.πをどうしう式で表していいかわからない。
2.それをどうプログラムで表現していいかわからない。
2の場合、特にどのあたりで困っているか。
100桁っていう、doubleとかで扱えない桁数の処理かな?

72 :デフォルトの名無しさん:01/12/12 06:49
ファイルから数値を読み取り
バブルで昇順にするのなんですけど
整数のはできたけど小数が入っている場合が
よく分からないので
どこをかえればいいか教えてください。

73 :Kusakabe Youichi:01/12/12 09:10
In article >>72, デフォルトの名無しさん/72 wrote:

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

小数が入っているとどうわからないのか、
整数のときはどう書いたのか、が書いてあれば答えてもらえるでしょうね。

74 :デフォルトの名無しさん:01/12/12 17:37
5桁の2進数を10進数に変換するって問題で、
変換の方のプログラムはできるんですが、
キーボードから5桁の2進数を入力してそれを配列に格納する方法がわかりません。
色々検索して似たようなものを見つけたはみつけたのですが、
ttp://robotics.me.es.osaka-u.ac.jp/~masutani/Jouki/Kyouzai/binary.html
atoiとかを使ってやるのかなと考えたのですが判りません。
ダレか教えてください。

75 :デフォルトの名無しさん:01/12/12 17:49
>>74
fgets()

76 :デフォルトの名無しさん:01/12/12 17:54
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";
とか並べればぁ?

77 :デフォルトの名無しさん:01/12/12 18:00
>>76
変換方法はわかってるって言ってるじゃん。

78 :デフォルトの名無しさん:01/12/12 19:11
my $message;
my $message2;
my $msg;

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

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

ここまでなんとかやったんですけど
40以下は、駄目って表示したい場合、どうやればいいんですか?
andみたいな奴ってあります?

79 :デフォルトの名無しさん:01/12/12 19:58
>>78
my $message;
my $message2;
my $msg;

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

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

80 :電気科の人:01/12/12 20:08

#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);
}

81 :電気科の人:01/12/12 20:10
80↑は間違って書き込んでしまったものです。
すみません。

82 :電気科の人:01/12/12 20:19
(改めて)すみません。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円以上だとこっちのほうは答えがあう)

誰か教えてください。

83 :デフォルトの名無しさん:01/12/12 20:23
>>82

1を足す意味がわからない。

84 :デフォルトの名無しさん:01/12/12 20:27
>>82
Cの初心者HP逝って「型」を調べてみてね。

85 :デフォルトの名無しさん:01/12/12 20:28
>>84

int型にしているのは小数点以下を切り捨てるためだと思うが。

86 :デフォルトの名無しさん:01/12/12 20:30
b=(double)a*1.05;


・・・・・無駄だな。

87 :デフォルトの名無しさん:01/12/12 20:31
いずれにせよ、+1している理由が不明である。

88 :デフォルトの名無しさん:01/12/12 20:33
なんでfloatにしないの?

89 :デフォルトの名無しさん:01/12/12 20:34
>>88

goto 85

90 :とても親切な人:01/12/12 20:45
>>82
>1をプラスしないと答えが合わないのはなぜですか??

なぜ1をプラスすると答えが合うって言うんだい?
よし、仮に入力が1だったとしよう。
int(1 * 1.05 + 1) を計算すると答えは2だね。
で、キミの住む町というか妄想世界では1円の商品を購入
すると消費税1円が加算されて2円請求されるという事かい?
もしそうなら悪いことは言わない、早くその町というか
妄想世界から引越しなさい。
そうすれば、そのプログラムは b=a* 1.05; とするだけで
普通に答えが合うようになるぞ。
それとも「消費税を計算できるもてもてやす君16歳」
というのを忠実にシミュレートするプログラムだと
そうするしかないのかな?

91 :デフォルトの名無しさん:01/12/12 20:45
どうでもいいが質問者が頭悪そうなので、次の問題にいこ〜

92 :デフォルトの名無しさん:01/12/12 20:48
>>82
なんか、あってるんだけど。どこがおかしいの?

93 :デフォルトの名無しさん:01/12/12 20:50
怜たんが居ないと荒れるなあ・・(w
取り合えず+1はやめれ 意味不明
全部floatでやって最後にintにキャストすりゃいいだろ

94 :92:01/12/12 20:50
あ、コンパイルしたら合ってたって事。
1500→1575(+1無しで)

95 :デフォルトの名無しさん:01/12/12 20:50
>>92
0を入力して見ろよ。
それでも合ってるって言うのかお前ってヤツは!!

96 :92:01/12/12 20:53
>>95
0

97 :92:01/12/12 20:56
20000→21000
何がおかしいのか分からん。
小数点以下もちゃんとでないし。ちなみにVC++6。

98 :デフォルトの名無しさん:01/12/12 20:59
>>96
まいりました。

99 :デフォルトの名無しさん:01/12/12 21:05
>>97
質問の意図をはずしていると思われる。
まず元のソースを変更せずにコンパイルし、
900以下の数値を入力して得られる結果を「正しい」と思い、
1000以上の数値を入力して得られる結果が「おかしい」と思う
ところからスタートしなさい。

100 :92:01/12/12 21:14
>>99
じゃ、元のソースで。
800→841
20000→21001
だそうです。
ちゅうか、ソース見て+1の効果が分からんの?

101 :デフォルトの名無しさん:01/12/12 21:17
消費税って切り上げだったっけ (^-^;

102 :99:01/12/12 21:22
>>100
>ちゅうか、ソース見て+1の効果が分からんの?
+1の効果?
バグの原因て意味ならわかるけど正解を導く為に必要ってんならわからないです。
82は「800→841でOK」だけど「21000→21001はNG」と言っていますけど。

103 :99:01/12/12 21:24
>>102
訂正
×:「21000→21001はNG」
○:「20000→21001はNG」

104 :デフォルトの名無しさん:01/12/12 21:30
>>101
切り上げの店が多いな。
だから足すなら1じゃなくて0.5だ。
はい、次の質問〜

105 :92:01/12/12 21:35
>>92
>82は「800→841でOK」だけど「21000→21001はNG」と言っていますけど。
841でOK、ってどこに書いてあるの?800円のモノ買ったら841円
請求されんの?マジで?消費税って5.125%になったの?

106 :105:01/12/12 21:37
あ、>>102だーね。

107 :99:01/12/12 21:40
>>105
なんか900円くらいまでは大丈夫みたいですよ。

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

#スレ荒らしてしまったみたいなのでこれでやめる

108 :92:01/12/12 21:45
>>107
「正解」の意味が変だって事だよ。そして電気科は最後まで現れなかった・・・と。

109 :デフォルトの名無しさん:01/12/12 22:00
やす君はじつは消費税も計算できないし、もてもてでもなかった。

110 :デフォルトの名無しさん:01/12/12 22:04
16歳でさえもなかったらモーサイコー!!

111 :電気科の人:01/12/12 23:01
>83〜110さん
今までチャット&ご飯だった。
+1は結果を合わそうとして無理矢理付け加えたもの。
0としたら1円だった。それおかしいと思った。
ただ+1を抜かすと、100と入力したら104円になった。

要するに言いたいことは

〜〜〜〜〜+0除いたソースの場合〜〜〜〜〜
1.入力100とすると出力104←×
2.入力1000とすると出力1050←○

〜〜〜〜〜+1を付け加えたソースの場合(82のソース)〜〜〜〜〜
1.入力100とすると出力105←○
2.入力1000とすると出力1051←×

〜〜〜〜〜本来なるべき結果〜〜〜〜〜
1.100と入力すると出力105←○
2.1000と入力すると出力1050←○

文はごちゃごちゃになってしまいましたが(あしからず)
「〜本来なるべき結果〜」出力のソースお願いします。

では一旦お風呂タイムっす(笑)

112 :デフォルトの名無しさん:01/12/12 23:07
入力がY円だとしたら、消費税込みでは
Y + (Y * 5) /100 円

113 :デフォルトの名無しさん:01/12/12 23:16
>ただ+1を抜かすと、100と入力したら104円になった。

ならねーよターコ

114 :デフォルトの名無しさん:01/12/12 23:16
約分したら
Y + Y /20 円

端数切り上げなら
Y + Y / 20 + (Y % 20 ? 1 : 0)

115 :デフォルトの名無しさん:01/12/12 23:41
消費税は定数じゃなくて変数にしとかないとあとで泣くぞ。

116 :デフォルトの名無しさん:01/12/12 23:59
>>115

マクロがいい。

117 :電気科の人:01/12/13 01:20
>113さん
なるんです。ちなみにコンパイラは
LSIC(?)試食版で
エディタはLCPADです。

>115さん
へいっ!!結構貴重っぽいアドバイスありがとうございます。

>116さん
プリプロセッサ指令??

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

118 :デフォルトの名無しさん:01/12/13 01:24
>>117

おかしくない。
ちなみにVC++6.0 Pro

119 :デフォルトの名無しさん:01/12/13 01:26
だからfloatでやれっつてんだろ ヴォケ
感電して氏ね!!

120 :デフォルトの名無しさん:01/12/13 01:27
>>119

自動型変換をするからfloatにする必要はないと思われ。
うまくゆかなかったらコンパイラが悪い。

121 :デフォルトの名無しさん:01/12/13 01:34
>>117
> なるんです。ちなみにコンパイラは
> LSIC(?)試食版で
ずいぶん誤差が大きいんだな >LSI-C
とりあえず>>104を欲嫁。

> エディタはLCPADです。
そんなもん誰も生糸欄。

122 :質問:01/12/13 01:39
sprintf のs はsecret のs?

123 :デフォルトの名無しさん:01/12/13 01:42
>>122
stringだろ。

124 :デフォルトの名無しさん:01/12/13 01:44
>>122

プログラミング言語C第二版の189ページに書かれていることからして、
stringのsだと思う。

125 ::01/12/13 01:49
>>93
ありがとー。荒れるの防止に一役かえてるなら嬉しいわ(w

質問者が理解していない可能性があるから、ちょっとフォローしてくわね。
>>112 >>114さんが言ってくれたみたいにやればいいと思うよ。

これは、b = a * 1.05;
って書くとa * 1.05を計算するときには浮動小数点で計算されるの。
このときに、コンピュータの内部では二進数で計算するのね。
だから、微妙に誤差が出ちゃうわけ(丸め誤差っていうから覚えとこう)。

で、浮動小数点→整数に変換されるときには、小数点以下は切り捨てられるの。
だから、もしほんの少し誤差がでて、計算した結果が、
a = 104,99999999999999999999999
みたくなったら、a = 104 になってしまう。
 誤差がどういう風に出るかによって結果が違ってくるから上手くいく場合といかない
場合があるのよね。
 この誤差を防ぐには、>>114さんが書いてくれたように全部整数で計算すればいいわけね。

126 :デフォルトの名無しさん:01/12/13 03:34
>>116
消費税率かわるたびに再コンパイル?
そのうち地方によって消費税率が異なるようになったら大変だな。

127 :デフォルトの名無しさん:01/12/13 13:35
大きさ11の配列rootの各要素に3.0、3.1、・・・・・4.0の平方根を求めてから、
各要素の値を少数第8位まで出力しなさい。

#include<iostream.h>
#include<math.h>
#include<iomanip.h>

int main(void)
{
double root[11];

for(int x=0; x<11; x++)
root[x]=sqrt(3.0+x/10.0);

cout << setiosflags(ios :: fixed);
for(x=0; x<11; x++)
cout << setprecision(8) << root[x] << endl;

return 0;
}

ってやったんですけどうまくいきません。何が悪いんでしょうか?

128 :Kusakabe Youichi:01/12/13 13:40
In article >>127, デフォルトの名無しさん/127 wrote:
> 大きさ11の配列rootの各要素に3.0(I$3.1(I$%%%%%4.0の平方根を求めてから、

文字化けしてます。

> 各要素の値を少数第8位まで出力しなさい。

少ない数?

> #include<iostream.h>
> #include<math.h>
> #include<iomanip.h>

この書き方...へんな入門書でも読みましたか? :)

> for (int x = 0; x < 11; x++)

> for (x = 0; x < 11; x++)

> ってやったんですけどうまくいきません。何が悪いんでしょうか?

うまく行かないってのは、コンパイルエラーでも出たのですか?
だったらそのエラーを読めばいいじゃん。

129 :デフォルトの名無しさん:01/12/13 14:04
>>127
二つめのfor(x=...)で引っかかってるでしょう。
for(int x=..)で解決。

130 :デフォルトの名無しさん:01/12/13 15:29
ねぇねぇ、
Kusakabeってマジ?それともネタ?

131 :デフォルトの名無しさん:01/12/13 15:40
じつは日下部なんて人間は最初から存在しない

fjの昔からある荒し専用コテハン
2ちゃんではごく最近なので誤解している人多数

132 :デフォルトの名無しさん:01/12/13 17:46
「くさかべ」は、fjに常駐している4人のやさぐれプログラマ集団
の名前だという説もある。フランスのブルバキみたいなもの(そんな
立派ではないか)。

133 :電気科の人:01/12/13 17:54
>125怜さん
わかりました。それ理解することできました。
でも大変申し上げにくいことが・・・w

>一緒に考えてくれた人達
LSIC(?)でも成功する方法を発見しました。
これは先パイの友に聞いた方法なんですが・・・
#include <stdio.h>
main()
{
int b;
float a,c;
a=1.05;
printf("入力せよ\n");
scanf("%d",&b);
c=a*b;
printf("%.0f\n",c);
}

でLSIC(?)でもできます。
100と入力したら105。となる。
1000と入力したら1050。となる
・・・一緒に考えてくれたみなさん。ありがとうございました。
とりあえず万事解決です!!


134 :デフォルトの名無しさん:01/12/13 17:59
>>133
だからそれが丸め誤差だっつーの。
覚えときなさいよ、まったく。

135 ::01/12/13 22:14
>>133
うん、それでも大丈夫だね。
浮動小数点型をprintfで表示したときは、問答無用で切り捨てたりしないのよね。

136 :デフォルトの名無しさん:01/12/13 23:49
>>127
使ってるコンパイラは何?VC6ならそれでうまくいくんだけど、
g++だと>>129の言うようにしないとだめ。

for文の()内のスコープがコンパイラによって違う。
このへんの話しはKusakabeちゃんが大好きな話しだよね。
素直に話しちゃくれないだろうけど。

話し。

137 :デフォルトの名無しさん:01/12/14 00:22
>>133
やす君はクビですか?

138 :デフォルトの名無しさん:01/12/14 00:22
age推奨

139 :Kusakabe Youichi:01/12/14 04:12
In article >>136, デフォルトの名無しさん/sage/136 wrote:
> for文の()内のスコープがコンパイラによって違う。

標準規格に適合しているかどうかの問題でしょ?

> このへんの話しはKusakabeちゃんが大好きな話しだよね。

はなしし?

140 :デフォルトの名無しさん:01/12/14 04:23
「話し」は「話す」の連用形です。連用形は単独で名詞的に使われますね。

141 :Kusakabe Youichi:01/12/14 04:25
In article >>140, デフォルトの名無しさん/sage/140 wrote:

> 「話し」は「話す」の連用形です。連用形は単独で名詞的に使われますね。

連用形と名詞は別箇ですよ。
(連用形が名詞化したものは多いですが)

142 :デフォルトの名無しさん:01/12/14 07:30
>>133
あれだけfloatにしろって言われたのに友達の先輩から
言われるまで頑なに拒み続けた電波科の人。何しにこのスレに来たのか?

143 :デフォルトの名無しさん:01/12/14 09:35
>>142
 説明不足が悪い。
 floatにして、floatのままprintfで表示することが大切だが、そこまで説明
してなかったから。floatにして、intにキャストしてたら結果は一緒だよ。

144 :名前なし:01/12/14 15:10
初めて書き込みします。
JAVAで二分探索木を作りたいんですが
ポインタがないジャバでノードとパスをどのようにすればいいんでしょうか?
そのようなクラスとかメソッドがあるんでしょうか?

145 :デフォルトの名無しさん:01/12/14 15:15
>>144
次の人のインスタンスを自分自身のメンバに持っちゃうクラスを作る

146 :デフォルトの名無しさん:01/12/14 15:21
>>144
TreeMap
というそのものズバリがあることはあるが
ご要望に添えるかどうかは仕様を見て自分で判断してくれ。
http://java.sun.com/products/jdk/1.2/ja/docs/ja/api/java/util/TreeMap.html
JDKにはソースもたぶんついてくるからそれを見て参考にするのもよし。

Javaにポインタが無いといっても「参照」と呼ばれる物は
制限付きのポインタと思ってもほぼ間違いないものなので
LinkListやTreeもちゃんと作れるよ。

147 ::01/12/14 18:19
>>144
Javaのクラスを表す変数は気分的には全てポインタと思ってもらって構わないよ。
ポインタがないというより、ポインタしかないと言うべきかな。
c++とか知ってると少し混乱するかも。コピーコンストラクタとかないからね。
intとかdoubleとかの基本型はまた別。

148 :デフォルトの名無しさん:01/12/14 21:51
初歩的なことで悩んでいるのですが・・・・
ルンゲクッタで数値計算するときに、
double x1[100][720]のように配列を指定すると実行できるのですが、
double x1[50][7200]にすると実行できなくなります。

同じようなソースで、double x1[150][1200],x2[150][1200]ですると動きます。
配列:50*7200=360000、150*1200*2=360000なので
メモリーに問題は無い気がするのですが、どうなんでしょうか?
上手く実行する方法ないでしょうか?
メモリーを節約する方法とかないでしょうか?
お願いします。

149 :デフォルトの名無しさん:01/12/14 21:58
>148
スタックが不足してる、コンパイラのHELP見てスタックを広げるか
constにしちゃえ、或いは*x1[50]としてmallocするか
ルンゲクッタはちょっと勘弁 w

150 :デフォルトの名無しさん:01/12/14 21:59
あ、変な事言ってる、逝って来ます

151 :デフォルトの名無しさん:01/12/14 22:26
点を配置して3次元に図をプログラムで書くとき、
ただの丸(Z軸は考えない)は(sin(x),cos(x),0)のxを変えて書けたんですが、
Z軸が入る球はどうすればよいのでしょうか・・・?
なんか頭がこんがらがってきました。
ちなみにC++です。

152 :デフォルトの名無しさん:01/12/14 22:27
>>148
149の言うようにヒープから確保すればよい。

153 :デフォルトの名無しさん:01/12/14 22:36
>>151
何が問題?
一次変換、投影、陰線処理などは解決済?

154 :デフォルトの名無しさん:01/12/14 22:59
>>144
配列のインデックスをポインタ代わりに使うってのも楽かもしれない

155 :デフォルトの名無しさん:01/12/14 23:05
球の方程式がわからないってこと?

156 :デフォルトの名無しさん:01/12/14 23:50
x=sinθ cosφ
y=sinθ sinφ
z=cosθ

157 :148:01/12/15 00:00
>>149,152様ありがとうございます。
調べてやってみます。

158 :デフォルトの名無しさん:01/12/15 00:22
double x[50][50]の配列設定で
関数f1が→double型で f1= exp(1/x[k][i])で表現できる時、
main文の前に

double f1(double x)
{
return();

のように宣言したいのですが、

double f1(double x[50][50])
{
return(exp(1/x[k][i]);

にするとコンパイルできません。
配列を使って宣言する方法を教えて下さい。
ちなみにmain文の中に、
double f1とf1= exp(1/x[k][i])をいれると動きます。

159 :デフォルトの名無しさん:01/12/15 00:24
>>158
mainからはどういうカタチで呼び出したいのかも書いてくれ。

160 :デフォルトの名無しさん:01/12/15 00:31
>>158
kとiを受け取っていないからじゃないか?

161 :デフォルトの名無しさん:01/12/15 01:02
こういうこと?

double f1(double x)
{
return exp(1/x);
}

main()
{
double x[50][50];
double ans;
int k,i;
ans = f1(a[k][i]);
}

162 :訂正:01/12/15 01:10
誤 ans = f1(a[k][i]);
正 ans = f1(x[k][i]);

163 :デフォルトの名無しさん:01/12/15 01:14
>>158
double f1(double (*x)[50])
{
return exp(1/x[k][i]);
}

そりゃー、全角のカッコ使ったりカッコの数が合ってなかったりしたら、
コンパイルは通らん罠。

164 :デフォルトの名無しさん:01/12/15 01:15
>>161
やらせたいことを具体的に数式で表現してくれ

165 :161:01/12/15 01:18
俺は質問者じゃない。

166 :デフォルトの名無しさん:01/12/15 01:20
double f1(double x[50][50], int k, int i)
{
return (1/x[k][i]);
}

main(){
double x[50][50];
double ans;
int k,i;
k = hogehoge1(); // 1次元の配列番号決定処理
i = hogehoge2(); // 2次元の配列番号決定処理
ans = f1(x, k, i);
}

こういうことをしたいのかな?
へんなプログラムだけど。

167 :161:01/12/15 01:21
それだったら、>>161とおんなじだよな。

168 :166:01/12/15 01:24
>>167
そうなんだけど、>>158にあるのは
>double f1(double x[50][50])
>{
>return(exp(1/x[k][i]);
>}
だから、無理に合わせてみました。

169 :164:01/12/15 01:24
>>161
ごめん。
どう見ても通らなそうだったから、つい。

170 :デフォルトの名無しさん:01/12/15 01:50
皆様ありがとうございます。
遅くなって申し訳ありません。
実際の概略はこんな感じです。

void ans(x[50][50],y[50][50])
{double k1;double k2;double k3;double k4;
k1=exp(1/x[k][i]);
k2=exp(1/(x[k][i]+k1/2);
k3=exp(1/(x[k][i]+k2/2);
k4=exp(1/(x[k][i]+k3);
y[k][i+1]=y[k][i]+(k1+k2+k3+k4)/6;
}

main()
{
double x[50][50],y[50][50],z[50][50];
int k,i,a;
a=3;

for(k=0;k<50;++k){
x[0][0]=0;
y[k][0]=1;
for(i=0;i<50;++k){
ans(x,y);
z[k][i]=10*y[k][i];
}
x[k+1][i]=x[k][i]+a*z[k][i];
}
}

これを
double f(double x[50][50])
{
return(exp/(x1[k][i]));
}

void ans(x[50][50],y[50][50])
{double k1(double x[50][50]);double k2(double x[50][50]);
double k3(double x[50][50]);double k4(double x[50][50]);
k1=f(x[k][i]);
k2=f(x[k][i]+k1/2);
k3=f(x[k][i]+k2/2);
k4=f(x[k][i]+k3);
y[k][i+1]=y[k][i]+(k1+k2+k3+k4)/6;
}
main()
double x[50][50],y[50][50],z[50][50];
int k,i,a;

のように書きなおしたいのですが、できませんでした。
実際はもっと代入する式が多いので、f=exp(1/x[k][i])を
k1,k2,k3,に代入しない形にしたいのです。
何かよい方法ないでしょうか?

171 :デフォルトの名無しさん:01/12/15 01:54
>>170
全部グローバル変数にしなさい

172 :デフォルトの名無しさん:01/12/15 02:22
もとのコードがまず動かない。
どうせルンゲ-クッタだろ?

本にかいてある通りに書き写しなさい。

173 :166:01/12/15 02:23
>>170
>k1,k2,k3,に代入しない形にしたいのです

概略のソース見る限りでは再帰呼び出しで解決しそうだけど。

174 :デフォルトの名無しさん:01/12/15 05:33
>>172
ルンゲです。ここに書いたのは概略だったので、動かないと思います。
申し訳ないです。

175 :デフォルトの名無しさん:01/12/15 05:37
#include <stdio.h>

void main(){
char s[100],m[100];
scanf("%s",s);
gets(m);
printf("%s\n%s\n",s);
}

でgetsが飛ばされて実行される理由は何ですか?

176 :デフォルトの名無しさん:01/12/15 05:39
あ、最後の間違い
printf("%s\n%s\n",s,m);
です

177 :デフォルトの名無しさん:01/12/15 05:58
>>175
入力バッファに'\n'が残っていてgets()はそれを取ってきてしまう。
対処法はgets()のまえにffluch(stdin);

これって宿題なのか?

178 :デフォルトの名無しさん:01/12/15 06:03
man gets↓

バグ
gets() は絶対に使用してはならない。データを知ることなし に
gets() が何文字読むかを先に知る事はできず、 gets() がバッ
ファの終りを越えて書き込み続けるため、使用は大変危険 で あ
る。この事はコンピュータのセキュリティを破るのに使われてき
た。代わりに fgets() を使うこと。

179 :デフォルトの名無しさん:01/12/15 06:13
>>177
折れんとこそれ駄目だったよ(gcc on Linux)?


#include <stdio.h>

int main()
{
char s1[100], s2[100]; /* ←名前が悪いから176みたいなことになる */

scanf("%s\n", s1); /* ←こうすればよい */
fgets(s2, sizeof(s2), stdin); /* ←178参照 */

printf("%s\n", s1);
printf("%s\n", s2);

return 0;
}

180 :デフォルトの名無しさん:01/12/15 07:00
>>179
ダメって fflush 使ってもちゃんと動かなかったって話?
ffluch (c じゃないだろ) が無いとかいう話?

181 :デフォルトの名無しさん:01/12/15 07:11
fflushってパイプとかの時結構コケルんじゃ無かったかな(うろ覚え)
# と言うかスペル間違えてるよー (^ ^;

182 :179:01/12/15 09:35
$./a.out[RET]
first_str[RET]
firat_str


$

↑聞きやがらねぇ

183 :デフォルトの名無しさん:01/12/15 09:44
fgetsを二つ続けて、sscanfや、strtolすれば済む話では?

184 :デフォルトの名無しさん:01/12/15 10:16
>>177
読み込み用にオープンされたFILEに対するfflush()の動作は、
未定義じゃなかったか。
たまたまペンディングされたデータを捨てる処理系もあるが。

>>179
glibcにはfpurge()というのがあるが、Linuxではサポートされ
てないと書いてあるな。

185 :デフォルトの名無しさん:01/12/15 11:35
えふふらっちage

186 :177:01/12/15 12:23
>184
>未定義
あっ、そうだったんすか…

>185
iyan...

187 :デフォルトの名無しさん:01/12/15 13:22
宿題age
>>177
http://www.freebsd.org/cgi/man.cgi?query=fflush&apropos=0&sektion=0&manpath=FreeBSD+4.4-RELEASE&format=html
を見てfflushの機能についてレポート提出の事。

188 :デフォルトの名無しさん:01/12/15 13:24
ここって、宿題に答えてもらえるんではなく、
宿題を出されるスレだたのか!(((( ;゚Д゚)))ガクガクブルブル

189 :デフォルトの名無しさん:01/12/15 17:21
ルンゲの子はもうどうでもよくなったのか?

190 :177:01/12/16 02:21
>>187
fflush はバッファの中を消すのでなく (消すのは fpurge)
行使 (変な表現ですが…) するのですね。
しかし、行使するにあたって、出力用バッファは書き出すところが決まっているのに対し、
入力用バッファは書き出す (というか受け取る) ところが決まってないので、
入力用バッファは行使 (fflush を適用) されるべきものではない。

みたいな感じでしょか?

191 :177:01/12/16 02:36
って入力用に関する話でなく fflush の機能にレポートか…

fflush は入出力にあたってバッファリングされているもので
宛先が決まっているもの (つまり出力用ストリーム) を行使する。

fflush に出力用にオープンされたストリーム (FILE*型) を渡すと
そのストリームのバッファを書き出し、
NULL が渡されると、すべての出力用ストリームのバッファを書き出す。

以上、こんなかんじで勘弁して下さい。

192 :名無しさん:01/12/16 17:49
以下の級数Srを計算する関数sr(r)を定義し、sr(10)を計算し、出力するプログラムを作成せよ。
[for文 関数文を使用する事]

Sr=1/(1・2)+1/(2・3)+1/(3・4)+・・・・+1/{r・(r+1)}

注意:上記の級数はr→∞で1に収束する。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

っつー問題が出されたんですけど、プログラム知識ない状態で授業とったんで
何がなんだかサッパリ判りません。
やってもらえませんか。

193 :デフォルトの名無しさん:01/12/16 17:57
>>192
int sr(int r)
{
double n = 0.0;
int i = 0;
start:
n += 1/(double)r*(r+1);
i = i +1;
if (i < r) goto start;
}

194 :デフォルトの名無しさん:01/12/16 18:04
>>192
float sr(int n)
{
float r ;
r=1-1/(n+1.0) ;
for(;0;) ;
return r ;
}

195 :デフォルトの名無しさん:01/12/16 18:16
日曜日は、やさしい人は休みか。

196 ::01/12/16 19:03
>>192
>>1に書いたけど、丸投げすると怒っちゃうよ。
 判らないからやって、じゃなくて、解ろうと努力したんだけどこの辺
がわからないとかどういう部分で詰まってるかとかを書いて頑張ってる
姿勢みせてくれないと、チョット教えてあげる気にならないなぁ。

197 :名無しさん:01/12/16 19:14
>>196
すいません
だけど、判ろうとして全部解らなかったんで丸投げしちゃいました。

198 ::01/12/16 19:17
>>197
授業はちゃんと出てたの?

199 :デフォルトの名無しさん:01/12/16 20:29
>>192
まずは先生に「"関数文"って何ですか?」って聞くことが先決だな。

200 :デフォルトの名無しさん:01/12/16 20:45
200ゲトー
ずさささーーー

201 :デフォルトの名無しさん:01/12/16 21:11
>>192
これでどうよ?

#include <stdio.h>
double sr(int n){return n?sr(n-1)+1.0/(n*(n+1)):0;}
int main(void){printf("%f\n",sr(10));return 0;}

202 :デフォルトの名無しさん:01/12/16 21:19
fflush(my_brain);

203 ::01/12/16 21:27
怜ちゃんぶつじょーーー

204 :理奈:01/12/16 21:29
■ポインタを使って配列の各要素を0に設定するプログラムを書きなさい。
と出題されました。
今週の宿題のラスト一問なのです。他は出来たのですが、
一日中Cプログラムの本調べてたんですけど 最後のきてもう頭が回りません。
よろしければお願いします。すみません。

205 :デフォルトの名無しさん:01/12/16 21:32
#define SIZE 256
main()
{
int a[SIZE];
int *p = a;
memset(p,0,sizeof(int)*SIZE);
}

206 :201:01/12/16 21:33
しもたー、for文使ってなかったー。
んで、修正。

#include <stdio.h>
double sr(int n){return n?sr(n-1)+1.0/(n*(n+1)):0;}
int main(void){int i;for(i=0;i<1;i++)printf("%f\n",sr(10));return 0;}

207 :デフォルトの名無しさん:01/12/16 21:56
>>204
まあポインタを使えっていう要求をそのままとれば、
>>205のmemsetのところを
for(int n = 0; n < SIZE; n++) *(p++) = 0;
みたくすれば。

208 :205:01/12/16 22:12
なんでよー、
ちゃんとポインタつかってるじゃんよーー

209 :デフォルトの名無しさん:01/12/16 22:35
>>208
配列の要素の型が float だったらどうするの?

210 :美咲キティー:01/12/16 23:40
文字列tを文字列sの後ろにコピーする関数strcat2(s,t)を、ポインタを使って定義しなさい。
ごめんなさい、投げてます。
よろしければお願いします。

211 :デフォルトの名無しさん:01/12/16 23:47
>>211
void strcat2(char* s, const char* t)
{
memcpy(s+strlen(s), t, strlen(t));
}

sは十分なメモリ領域を指しているものとする(ゲラ
またsとtが指す領域は重なっていないものとする(ゲラゲラ


> ごめんなさい、投げてます。
あやまる前に、自分で少しは考えてみたら?

> よろしければお願いします。
いやです。(私が書いたことを逆説的にとらえれば、何すべきか分かる筈)

212 :デフォルトの名無しさん:01/12/16 23:49
>210
別解
#include <string.h>
char* strcat2(char* s, const char* t)
{
char* (* pointer)(char * dst, const char * src);
pointer = strcat;
return (*pointer)(s, t);
}

213 :デフォルトの名無しさん:01/12/16 23:51
>>211
自分に突っ込んでるよオイ…
もちろん、211で突っ込んだのは美咲キティーチャソに、です

214 :デフォルトの名無しさん:01/12/17 00:18
>>209
IEEE754なら0なので正しい。

215 :デフォルトの名無しさん:01/12/17 00:34
>>211-212
もう少し気の利いた回答の仕方を勉強しれ。
この文章、君の普段の行動パターンが目に浮かぶようで非常に痛いよ・・・

216 :理奈:01/12/17 00:40
205 207 208 209 214様。
返信有難うございます。速くてビックリしています。
おかげで提出課題がお全て終わりました。
他にもここのページを見ている大学の仲間(残り組み)も助かったと思います
いや、わたしだけかな。。。
なにより本当に有難うございました。

217 :デフォルトの名無しさん:01/12/17 00:42
しっかしわざわざ金を払って仕事をしょいこんでくるとはキモイ連中だな。

218 :211:01/12/17 00:43
>>215
212は私ではないよ。
努力を放棄して人に迷惑をかけて平然とするやからには、
普段でも同様の対応をします。
それを痛いと言われれば、それまでです。

219 :デフォルトの名無しさん:01/12/17 01:18
まったく持って歯が立たないのです。調べたところでヒントも見つけ切れません。
ほんのちょっとしたヒントでも何でもかまいませんので返信下さい。
文字列s1の文字のうち、s2にある文字と同じ文字を全て取り去る関数squeeze(s1,s2)を作りなさい

220 :デフォルトの名無しさん:01/12/17 01:28
>>192

double Sr(int r) /* わざと一ヶ所バグを仕込んである */
{
double n;
double sum=0.0;

if (r<=0) /* 引数が自然数でない場合は0.0を返す */
return 0.0;

for (n=1.0; n<=(double)r; n+=1.0)
sum+=1.0/n*(n+1.0); /* (*´Д`*)ハァハァ... */

return sum;
}

221 :デフォルトの名無しさん:01/12/17 01:31
質問者はせめて言語を明記すれ
(特にまる投げ)

222 :デフォルトの名無しさん:01/12/17 01:38
まったく持って歯が立たないのです。調べたところでヒントも見つけ切れませんでした。
ほんのちょっとしたヒントでも何でもかまいませんので返信下さい。
文字列s1の文字のうち、s2にある文字と同じ文字を全て取り去る関数squeeze(s1,s2)を作りなさい
すみませんC言語です。

223 :デフォルトの名無しさん:01/12/17 01:40
ASCII、MBCSは無視。あと、微妙に仕様と違うかもな。

wchar_t *squeez( const wchar_t *s, const wchar_t *excl)
{
 wchar_t *ret = (wchar_t*) malloc( wcslen(s) + 1 );
 wchar_t *p = ret;
 for( int i=0; i<wcslen(s); i++ )
 {
  if( wcschr(excl, s[i] ) )
   continue;
  *p++ = s[i];
 }
 *p=0;
 return ret;
}

224 :デフォルトの名無しさん:01/12/17 01:40
ヒント1:ループ

225 :211:01/12/17 01:40
>>219
なんだかなぁ…
> まったく持って歯が立たないのです。
弱い歯ですね:)

> 文字列s1の文字のうち、s2にある文字と同じ文字を全て取り去る関数squeeze(s1,s2)を作りなさい
ゴメン、愚痴らせてくれ。
なんで命令口調?
問題丸投げどころか、“問題文”をコピペですか:)

とか言いたくなりません?

sub squeeze {
my($s1, $s2) = @_;
$s1 =~ s/$s2//g;
return $s1;
}

226 :デフォルトの名無しさん :01/12/17 01:45
while (s2[i] != '\0')
  for (j=0; s1[j] != '\0'; j++)
    if (s1[j] == s2[i])
      s1[j] = s1[j+1];j--;

こんな感じ?

227 :222:01/12/17 01:48
もうしわけありません。私の無礼をお許し下さい。
今後は特に注意します。
その上の御返答まことに有難うございます。

228 :デフォルトの名無しさん:01/12/17 01:56
まあ頑張ってくれ、そう言うのは最初に冗長なやり方で
体当たりすれば何とかなるよ

229 :デフォルトの名無しさん:01/12/17 02:04
function squeeze(s1, s2: string): string;
var
 I: Integer;
begin
 Result := '';
 for I := 1 to Length(s1) do
  if Pos(s1[I], s2) = 0 then
   Result := Result + s1[I];
end;

230 :デフォルトの名無しさん:01/12/17 02:12
板住人たちによる質問者苛めが始まった!!(w

231 :デフォルトの名無しさん:01/12/17 02:12
文字列s1の文字のうち、s2にある文字と同じ文字を全て取り去る関数squeeze(s1,s2)をお願いします。
私はわからないなりにこう考えてみました。
char squeez(char s1[],char s2[],int a,int b){
int i,j;
for(i=0;i<a+1;i++){
for(j=0;j<b+1;j++){
if(s1[i]=s2[j])
s1[i]=0;
}
}return(s1[256]);
}

しかし、指定した消す文字の後ろから全部が消えてしまうのです。。。

232 :デフォルトの名無しさん:01/12/17 02:21
そりゃそうだ。文字列は0までだからな

233 :デフォルトの名無しさん:01/12/17 02:24
>>231
s1[i]=0

s1[i]=0x20
にしたらどぉ?

234 :デフォルトの名無しさん:01/12/17 02:31
>>230
割礼(洗礼)です。

235 :デフォルトの名無しさん:01/12/17 02:35
>>231の文章を見るかぎりでは、
s2[]="abc"のとき、s1[]のなかのa, b, cを個別に消したいんじゃないのか?
それはこの関数を使えば実現できる(指摘されていることを正しくあらためれば)。

#include <string.h>
char *strpbrk(const char *s1, const char *s2);

あと、「消す」というのは、s2="abc"のときに

"Kusakabe Youichi" → "Kus k e Youi hi"
なのか
"Kusakabe Youichi" → "Kuske Youihi"
なのかはっきりさせるべきだ。

236 :デフォルトの名無しさん:01/12/17 02:40
int sqeeze(char *s1, const char *s2)
{
  int i,j,k,flag;
  char *tmp;
  printf("%sから%sに含まれる文字を削除します\n",s1,s2);
  i = 0;
  k = 0;
  if ((tmp=(char *)malloc(strlen(s1)+1))==NULL){
    printf("メモリの確保に失敗\n");
    exit (0);
  }
  while (s1[i] != '\0'){
    flag = 0;
    for (j=0; s2[j] != '\0'; j++){
      if (s1[i] == s2[j]){
        flag = 1;
      }
    }
    if (!flag) {
      tmp[k] = s1[i];
      k++;
    }
    i++;
  }
  tmp[k] = '\0';
  strcpy(s1,tmp);
}
ダサいdeath、tmp使わないやり方教えてください。。。

237 :231:01/12/17 02:41
s2が"下"のときに、
"日下部"を"日部"にしたいんです。
文字コードはISO-2022-JPとUTF-8でお願いします。。。

238 :デフォルトの名無しさん:01/12/17 02:42
>"Kusakabe Youichi" → "Kus k e Youi hi"
これは空白への置換になるから後の方で良いんじゃないかな
つーか答え出てるな

239 :デフォルトの名無しさん:01/12/17 02:44
>>237 氏ね! て言うかちょっとウケタよ

240 :デフォルトの名無しさん:01/12/17 02:47
>>236
memmove(3)

241 :デフォルトの名無しさん:01/12/17 02:59
>>236
tmp = s1;
でいい。

242 :カオリネコ:01/12/17 03:15
Cソースプログラムから全てのコメントを取り去るプログラムを作くってくれる方お願いします。

243 :Kusakabe Youichi:01/12/17 03:22
In article >>242, カオリネコ/242 wrote:

> Cソースプログラムから全てのコメントを取り去るプログラムを作くってくれる方
> お願いします。

自分でつくりましょう。
案外簡単だし、ちょうどいい練習になりますよ。

" " の中みたり \ を処理したり、
#defineの中にあったらどうするか、とか。
最初のうちは
なかなか「完全」なものが作れなくて、
しばらく練習になるでしょう。
(機能的には同じ程度の完成度でも(たとえば8割り程度)、やりかたによって
コードがすごく複雑になったり簡単になったり、おもしろいですよ)

でも、100%の完成度を求めると一般性を持たせたCのparserまでかくはめになるでしょうね。

244 :デフォルトの名無しさん:01/12/17 03:27
> (たとえば8割り程度)
8わりり?

245 :デフォルトの名無しさん:01/12/17 03:30
>>244
そっとしておいてあげなさい。
久々に自分でも回答できそうなネタがあったので、
嬉々として慣れない長文を書いているのですから…

246 :Kusakabe Youichi:01/12/17 03:31
In article >>245, デフォルトの名無しさん/sage/245 wrote:
> そっとしておいてあげなさい。
> 久々に自分でも回答できそうなネタがあったので、
> 嬉々として慣れない長文を書いている

「ということにしたい」が抜けてますよ :)

247 :カオリネコ:01/12/17 03:32
> Cソースプログラムから全てのコメントを取り去るプログラムを作くってくれる方
> お願いします。
自分のプログラムですが。。。
char reverse(chaq *c){
int count=0;
int i;
char *s;
char t[count];
while(*c!=0x20){
t[count]=*c;
count++;
*c++;
}
for(i=count;i>0;i--)*s=t[i-1];
return(0);
}
ってかんがえたんだけど。
*cは文字列がはいっています。
エラーがでてしまってダメです。。。
どなたかお願いします。

248 :デフォルトの名無しさん:01/12/17 03:35
コメントって云うのはスペースの事?

249 :デフォルトの名無しさん:01/12/17 03:36
>>247
重傷ですね。

250 :デフォルトの名無しさん:01/12/17 03:36
ネタ疑惑93パーセント(w

251 :Kusakabe Youichi:01/12/17 03:38
In article >>249, デフォルトの名無しさん/sage/249 wrote:
> 重傷ですね。

ケガなのですね?

252 :デフォルトの名無しさん:01/12/17 03:39
Kusakabe Youichi は受け売りだと思うからそっとしてあげて。
完全版は自分も作れなくていま様子うかがってるとことよ

253 :デフォルトの名無しさん:01/12/17 03:40
>>251
先生、避難スレでみんな待ってるんですから
こんなところで油を売らずに早く来てください。

254 :デフォルトの名無しさん:01/12/17 03:42
>>253
プ。
来てほしくないから避難してるんじゃなかったのか。バーヤ

255 :カオリネコ:01/12/17 03:44
>>248
Cソースプログラムから全てのコメントを取り去るプログラムを作くってくれる方
お願いします
*コメントはプログラムの説明で\*〜*\で区切られている部分です。

256 :デフォルトの名無しさん:01/12/17 03:44
>>236
こういう考えもあるよ。リングバッファの応用。読み込みポインタと書き込みポインタ。

void sqeeze(char *s1, const char *s2)
{
  char *pw, *pr;
 
  pw = pr = s1;
 
  while(*pr){
    if(strchr(s2, *pr) == NULL)
      *pw++ = *pr;
    pr++;
  }
 
  *pw = '\0';
}

257 :デフォルトの名無しさん:01/12/17 03:54
>*コメントはプログラムの説明で\*〜*\で区切られている部分です。
の意味がわからないわ。

258 :デフォルトの名無しさん:01/12/17 03:56
/*〜*/の間違いに決まっている。

259 :デフォルトの名無しさん:01/12/17 03:57
>>257
おそらく /* 〜 */ と言いたいのでしょう。
バックスラッシュの \ とスラッシュの / を勘違いしていると思われ。

260 :カオリネコ:01/12/17 03:57
char reverse(chaq *c){
int count=0;
int i;
char *s;
char t[count];
while(*c!=0x20){
t[count]=*c;
count++;
*c++;
}
for(i=count;i>0;i--)*s=t[i-1];
return(*s);
}
まで出来たんですけど。。。エラーはまだ。。。

261 :デフォルトの名無しさん:01/12/17 03:58
なんでreverseなんだ。何か勘違いをしてないか?

262 :カオリネコ:01/12/17 03:58
>>257
おっしゃるとおりです。m(__)m

263 :カオリネコ:01/12/17 04:00
訂正です。>>259
おっしゃるとおりです。m(__)m

264 :デフォルトの名無しさん:01/12/17 04:03
chaqって何ですか?

265 :デフォルトの名無しさん:01/12/17 04:06
むぅ、コメント以外を取り除いてはいけないとは書いてないので、
全部取り除けばOK.

266 :デフォルトの名無しさん:01/12/17 04:11
>>264
char。。。

267 :236:01/12/17 04:13
素晴らしい! って俺質問者では無いですけど (^^;
>>256さん、有難う。きっとこれが模範解答でしょうね。
こう言うのを見るとポインタって良いなぁと思ってしまいます。
>カオリネコ
Perlじゃ駄目なの? ^^

268 :カオリネコ:01/12/17 04:20
この際何でもよろしいです。お願いします。

269 :デフォルトの名無しさん:01/12/17 04:21
プリコンパイラに通せば全部空白になりませんでしたか?

270 :デフォルトの名無しさん:01/12/17 04:22
そのかわりヘッダも展開される。

271 :デフォルトの名無しさん :01/12/17 04:26
カオリネコ たんはオナニーとかするの?
第一弾
#!/usr/local/bin/perl
use strict;
open (SRC,"hoge.c");

272 :デフォルトの名無しさん:01/12/17 04:37
>>268
駄目。 無理。 面倒。

273 :デフォルトの名無しさん:01/12/17 04:39
カオリネコたん(´д`;) ハァハァ
http://www.google.com/search?sourceid=navclient&q=C+%83%5C%81%5B%83X+%83R%83%81%83%93%83g+%8D%ED%8F%9C

274 :デフォルトの名無しさん:01/12/17 05:12
> でも、100%の完成度を求めると一般性を持たせたCのparserまでかくはめになるでしょうね。
cppのparser程度で充分と思われ。

275 :デフォルトの名無しさん:01/12/17 05:22
そいや、えぴすてーめーが、Cマガで、それ作ってなかな〜とか思って調べると。
http://www.s34.co.jp/cpptechdoc/misc/smc/smc_j.html
こんなところが。

276 :カオリネコ:01/12/17 06:02
>>275
最高〜☆

277 ::01/12/17 09:40
 おはよう、昨晩は質問がいっぱいだったみたいね。で、ちょっと、
丸投げクンに一言。
宿題って出す方としても、全員が自力で解けるなんては思ってないわ。
だから、人が書いたソースを参考に自分も書くっていうのは許容され
る範囲ね。でも、せめてそこで人のを参考に書き直す際に何をやって
るかくらいは理解して欲しいの。これが最低限要求することかな。
 だから、ここで答え聞いてソースを書いてもらったら、それが何を
やっているかくらいは理解して欲しい。全く解ってない人には、それ
を見ても何をやっているか理解できるわけないから、教えてもしょう
がないと思ってしまうのよね。最低限、答え教えてもらったら、そこ
で何をやっているかは理解できるくらいにはなってから質問して欲し
いなって、こと。みんなキミタチのこと思って冷たくあしらってるん
だから、その辺のこと理解してね。

278 :Kusakabe Youichi:01/12/17 10:41
In article >>252, デフォルトの名無しさん/sage/252 wrote:

> Kusakabe Youichi は受け売りだと思うからそっとしてあげて。

「と思いたい」のですね? :)

> 完全版は自分も作れなくていま様子うかがってるとことよ

そう思いたいのですね? :)

279 :Kusakabe Youichi:01/12/17 10:42
In article >>253, デフォルトの名無しさん/sage/253 wrote:
> 先生、避難スレでみんな待ってるんですから
> こんなところで油を売らずに早く来てください。

書いてもいいのですか? :)
(だれかダメだって言ってたような)

280 :Kusakabe Youichi:01/12/17 10:42
In article >>255, カオリネコ/255 wrote:
> *コメントはプログラムの説明で\*〜*\で区切られている部分です。

変わったコメントですね。

281 :Kusakabe Youichi:01/12/17 10:43
In article >>269, デフォルトの名無しさん/sage/269 wrote:

> プリコンパイラに通せば全部空白になりませんでしたか?

そういうコンパラーもありますね(第1フェイズで全部とりのぞく)、
でもそういうのはごく少数ですよ。

282 :Kusakabe Youichi:01/12/17 10:44
In article >>274, デフォルトの名無しさん/sage/274 wrote:

> > でも、100%の完成度を求めると一般性を持たせたCのparserまでかくはめになるでしょうね。
> cppのparser程度で充分と思われ。

同じことでしょう。

283 :デフォルトの名無しさん:01/12/17 11:32
>>279
 じゃあ、このスレにも書いちゃダメって言えば今後書かないでいて
くれますか?

284 :デフォルトの名無しさん:01/12/17 11:50
>>281
コンパラーとかプリコンパイラってのははつみみだが、
通常のCプリプロセッサは、デフォルトの動作としてコメントを取り除く。
極めて古いものだと空白も入れないかも知れない。

285 :Kusakabe Youichi:01/12/17 11:53
In article >>283, デフォルトの名無しさん/sage/283 wrote:
> じゃあ、このスレにも書いちゃダメって言えば今後書かないでいて

では向こうには書いていいのですか? それは保証してくれます?

286 :Kusakabe Youichi:01/12/17 11:54
In article >>284, デフォルトの名無しさん/sage/284 wrote:
> 通常のCプリプロセッサは、デフォルトの動作としてコメントを取り除く。

プリプロセッサーが別パスになっているものはいまどき少数派ですよね。

287 :デフォルトの名無しさん:01/12/17 11:57
>では向こうには書いていいのですか? それは保証してくれます?
保証するから出てって!!!

288 :デフォルトの名無しさん:01/12/17 12:48
>>286
> > 通常のCプリプロセッサは、デフォルトの動作としてコメントを取り除く。
>
> プリプロセッサーが別パスになっているものはいまどき少数派ですよね。

プリプロセッサがコメントを取り除くことと、プリプロセッサが別パスに
なっているかどうかということに何の関係があるんでしょうか。

289 :Kusakabe Youichi:01/12/17 12:55
In article >>288, デフォルトの名無しさん/sage/288 wrote:
> > プリプロセッサーが別パスになっているものはいまどき少数派ですよね。
>
> プリプロセッサがコメントを取り除くことと、プリプロセッサが別パスに
> なっているかどうかということに何の関係があるんでしょうか。

何か関係があるとだれか言ったのですか?

290 :仕様書無しさん:01/12/17 13:03
>>288
だからジジイの相手すんなって な。

291 :仕様書無しさん:01/12/17 13:18
>288 冬厨は放置だよぃ

292 :284:01/12/17 13:22
>>288
たぶんほとんどの処理系では、プリプロセスは独立したパスになってると思う。
独立したプログラムになっていないものもあるかも知れないが。

293 :竹村さん:01/12/17 21:02
今数の√をもとめたいんですけど
Sqrt 関数をつかえない状況なんです。
これを使わずに求める方法ありませんかね?
たとえばルート2 とか3とか・・・

294 :デフォルトの名無しさん:01/12/17 21:09
>>293
ニュートン法か
筆算と同じ方法でやればいんじゃない?
俺は忘れたけど(笑)

295 :竹村さん:01/12/17 21:13
いや・・ニュートン方とかそんな高度なことはできないので・・
筆算ってどうやるんですか?

296 :デフォルトの名無しさん:01/12/17 21:15
>>295
キーワード教えてもらったら、とりあえず検索してみなよ。

297 :竹村さん:01/12/17 21:18
うむ。

298 :デフォルトの名無しさん:01/12/17 21:19
>>293
> Sqrt 関数をつかえない状況なんです。
他に何か縛り(使えない関数)はありますか?
そもそも対象言語は何ですか?

> いや・・ニュートン方とかそんな高度なことはできないので・・
あなたにはできなくてもサンプル探してくれば、
賢いコンピータちゃんが計算してくれます。
294さんがキーワードくれたんだから、まずは調べてみては?
ちなみに“ニュートン方”で検索しても中々見つからないかもしれません。
“ニュートン法”で“平方根”を求めるんでしょ?

299 :デフォルトの名無しさん:01/12/17 21:20
あら、ニュートン法でgoogleで検索したら、4つめにそのものずばりが載ってた。

300 :筆算てーと。:01/12/17 21:22
   1 4  1  4
1 √2 00 00 00
1  1
24  1 00
04   96
281   4 00
001   2 81
2824  1 19 00
0004  1 12 96
2828    6 04
こんなかんじだったかな。
まぁ、x*x - n = 0をニュートン法で解く方が早いな。

301 :竹村さん:01/12/17 21:27
いや。やっぱりニュートン方とか使うと写したってばれるので(文系だし
おとなしく電卓でやっときます。・・
レスありがとう。

302 :デフォルトの名無しさん:01/12/17 21:27
ニュートン法ってゆー名前がついてる、ってことは、ニュートンがめっけたんだ。
つまり、300年前にガイシュツってこと。
>>295 は大至急、タイムマシンにのって300年前のイギリスに逝って直接ニュートンに質問してこい。
ついでに「りんごが落ちたのは万有引力のせいですよ」って教えてやれ。

303 :デフォルトの名無しさん:01/12/17 21:45
条件がsqrt()を使わないことなんだったら exp(log(x) * 0.5) でいいんじゃないの?

304 :デフォルトの名無しさん:01/12/18 00:01
>>301
電卓でやるってどういうことよ・・・

305 :デフォルトの名無しさん:01/12/18 00:26
電卓?

306 :デフォルトの名無しさん:01/12/18 00:32
>>304
あらかじめ計算して、定数をコードに書いておくのかな?

307 :デフォルトの名無しさん:01/12/18 00:40
ルート8を求めたいときに
3*3=9だから
3より小さいだろう
2*2=4だから
2より大きいだろう
以下同様
ってやつじゃないの

308 :デフォルトの名無しさん:01/12/18 00:43
それなら0.0000から0.0001づつあげていって、2乗値が7.9995〜8.0001の間に入ったらOKってやればいいね。

309 :デフォルトの名無しさん:01/12/18 00:53
ちゃうちゃう二分法がはやい。

310 :デフォルトの名無しさん:01/12/18 01:23
まあ、それを高速にやるのがニュートン法ってことで。

311 :デフォルトの名無しさん:01/12/22 14:46
休日age

312 :デフォルトの名無しさん:02/01/02 15:28
配列の文字列を昇順にソートするやつなんですが、segmentation faultが
でます。よろしくお願いします。
#include<stdio.h>

void qsort(char v[],int left,int right);

main()
{
char *data[]={"zbr","uuuuu","sa","ki","niino","aaa"};
int i;

for(i=0;i<5;i++){
printf("%s\n",data[i]);
}
qsort(*data,0,5);
for(i=0;i<5;i++){
printf("%s\n",data[i]);
}
}
void qsort(char v[],int left,int right)
{
int i,last;
void swap(char v[],int i,int j);

if(left >=right) return;
swap(v,left,(left+right)/2);
last=left;
for(i=left+1;i<=right;i++){
if(v[i]<v[left]) swap(v,++last,i);
}
swap(v,left,last);
qsort(v,left,last-1);
qsort(v,last+1,right);
}
void swap(char v[],int i,int j)
{
char *temp;

*temp=v[i];
v[i]=v[j];
v[j]=*temp;
}

313 :デフォルトの名無しさん:02/01/02 15:34
>>312
segmentation faultが出る以前に、swapでコンパイルエラーに
ならないか?

314 :312:02/01/02 15:41
>>313
いや、いちおうgccはとおるんですが。どこが間違ってるんですかね?

315 :デフォルトの名無しさん:02/01/02 15:42
>>312 vって?

316 :313:02/01/02 15:44
あ、すまん。
エラーにはならないね。
でも、文字列の交換にはなってないね。

317 :デフォルトの名無しさん:02/01/02 15:45
swapで文字リテラルを書き換えてるのが原因かな?

318 :デフォルトの名無しさん:02/01/02 15:54
void swap(char v[],int i,int j)
{
char temp;

temp=v[i];
v[i]=v[j];
v[j]=temp;
}

319 :デフォルトの名無しさん:02/01/02 15:59
>>318
あぁ、ごめん間違えたわ。swap だけ見てた。
とにかく、

void swap(char v[],int i,int j)
{
char *temp;

*temp=v[i];
v[i]=v[j];
v[j]=*temp;
}

これだと、未初期化の temp が指す場所に v[i] を代入して
segmentation fault になるとだけ言っておく。

320 :318=319:02/01/02 16:07
基本からしっかりやり直した方がいいよ。

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

void qsort(char* v[],int left,int right);

main()
{
char *data[]={"zbr","uuuuu","sa","ki","niino","aaa"};
int i;

for(i=0;i<6;i++){
printf("%s\n",data[i]);
}
puts("");
qsort(data,0,6);
for(i=0;i<6;i++){
printf("%s\n",data[i]);
}
}
void qsort(char* v[],int left,int right)
{
int i,last;
void swap(char* v[],int i,int j);

if(strcmp(v[left], v[right]) >= 0) return;
swap(v,left,(left+right)/2);
last=left;
for(i=left+1;i<=right;i++){
if(strcmp(v[i], v[left]) < 0) swap(v,++last,i);
}
swap(v,left,last);
qsort(v,left,last-1);
qsort(v,last+1,right);
}
void swap(char* v[],int i,int j)
{
char* temp;

temp=v[i];
v[i]=v[j];
v[j]=temp;
}

321 :312:02/01/02 16:24
>>320さんのでいちおうエラーはでなくなったんですけど
昇順にソートされてないのはなぜなんですかね?

322 :デフォルトの名無しさん:02/01/02 16:29
デバッガ使ってトレースしてみたの?

323 :デフォルトの名無しさん:02/01/02 16:35
>>320 でキチンとソートされているけど、
zbr
uuuuu
sa
ki
niino
aaa

aaa
ki
niino
sa
uuuuu
zbr

それとも前のプログラムのどこが間違っているかをしりたいってこと?
ポインタのポインタと、標準の文字列関数 str---() を勉強しましょう。

324 :デフォルトの名無しさん:02/01/02 16:41
ポインタの配列じゃねーのか。

325 :312:02/01/02 16:55
>>323
おかしいなあ。なぜかうちのだと
zbr
uuuuu
sa
ki
niino
aaa

zbr
uuuuu
sa
ki
niino
aaa
となってソートされないんですよ。なんでなんだろ。

326 :デフォルトの名無しさん:02/01/02 17:02
>>312
>qsort(data,0,6);
6?

327 :デフォルトの名無しさん:02/01/02 17:05
>>320はバグってるな。

main():
× qsort(data,0,6);
○ qsort(data,0,5);

qsort():
× if(strcmp(v[left], v[right]) >= 0) return;
○ if(left > right) return;

328 :厨房:02/01/02 17:08
すいません。ついでに質問良いですか?
swapの引数のchar* v[]はchar*vじゃいけないんですか?

あと、こういう宿題の時に最適化とかして良いものなのでしょうか?

329 :327:02/01/02 17:08
すまん、こう。
qsort():
× if(strcmp(v[left], v[right]) >= 0) return;
○ if(left >= right) return;

330 :デフォルトの名無しさん:02/01/02 17:09
どうでもいいけど、標準関数とおんなじ名前の関数作るなよ。

331 :デフォルトの名無しさん:02/01/02 17:11
>>328
> swapの引数のchar* v[]はchar*vじゃいけないんですか?
いけない。

> あと、こういう宿題の時に最適化とかして良いものなのでしょうか?
コンパイルオプションの話?
それとも、再帰を使わないようにするとか、
ある程度短くなったら選択ソートに切替えるとかいう話?

332 :デフォルトの名無しさん:02/01/02 17:17
void my_swap(char*a,char*b){
_asm{
push [a]
mov [a],[b]
pop [b]
}
}

//??

333 :328:02/01/02 17:20
そなのか…
明示的に配列であることを引数の時から示さないといけないのですね…
いつもそう言う風にしてた(ぉ
勉強に為りました。

最適化は329さんみたいにアセンブリにするのも含みます。
(なんか変ですが。

334 :328:02/01/02 17:21
332でした。いってきます…

335 :デフォルトの名無しさん:02/01/02 17:26
>>328
ちょっと待った!
char* v[] と char*v の違いは

>明示的に配列であることを引数の時から示さないといけないのですね…

という話とちょっとずれていると思うよ。
何をスワップしているのか、もしくは char* v[] とは「何もの」であるかを
自分の知る限りにおいてレポートしてみて。添削してあげるから。

336 :デフォルトの名無しさん:02/01/02 17:26
あんまり賢い事すると「おとーさんにやってもらったろ?」って言われるぞ。

337 :328:02/01/02 17:48
げ。char**vの間違いでした(汗
すいません。
>336
いえ、便乗質問ですw
さすがに厨房相手にcで書いて来いなんて宿題はナイでしょう。
今の日本に。

338 :331:02/01/02 19:49
>>337
> げ。char**vの間違いでした(汗
それは正しい。

339 :お願いがあります…。:02/01/02 21:52
1.「プログラムを実行したときに」ディスプレイ上に自分の 学生証番号、氏名、住所 を表示するプログラムのソースを作成すること。

2.キーボードから入力された学生証番号、氏名、住所をディスプレイに表示するプログラム(このとき実行した人がキーボードから入力した学生証番号などが表示されるようにする)

3.ディスプレイに 整数nを入力するように表示し、0 からキーボードから入力された n 以下の偶数の和を求めその結果をディスプレイに表示するプログラム(2づつ数を増やすには +=2 を用いる)

4.ディスプレイに和を求める 番号 n を入力するように表示し、1,6,11...のような 5飛びの数の1から入力された番号nまでの和を求めてディスプレイに表示するプログラム(注意。k番目の数は 1+5*(k-1) で与えられる。)

5.10人の身長のデーターをキーボードから入力して、その平均をディスプレイに表示するプログラム(繰り返し文を使用すればよい)

6.ディスプレイに二つの 実数を入力するように表示して、キーボードから入力された二つの実数の 和、差、積、商(始めに入力された数割る二番目に入力された数)をそれぞれディスプレイに表示するプログラム

7.優、良、可にする最低点を実行時初めに設定できるようにし、その後キーボードから入力された学生の点数によって成績を優、良、可に振り分けるプログラム

8.キーボードから二つの実数を入力するように表示し、入力された二つの数を大きい順に並べて表示するプログラム

9.個人情報として、 氏名、年齢、住所、電話番号、趣味 を含んだ構造体を用いて、個人情報を入力できるプログラム

10.乱数を用いて 丁半 を表示するプログラム


解ける人は全て解いてみてください。…というよりお願いします(涙)   

340 :デフォルトの名無しさん:02/01/02 21:57
さっきも突っ込んだが8.はネタなのか?

341 :デフォルトの名無しさん:02/01/02 21:57
かわいい弟クンのために、宿題みてあげるね。
でも、丸投げとかしたらおこっちゃうよ。まずは自分で考えてね。

342 :339:02/01/02 22:00
申し訳ないです…。
俺は大学行ってなくて、友達から「この問題、なんとかならん?」と頼まれた物です。
「ネットで質問すれば何とかなるかもしれない」と思い、質問させてもらったんですが…。

>340
これはそんなに簡単な問題なんですか?
プログラムとか、俺には全然わからない事なので…(汗)

343 :デフォルトの名無しさん:02/01/02 22:07
339が友達の代わりに頭下げる必要はないと思う。
できるなら本人つれてきた方がいいんでない?
ここで聞いて1時しのぎにはなってもそん次で困ることになるだろうし。

344 :デフォルトの名無しさん:02/01/02 22:22
>>339
>>343さんが良い事言ってるね。
その友達は大学生なんですね。
もしプログラマ志望なら今すぐ諦めるように言ってやってください。

345 :339:02/01/02 22:24
>343
本人、一応自分で頑張ってみると言ってて、1と2が出来たらしいんですが…。
自宅にパソコンが無いらしく、大学行かないとネットに繋げない…との事なので代わりに俺が…という事情なんです(汗)
レポート?提出の期間が迫っていて、一時しのぎでもいいから、という事なんだと思います。
友達として、第三者の力を借りてでも協力できれば…と思っていたのですが、ちょっと甘かったですね…(^^;
それでも何とか答えて貰えないでしょうか?う〜ん…。

346 :339:02/01/02 22:28
>343
いや、彼は全然そういうタイプじゃないと思います(笑)

何を目指しているかは知りませんが、マスコミ関係かな・・・?バイト先を考えると。
パソコンの事とか、あんまりわかってないみたいなので、プログラマー志望では無いんじゃないかと思います。

ちなみに…ここはsage進行ですかね?(^^;)

347 :デフォルトの名無しさん:02/01/02 22:29
なんで大学に600万も払う金があるのに自宅にマシンが無いの。
やっぱり氏んだほうがいいよ。

348 :デフォルトの名無しさん:02/01/02 22:31
>>345
 まあ、この板には後輩に教えたりとか、TAやったりとか、
宿題出す側の人間が多いのよ。
 だから、丸写しさせるために教えてあげたいとは思わない
人がおおいんじゃないかな。

349 ::02/01/02 23:03
今回はお正月ということで、特別サービスね。
丸写しされちゃ困るから、ところどころ空欄にしとくから、
これ以上は自分で考えるように言ってね。
あと、全部#include<stdio.h>は必要よ。念のため。

3番
main(){
 int k, n;
 <nを入力するように表示し、変数nに入力された値を代入>
 k = 0;
 while(■){
  printf("%d ", k);
  <kに2を足す>
 }
}

4番(番号nまで、というのはn番目の数までと解釈)
main(){
 int k, n, sum;
 <nを入力するように表示し、変数nに入力された値を代入>
 sum = 0;
 for(k = 0; k < ■; k++){
  sum += ■;
 }
 printf("%d", sum);
}

350 ::02/01/02 23:03

5番
main(){
 int k, sum, l;
 for(■){
  <lに数を入力>
  sum += l;
 }
 printf("%d", sum / 10);
}

6番
main(){
 float k, l;
 scanf("%f", &k);
 <lに実数を入力させる>
 printf("和:%f", k + l);
 <k,lの差、積、商をそれぞれ表示>
}

351 ::02/01/02 23:04
7番
main(){
 int a, b, c;
 printf("優の最低得点を入力してください\n");
 scanf("%d", &a);
 <良の最低得点をbに、可の最低得点をcに入力させる>
 <判定したい得点を入力させる>
 if(■){
  printf("優");
 }else if(■){
  printf("可");
 }else if(■){
  printf("良");
 }else{
  printf("不可");
 }
}

8番
main(){
 float a, b;
 <a, bに実数を入力させる>
 if(■){
  print("%d\n%d", a, b);
 }else{
  print("%d\n%d", b, a);
 }
}

352 ::02/01/02 23:05
9番
struct parson{
 char name[16];
 int age;
 char address[32];
 char tel[11];
 char hobby[32];
}

main(){
 struct parson a;
 printf("氏名=");
 scanf("%s", a.name);
 <以下略>
}

10番目

#include <stdlib.h>
main(){
 int t;
 t = rand() % 2;
 if(t == ■){
  printf("丁");
 }else{
  printf("半");
 }
}

353 ::02/01/02 23:07
 あと、参考までに。
 実際のプログラムで、rand() % 2で、二つのうちどちらかを
ランダムに選択させようとすると、処理系によっては痛い目に
あうことがあるから気をつけてね。
#rand()は下位ビットはランダム性がない場合があるの。

354 ::02/01/02 23:10
あ、5番。ちょっと間違えてる。
for文の前に一行入れる必要があるね。
8番もprintfの中の%dっていうのが嘘だわね。
他にも何か色々間違えてそう。

355 :デフォルトの名無しさん:02/01/02 23:11
9.はparsonじゃなくてperson。
つづり間違えて提出すると起こられちゃうよ〜

356 :355:02/01/02 23:14
細かいdebugは自分で。と言うことで。
にしても怜さん親切。
お年玉だねw

いざとなったら友達に家に来させてという手も。

357 :339:02/01/02 23:38
>怜さん
とても親切にありがとうございます。
文章をそのままプリントアウトして友達に見せてあげることにします。
これで解けるのかどうか俺には判断できませんけど、彼にも少し努力してもらった方が良いと思いますし。。。
問題は
ttp://www.geocities.co.jp/SiliconValley-Cupertino/7774/c/report/index.html
から出されているとの事でした。

358 ::02/01/02 23:44
>>355
あ、やっちゃった。
どっちだろうと思ったときは辞書ひかなきゃ駄目ね・・。

>>357
まあ、本人には頑張ってもらってね。

359 :デフォルトの名無しさん:02/01/03 19:51
>>357 の出題サイトに一言。

ださっ!

360 :デフォルトの名無しさん:02/01/03 21:16
なぜ geocities にサイトを作ってるんだろ。
大学でスペースくれないのか?

361 :デフォルトの名無しさん:02/01/03 21:35


にはワラタ

362 :デフォルトの名無しさん:02/01/03 21:46
”付録 4つの自然数に四則演算を施し10を作れるかを調べる問題”
についてるcheck10.cppって、なんかすごいぞ、なんつか、まぁいいや。
ほかのも見てみよう…

363 :デフォルトの名無しさん:02/01/03 22:02
>>357のサイト
プログラミングの教育について、考えさせられるページですね。
ださっ!ていうより、学生がかわいそうっていうか…

364 :デフォルトの名無しさん:02/01/03 22:09
>>363
そこまで壊滅的にダサくはないだろ。
もう少し読みやすくはしてほしいが。

365 :デフォルトの名無しさん:02/01/03 22:35
>>364
リテラシーについては、あんなもんだと思うが…
第12章 クラスの概念のcalculator.hとかみてみそ、すごいから。

366 :デフォルトの名無しさん:02/01/04 01:22
>>365
見たよ〜。あのソースにツッコミたいけど(多すぎるから)やめとくよ〜。

>>363
>学生がかわいそうっていうか…
激しく同意だよ〜。

367 :デフォルトの名無しさん:02/01/04 12:45
このサイトのコードをエレガントに教育的に書き直すという企画はどうか(藁

368 :デフォルトの名無しさん:02/01/04 12:50
http://www.geocities.co.jp/SiliconValley-Cupertino/7774/c/sub/chap01.html
↑ここで多用されている「Hellow」はどうかと思うぞ。教育的に(ワラ

369 :デフォルトの名無しさん:02/01/04 14:02
↑の課題、cin>> と cout<< を使わないと、減点されそう。

370 :デフォルトの名無しさん:02/01/04 14:56
http://www.google.co.jp/search?q=Hellow&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=
約18,300件中1 - 50件目 ・検索にかかった時間0.05秒

日本のサイトが多いのには泣かされる。

371 :デフォルトの名無しさん:02/01/04 18:29
ファイル入力のプログラムなんですが、fgetsのところでエラーがでます。
配列aをcharにするとちゃんとできるんですが、intではなぜだめなんですか?
#include<stdio.h>

main()
{
FILE *fp;
int a[30];
int i;

fp=fopen("data1","r");
fgets(a,30,fp);
for(i=0;i<30;i++){
printf("%d\n",a[i]);
}
}

372 :デフォルトの名無しさん:02/01/04 18:43
>>371
それは、fgersがchar*を前提に作られてるからです。
fgets((char *)a,30,fp);
にすれば、コンパイル時のエラーはでなくなるでしょうが、あなたの思ったとおりの動作にはならないでしょう。

373 :371:02/01/04 18:52
>>372
ではintでファイル入力を行うにはどうすればいいんですか?

374 ::02/01/04 19:10
>>373
どういう形式でファイルに入力をしたいかによるわね。

まあ、基本的には、
fgets((char *)a, 30 * sizeof(int), fp);
ってやればいいのかしら。ちょっと自身ないけど。
そのファイルを保存するときも同じ方法でね。

もし、別のプログラムとかエディタで書いたデータを読ませたいんだったら
その形式にしたがって読んでいく処理を書かないと駄目ね。

375 :デフォルトの名無しさん:02/01/04 21:09
>>373
fread()を検討してみてはどうか?

376 :デフォルトの名無しさん:02/01/04 23:37
>>373
>>371は食わせるファイルと出力について、どう想定してるか教えてほしい也

377 :デフォルトの名無しさん:02/01/04 23:57
>>371
intは32bit環境ではたいていの場合4バイトの領域を占める。
fgetsはaから始まる領域に読んだデータを詰め込んでいく。
したがって、371の例ではint7.5個分読み込まれている。

378 :Disca ◆NAfP6znE :02/01/05 02:48
>>339
1000円で引き受けるよ!

379 :371:02/01/05 16:37
>>376
55 4 3 89 ・・・というばらばらの数字をファイルからとって
昇順にソートするという課題なんですよ。ソートのやり方はわかるんですけど
入力の方法がわからないんです。

380 :デフォルトの名無しさん:02/01/05 16:41
>>379
テキストファイルなのかぁ?
それだったら, fscanfとか。

381 :デフォルトの名無しさん:02/01/05 16:51
>>379
fscanfか、一文字ずつ読んでいってatoiでがんばるか。
好きなほうを選んでくれれば、もうちょっと詳しい説明つきます。

382 :371:02/01/05 16:59
>>381
なるほど。ではatoiでやろうと思うんですが、どういうふうにやれば
いいんですかね?

383 :デフォルトの名無しさん:02/01/05 18:10
>>382
1文字づつ読む方法は調べてね。
atoiも調べてね。
そしたら自ずと答えが。

384 :吉野家オフ:02/01/05 19:39
http://lounge.dip.jp/~yoshinoya_off/yoshinoya.html

385 :デフォルトの名無しさん:02/01/07 15:07
int ch, digit = 0; int array[MAX_ELEMENT], int ptr=0;
while( ch = fgetch(fp), ch != EOF ){
 if( isdigit( ch ) )
  digit = digit*10 + ch - '0';
 if( isspace( ch ) )
 { array[ptr++] = digit; digit = 0; }
}

386 :デフォルトの名無しさん:02/01/07 15:59
行末に\でダメかな?

387 :デフォルトの名無しさん:02/01/07 15:59
ゴメン、誤爆。

388 :デフォルトの名無しさん:02/01/08 15:11
怜はヒゲ面のおっさんなんだろなぁ・・・・(萎

389 :デフォルトの名無しさん:02/01/09 18:41
339本人じゃないけど、339の答え、俺にもわからん
難しいじゃねーかドルァァァァ!

390 :デフォルトの名無しさん:02/01/09 18:42
hage

391 :デフォルトの名無しさん:02/01/09 21:38
>>389
こちらで勉強してきなさい。(w
ttp://www.geocities.co.jp/SiliconValley-Cupertino/7774/c/report/index.html

392 :デフォルトの名無しさん:02/01/11 03:45
>>339
正直漏れは丁と半という意味がわからん…。聞いたことはあるが。
奇数と偶数という意味か?
逝ってこよう・・・。

393 : :02/01/11 04:15
>393
そうだよ。

394 :デフォルトの名無しさん:02/01/11 06:00
なんど見ても「宿題あげてみるっ」に見えるんだ、病気だな、おれ。

395 :デフォルトの名無しさん:02/01/11 06:01
>>392
ネタ?でなければ教えてやるよ。

396 :デフォルトの名無しさん:02/01/11 06:33
>>392
丁は偶数 半は奇数

397 :デフォルトの名無しさん:02/01/11 10:54
麻衣タン…ハァハァ

398 :デフォルトの名無しさん:02/01/11 13:27
1.標準入力から英文テキストを読み込みfile1に格納する。
2.file1に格納されたテキスト中に出現する全ての相異なる単語の出現回数を求めその一覧をfile2
に格納する。ここで単語はテキストに出現した順に並べるものとする。
また、大文字は小文字に読みかえ、両者は区別しないものとする。
3, 2と違い単語をアルファベット順にならべてfile3に格納する。
4,file1,2,3をそれぞれの見出しをつけて標準入力に書き出す。

399 :398:02/01/11 13:32
1は簡単だしできたんですけど、2がさっぱりわかりません。
どうやって単語という単位で処理するんでしょう?
文字数なら簡単なんだけど・・・
自己参照構造体を使うと聞いたけどどうやって
使っていいのかわからない・・・

400 :麻衣:02/01/11 13:51
麻衣は単語の区別は英字以外を区切りにしたらいいんじゃないかと思うよ

ファイルに格納してるからファイルサイズは判るよね?
だからメモリ上に読んで、英字以外の文字を 0 にしてしまうと簡単だよ。

それで単語数を数える方法は、
うんとね、ポインタ+カウンタの配列を作って
 ”挿入ソート”と同じ方法で
 一致するのがあれば カウンタを1増やす
 一致が無ければ挿入

でいいと思うんだけど?

麻衣はお兄ちゃん バカ怜に取られて落ち込んでたけど、もう大丈夫。

401 :398:02/01/11 14:01
すいません、よくわかりません・・・
ファイルサイズ? も何のことかわからないですけど
スペースが出たら1単語と言うやり方でできますよね?

それと挿入ソートと言うものを知らなかったので検索して調べたんですけど、
それを単語処理にどう使うかわからないです・・・

402 :デフォルトの名無しさん:02/01/11 14:06
4の標準入力に書き出すって、たとえば、キーボードのキーが勝手にかちゃかちゃって…

403 ::02/01/11 14:11
>>400
>麻衣は単語の区別は英字以外を区切りにしたらいいんじゃないかと思うよ

やっまり麻衣ちゃんは子供ね(^^)
英文の中には数字もあるし、「英字以外を区切り」にしたら
I'm や don't みたいな単語が二つに分かれちゃうわよ。

404 :麻衣派:02/01/11 16:45
単語ごとなんだから
きっと「I'm」は「I」と「am」に分けるんです!
難しい問題ですね!

麻衣タンを子ども扱いしないでください!

405 :麻衣派:02/01/11 17:04
>>401
fseek(fp,0,SEEK_END);
size=ftell(fp);
fseek(fp,0,SEEK_SET);
これでsizeにファイルサイズが入る。

麻衣タンがいってるのは
This is a pen This is a cat
をカウントしながら辞書順にソートして
-----------------------
a cat is pen this
2 1  2 1  2
-----------------------
こうだよ。

406 :麻衣派:02/01/11 17:12
>ここで単語はテキストに出現した順に並べるものとする。
あ、やばい。
ごめん麻衣タン…君を守れなかったよ。

 ∧||∧
(  ⌒ ヽ
 ∪  ノ
  ∪∪

   ...

407 :怜派:02/01/11 17:19
>>398
自己参照型構造体を使うのは3.だけだね。
ちなみに2.も3.もソートなしで書けるよ。

>>怜タン
>英文の中には数字もあるし、「英字以外を区切り」にしたら
>I'm や don't みたいな単語が二つに分かれちゃうわよ。
さすが怜タン。頭イイね!

408 :怜派:02/01/11 17:21
>>406
3.を解くなら>>405で合ってるよ。

409 :麻衣派:02/01/11 17:25
あ、ホントだ。
はやとちりで逝くところだったよ。

410 ::02/01/11 19:22
ちょっとまとめてフォローしてくね。

>>398クンは、「線形リスト」は理解してる?
 もしわかってなければそこから。挿入ソートというのも基本的に線形リ
ストを使ってする処理だからね。知らなかった下のページとかも参考にし
てみて。(まあ、リストを教えないで自己参照構造体とか教えることはな
いだろうから、授業で教えてくれたとは思うけど・・・)
http://www.d1.dion.ne.jp/~ecb/c/14_03.html

構造体に、その単語が何回でてくるかっていう要素を持たせちゃってもい
いいかな。

で、2の処理をしたい場合は、ドキュメントを前から順番に単語ごと区切
って読んでいく。で、今単語を一つよみ終わったとしよう。
 ここで線形リストを前から順に辿っていって、同じ単語がないか探すわ
けね。で、みつからなければ、新しくその構造体をmallocして、リストの
最後に付け足すの。みつかれば、その単語の出現回数を+1すればいいわ
ね。

 3の場合は、リストは常に辞書順にならんでるようにしとくわけ。
これをどうすればいいかっていうのが、挿入ソートの話ね。
ある単語を読んだら、リストを前から順に辿っていって、目的の
単語か、その単語よりも辞書順で後に出てくる単語を探すわけ。
 目的の単語が見つかった場合はカウントを+1して、辞書順で
後ろの単語がみつかったら、新しくmallocしてその単語の前に
挿入するのね。
# 辞書順で後ろの単語が見つかったら、それより後に目的の
#単語がないことが保証されるからね。

 って、読み返してみたけど少し説明わかりにくいなぁ。わからないところ
はきいてね。

411 :デフォルトの名無しさん:02/01/11 23:39
C++でエレベータのシミュレーションをするプログラムを
(ある割合で客が来てエレベータに乗って行くような)
作れという課題が出たんですけど、
時間の概念ってどう考えればいいんですか?

412 :怜派:02/01/11 23:44
>>411
うーん、難しいなぁ…。
Stateパターンを使うとか…。

413 :デフォルトの名無しさん:02/01/11 23:46
398の問題はどこかで見たような…。
まさか関西の私立大学の課題じゃないよね…。
問題が一語一句同じなんだけど…鬱だ。(漏れはもう終わらせたが)

414 ::02/01/11 23:59
>>411
 時間の概念は、適当に決めちゃえばいいんじゃないかな?
 while文か何かでグルグルまわして、1stepを時間の最小単位と
するのね。で、1stepにある確率で客が到着するように設定する
のね(1人来るか、1人もこないかの二択ね。これを二択にする
のがいやならポアソン到着とか考えるべきなんだけど、今回は必
要ないでしょう)。
 で、エレベータは扉あいてから、何ステップ待つか、階を1つ
上げ下げするのに何ステップかかるか、とかを適当に決めて、1
stepごと動かしていくわけ。
 エレベータはどういうアルゴリズムで動かすのかな。まあ、円
運動が基本とかいう話もあったような。

415 :398:02/01/11 23:59
>410
おお、解説ありがとうごぜーます!!
今日は無理なのでまた明日やってみます!

>413
そのとおりだ・・・R大学。
どこのクラスよ?
俺はDクラス。

416 :デフォルトの名無しさん:02/01/12 00:11
>>415
本気で打つだし脳。
というかポインタ、文字列の扱い、構造体、ファイル操作をそれぞれ一週間で教えている時点で糞なんだよな。
課題には「事故参照構造体を使うと点数アップ」なんてDQNなこと書いているから
みんなこぞって事故参照構造体に突っ込んでる。リスト構造も満足に教えないくせに。
あのハゲの授業では大半の人が理解不可能だろうな。

とりあえず望洋のポインタ本かっとけ。
後半にリスト構造がわかりやすく載ってる。
実際のやりかたは怜さんの説明で完璧だしな。

417 :デフォルトの名無しさん:02/01/12 00:25
>>410
> http://www.d1.dion.ne.jp/~ecb/c/14_03.html

http://hp.vector.co.jp/authors/VA000124/index.htm
「目指せプログラマー!」かよ^^)
よりによって、そんなダメなサイト、初心者に勧めるなよ。

418 :413=416:02/01/12 00:26
望洋のポインタ本で思い出したけれど、新たにメモリ確保をするときは
mallocとcallocどちらがいいんですか?
漏れはmallocを使ってたんだけど、ポインタ本ではcallocのほうがいいようなことを書いてるし。

419 :デフォルトの名無しさん:02/01/12 00:30
どうせmalloc呼んでるんじゃん?

420 :418:02/01/12 00:32
>>419
mallocで十分だと思うけど、望洋がcallocのほうがいいって言うとちょっと考えてしまう。
mallocではだめでcallocにしないといけないなんていう状況はあるんだろうか?

421 :怜派:02/01/12 00:33
>>418
mallocのほうがいいんじゃない?

422 :デフォルトの名無しさん:02/01/12 00:34
callocだと0で埋めてくれるんだっけ?

423 :418:02/01/12 00:34
>>421
なんでですか?

424 :デフォルトの名無しさん:02/01/12 00:35
Linux使ってればmallocでとった領域は0で埋められてることが
保証されてるうよ

425 :デフォルトの名無しさん:02/01/12 00:37
通はallocaで自滅、これ。
Bohyohもびっくり!

426 :デフォルトの名無しさん:02/01/12 00:37
>>424
マジ?

427 :怜派:02/01/12 00:40
>>423
callocはゼロクリアが全ての処理系で保証されてるわけじゃないからね。

428 :デフォルトの名無しさん:02/01/12 00:42
>>424
セキュリティの問題じゃん?

429 :デフォルトの名無しさん:02/01/12 00:49
>>428
まあね。ごとむさんもびっくりってやつだ

430 ::02/01/12 00:52
>>417
 あ、ごめん、駄目サイトだった? 検索でひっかかった中で、普通に説明
してそうなところを抜き出してきたので・・。

431 :398:02/01/12 01:19
>>416 クラスどこよ?

432 :418:02/01/12 01:22
>>431
ハゲの授業受けてるYO!

433 :デフォルトの名無しさん:02/01/12 01:29
>>410のサイト
「1.1アルゴリズムとは」を見た瞬間、ダメダメ。

434 :デフォルトの名無しさん:02/01/12 01:37
>>427
>callocはゼロクリアが全ての処理系で保証されてるわけじゃないからね。

手元の「新ANSI C言語辞典」には、0クリアされると書いてあるけど…

435 :仕様書無しさん:02/01/12 01:47
>>434
そこいらじゅうの処理系がみんな ANSI 準拠だったらねえ。
でも現実は、一番普及している処理系が一番 ANSI から遠いのだ。

436 :怜派:02/01/12 01:51
その「1.1アルゴリズムとは」より。

>フローチャートは何のために作るのでしょう?
>図で示されているので、文章だけよりもわかりやすく、プログラムにしやすい
>バージョンアップなど改良する際に効率よくできる
>1つのプログラムを複数人で作るときに、手分けしやすい
>同じような処理は、再利用できる

最初の項目は分からなくもないんですけど…。
残りの3つは僕の理解を大幅に超えてます。
誰か詳しい解説きぼんぬ!

437 :デフォルトの名無しさん:02/01/12 01:52
R大学って立教大学?
漏れ、本人の目の前で
「お前の教え方、すっげーわかりにくいよな」
って直接ゆーのが趣味なんだ。
その教授の名前おしえてちょ。

438 :418:02/01/12 01:55
>>437
違う。

439 :怜派:02/01/12 01:57
>>434
だいたいの環境ではゼロクリアされるらしいけどね。
全てじゃないってのがちょっと…。
まぁmallocで十分でしょ。

440 :デフォルトの名無しさん:02/01/12 02:22
>>435
広く普及してる処理系なら、たいてい大丈夫だと思うが。
calloc()で0クリアされない処理系とは、たとえばどれ?

441 :デフォルトの名無しさん:02/01/12 02:57
鹿鳴館大学

442 :デフォルトの名無しさん:02/01/12 03:01
>>436
「んなわけねーだろ」<詳しい説明

443 :ほたる:02/01/12 03:44
きのうゼミで出た宿題・・・。
「蟻の捕食活動シュミレーションによるマルチエージェントシステムと遺伝的アルゴリズム」
という題材でVC++を使ってプログラミング。
概要;蟻はたくさん
   餌もたくさん 
   蟻は前後左右に動く
   餌があれば捕食
   終了条件;餌を全部捕食
        規定時間をオーバー
   んで、そっから遺伝させて、繰り返して
   優秀な蟻軍団をつくっちゃおう!! 
これを人生初プログラミングでやれって・・・。
ちなみに提出は1月20日・・・、これってできんのってかんじ??

444 :デフォルトの名無しさん:02/01/12 04:06
>>443
何を遺伝させるんだろうね・・・
「右に動くのが好きな性格」 とかを遺伝させるの?

445 ::02/01/12 04:25
>>443
 はっきりいって、それをはじめてのプログラミングでやるのは
無理じゃないかなぁ
 先生に「プログラム経験ないんですよ〜」と言ってなきつくし
かないと思うわ・・。

>>444
 一種のライフゲームだよね。
 おそらく、動き方を遺伝させるんでしょうね。
 マルチエージェントだから、みな同じように動くと同じところに
集まってしまって、餌を全部とれないわけだからぁ・・・
 上下左右に自由に動けばいいのかなぁ・・・と思っても、全くの
ランダムだと壁の近辺と、中心部分に密度の差ができちゃうかな。
 この辺をうまくバランスがとれた蜂集団ができればいいってこと
なのかなぁ・・・。ランダムウォーク的な要素をプログラムの段階から
組み込んで、ある方向にn歩歩いたとき、どのような確率でどの方向
に曲がるか、っていうのを遺伝子として持ってがんばるのかなぁ・・。

 それとも、動きに全くランダム要素を入れないのかな。遺伝子から
一意に動き方が決まって・・・、軍団としてみるときれいに役割分担
してるように見える・・とか、なんかこっちの方がそれっぽいかな。
でも、収束しそうもない気はするわね。
 うーん・・・

446 :デフォルトの名無しさん:02/01/12 04:25
>>443
>ちなみに提出は1月20日・・・、これってできんのってかんじ??

むりっぽいね。
友達に頼ってください。

447 :デフォルトの名無しさん:02/01/12 06:32
最近ゲーム理論にはまってる私には簡単だが
掲示板で聞かれても地道にやりなさいとしか
言いようがない

448 :怜派:02/01/12 08:57
>>442
ありがとう。よくわかりました。

449 :デフォルトの名無しさん:02/01/12 09:12
>>443
アリを一日観察し続けてパターンを見極めるか
ファーブル昆虫記を読みなさい。
アリはあれでなかなか賢い生き物だよ。

450 :なんや:02/01/12 10:18
2分木の全節点の個数を求めるプログラム
2分木の高さ(根の高さ=1)を求めるプログラム

以上2つを適当な例を使ってFORTRANで作成して下さい。
お願いします。

451 :怜派:02/01/12 10:50
FORTRAN、サパーリわからない…。
と言うか、全てを他人任せにしちゃダメだよ。

(;´Д`)怜タンハァハァ…。

452 :デフォルトの名無しさん:02/01/12 15:18
>>450
Cでよければ簡単だな。
チミがCとFORTRANの両方を知っていれば、Cでの解答を書く
ところだけど、文面からしてそれは無理くさいのでヤメ。

453 :398:02/01/13 14:23
あー、すいません、やっぱりわかりません・・・
プログラム作る以前の問題で自己参照構造体がわからない・・・
ttp://www.ht-net21.ne.jp/~sgwr-t/sec15-5.htm
ここの例みてるんですけどadd_listをループさせるところ、
なんでデータが順番に入ってくかわからないんです。
mallocも初めてなもんで。
データってstruct list型のポインタpに順番にはいってくんですよね?
最初に*pを作ってデータを入れて、2回目も*p作ってデータ入れたら
上書きされるんじゃないんですか?
mallocで領域確保する意味もわからなくて、*pを宣言したらその中に
そのままデータ入れればいいじゃないかと思ったのですが、
もしかしてmallocで領域確保するとそこにあったデータは後ろにずれるんですか?
*pのデータは*(p+1)に行くってことかな?
う〜ん、でもループで毎回*pを宣言する意味もわからないなぁ・・・

454 :日下部圭子 ◆ib749tYo :02/01/13 14:35
In article >>458, 398//458 wrote:

http://www.ht-net21.ne.jp/~sgwr-t/index.htm
初心者のためのポイント学習C言語

どうでもいいですけど、うそばっかり書いてあるひどいサイトですね。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

455 :デフォルトの名無しさん:02/01/13 14:44
>>454

お前、どこを指しているんだよ・・・・

456 :デフォルトの名無しさん:02/01/13 14:47
キチガイは放置の方向で

>>398
疑問点と問題点をはっきりさせろ。

457 :デフォルトの名無しさん:02/01/13 14:48


458 :日下部圭子 ◆ib749tYo :02/01/13 14:48
In article >>455, デフォルトの名無しさん/sage/455 wrote:

> お前、どこを指しているんだよ・・・・

失礼、>>453でした。
陽一さんと違って手作業で書いてるからたまにミスをします。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

459 :デフォルトの名無しさん:02/01/13 14:49
http://www.ht-net21.ne.jp/~sgwr-t/index.htm
初心者のためのポイント学習C言語

ここはいいよ。

460 :459:02/01/13 14:49
>>458

てめー、せっかくフォローしてやろうと思ったのに割り込みやがって。

461 :日下部圭子 ◆ib749tYo :02/01/13 14:59
In article >>459, デフォルトの名無しさん/459 wrote:

> ここはいいよ。

よくないですよ。
ウソが多い。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

462 :デフォルトの名無しさん:02/01/13 15:05
>>461
具体例を挙げなければ荒し煽り以外の何者でもない。
人の揚げ足取りをする前に、まず自分が有益な言葉を吐いたらどうだ?
スレの主旨とも外れてきているだろう。

463 :日下部圭子 ◆ib749tYo :02/01/13 15:28
In article >>462, デフォルトの名無しさん//sage462 wrote:

> 具体例を挙げなければ

たとえば「printf()はCRT画面に出力する」など、
おかしい部分がたくさんありますよ。
初歩的なことが多いので自分でわかって欲しいですね。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

464 :デフォルトの名無しさん:02/01/13 15:38
そのサイトの話題は何処から出てきたんだ?
個人サイト叩きならどっか他所へ逝け。

465 :怜派:02/01/13 17:06
>>453=>>398
今解いてる問題は2.だよね?
君が書きたいプログラムは、あのサイトを見ただけでは難しいと思うよ。

>最初に*pを作ってデータを入れて、2回目も*p作ってデータ入れたら
>上書きされるんじゃないんですか?
mallocで確保される領域は毎回別の場所になる。
だから上書きされる事はないよ。

>mallocで領域確保する意味もわからなくて、*pを宣言したらその中に
>そのままデータ入れればいいじゃないかと思ったのですが、
関数を抜けたらローカル変数は無くなるんだよ。
だからpにデータを入れても意味ないよ。
mallocで確保された領域は関数を抜けても無くならないよ。

>もしかしてmallocで領域確保するとそこにあったデータは後ろにずれるんですか?
そんな事ない。

しかし…、mallocも使った事なくて自己参照構造体を使わせられるのは厳しいね。
どういう教育されてんのかなぁ…。

466 :デフォルトの名無しさん:02/01/13 18:46
>>454のサイト
まぁ、とんでもなくへんなわけでも、すごくわかり易いわけでもなく。
気にするようなサイトじゃないっすね。

467 :453=398:02/01/13 19:05
ああ、なるほど、とりあえずこのサイトのは理解できました!
ちなみにmallocは全然習ってないわけではないんですけど
よくわからなかったもんで・・・
自分で使ったことは無かったんです。

さぁ本題に挑戦しようかな・・・

468 :デフォルトの名無しさん:02/01/13 19:27
>>466
かなりダメダメなサイトだと思うが。
Cで初心者が間違えやすい有名な落とし穴っていくつかあるけど、
そういうの落ちまくってるし。

469 :半角住人の宿題:02/01/13 20:37
2chの各板にマルチポストしていく宣伝業者に、半角板住人達が、キレました。
マルチポスト業者に対して、メンバーページの画像直リンや
接続ソフト解析をして、業者を晒しageています。

続々と各板から応援に集まっていただいてますが、
接続ソフト解析等、初心者には難しいこともあるので、プ板住人のお知恵を貸してただけませんか?
2chから、悪徳宣伝業者を追い出しましょう!

■宣伝カキコ業者の画像や動画をばらまくスレPart2■
http://wow.bbspink.com/test/read.cgi/ascii/1010876229/

470 :467=398:02/01/13 21:41
WINDOWSだとEOFのを返したいときはCtrl+Zですよね?
何も起こらないんですけど・・・
ただ^Zって表示されるだけで。
しかもどうにもならないから一回閉じてもう一回実行すると
共有違反・・・
どうすればいいんでしょう?

471 :デフォルトの名無しさん:02/01/13 21:42
GUI中のボタンからファイルログを出し、入出力ファイルを指定するとこまでは出来
たのですが、それを利用してボタンを押したらソフトを動かすコマンドをJavaのGUI
で作りたいのですが・・・(ソフト名<入力ファイル>出力ファイル)

472 :怜派:02/01/13 22:04
>>470
今2.を解いてるんじゃないの?
2.ってファイルから読みこむんだよね?

473 :470=398:02/01/13 22:07
え〜っと、1は学校のUNIXでやったんですけど
今家だからWindowsで1もやり直したんです。
そしたら予想外の壁に・・・

474 :デフォルトの名無しさん:02/01/13 22:21
0,1の世界を考える。
0+0=0,0+1=1+0=1,1+1=0
っていふうになるとして、
k次元のベクトルa1,a2,a3....を考える。
n1,n2,n3...が0か1の数だとして
あるK次元のベクトルsを
s=n1*a1+n2*a2+n3*a3...(有限個)
って表すために
n1,n2....を決める。
もし、s=n1*a1+n2*a2+n3*a3...(有限個)
となるn1,n2...がない場合はFalseを返す。
いいアルゴリズムありますか?

475 :デフォルトの名無しさん:02/01/13 22:30
>>474
最初の0,1の世界ってかいてあるってことは
ベクトルの要素もすべて0か1ってこと?

いずれにしても、sのある要素に対して、左
辺の該当要素を計算してやれば済むことじゃ
ないかな。
とくに凝ったアルゴリズムは必要ない気がす
るけど。

476 ::02/01/13 22:34
>>470 >>473
 うーん・・・。
 データをファイルからでなく、標準入力から手打ちで入れたって
ことだよね? UNIX環境だとCTRL+Dってやればうまくいってたのが、
WINDOWSだとCTRL+Zっていれても上手くいかないってこと?
 うーん、ちょっと症状聞いただけだとわからないなぁ。とりあえ
ず、a.out < hoge.txt みたいにファイルで入力してみたら?

477 :475:02/01/13 22:34
まちがい、訂正。
左辺の → 右辺の

478 :デフォルトの名無しさん:02/01/13 22:35
ベクトルの要素もすべて0か1ってこと?
そうです。
例えば、
a1=(0,1,0,1,0,1)
a2=(0,0,0,1,1,1)

a3=a1+a2なら
a3=(0,1,0,0,1,0)
となります。
つまり
左から1bitずつ割り当てた場合
ベクトルの足し算は
エクスクルーシブオアで計算できます。

479 :デフォルトの名無しさん:02/01/13 22:37
>いずれにしても、sのある要素に対して、左
>辺の該当要素を計算してやれば済むことじゃ
これだと
最悪2^(足し合わせるベクトルの数)回試さないとダメですよね。
もっと、効率のよいアルゴリズムはないでしょうか?

480 ::02/01/13 22:37
>>474
>>475さんも書いていてくれてるけど、n1, n2, n3.....を決定したい
だけならn1, n2,,,の全ての組み合わせを考えればいいと思うよ。

a1, a2, a3,,,,を定めたいなら・・・0, 1しかなくても、やっぱ
a1, a2, a3を一次独立になるようにとればいいのかな。

481 :473=398:02/01/13 22:39
>>476
そうです。
まぁとりあえず2番やります・・・

482 :            :02/01/13 22:40
>だけならn1, n2,,,の全ての組み合わせを考えればいいと思うよ。
それだと遅過ぎて・・・

>a1, a2, a3を一次独立になるようにとればいいのかな
一次独立かどうかのチェックも結局は全部しらみつぶしになってしまう
ような・・・

483 :475:02/01/13 22:48
しらみ潰しをしないアルゴリズムが知りたいっつーことか・・・
うーん

484 ::02/01/13 22:53
>>482
うーん、遅すぎるのね・・・。
ちょっとしっかり考えてないけどこういうのはどうかしら。


ベクトルの各要素に着目するのね。で、そこで、制約式を出すの。
もちろん、この制約式の導出段階でfalseがわかることもあるわね。
例えばa1 = (1, 0, 1), a2 = (1, 1, 0), a3 = (0, 1, 1)
とすると、
s = (1, 1, 1)なら
n1 + n2 = 1
n2 = 1
n3 = 1

さらに、ここで左辺を引き算して、式を簡単にしていく。
行列を使った連立一次方程式の解法が応用できるかな。

(ここで書く+は全部排他和ね)

何か間違ってそう。。

485 :デフォルトの名無しさん:02/01/13 22:57
ベクトルが4つ以上だと・・・

486 ::02/01/13 22:58
何書いてるんだろう・・・
制約式は
n1 + n2 = 1
n2 + n3 = 1
n3 + n1 = 1
ね。

487 :デフォルトの名無しさん:02/01/13 22:58
>>a1, a2, a3を一次独立になるようにとればいいのかな
>一次独立かどうかのチェックも結局は全部しらみつぶしになってしまう
>ような・・・
一時独立かどうかは、同じベクトルがあるかどうかできまるんやないかな
(あ、反転ベクトルも考えないかんけどね。)
だから、一次独立の判定だけなら、そんなに負荷にならないはずやけどな。

488 :475:02/01/13 23:00
この手の問題は学生のころ以来だからちょっとあやしいけど

|n1|
|n2|
|n3| を ベクトルN、 |a1,a2,a3,...|を行列A
|n4|
|: |

として、Aの逆行列を ^A とした場合、

問題から

s = N × A

したがって

s × ^A = N

というわけでAの逆行列を計算する問題にできるけど、
それって高速にできるのかな。

489 :デフォルトの名無しさん:02/01/13 23:00
>一時独立かどうかは、同じベクトルがあるかどうかできまるんやないかな
それは違うと思うよ。
>>484
a1,a2,a3は一時独立でしょ

490 ::02/01/13 23:00
>>485
んー、k次のベクトルがl個あると・・
うーん、解が一通りとも限らないしね・・。
全部のパターン求める必要あるのかな・・・。
ちょっとしっかり考えてみるね。

491 :デフォルトの名無しさん:02/01/13 23:01
>>474
掃き出しでrankを求める

492 ::02/01/13 23:02
解があるかないかだけでいいの?

493 :デフォルトの名無しさん:02/01/13 23:04
>全部のパターン求める必要あるのかな・・・。
いえ、答えが一つでればOKです。

>>488
それは0,1の世界の場合使えるのでしょうか?
もし可能であれば、LU分解っていう便利なのがあるんですが
a1,a2,a3,a4...は固定なんです。

494 ::02/01/13 23:06
>>493
とりあえず、足し算、引き算、掛け算は定義できるよね?
だから、可能なんじゃないかな、と思うけど。

495 :デフォルトの名無しさん:02/01/13 23:07
>解があるかないかだけでいいの?
解がある場合は、係数を求めたいのです。
というか、確率的なアルゴリズムでもOKです。
10%の確率で、解があるにもかかわらず
FALSEを返してしまうとか・・・

496 :475:02/01/13 23:07
>>493
0,1でも問題は無いと思われ。
LU分解、rank、懐かしい言葉だな。忘れてしまったが。

497 :487:02/01/13 23:10
s/一次独立/一次従属/ って事やで。

498 :デフォルトの名無しさん:02/01/13 23:15
あ、係数は0か1で,-1はないです。

逆行列が求められるなら、LU分解もできるので
できるかもしれませんね。
ちょっと考えてみます。

499 :デフォルトの名無しさん:02/01/13 23:17
あー、でも割り算ができないとできない気がしてきた。

500 :475:02/01/13 23:20
rankを忘れたオレが0,1でも問題ないというのはおかしな話だな。
スマソ。自信ないす。
・・・数学板向きカモ。

501 ::02/01/13 23:21
>>499
 うーん、0か1の二通りしかないから、割り算しなくても大丈夫じゃ
ないかしら。

502 :デフォルトの名無しさん:02/01/13 23:26
よくわからん

503 :デフォルトの名無しさん:02/01/13 23:29
>>502
なら出てこなくてヨロシ!

504 :デフォルトの名無しさん:02/01/13 23:31
mod2なら、-1=1なんやないの?

505 :デフォルトの名無しさん:02/01/13 23:33
>>504
うん

506 :デフォルトの名無しさん:02/01/13 23:34
>>504
そうだった
とりあえず、また明日にでも

507 :デフォルトの名無しさん:02/01/14 00:19
ちょいと検証したけど、LU分解でいけるみたい。
あとは、k<Nの場合の処理を入れれば終了やね。

508 :デフォルトの名無しさん:02/01/14 00:36
>>474
ちなみに、どんな教科での宿題なの?というか、どういう問題から派生してきた問題なの?

509 :デフォルトの名無しさん:02/01/14 15:16
>>507
やっぱ無理です。
LU分解って正方行列じゃないと使えない。

510 :デフォルトの名無しさん:02/01/14 17:12
だから〜。
k<Nのばあい、前述した、一次従属条件で引っかけて、
k=Nにもちこめるでしょうが。k>Nの場合は、Sが一次従属
でない限り解はない。

511 :デフォルトの名無しさん:02/01/14 17:36
スマソ。違うな。

512 :481=398:02/01/14 17:38
なんとか2番をコンパイルするまで行ったんですけど
実行結果がおかしくて、ソースのどこがおかしいかわかりません。
というかすごい自信ないソースなんですけど・・・
見てもらえたらありがたいです
http://www2.nasicnet.com/~hila/repo02.c
http://www2.nasicnet.com/~hila/file1.txt
http://www2.nasicnet.com/~hila/file2.txt

repo02がソースで、file1を読み込んでfile2を出すというやつです

513 :デフォルトの名無しさん:02/01/14 18:11
そこそこ眺めた限り。
> fprintf(fp2,"%10c :%3d \n",p->word,p->count);
の%10cが間違い。

その実装では、Am 4 が与えられたとき、
am : 1, 4m : 1という出力になるとおもう。
最初の初期化は止めて、compする前に
NULL文字を詰めてはどうか。

getchをうける c はintであるべき。

514 :512=398:02/01/14 18:49
>>513
もう少し詳しくお願いします・・・
初期化はtempのことですよね?
最初に初期化するのを止めてcompの前に初期化って事ですか?
compする時にはtempに単語が入ってるんですけど・・・

それとgercうけるのはintということは文字は全部intで処理したほうが
いいのかな?
でも単純にこの中に出てきたcharを全部intに置き換えても
うまくいかない・・・・・

515 :デフォルトの名無しさん:02/01/14 19:09
temp[i]='\0';って事さ。null terminatedの意味をもちっと
考えようや。

getcの返す値のうち、EOFのみがcharの範囲にない。
だから、その部分だけintで処理すればいい。

あとついでに、isalphaとかつかおうや。

516 :514=398:02/01/14 19:27
http://www2.nasicnet.com/~hila/repo022.c

ちょくちょく直してみましたがまだ来ません・・・
うう、時間がない・・・

517 :デフォルトの名無しさん:02/01/14 19:51
>> fprintf(fp2,"%10c :%3d \n",p->word,p->count);
>の%10cが間違い。
(´Д`)y-~~ とっととなおせや。

518 :8945:02/01/14 19:56
確かにコレはすごいな……。
http://www.puchiwara.com/hacking/

519 :516=398:02/01/14 20:06
あー、すいません。
これってどこがちがうんですか?

520 :デフォルトの名無しさん:02/01/14 20:11
printf("%10c\n", "hello World!");
printf("%10s\n", "hello World!");

521 :519=398:02/01/14 20:42
ああ、なんてしょうもないミス・・・
なんとかだいぶ近づいたんですけどまだカウントされない
単語があるみたいでうまくいきません・・・
http://www2.nasicnet.com/~hila/file2.txt

522 :デフォルトの名無しさん:02/01/14 20:56
コンパイラの警告を無視すんなよ‥‥
少なくとも3つ出ているはずだが。

523 :521=398:02/01/14 20:57
え?警告でてませんけど・・・?

524 :デフォルトの名無しさん:02/01/14 21:03
ファイルから取り出した単語が登録されていなかったら、comp()の戻り値はなに?

525 :怜派:02/01/14 21:05
>>398
compのロジックが間違ってるよ。
もう一度見直したほうがいいね。
それと、ホントに警告出ないの?

526 :デフォルトの名無しさん:02/01/14 21:08
むぅ。gcc version 2.95.3なら、たしかに何も云わないな。
「-Wallをつけなければ。」 gccで -Wallをつけるのは
常識だと思っていたが。

527 :523=398:02/01/14 21:25
う〜ん、わからないなぁ。
compどこがおかしいんでしょう?

コンパイルはウインドウズでやってるのでgccじゃないんです。
http://hp.vector.co.jp/authors/VA009829/ft/etcdown.html
これつかってます。
警告でないです・・・

528 :  :02/01/14 21:27
http://tmp.2ch.net/test/read.cgi/lobby/1011007664/

529 :怜派:02/01/14 22:16
>>398
じゃあ仮に、まずfooという単語を最初に登録する。
この時main内のFの値は?

530 ::02/01/14 22:39
>>509
LU分解じゃなくて、行列を基本変形させていく方法で解けない?

531 :527=398:02/01/14 22:43
ああ、できた!!!
ありがとうございます!
でも単語出てきた順番が逆・・・
まぁいいや、次がんばろう・・・

532 ::02/01/14 22:45
>>531
今、add_listで、リストの先頭に付け足してるよね?
そうじゃなくて、リストの最後に付け足すようにしないとね。

533 :怜派:02/01/14 22:48
>>398
怜タンの言う通り、先頭に付け足すとマズイよ。
て言うか、あのサイトのコピペしたでしょ?

(;´Д`)ハァハァ…。

534 :531=398:02/01/14 23:12
コピぺといか自己参照構造体がはじめってなのでみながら・・・
ってほとんどコピペしたのとかわらんけど・・・

後ろに付け足す場合、一つ目のデータをmallocした時にまだ二つ目の
データのアドレスがわからないですよねぇ?
これはどうやって指定するんでしょう?

535 :デフォルトの名無しさん:02/01/14 23:20
NULLでターミネートしとけばいいやん。

536 ::02/01/14 23:21
>>534
 えーと、*P以外にもう一つポインタ作って、headから辿っていけばいいん
じゃないかしら? あと、新しく作られた構造体は、一番最後につくはずだ
から、nextはnullが入るよね?
 蛇足かもしれないけど、compの中で、最後まで読んでみつからなったとき
に、addした方が二回リストを辿らなくていいから効率いいと思うよ。

537 :怜派:02/01/14 23:25
>>398
新しくmallocした時に、nextをNULLにしておく。
それでheadから辿って、nextがNULLの場合に
新しいデータを付け足す。

538 :怜派:02/01/14 23:28
怜タンと被っちゃったよ。
(;´Д`)ハァハァ…。

539 :デフォルトの名無しさん:02/01/14 23:36
>>527
Windows 用の gcc もあるって。
Cygwin 入れろ。

540 :デフォルトの名無しさん:02/01/14 23:52
>>537
mallocした構造体の数が膨大になると辿るのも時間かかるから、
最後にmallocした構造体のポインタを記憶しておく

541 :デフォルトの名無しさん:02/01/15 00:02
>>540
でも、mallocするときってのは、無い単語のときだけだから
結局一回最後まで辿るんじゃないの?

542 :534=398:02/01/15 00:06
この場合headの初期値は何を入れておけばいいんでしょう?
NULL入れると先頭がNULLになってまずいですよね・・・?

http://www2.nasicnet.com/~hila/repo02.c
http://www2.nasicnet.com/~hila/file1.txt
http://www2.nasicnet.com/~hila/file2.txt

543 ::02/01/15 00:13
>>542
 ソースはまだ見てないけど、NULLにしといて、head == NULLの場合だけ
別の処理をするようにするのが普通かな?

544 :デフォルトの名無しさん:02/01/15 00:15
headをダミーノードにするってのもありかも。

545 :デフォルトの名無しさん:02/01/15 00:25
決定性有限状態オートマトンについて。

SとIとp∈Sを固定した時、決定性有限状態オートマトン(S,I,δ,p,F)
は全部でいくつあるか。|S|と|I|の式で表せ。

546 :デフォルトの名無しさん:02/01/15 00:29
>>545
引っ掛け問題だな。正解は全部で常に1

547 :542=398:02/01/15 00:41
う〜ん、うまくいかない・・・
putlistのところ、最初にint i=0;をつけて
ループのところを

while(i<=1){
fprintf(fp2,"%15s :%3d \n",p->word,p->count);
p=p->next;
if(p=NULL)
i++;
}
としたんですが、コンパイルしたあと実行すると応答が無くなって
閉じてからもっかいやり直すと共有違反がでて再起動しないと
直らなくなります・・・

548 :デフォルトの名無しさん:02/01/15 00:47
まず、iの意味を教えてくれ

549 :デフォルトの名無しさん:02/01/15 00:47
漏れの流儀ではこう。
for(p=head; p ; p=p->next)
 fprintf(fp2,"%15s :%3d \n",p->word,p->count);

あ、547のは、if(p=NULL)がtypoかどうかにかかってると思う。

550 ::02/01/15 00:51
>>545
要するに、初期状態と、遷移関数の組み合わせの数だよね?
初期状態は、|I|(ちょっと記号に自信ないけど、入力アルファベットの数
でいいんだよね?)通り。
遷移関数だけど、ある状態A∈Sから、入力iがきたときに考えられる遷移
は|S|通り。これを考えられる全ての入力について考えなければいけないか
ら、一つの状態について、|S|^|I|通り考えられわけね。
 そして、これを全ての状態について考えなければいけないから、
(|S|^|I|)^|S|通りの状態遷移関数が考えられるわけ。
だから、答えは、
|I|*(|S|^|I|)^|S|
かなぁ・・・。あんまりしっかり考えてないから間違ってるかもだけど。。

551 :デフォルトの名無しさん:02/01/15 00:52
あと、i=0で初期化して、whileの条件が i<=1、脱出フラグで
i++;ってのも止めた方がいいよ。それにしても、i<1だろうけど。

552 ::02/01/15 00:55
>>547
とりあえず、if(p=NULL) はif(p == NULL) じゃないかしら?

553 :デフォルトの名無しさん:02/01/15 01:00
>>547
単に無限ループしてるだけとちゃうんかい。
iに構造体のポインタ代入しないと。

554 :547=398:02/01/15 01:07
あー、だめだ。
えーと、headは最初がNULLなので2回目のNULLでおわらそうと思って
それを数えるためにiをつかったんです。
p==NULLにしてもだめだった・・・

>>549
この関数の中にはheadはないんです。
mainのheadをpに読み込んでるので・・・
あとforの真中のpってどう言うことですか?

555 :デフォルトの名無しさん:02/01/15 01:10
>554
なら、headを引数でもってこいや。

if( p ) は if( p != 0 )と等価。

556 :デフォルトの名無しさん:02/01/15 01:18
ちょっとまて。headが最初NULL? いったいどこの「最初」の話だ?
putlistに入ったとき、headがNULLなら、そのまま帰るべきだし、
(そうでないなら、NULL->nextを実行させたい、ってことやで)
そうでないなら、「最初NULLだから2回目の」なんて妙な条件を
付ける必要はないし、つけてはいけない。

557 :554=398:02/01/15 01:18
headを引数で持ってきてpとしてるんです。
549のpはどういう意味なんですか?
headを引数で持ってきてpとしてるように思えますが・・・
でもそれだとこの関数の中にはheadがないし・・・

558 :557=398:02/01/15 01:24
おっとかぶった・・・
えーと、最初にmainでheadを定義したときheadの先頭ポインタをNULLと
したんです。
で、それに続けてデータを入れていく、という風にしている(つもり)です。
う〜〜ん、わけわからん用になってきた・・・

559 :デフォルトの名無しさん:02/01/15 01:29
関数ごとに、関数の目的と、何をどんな手順で処理していくのかを
箇条書きでもなんでもいいから、もう一度考えて書いてみることを薦める。

560 :558=398:02/01/15 01:32
一応出てくる順番が逆ならできたのでそんなに大きく
はずれてはないと思うんだけど・・・
あぁ、今日1日中やってるのにできない(;´Д`)
明日中に4番まで終わらせたいんやが・・・

561 :デフォルトの名無しさん:02/01/15 01:34
オチンチン見て

562 :558=398:02/01/15 01:38
みた

563 :デフォルトの名無しさん:02/01/15 01:58
勃ってる?

564 :558=398:02/01/15 01:59
縮んでる

565 :558=398:02/01/15 02:08
これって考え方としてはheadの最初にNULLを入れないようにすればいいんですか?
それともheadの最初のNULLを避けるようにputlistのループをまわすんですか?

566 :デフォルトの名無しさん:02/01/15 02:14
リストに要素が追加された時点で、headは実体化される。
次の要素が入ったときには、head->nextが実体化する。
headがnullってことは、リストが空って事さ。

567 :565=398:02/01/15 02:19
mainで最初headの先頭ポインタをNULLにしてるじゃないですか?
これで先頭がNULLになるんですよね?
で次のデータはNULLの後ろに入るのではないんですか?
だからheadの最初がNULLだからputlistのループがすぐ終わってしまって
結果がこうなる↓のじゃないかと思ってるのですが・・・
http://www2.nasicnet.com/~hila/file2.txt
その考え方自体ちがうのかな・・・??

568 :565=398:02/01/15 02:20
でもよく考えたらtheだけってのはおかしいな・・・

569 :デフォルトの名無しさん:02/01/15 02:23
君がどうheadを処理しているのかは判らないが、
head=NULL;で、
head->next = malloc(,,,);
などという愚行をやっていないことを祈る。

570 :デフォルトの名無しさん:02/01/15 02:33
???

>>545 の回答って >>550 でいいのか?

571 :デフォルトの名無しさん:02/01/15 02:39
とりあえずNULLな領域を
fprintf(fp2,"%15s :%3d \n",p->word,p->count);
とするのは止めないといけないのでは?

572 :565=398:02/01/15 02:39
うぅ・・・もうみんな寝ちゃったのかな・・・
また明日がんばろう・・・

573 :565=398:02/01/15 02:43
お、それってheadの最初に入ってるNULLを避けてループするってことですか?
headの最初にNULLをいれないじゃなくて。

574 :デフォルトの名無しさん:02/01/15 02:47
・そもそも、add_listでhead = NULLのときの処理をきちんと行う
・getcのループが終わったとき、変数headがリストのケツを指している。
のをなんとかしろ。

575 :Riva ◆RivaByXA :02/01/15 02:49
>>573
レスの目をとおしてないで聞くのは申し訳ないんだが、
このプログラムは結局何をさせるの?

576 :デフォルトの名無しさん:02/01/15 02:49
>>570
あってないと思ったら、自分の回答書いてみたら?

577 :怜派:02/01/15 02:50
>>573=>>398
そもそもputlistの時点でheadがNULLを指しているのがおかしいと思うよ。

578 :Riva ◆RivaByXA :02/01/15 02:50
レスの目を→レスに目を通して

579 :怜派:02/01/15 02:51
>>578
>>398だけ見ればわかると思うよ。

580 :Riva ◆RivaByXA :02/01/15 02:53
>>579
ありがとう。

581 :573=398:02/01/15 02:54
う〜ん、すぐにはわかりそうにないなぁ・・・
また明日考えます・・・

582 :おわんねー:02/01/15 03:16
明日の朝、発表の課題です。
レイトレの並列化してます。
エラーの意味がわかりません。

neg**non-integral: DOMAIN error
これって、どんなときにでるエラーですか?

ねむくてしにそう・・・

583 :Riva ◆RivaByXA :02/01/15 03:29
>>582
http://proxy.ymdb.yahoo.co.jp/users/9d41a928/bc/test.c.c?bcP14k8AF6CJiUXL

これではだめかい?

584 :デフォルトの名無しさん:02/01/15 03:38
ん? 582 != 398だとおもうが。
いずれにせよ、head == NULL のとき、
q=head;
q->next=p;
で、core。

585 :Riva ◆RivaByXA :02/01/15 03:39
失敬。もう一度修正するね。

586 :Riva ◆RivaByXA :02/01/15 03:42
http://proxy.ymdb.yahoo.co.jp/users/9d41a928/bc/test---1.c.c?bc0h1k8Ast_pTj8K
こうかな?

587 :デフォルトの名無しさん:02/01/15 03:53
when head == NULL
q=head;
while(q->next != NULL){
q->nextでcoreかと。

588 :Riva ◆RivaByXA :02/01/15 03:57
>>587
headも最初にmallocで確保して作るということでいい?

589 :587:02/01/15 04:06
あちしに訊かれても困るけど、まぁ、いいんでないか。

590 :Riva ◆RivaByXA :02/01/15 04:08
>>589
ごめんなさい。(^^;

591 :Riva ◆RivaByXA :02/01/15 04:28
ttp://briefcase.yahoo.co.jp/snakayam55

答えは上にあるけど、自分でやってね。

592 :582:02/01/15 04:34
ごめんっす。
ぼくは、ここにきたの初めてでした。
ログ読む暇もないくらいテンパってます・・・

>583さん
みれないよー(涙)

593 :麻衣派:02/01/15 09:24
麻衣タン…ハァハァ

594 :連立方程式が解けません・・:02/01/15 09:29
どこがまずいのでしょうか

#include <stdio.h>
#include <math.h>
#define N 5
#define EPSILON 1.0E-10

float a[N][N]={{1.0, 1.0, 0.0, 0.0, 0.0},
{0.0, 0.0, 1.0, 1.0, 0.0},
{0.0, 1.0, 1.0, 0.0, 1.0},
{0.0, 0.0, 1.0,-1.0,-1.0},
{1.0,-1.0, 0.0, 0.0, 1.0}};
float b[N]={10.0, 10.0, 20.0, 0.0, 0.0};

int k;
float x[N];
void main()
{
int i,j;
void gau_sei();
printf("\n\n ===係数行列と定数 ===\n\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++) { printf("%10.4f",a[i][j]);}
printf(" %10.4f\n",b[i]);
}
gau_sei();

printf("\n\n ===解 ===\n\n");
printf("繰り返し回数 = %d\n\n",k);
for(i=0; i<N; i++) printf(" x[%d] = %10.4f \n",i+1,x[i]);
}

void gau_sei()
{ int i,j;
float Nk,xx;

k=0;
for(i=0; i<N; i++) x[i]=0.0;
do
{
k=k+1;
Nk=0.0;
for(j=0; j<N; j++)
{
xx=b[j];
for(i=0; i<N; i++) if(i!=j) xx=xx-a[j][i]*x[i];
xx=xx/a[j][j];
Nk=Nk+fabs(xx-x[j]);
x[j]=xx;
}
} while(Nk>EPSILON);
}



595 :連立方程式が解けません・・:02/01/15 09:32
解のところで
x[2]=1.#INFとか出るんですけどこれの意味が
あと同じく 1.#INDってのも

596 ::02/01/15 09:49
>>595
ソースしっかり読んでないけど(どういった手法で解こうとしてる
かくらいは書いて欲しいな・・・)、xx=xx/a[j][j];ってところで、
0で割っちゃってるんじゃないかな?

597 :連立方程式が解けません・・:02/01/15 10:02
ガウスザイデル法っていう奴です。
すいません

598 :連立方程式が解けません・・:02/01/15 10:16
ちょっと出直してきます

599 ::02/01/15 10:16
>>597
>>594クンは、>>474の排他和の問題の人?
 だったら、ガウスザイデル法みたいな、近似させていくやり方は
無理だと思うけど・・・

600 :連立方程式が解けません・・:02/01/15 10:16
474さんではないです。

601 ::02/01/15 10:28
>>600
あ、人違いだったのね、ごめんね。

で、問題のプログラムだけど、前に書いた通りxx=xx/a[j][j];で0で割ってる
のがいけないんだと思う・・。
 ガウスサイデル法知らなかったから、今調べてきたところなんで余りアテ
にはならないかもしれないけど、対角成分は全部0であったらまずいんじゃな
いかな? だから、行を入れ替えて対角成分が全部0にならないようにする
んだと思うわ。 もし行を入れ替えて対角成分を全部0じゃなくできないなら
答えがあることは保証できないしね。

602 :411:02/01/15 10:47
遅レスですいません。
>>414のエレベータの円運動って何なんですか?
あとエレベータのアルゴリズムはまださっぱりわかりません。

603 ::02/01/15 11:04
>>602
エレベータが今、6階にいるとするよね?
それで、3階と9階でボタンが押されてたとしよう。
このとき、エレベータはどっちにいけばいい?

うまくやらないといつまでもエレベータが来なくなっちゃうよね?
そのため円運動みたいなことを考えるの。
今、1階から上に上っていって、6階で客を降ろしたとすると、
今、上に上っている最中だから、まず最上階までで下に下りてくる
の。ただ、このときに6階から上で全くボタンが押されてなければ、
最上階まで行って、6階まで降りていくというのは無駄だよね?
 だから、この過程を省略したと考えて、この場合は下りはじめる
ってことね。

604 :411:02/01/15 11:14
>>603
ありがとうございます。
話が戻ってしまうんですけど時間の概念で
whileで1stepずつ増やしていくのはわかるのですけど
エレベータの移動に10stepかかるとしたら
10step後までエレベータは何もしないようにするには
どうすればいいのですか?

605 :582:02/01/15 11:19
happyou damedesita----

606 ::02/01/15 12:04
>>604
 何step待ってるかというのを、何か変数でもって、10溜まるまでは
単にその変数を+1するだけ。で、その変数が10になったならば、
エレベータを動かす処理をする。じゃだめかな?

607 :デフォルトの名無しさん:02/01/15 12:10
>604

RTOSの下で? それともWindowsアプリとして?

608 :411:02/01/15 12:27
>>607
ただのC++の課題です。
UNIXで作っています。
クラスを何にしていいのかすらわからない状態で
課題が終わりそうにないです。

609 :麻衣:02/01/15 12:44
>>411
 色んな実現方法があるから困ってしまうよね

麻衣なら
 1)操作ボタンクラス 外の上・下のボタン 中の階ボタン類
   これらは1インスタンスで1ボタン
   押されたら管理クラスにメッセージ

 2)管理クラス
  エレベータ現在位置とボタンクラスからのメッセージからどこに行くか決定
  到着したらボタンクラスにメッセージ

 3)コントロールクラス
   次にどの階に行くかを実際にコントロールするクラス

 4)エレベータシミュレータ
   重力、慣性を適当に作る

 5)タイマー 10mS毎にそれぞれのインスタンスにメッセージを送る

こんな感じで設計するかな

610 :411:02/01/15 12:55
>>609
エレベータクラスは作らないのですか?
それともエレベータクラスがこれらのクラスを持っているということですか?

611 :麻衣:02/01/15 13:17
JAVAならエレベータクラスも作るだろけど、

もしかして同時に2台以上動かすとか必要? 

612 :デフォルトの名無しさん:02/01/15 13:19
#include<stdio.h>
main()
{
printf("おまんこ\n");
}

このプログラムは何点ですか?

613 :デフォルトの名無しさん:02/01/15 13:21
#include<stdio.h>
main()
{
printf("山崎ホウセイはlinuxユーザー\n");
}

なんてん?

614 :デフォルトの名無しさん:02/01/15 13:26
3点

減点要素
×main は帰値型を付けていないのでintを返さなければいけない
×mainの定義が正しくない
×将来性のかけらも感じられない
×ギャグにもなっておらず寒すぎ

615 :411:02/01/15 13:27
>>611
エレベータは2台あるので同時に動かさないといけないです。

616 :デフォルトの名無しさん:02/01/15 13:29
>>614
もちろん10点満点中だよね?

617 :デフォルトの名無しさん:02/01/15 15:43
> エレベータシミュレータ
エミュ

618 ::02/01/15 15:45
411クンはどれくらいプログラムできるの?
それによってアドバイスが変わってくるから・・・

619 :411:02/01/15 15:48
>>618
エレベータとフロアと客をクラスで作ろうかなと思っているくらいで
まだ先が見えてこない状態です。

620 ::02/01/15 15:50
いや、プログラムできてるの?
じゃなくて、
プログラムできるの?
ね。
どれくらいプログラミング経験あるのかなーとか、
どの程度、複雑なプログラムなら組んだことあるのかなーとか、

621 :411:02/01/15 15:54
もういいよ

622 :411:02/01/15 15:55
C++でクラス作ったり継承ができるくらいかな?
プログラムは大学で習ったくらいです。
そんなに複雑なプログラムは作ったことないです。
今回出た課題が一番難しい課題です。

623 ::02/01/15 16:11
一応クラス使えたり継承使ったりはわかるのね。
じゃあ、麻衣ちゃんを見習って私ならこうクラスを設計する、
っていうの書いてみようかな。

★乗客クラス
 乗客のクラスね。●階から○階へ移動したいと思ってるという
情報を持ってるのね。

★フロアクラス
 各階の情報ね。待ってる乗客のオブジェクトを持っていたりする。
で、上・下のボタンが押されているかどうか、というのも持ってる
のね。

●エレベータクラス
 エレベータのクラスね。
 まず、中に乗ってる乗客のオブジェクトを持ってないとね。
 あと、各階のどのボタンが押されてるかも知りたいから、
各階のクラスへのポインタでも持たせておくといいかな。
 もちろん、今何階にいるとかいう情報ももたせないとね。
どうやって動くかというロジックはここに書くのかな。
 このときもう一方のエレベータとも連携させないといけ
ないから、もう一方のエレベータへのポインタも持たせて
おこうね。

 とりあえずは、こんなところかな?

624 ::02/01/15 16:13
で、時間についてだけど、実時間(シミュレーションしていると
きに、その結果をリアルタイムで観察させたいなら、ってことね)
と対応させるにはどうすればいいかってことだけど。
 麻衣ちゃんが言ってたみたいにタイマー使ってもいいし、それ
が面倒なら課題レベルならビジーループ(時間をかけるために無
意味にループさせる)させてしまっていいと思うよ。

625 :デフォルトの名無しさん:02/01/15 20:24
char str[][]={"怜=","ひげおやじ"};

626 :581=398:02/01/15 22:12
>>591
ありがとうございます!!
見ながらやってなんとかできました!(あたりまえ)
う〜ん、こうやるんですねぇ・・・

で、いくつかわからないところがあるんですけど、
僕がexit(1)でおわらしてるところreturn(0)に書き換えてますよね?
これはなんでなんでしょう?
あとstruct dataのメンバは3つだけど、struct data型の引数は3つですよね?
これもOKなんでしょうか?

627 :Riva ◆RivaByXA :02/01/15 23:12
>>626
>僕がexit(1)でおわらしてるところreturn(0)に書き換えてますよね?
>これはなんでなんでしょう?

特に理由はないんだけど・・。(w
main関数は基本的にint型の返値を持たせるため。
exit(1)でもいいよ。
ただ、gccとか使ってコンパイルすると警告がでてきてしまう。

628 :Riva ◆RivaByXA :02/01/15 23:13
>あとstruct dataのメンバは3つだけど、struct data型の引数は3つですよね?
>これもOKなんでしょうか?

headとpとqのことかな?大丈夫だよ。
これは単にmallocで作ったデータの住所を保持してるだけだから。
このプログラムを実行すると
[]→[]→[]→[]→[]→[]→NULL

head
という構造ができて、その先頭のオブジェクトの住所がどこかを記憶してるのが
headというポインタ変数。だから、
struct data *temp;
だけだと、tempは何も指さないNULLデータ。
mallocでオブジェクトを生成させると、そのオブジェクトの住所が入る。
で、temp=head->next;とすると、
[]→[]→[]→[]→[]→[]→NULL
↑ ↑temp
head
となって、headの次のオブジェクトにアクセスできるようになる。

629 :怜派:02/01/15 23:29
>>625
ヽ(`Д´)ノ

630 :626=398:02/01/15 23:47
>>627,628
なるほどぉ。
628のほうは時間が無いので後で考えます(爆)
で、>>398の3番の問題をやりはじめたのですが(2番をちょこちょこいじっただけ)
コンパイルのときにエラーがでてどこが間違ってるのかわかりません・・・
自分で作った関数compはパラメタリストにないと出るのですが・・・

http://www2.nasicnet.com/~hila/repo03.c

631 :デフォルトの名無しさん:02/01/15 23:53
2のプログラムにパイプつけてsortを呼び出すのは、無しなんだろうな‥‥
それはともかく、mainで、中括弧{}がそろってない。
まともなエディタ使ってるか?

632 :デフォルトの名無しさん:02/01/16 00:13
>>623
乗客クラスはいらないんじゃないかな?
次に何階に行くかは、エレベータクラスが情報として持っていればよい。
何階で呼んでいるかは、フロアクラスが持っていればよい。
実際、エレベータに人が乗らなくても、ボタンさえ押せば運行できるわけ
だから、そのほうが自然だと思う。

633 :Riva ◆RivaByXA :02/01/16 00:14
>>630
プログラムはエラー箇所が結構あると思う。
3番のような問題は2番のような線形リストではなく、
二分検索木などを使う。
スタックを使ってもできるかもしれないけど、ちょっと強引かな。

634 :632:02/01/16 00:14
あ、でも、シミュレーションするには必要か・・・

635 :630=398:02/01/16 00:19
てことはもう一回最初からかかないとだめなんですかね・・・?(;´Д`)
明日の朝学校にもって来たいから今日の夜中におわらしたいけど
むりかなぁ・・・・

636 :Riva ◆RivaByXA :02/01/16 00:24
>>635
二分木を使わなくても、
線形リストに加える時に,リストの最後につけるのではなく,
ソートしながら加えていけばできるよ。

637 :Riva ◆RivaByXA :02/01/16 00:29
先頭からstrcmp()を使って比較して、strcmp()の返値が
負になったら、前のデータと、今比較したデータの間に
加えたいデータをつなげる。

638 ::02/01/16 00:31
>>630
まあ、課題だし二分木使わなくても十分でしょう。
とりあえず、if〜elseの中括弧の対応関係がおかしいよ。

あと、一度新しい単語を登録したら、compから抜けようね。

639 :636=398:02/01/16 00:32
二分木はわからないので線形リストでがんばってみます・・・
ところで標準入力でCtrl+ZをおしてもEOFが返されないみたいで、
^Zと表示されるだけでなにも起こらないんですけど・・・
あ、Windowsでの話です。

640 ::02/01/16 00:34
>>639
うーん、どういう環境(コンパイラとかそういうのね)で実行
してるの?

641 :639=398:02/01/16 00:37
http://hp.vector.co.jp/authors/VA009829/ft/etcdown.html
コンパイラこれです。
でもこれエラーが1つずつしか表示されないので別の使うことにします・・・

642 :デフォルトの名無しさん:02/01/16 00:43
>>641
どこまで逝った?
問題2、3のソースを見せて、たのむ!

643 :Riva ◆RivaByXA :02/01/16 00:44
>>641
EOFは大概中括弧の数が合っていない。

644 :デフォルトの名無しさん:02/01/16 00:45
誰か覆面算の解くプログラム作ってください
ちなみに言語はprologかc言語でお願いします

learn+linear+logic=prolog

645 ::02/01/16 00:47
>>639
 ・・・ってソース読んでみたら、これって、標準入力から受け取ってる
んじゃなくて、ファイルから読み込んでるんじゃないの?
 それだったら、何も起こらないのはあたりまえだけど・・・

646 :Riva ◆RivaByXA :02/01/16 00:48
>>int main()
mainの型が宣言されていない。
>>comp(char *cdata,struct data *p)
構文がおかしい。括弧の数などが違う。

647 :641=398:02/01/16 00:56
>>645
え〜と、>>398みてもらえばわかると思いますけど、ほんとは標準入力
からよんでfile1に出力し、そのfile1を読み込みfile2を出し、
またfile1を読んでfile3を出し、最後にfile2とfile3を出力するという
ひとつのプログラムなんです。
標準入力からEOFをかえせないから飛ばしてファイルよむところから
やってるんです。

だいぶ警告減ってきました、もう一息。
>>646
main()にも型の宣言いるんですか?

648 :641=398:02/01/16 01:03
>>642
もしかしてうちの学校の人だったり・・・?
まぁいいや・・・

ぐ・・・コンパイルできたけど出てきたfile3は空っぽ(爆)
http://www2.nasicnet.com/~hila/repo02.c
http://www2.nasicnet.com/~hila/repo03.c

649 :Riva ◆RivaByXA :02/01/16 01:04
>>647
なくてもコンパイルできるけど、関数の前には
型をつける癖をつけておいた方がいいよ。

650 ::02/01/16 01:08
>>648
えっとね・・、
compにはhead->nextじゃなくて、headを渡すべきじゃないかな?

651 :デフォルトの名無しさん:02/01/16 01:12
>>648
神よ!!サンクス!

652 :デフォルトの名無しさん:02/01/16 01:14
>>651
丸写しするとバレルから気をつけな

653 :デフォルトの名無しさん:02/01/16 01:15
>>652
ラジャー♪

654 :648=398:02/01/16 01:15
>>651
やっぱりうちの学校か・・・
2はできたけど3はまだやから。
まぁ何とか今晩中におわらしたい。
あと課題は全部くっつけなあかんやろ?
あと丸写しはせんといて、微妙に変えて使ってくれ・・・

655 :割り込み名無しさん:02/01/16 01:17
while(!p->next){
  n = p->next;
  f = strcmp(n->word,word);
  if(f == 0){   /* 等しい */
    m = makeNewItem();
    strcpy(m->word,word);
    m->next = n;
    p->next = m;
    break;
  }
  elseif(f>0){   /* wordのが小さい */
    m = makeNewItem();
    strcpy(m->word,word);
    m->next = n;
    p->next = m;
    break;
  }
  elseif(f<0){   /* wordのが大きい */
    if(n->next == NULL){
      m = makeNewItem();
      strcpy(m->word,word);
      m->next = NULL;
      n->next = m;
      break;
    }
    p=p->next;
  }
}

struct data* makeNewItem(void)
{
  return (struct data*)(malloc(sizeof(struct data)));
}

リスと入れ替え部分のみだが、こんなんかな?

656 :デフォルトの名無しさん:02/01/16 01:17
誰か覆面算の解くプログラム作ってください
ちなみに言語はprologかc言語でお願いします

learn+linear+logic=prolog

簡単すぎて誰も相手にしてくれないのかな?ほんとお願いします。
覆面算の例でもいいからだれか書いておいてください

657 :654=398:02/01/16 01:17
かぶった。
てかうちの学校何人おるんやろ。
番号!
いーち!

658 :デフォルトの名無しさん:02/01/16 01:20
>656
理論的に、解ける、というので十分かね?それだと、ブルートフォースで終わりだけどな。
矢張り、実用的な時間内に解かないといけない?

659 :割り込み名無しさん:02/01/16 01:21
しまた、

whileの下3行は

  }
  p=p->next;
}

こちらです。

660 :デフォルトの名無しさん:02/01/16 01:21
ブルーとフォースでも一瞬だろ

661 :デフォルトの名無しさん:02/01/16 01:26
>>656
 だから、丸投げすると怒っちゃうって。考え方だけね。
文字の種類は、a, c, e, g, i, l, n, o, p, r
の10種類? 覆面算って全部違う数字である必要があるんだっけ?
だったら、10^10通りの組み合わせを全部試して・・・しまったら
ちょっときついかな。枝狩りをしていくしかないね。
じゃあ、
各桁について、式をたててみようか?
g = (c + r + n) % 10
o = ( (c + r + n) / 10 + r + a + i ) % 10
l = ( (c + r + n) / 10 + r + a + i ) / 10 + a + e + g
みたいな式がたつよね。
これを上から順に決めていくの。

まず、一つ目の式にあうようにg, c, r, nを仮定する。
で、次に二番目の式にあうように、新たに、o, a, iを仮定する。
ここで、上手くo, a, iを定められなかったら、g, c, r, nを決めなおす。
で、次に三番目の式にあうように、新たに、e, gを仮定する。
これが決めれないなら、o, a, iを決めなおし。

で、あと全体の式が合うように、pが定まればいいわけね。

662 :657=398:02/01/16 01:25
>>655
おお、なんか書き方がうまいなぁ・・・

で、内容についてですけど場合わけ3つもいるんですか?
F==0の時はmallocしなくていいのでは・・・?
あと410の怜さんのやり方だと辞書式にあとの単語が出てきたときに処理すれば
いいのでF<0の時だけでいいと思ったんですけど・・・
それはまた別なやりかたなんでしょうか?

僕のやりかたってまったく検討違いなのかなぁ?

663 ::02/01/16 01:26
あ、661に名前入れ忘れちゃった。

664 :デフォルトの名無しさん:02/01/16 01:28
2!

665 :デフォルトの名無しさん:02/01/16 01:29
>657
にーって、俺がいちだな。解けた?
だって解らないからしょーがないじゃん。
オリジナルで覆面算作るのもいがいとできないしさ。

だれかほんとお願いします。

>658
プログラムが必要なんです。ブルーフォース?何ですかそれ。

666 :デフォルトの名無しさん:02/01/16 01:29
653ではないけど僕も同じ学校!に。

667 :デフォルトの名無しさん:02/01/16 01:29
>661
べつにどーでもいい話やけど。
全部違う数字なら、総当たり回数は10!になるんやないの?

668 ::02/01/16 01:31
>>667
うん、書いてから思った・・・

669 :デフォルトの名無しさん:02/01/16 01:33
666訂正三人目。頑張ってるけど全くムズカシー。

670 ::02/01/16 01:34
>>661
あと、
l = ( (c + r + n) / 10 + r + a + i ) / 10 + a + e + g

l = ( ( (c + r + n) / 10 + r + a + i ) / 10 + a + e + g ) % 10
ね。念のため。

671 :割り込み名無しさん:02/01/16 01:36
>>662
>F==0の時はmallocしなくていいのでは・・・?
まったくそのとおりです。脳みそ眠ってました(藁
>・・・いいのでF<0の時だけでいいと思ったんですけど・・・
そうなのですが、もう一度ループまわすのが嫌いなのでそうしました(藁

672 :デフォルトの名無しさん:02/01/16 01:37
枝狩りするならab+cd=efgのとき、e=1しかない、っていうような制限も使えるよね。

673 :デフォルトの名無しさん:02/01/16 01:41
http://pc.2ch.net/test/read.cgi/tech/1011112423/
02/01/16 01:33ってどういうことやねん。

674 :     :02/01/16 01:43
ryuukokutte hisannna gakkou dane puppupu

675 :怜派:02/01/16 01:43
>>398
K&R見ればほとんど答え載ってるんだけどなぁ…。(;´Д`)
持ってないよね…?

676 :デフォルトの名無しさん:02/01/16 01:44
怜さんありがとーございます。
先生は簡単に作れるみたいな事言ってたけどできないんすよ。自分で作ったのを
(例えば haha+titi=ryousin)
と打ったら成り立つか、成り立たないかを判定してくれるHPはあるんですけど意外と成り立たないんですよ。適当に考えても無理なんですかね?
 

677 :デフォルトの名無しさん:02/01/16 01:46
>676
?覆面算をつくるのか解くのか両方か、どっちでもないのか、どれさ?

678 ::02/01/16 01:46
 少し言っておくと、ここのスレに限らずこの板の人は、頑張ろうとして
いる人にはやさしいけど、丸投げクンには冷たいよ。

 覆面算作るのは、適当に式作って、1はnとか適当に決めて各桁の数字を
置き換えるだけでいいんじゃないのかな? 意味をもたせたいなら、辞書
用意しないと無理だしね・・。

679 :657=398:02/01/16 01:46
>>671
m->next = NULL;
って言うところありますけど、新しい単語をmに作って
次のポインタNULLにしたら辞書順に後ろの単語はどこへいくんでしょう・・・?(爆)

ちなみにおいらはryuukokuちゃうますぜ

680 ::02/01/16 01:48
>>676
 んーと入れ違い・・。
 簡単に作れるっていうから、きっと単に意味なくてもいいん
じゃないかな?

681 :デフォルトの名無しさん:02/01/16 01:48
僕もちゃいます。もっと頭悪いとこです(爆)

682 ::02/01/16 01:48
きっと単に→きっと単語に

683 :679=398:02/01/16 01:50
>>675
なにそれ・・・??

684 :デフォルトの名無しさん:02/01/16 01:51
単語適当にって、それなら僕は
send+more=money、base+ball=games
とかの有名問題のことばを入れ替えるだけでできますよね。そんなのでいいのかな〜

685 ::02/01/16 01:54
>>684
あー、自分でってプログラムじゃなくて、手で作るってこと?
それはどうだろう・・・。覆面算の作るコツなんて知らないなぁ・・。
検索したら何かコツみたいなのが引っかかるかも。

686 :デフォルトの名無しさん:02/01/16 01:57
>>683
398 みたいなのは Perl や Ruby で書けば 20 行くらいだと思うが C じゃないとだめなの?

687 :グダングダン割り込み名無しさん:02/01/16 01:59
>>679
strcmpの返り値が逆でした(鬱
(f>0)とf(<0)をそれぞれ逆にしてください。
whileもwhile(!p->next)じゃなくてwhile(p->next)でした。
これじゃループは入れません

で、m->next = NULL;は一番後ろに入れる場合です。
辞書順に入れる場合では、いらない処理です。

688 :Riva ◆RivaByXA :02/01/16 02:10
大学生は今ほとんど期末試験かな?
学期末のレポート提出も近いのか。。

689 :デフォルトの名無しさん:02/01/16 02:14
>>686
>398 みたいなのは Perl や Ruby で書けば 20 行くらいだと・・
まぁ、そうだよね。
だが、それがいい。

690 :デフォルトの名無しさん:02/01/16 02:26
何かいい例が書いてあるHPないですかね。覆面算の

691 :怜派:02/01/16 02:29
>>683
世界一有名なC言語の入門書なんだけど…。(-_-;)

692 :683=398:02/01/16 02:29
うう・・・どうしてもFile3の中身が空っぽになる・・・(;´Д`)
http://www2.nasicnet.com/~hila/repo03.c

>>689
688のいうように学校のCの授業の学期末レポートなんですわ・・・

693 :デフォルトの名無しさん:02/01/16 02:30
成立している覆面算が欲しいなら、適当な足し算を作って、
それを覆面にすりゃいいじゃないか。まぁ、解が1つだけって
保証はないが、ブルートフォースなら、最低1つはみつかるだろ。

694 :デフォルトの名無しさん:02/01/16 02:33
なんつーかな。
compが0返すとき、引数の文字列が、リストに加わらないんだが。

695 :デフォルトの名無しさん:02/01/16 02:35
>>692
とりあえず途中にデバグルーチン入れて見れ。

696 :デフォルトの名無しさん:02/01/16 02:38
>>692
つーか、最初head->nextはNULLだろ?
で、whileいってwhile(p->next != NULL)じゃループは入れないぞ。

697 :Riva ◆RivaByXA :02/01/16 02:39
ヒント
>>while(p->next!=NULL)

698 :692=398:02/01/16 02:44
ああ、そうか!
でもまだおかしい・・・
http://www2.nasicnet.com/~hila/repo03.c
表示結果がこんなんなります・・・
http://www2.nasicnet.com/~hila/FILE3.TXT

>>694
も、もうちょっと詳しく易しくお願いします・・・(爆)

>>695
で、でばぐるー・・・なんですかそれは?(爆)

699 :デフォルトの名無しさん:02/01/16 02:45
>>628みたいに、リストとポインタの絵を髪にかいたらどうだろう?

700 :698=398:02/01/16 02:46
昨日からずっと紙に書きながらやってます、でもできません(;´Д`)

701 :揚げ足鳥:02/01/16 02:46
>>699
職人芸が必要!

702 :694:02/01/16 02:47
in function comp :
strcmpの結果が常に>0で、その結果制御がreturn 0;のところまで来たら、
リストのケツにその文字列を追加しなきゃいけねぇ、って事さ。
そうしないと、その文字列が、リストから、「漏れる」。

703 :デフォルトの名無しさん:02/01/16 02:52
>>698
デバッグ用の処理だべさ。
怪しそうなとこにprintfいれて変数の値を表示させてみな。

704 :700=398:02/01/16 02:56
>>702
ああ、そうか!!
う〜ん、なんとか文字が出てきたけどこんなんなった・・・
http://www2.nasicnet.com/~hila/FILE3.TXT

http://www2.nasicnet.com/~hila/repo03.c

>>703
ああ、なるほどぉ・・・

705 :699:02/01/16 02:59
>>701 わはは、つっこみ所だと思ったよ<髪

>>698 <デバグルーチン
comp()のstrcmp()のところで、なにを比べてるか表示してみたらどー?

706 :704=398:02/01/16 03:14
う〜〜、わっかんねぇ(;´Д`)

>705
F=strcmp(cdata,p->word);
のあとに
printf("%s %s",cdata,p->word);
つけるだけですよね?
なぜかすぐ実行終了してなにも表示されない・・・

707 :デフォルトの名無しさん:02/01/16 03:17
head->'a'->'c'->'d' というリストになってるとするわな。
で、これに'b'を追加する、と。
72行の時点で、pは'c'をさしてるわな。rは'd'。
q->next=r; //'b'->'d',
p->next=q; //'a'->'c'->'b'->'d'
つなぎかたがまちがっているのは一目瞭然やね。

708 :デフォルトの名無しさん:02/01/16 03:24
>>706
まず、おちつけ。

プログラムが始まって、最初のcomp()の呼び出しの時、headとかhead->nextは、なにを指してる?
(これ、前にも書いたな)

709 :デフォルトの名無しさん:02/01/16 03:27
今リストがこうなっているとする(矢印はnext)

[head]→[abc]→[bcd]→[cde]→[efg]→NULL
 p   p->next
     == r

で、比較単語が[def]。
pの中身と比較してるので、1ループ目[head]は素通り、p=p->nextで、[abc]へ
[abc],[bcd],[cde]と比較していって、問題はココ。

[head]→[abc]→[bcd]→[cde]→[efg]→NULL
                    p  p->next
                        == r

ここで、strcmpが<0になるので、新規登録になる。(q)
リストは、

[cde]→[def]→[efg]とならなければいけないが、ソースでは、
q->next=r、p->next=qとなっているので、

[head]→[abc]→[bcd]→[cde]→[efg]→[def]→NULL
                    p  p->next
                        == r

こんなリストができちゃう。

710 :デフォルトの名無しさん:02/01/16 03:44
>>707 ケコーンですか。(ワラ

で、また次に同じ奴が来ると、また変なとこに入ってしまう(count++されない)
なので、出力結果に同じ単語が、count 1でいくつも表示されちゃう。

711 :706=398:02/01/16 03:53
ああ、なるほど!!
図かいてたけど図が間違ってた(爆)

う〜ん、惜しい、もう一息・・・
この結果はfprintfが余分なとこまでいってるってことだろなぁ・・・

http://www2.nasicnet.com/~hila/FILE3.TXT
http://www2.nasicnet.com/~hila/repo03.c

712 :707:02/01/16 03:57
>710
微妙に違う内容の話でないかい?
>709のは、ループ終了条件のバグの話で、
>707のは、リストの挿入につかうポインタのバグの話。

>711
headのmalloc直後の head->next = NULL;を復活させとくように。
それとtempが空のときいcompが呼ばれるのを抑制しとく事。

713 :711=398:02/01/16 04:02
>>712
>headのmalloc直後の head->next = NULL;を復活させとくように。
これがあるとcompのwhileループが回らないのでは・・・?

714 :デフォルトの名無しさん:02/01/16 04:13
それは、>709が指摘したバグだが。

715 :711=398:02/01/16 04:13
あ、そうか!
compとputlistのwhileはwhile(p!=NULL)でいいのか!!
また一歩近づいた!

>それとtempが空のときいcompが呼ばれるのを抑制しとく事。
これをもう少し詳しく・・・

http://www2.nasicnet.com/~hila/FILE3.TXT
http://www2.nasicnet.com/~hila/repo03.c

716 :デフォルトの名無しさん:02/01/16 04:22
>>715
空白が2度続いたりとか、空白改行とかの場合は、temp[0]="\0"のまま
compにとんでしまう。
で、それが登録されてしまう。

717 :デフォルトの名無しさん:02/01/16 04:23
"in ,.\nhello"みたいな文字を喰わせるとどうなるか、という話。
まぁ、headの表示を抑制する事で誤魔化す手もあるだろうが。

718 :デフォルトの名無しさん:02/01/16 04:29
最初にcomp()が呼ばれたときは、head->wordは、どーなってる?

719 :715=398:02/01/16 04:30
ふむふむ・・・

temp[i]='\0';
if(temp[0]='\0');{
F=comp(temp,head
temp[0]='\0';
i=0;
}

こうしても上手くいかないんですけど何ででしょう?
tempが空ってのはtemp[0]='\0'というのとは違うんですか?

720 :デフォルトの名無しさん:02/01/16 04:31
比較演算は==ね。(大丈夫だと思うけど)

721 :デフォルトの名無しさん:02/01/16 04:32
で、temp[0]='\0'なら飛ばしちゃダメです。
temp[0]!='\0'で。

722 :719=398:02/01/16 04:38
おっとタイプミスです。

if(temp[0]!='\0'){
 F=comp(temp,head);
 temp[0]='\0';
 i=0;
}
です。
でも結果がかわらないんですよぉ・・・
最初にへんなのが入ってしまう。
http://www2.nasicnet.com/~hila/FILE3.TXT

723 :722=398:02/01/16 04:40
ああああああ、できた!!
putlist(head)じゃなくてputlist(head->next)だぁ!

残すは4番のみ!

724 :デフォルトの名無しさん:02/01/16 04:47
fp1=fp2=stdin;でおわりやないの(w

725 :デフォルトの名無しさん:02/01/16 04:51
思ったんだが、単語は左揃えのが感じよくない?
(書式固定なの?)

726 :723=398:02/01/16 05:00
4つ目なんか実行したら表示がおかしいなぁ。
でもこれあってますよね?
僕の環境だとなぜか上手くうごかないことがあるんです。
DOS窓が一行分しかなくて大きくしようとしても
横に広がるだけで大きくならない・・・
たまに広がるんだけど(爆)
http://www2.nasicnet.com/~hila/repo04.c

>>725
確かにそうですね、どうするんでしたっけ?(爆)

727 :Riva ◆RivaByXA :02/01/16 05:02
>>726
頑張ったね。おつかれさん。

728 :デフォルトの名無しさん:02/01/16 05:06
>>726
それがDOS窓というもの(ワラ

729 :怜派:02/01/16 05:11
>>726
最初のほうが表示されてないって事でしょ?
出力が80行を超えるからだね。
DOSだとgetch()を使って表示を止める事ができるけど…。

730 :デフォルトの名無しさん:02/01/16 05:14
>729
つか、DOSやろ。LCC試食版でコンパイルしてるし。

731 :怜派:02/01/16 05:15
間違えた…。
24行だった…。
鬱…。

732 :デフォルトの名無しさん:02/01/16 05:18
>>398よよくがんばった、褒美にこれやる!とっとけ。

http://www7.ocn.ne.jp/~helpme/flash/chinko.swf
http://www7.ocn.ne.jp/~helpme/flash/chinko_anesan.swf

733 :Riva ◆RivaByXA :02/01/16 05:18
指定行出力したら、
press enter key to continue..
みたいに入力を求めるようにすれば??

734 :怜派:02/01/16 05:18
>>730
一応、学校ではUNIXらしいからどうかな…、と思って。
僕はUNIXほとんど知らないけどgetch()みたいな関数あるの?

735 :デフォルトの名無しさん:02/01/16 05:23
fgetsで改行まてばええやん。

736 :怜派:02/01/16 05:24
>>735
ごめん、そうだったね。

737 :Riva ◆RivaByXA :02/01/16 05:25
>>726
for(int i = 0; (i < 1) && ((ch = getchar()) != EOF) && (ch != '\n');i++ );
↑一文字入力待ち。こんなのでもいいよ。

738 :723=398:02/01/16 05:30
いやぁ、おかげさまでなんとか>>398の問題終わることができました!
後はあお4つをひとつにまとめるだけ・・・
教えてくれたみなさん、ほんとありがとうございました!!

>>732
素敵なご褒美ありがとう(笑)

>>737
今日はもうこんな時間な上、明日はやく学校行かないと閉まるので
余裕があったら明日考えてみます(^^;

739 :Riva ◆RivaByXA :02/01/16 05:31
頭混乱してた。。。

740 :Riva ◆RivaByXA :02/01/16 05:33
>>738
>>737の書き込みは気にしないでおくれ。

741 :735:02/01/16 05:34
>737
それってch=getchar()とどうちがうわけ?

742 :Riva ◆RivaByXA :02/01/16 05:36
>>741
配列構造に取り込む時に使うソースだった。。。(^^;

743 :連立方程式が解けません・・:02/01/16 05:48
ガウスザイデル法は解ける係数行列が限られるみたいですね。

744 :Riva ◆RivaByXA :02/01/16 06:02
>>738
for(int i = 0; (i < 256) && ((ch = getchar()) != EOF) && (ch != '\n');i++ );
一応、書いてしまったので、何を言いたかったのか書いておきます。(^^;
getchar()で文字を待つ場合、ユーザが間違って1文字以上の文字を入力すると、
例:)aaa[enter]
それがストリームに残ってしまうので、次のストップがとばされたりします。
そこで、常にストリームを空にするために上のようなコードにします。
ただし、256文字以上一度に入力があったらバグがおきるので注意。
参考までに。

>>735さんのfgetsが一番いいと思う。

745 ::02/01/16 09:23
>>398
昨日は寝ちゃってたんだけど、完成したのね。
頑張ったね。お疲れ様。

746 ::02/01/16 09:28
>>743
 とりあえず、>>601でも書いたけど、基本的に解があれば前処理を
すれば、解けると思うよ。
 係数行列の対角成分のうち、どれか一つでも0となるといけないの
ね。これは行を入れ替えることで対処できるわ。例えば
1 2 3  X1   1
4 0 6  X2 = 2
7 8 0  X3   3
って、式は
4 0 6  X1   2
7 8 0  X2   3
1 2 3  X3   1
と、等価よね?

こうすることによって、解ける形にするんだと思うわ。

747 :連立方程式が解けません・・:02/01/17 04:41
なるほど

748 :デフォルトの名無しさん:02/01/17 10:14
こういう輩がのうのうと単位を取って卒業してくるのか・・・


749 :デフォルトの名無しさん:02/01/17 13:40
>>748
友達のを丸写しするよりよっぽどマシだよ。

750 :デフォルトの名無しさん:02/01/18 01:02
宿題はここで聞けage

751 :デフォルトの名無しさん:02/01/18 02:05
>>749
少なくとも、何処で質問すればよいかを知っているのは重要。
まぁ2chってのもアレだが。
自分でやってみようという根性すらない学生の方が最近多いYO!


752 :デフォルトの名無しさん:02/01/18 12:07
>>411
ちょうど卒研で同じことやってるYO!
ただ、俺はJavaだけど…。
皆が言ってるみたいにStepとかは考えてないけどね。
ただスレッド使ってsleep()で制御してる…。


753 :超初心者:02/01/18 13:27
疑問に思ったことです

while(scanf("%d",&a)!=EOF)

これは『^Dが「入力されない間」繰り返す』ってことですよね…
(ここがすでに自信ないんですけど)

これを for でやってみようと思って

for(i=1; i<100; i++)   /* 仮に百回繰り返すことにして */
{
  scanf("%d",&a);
  if(a==EOF) break;
}
  
としてみた所、いくら^Dを入れてもループを抜けなくなりました。
んで、ためしに

  scanf("%d",&a);
  printf("a = %d",a);
  if(a==EOF) break;

としてみて、「a」に格納された数値を出力して見れるようにしてみて、
実行してaに^Dを入力すると、

a=10640000 (間違ってると思いますけどこんな感じの数字)

とでて来ました。EOFってたしか -1 ですよね。
これだったらたしかにif(a==EOF) break;にしても、^D(=1064000)
とEOF(=-1)は等しくならないから、if=「真」 にはならなくて、breakしないのはわかります。
でも上の while(scanf("%d"),&a!=EOF) で^Dを入れたらループを抜けるのは
^D!=EOFでwhileが「偽」、つまり^D==EOFになるからループを抜けるんですよね

なぜfor〜if() breakに書き換えた時に^d=1064000になって、ループを抜けれなくなたのでしょうか
ただのコンパイラのエラー?

754 :日下部圭子 ◆ib749tYo :02/01/18 13:35
In article >>753, 超初心者/753 wrote:

> for(i=1; i<100; i++)   /* 仮に百回繰り返すことにして */
> {
>   scanf("%d",&a);
>   if(a==EOF) break;
> }

これはこうですね。

int res;
for(i=1; i<100; i++)   /* 仮に百回繰り返すことにして */
{
  res = scanf("%d",&a);
  if(res==EOF) break;
}

# っていうか、scanf()つかうプログラマはドキュソ決定

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------


755 :超初心者:02/01/18 13:46
ありがとうございます。
sacnf()全体==EOF
なんですね…
式よく見たら確かにそう書いてあるような気が…

ついでにもうひとつだけお願いします
教科書にはscanfが最初に載ってるんですけど、
これは普通は使わないものなんですか?
別の所でもお薦めしないといわれました
超初心者ということですいません。
聞く人周りにいないんで…

756 :日下部圭子 ◆ib749tYo :02/01/18 13:54
In article >>755, 超初心者/sage/755 wrote:

> 教科書にはscanfが最初に載ってるんですけど、
> これは普通は使わないものなんですか?

http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C-faq-12.html
このページの12.20を参照のこと。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

757 :超初心者:02/01/18 14:15
今さらっと見てきました。
ちょっとそこに書いてること実際にやってみて確認しないとまだ
理解できないレベル(僕が)なんですが、
(知らない単語も結構あったし)
一般的にscanfは扱いにくいということに
なってるんですね。
もう一度後で詳しく見てこようと思います。

ありがとうございました。

758 :デフォルトの名無しさん:02/01/18 17:28
>>752
エレベータの問題を普通に課題として出されたんだけど…

759 :デフォルトの名無しさん:02/01/18 18:41
すいません ヒントください




760 :デフォルトの名無しさん:02/01/18 18:44
>759
何のヒントですか?つか、あなただれですか?

761 :怜派:02/01/18 19:28
>>759
>>760
2人のやり取りを見て不覚にもワラタよ。

762 :デフォルトの名無しさん:02/01/18 21:56
>>759
すげー気になる、何のヒントなのかせめてヒントくらいくれ ヽ(`Д´)ノ

763 :デフォルトの名無しさん:02/01/18 23:34
怜たんの姿が薄く消えていく・・・。
麻衣たんの姿も消えていく・・・。

ひげずらおやじも冬には弱いか・・・。

日下部さんはたくましい。


764 :デフォルトの名無しさん:02/01/19 00:00
怜たんは消えてないとは思うが・・・。
新スレたったら、また新キャラ登場するのかな?

765 :ビル・ゲイツ:02/01/19 00:05
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /
    ゝ   /ヽ───‐ヽ /  /
     /|ヽ   ヽ──'   / <  麻衣たん、私の家にこないか?(;´Д`)ハァハァ
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄




766 :デフォルトの名無しさん:02/01/19 00:08
ピッ!   ∩∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ミ,,・∀・ミ <  怜たん! とっとこヒントください!
       ミ " "ミ    \______________
\ ̄ ̄ ̄ ̄ ̄U ̄ ̄\
 ||\            \
 ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
 ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
    .||              ||


767 ::02/01/19 00:11
>>766
ごめん、私にもヒントくださいー。

768 :ビル・ゲイツ:02/01/19 00:11
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /
    ゝ   /ヽ───‐ヽ /  /
     /|ヽ   ヽ──'   / <  圭子たん、マイオフィスにこないか?(;´Д`)ハァハァ
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


769 :ビル・ゲイツ :02/01/19 00:14
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /
    ゝ   /ヽ───‐ヽ /  / 怜たん、前スレのお兄ちゃんより
     /|ヽ   ヽ──'   / <  私の方が頼もしいだろう?
    / |  \    ̄  /   \良かったらマイホームに来ないか?(;´Д`)ハァハァ
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


770 :ビル・ゲイツ:02/01/19 00:20
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /bool reitan_is_my_lover=true;
    ゝ   /ヽ───‐ヽ /  / while(reitan_is_my_lover)
     /|ヽ   ヽ──'   / < cout<<"怜「あっ、ゲイツさん・・・あ、はあッ・・・」\n";
    / |  \    ̄  /   \//(;´Д`)ハァハァ怜たん・・・
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


771 :デフォルトの名無しさん:02/01/19 00:44
象印クイズヒントでピント。
まずは16分割の問題です.


772 :デフォルトの名無しさん:02/01/19 00:59
最初から16分割かい!>>771

773 :ビル・ゲイツ:02/01/19 01:03
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ />>770
    ゝ   /ヽ───‐ヽ /  / すばらしいソース。
     /|ヽ   ヽ──'   / < 実行可能ファイルにしてVS.netの
    / |  \    ̄  /   \サービスパックに入れることにしよう。
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


774 :デフォルトの名無しさん:02/01/19 01:05
>>773
それするとコメント文が・・

775 :デフォルトの名無しさん:02/01/19 01:05
あ、xyzzyのキーボードマクロの人だ。

776 :ビル・ゲイツ:02/01/19 01:20
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /早速実行可能ファイルを作成した。
    ゝ   /ヽ───‐ヽ /  / WinMXでダウンロードしてくれるといい。
     /|ヽ   ヽ──'   / < UserNameはBill_Gates、ファイル名は怜たんハァハァ・・・だ。
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

777 :デフォルトの名無しさん:02/01/19 02:00
ビルゲウザイ
コピペ荒シageヤメレ

778 :ビル・ゲイツ:02/01/19 02:05
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /
    ゝ   /ヽ───‐ヽ /  / すみません。もうやめます。
     /|ヽ   ヽ──'   / <
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


779 :デフォルトの名無しさん:02/01/19 10:39
ハリポッターの主人公ってビル・ゲイツに似ていない?

780 :日下部圭子 ◆ib749tYo :02/01/19 10:42
In article >>779, デフォルトの名無しさん/779 wrote:

似てません(^^)
ゲイツなんかと一緒にしないでください。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

781 :デフォルトの名無しさん:02/01/19 11:02
>>782
元気か?

782 :デフォルトの名無しさん:02/01/19 14:46
>>781
まあぼちぼち。

783 :デフォルトの名無しさん:02/01/19 14:56
>>782
優しいね

784 :き、期限が…:02/01/19 17:54
はじめまして。
Cでアプリケーションを作りたいのです。
作りたいと思っているのはファイルマネージャです。
でも何からはじめたらイイのかぜんぜん分かりません。
まず何を勉強すればいいのでしょうか?
できれば25日までに作りたいので、皆様すこしずつ教えてください。
二次方程式を解くプログラムぐらいまでならいました。


785 :き、期限が…:02/01/19 18:01
持たせたい機能は在るフォルダ以下すべてのフォルダから
ファイルを取り出して種類ごとにソートするというものです。


786 :怜派:02/01/19 18:03
>>785
OSは?

787 :き、期限が…:02/01/19 18:48
うごかしたいOSはWIN98です。
作る環境は以下のページの
C言語を始めよう!という物に
ボーランド++c5.5です。


788 :デフォルトの名無しさん:02/01/19 19:48
ファイルを取り出してソートするだけなら余裕だが、
それをユーザにどう見せるかが問題だな。
>>785の技術知識で、bcc55でGUIを0から作ってたら、数ヶ月はかかる。

789 :怜派:02/01/19 20:49
>>787
どうでもいいけどコンパイラ名がメチャクチャだね(藁
CUIならそんなに難しくないと思うけど。
>>788さんの言うように、GUIだと数ヶ月かかるかも…。

790 :デフォルトの名無しさん:02/01/19 20:57
BCC55って リソースワークショップ付いてるの?
 付いてるなら Windowsコントロールでまにあわせるというのはダメ?

791 :き、期限が…:02/01/19 21:05
すみません、コンパイラのインストールの途中で
AUTOEXEC.BATファイルの書き換えに失敗して
使おうとしてたノートが起動途中のDOS画面から先に進めなくなってしまって。

で、GUIなら無理っぽいですが、
ファイルを取り出してソートするところを教えてください。



792 ::02/01/19 21:08
>>791
とりあえず、再帰ってわかる?
ポインタとかリスト構造はわかる?

793 :き、期限が…:02/01/19 21:24
ポインタはわかりますが、他は?

794 ::02/01/19 21:25
 とりあえず、Windowsでフォルダ以下にある、ファイル名を取得する
方法探してみたので参考までに。
ttp://members.tripod.com/~masapico/api_FindFirstFile.html

実は私、Windowsでのこういう操作って、MFCでしかやったことないの
よね・・。ボーランドのも使ったことないのよね・・。

子フォルダの仲間では探索してくれないから、再帰とか使って全部のフォルダ
探すようにしてね。

795 ::02/01/19 21:29
>>793
 再帰というのは、関数の中から同じ関数を読み出すような事ね。
 で、リストっていうのは、まあリストなんだけど。
 ソートするためには、一度そのフォルダの下にある全部のファイル
を調べて覚えないといけない。これをどういった形式で記憶しとくか
というのが問題になるよね?
 大きな配列を作ってもいいし、あとはリストを使うか・・ってこと
になるんだけど・・・。

796 :き、期限が…:02/01/19 21:32
なるほど、大変そうな予感。

797 ::02/01/19 21:41
私も同じ予感がするわ・・・

798 :ぁぉ:02/01/19 21:41
初心者が超初心者をバカにしながらオナニーするスレはここですか?
うぜぇから地下でやれよ。

799 :き、期限が…:02/01/19 21:46
実はこれCでなんかアプリケーションをつくれっていう課題なんです。
でファイルマネージャを作ってみようかと思ったんですが。
こんなに大変だとは。 あーどうしよう。


800 ::02/01/19 21:46
>>798
 いや、地下でやったら初心者ここにたどり着けないから・・。
単発質問スレ&他スレに初心者流出を防ぐために、このスレだけ
は大目に見て欲しいな。

801 :き、期限が…:02/01/19 21:55
すみません、もう一度考え直してきます。
怜さんありがとうございました。


802 ::02/01/19 21:56
>>801
頑張ってねー

803 :怜派:02/01/19 22:41
>>801
またなにかあればいらっしゃい。

804 :(;´Д`) :02/01/19 23:23
>Cでなんかアプリケーションをつくれっていう課題なんです。
XORによる暗号化プログラムなんて簡単だしいいかも。


805 :デフォルトの名無しさん:02/01/20 00:38
多機能の便利ツールよりは、>>804 みたいに
ある用途に特化した単機能ツールのほうがいいな。

入力と出力をファイルにして、何かのコンバートを行う
というのがよさげ。

806 :き、期限が…:02/01/20 00:56
先程はどうも。やっとマイPC復活しました。
 >xorによる暗号化プログラム。
うーん、個人的に欲しいかも。ウィンで使えるのが前提ですが。
 つか、友達とかはゲーム作るなんて言っているのですが、
自分としてはどうせなら自分が欲しい機能だけもったソフトを作りたくて。

>>805、804さんのような考えで前述の構想にたどり着いたのですが
機能は単純でも自作は到底無理でした。
ある用途に特化した単機能ツールって言うのは
僕のイメージしていた物に良くあっています。
MYPCのメモリが64Kなので複雑かつ多機能なのは勘弁です。
例えば、極窓なんか複数ファイルの拡張子orファイル名の
一括変換にしか使ってないですし。
うーんまた考えてきます。それにしてもみなさん親切です。感謝!

807 :デフォルトの名無しさん:02/01/20 01:18
>>806
64K?(いつのPCだよ)
64Mの間違いだよね?(それともDOSのプロテクトメモリのこといってるの?)

808 :き、期限が…:02/01/20 01:42
ま、間違えてる
逝って来ます。

809 :デフォルトの名無しさん:02/01/20 01:49
>>806
DOSプロンプト上で入力ファイル名入力→出力ファイル名入力→処理
っていうくらいでいいんじゃないの?最初は。
何にも考えずにscanf使ったりとかでも最初はそれでいいと思うけど。

810 :デフォルトの名無しさん:02/01/20 12:01
期限さん、ネタ差し上げます。ずばり、mp3ファイルのID3v1タグの
エディターです。巷のタグエディタより低機能にすれば、これほど簡単なものはない。
まず、mp3ファイルをバイナリエディタで覗いて仕様でも考えてください。

811 :デフォルトの名無しさん:02/01/21 00:06
ビットマップファイルのヘッダーを削るプログラムでも作っとけ。


812 :759:02/01/21 16:06
C++で、STGの敵を出すプログラムはどんなのがあるんでしょうか。

813 :デフォルトの名無しさん:02/01/21 16:55
IEnemy *e=getEnemyCreator().create(ENEMY_TYPE,this);
e->InitialPos(x,y);
e->Show();

814 :デフォルトの名無しさん:02/01/21 17:07
>>813
説明キボーン

815 :ジョージ:02/01/21 18:15
1/100圧縮を実現するにはどうしたらいいですか?
ヒントください。

816 :つらい:02/01/21 20:17
Cプログラミングの宿題を見てほしいのですが、、、

817 :デフォルトの名無しさん:02/01/21 20:24
1バイトを8ビットに展開するいい方法無いですか?
頭に浮かぶのはビットシフトなんですが、何か効率悪くて。。。

818 :デフォルトの名無しさん:02/01/21 20:49
>>817
>1バイトを8ビットに展開する

?
どういうことかわからん。

819 :デフォルトの名無しさん:02/01/21 20:49
1バイト=8ビットな場合は、展開するもなにも、そのままで良いと思いますが。

820 :デフォルトの名無しさん:02/01/21 21:10
すみません。
使用している環境では1バイト=10ビットなんです。
配列などで、これを8ビットに直したいんです。

821 :デフォルトの名無しさん:02/01/21 21:12
余った2bitはどうするのさね?
1111111111 1111111111...
11111111 11111111 1111...
ってとか?

822 :デフォルトの名無しさん:02/01/21 23:07
テキストファイルを圧縮してみたいのですが、
圧縮アルゴリズムには、どういうものがありますか?
有名な名前とかあれば、よかったら教えていただけないでしょうか・・・
名前が分かれば検索して調べます

823 :デフォルトの名無しさん:02/01/21 23:12
ふつーzlib。
ひょっとして、圧縮したまま検索がかかるような
特殊な圧縮方法探してる?

824 :デフォルトの名無しさん:02/01/21 23:17
おっと失礼。アルゴリズムをしりたいんだな。
BlockSort, LZ77 LZW, PPM法
HUFFMAN符号化、算術圧縮, Range Coder,
あたりを調べるよろし。

825 :822:02/01/21 23:26
>>823
ありがとうございました。
zipに使われているものなんですね。
中身を解説してくれているページはまだみつけていませんが、
なんとか調べてみます。

努素人なので、単純なもので十分です。

826 :822:02/01/21 23:28
>>824
さっそく逝ってきます

827 :デフォルトの名無しさん:02/01/21 23:36
>>820
それは10桁の数を8桁に直したいといってるようなものだぞ。
1000000000をどうやって8桁であらわせるんだ?

828 :820:02/01/22 00:07
>>821,827

ご、ゴメン!
817!=820なんだわ。
あんまり意味不明な質問なんでついふざけてしまった・・・。
まさかそんなやさしいレスがつくと思わなかった。

多分もとの質問は1バイトを2進数で表示したいって事だと思う。
でも効率が悪いと思うならまずその効率が悪いらしいアルゴリズムを提示すべきだと思うぞ>>817
その方法が最良かもしれないしな。
それにそうしてればこんな状況(俺のせいだけどな)にもならなかっただろうよ。

829 :初心者?:02/01/22 00:38
只今、8人の女王の配置プログラムに奮闘中!
どうやった方が一番効率良く完成できるでしょうか?
一応、僕は永遠とfor分でプログラム中っす!

830 :デフォルトの名無しさん:02/01/22 00:43
>>829
メモリに余裕あるなら、再帰。

831 :817:02/01/22 01:13
えーっと、何とか解決しました。

しかし、言葉が足りなかったようで、すませんっす。
要は、16進数(1バイト)を2進数(8ビット)に展開するやつです。(と言うより変換ですか?)
初めて再帰呼び出し(かな?)をやりました。

じゃー、質問を変えて。。。
1バイトに工夫してビットを突っ込もうとしたら
どれくらい入りそうですか???
15は入りそうなんだけど。。。

>>820
そうか、提示かぁ・・・。
以後気をつけます。ありがと。

832 ::02/01/22 01:23
えーっとね・・えーと。
16進数=1バイトじゃないのよね。
1バイト=8ビットね。
だから、2~8種類を表せるの。

で、1バイトが16進数の2桁で表されるのを見て16進数(1バイト)
とか書いたのだろうけど、それは、16*16 = 2^8だからね。
例えば、16進数でA7っていうのは2進法で表すと10100111なの。
Aっていうのは1010 7っていうのが0111だからね。
だから、1バイトにビットを突っ込む(って言い方がよくわか
らないけど)としても、8つしか無理だと思うな。

833 :デフォルトの名無しさん:02/01/22 01:24
>831
まずですね、n進数とバイトとビットについて、
もっと一般的な意味をしらべてから質問してみてはいかがでしょう?


834 :817 :02/01/22 01:51
ことの発端はある時ふと思いついた素人的新圧縮法です。
しかし、道はメチャクチャ遠そうです。

うんで考え方は簡単。
1バイトに’工夫して'8ビット以上詰め込めたら圧縮できるよなー・・・、って
これって根本的に無茶ですか?

835 :デフォルトの名無しさん:02/01/22 01:53
>>829
手作業でやったらできちゃったよ(;´Д`)
対称を抜くとこれって何パターンあるの?
さすがに2パターン目は見つける気がしない。

836 ::02/01/22 01:55
>>834
可逆圧縮でどんなデータにも対応させたいなら無理です。

837 :デフォルトの名無しさん:02/01/22 01:56
>>834
とりあえず情報理論の本の一冊くらい読んでくれ。
これが簡単なのでお奨めだ。

わかりやすい ディジタル情報理論
http://www.ohmsha.co.jp/data/books/contents/4-274-13138-6.htm

838 :デフォルトの名無しさん:02/01/22 02:02
> 1バイトに’工夫して'8ビット以上詰め込めたら圧縮できるよなー・・・、って
> これって根本的に無茶ですか?
再帰的に適用してみろや。工夫して8bit以上つめこんだ1byteを、
また工夫して、8bit以下にできるか、っちゅうねんな。
無限に適用すれば、すべての情報が1byteで表現できることになるだろうが。
http://pc.2ch.net/test/read.cgi/tech/1010674540/483

839 :デフォルトの名無しさん:02/01/22 02:05
1/100の可逆圧縮はどうなった?

840 :817:02/01/22 02:35
うむぅ。。。無理ですか。
残念です。


>>837
その本ホントにわかりやすいですか?(その手のは微妙なのもあるんで。)
お墨付きいただけるなら探してみます。

>>838
極端に言えばそうですよねぇ。
うむぅ。。。

みなさん、解答ありがとうございました。

841 :デフォルトの名無しさん:02/01/22 02:45
>>840
つか、どの圧縮法も
「圧縮後の1バイトに工夫して圧縮前の1バイト以上を詰め込んでいる」
1バイト以下だと膨張法だからな

842 :デフォルトの名無しさん:02/01/22 02:48
>>831
1バイトに工夫して15ビット入れる具体的な方法の説明を、切に、切に願う。

843 :デフォルトの名無しさん :02/01/22 02:59
>>842
できないと出た素人論法を何に使うの?
838の言うとおりだと思うが。

844 :デフォルトの名無しさん:02/01/22 03:04
>>841
混乱するといけないから「平均すると」を入れといてやってくれよ。

845 :(;´Д`) :02/01/22 04:27
>>840
>その本ホントにわかりやすいですか?(その手のは微妙なのもあるんで。)
ビットやバイトの定義もまともに解ってないのによくそんなこと言えるな。
プログラム組んでいく前に情報の基礎でも勉強したらどうだ?


846 :デフォルトの名無しさん:02/01/22 04:33
>>840
ファインマン計算機科学が良い
http://www.iwanami.co.jp/.BOOKS/00/6/0059410.html

847 :840:02/01/22 05:27
>>845
解りやすいと思うなら、素直に胸を張って解りやすいと一言欲しかった。(別の人かな?)
私は2千円とか、パっと出せるほど裕福でも無いのです。
しかし、気に障ったようなら謝ります。
失礼いたしました。

848 :(;´Д`) :02/01/22 06:07
>>847
別の者だよ。

俺が言いたかったのは、情報の基礎もまともに知らないのに、
よく(その手のは微妙なのもあるんで。)なんて言えたな、ということだ。
「微妙なものもある」なんて体験的なことを言えるのなら、
すでにそういう系統の書籍を読んでいなくてはおかしい。
ならば情報の基礎くらいはすでに学んでいるはず。
なのに解っていない。これはどういうことだ?と、いうことだよ。

849 :840:02/01/22 06:11
1バイトに15個入れるに至った経路。(できないことは>>838をみれば解る。
・1バイトは256、つまり256個の情報が詰め込める。
・オンオフを表現すると128個が限界。
・つまり、1バイトに数を保存するのでは無くて、各ビットがオンだったかオフだったかを保存する。
・8ビットひとまとめには考えない。合計256という制限を活用する。
・色々思案すると、15くらいはいけそうだ。
・私ウキウキ・・・。(吐血
>>838に切り出しのことを言われ死。

・・・以上。


850 :デフォルトの名無しさん:02/01/22 06:14
>>848
つまりその「微妙なもの」に引っかかって理解できなかったのではないかと考えてみるテスト。

851 :840:02/01/22 06:16
>848
あ、そのニュアンスが伝わらなかったのか。
すいません。
えーっとですね、この世にたくさん存在する「わかりやすい」本って
みても「わかんねーよ」って突っ込むのが(私の場合)結構あるんですよ。
で、お墨付きって言葉を使ってみたんですが、逆効果でしたか・・・。
失礼しました。

852 :(;´Д`) :02/01/22 06:25
>>850
「微妙なもの」に引っかかって、8ビット=1バイトという定義も
覚えられないことはないと思われ。

853 :デフォルトの名無しさん:02/01/22 06:28
> ・1バイトは256、つまり256個の情報が詰め込める。

ここが陥りやすいところだな。
俺も始めはそう錯覚した。
256という”1つの”数字をあらわすのと”256個の”情報を表すのではまったく意味が違う。

854 :840:02/01/22 06:31
>>850
そのようですね・・・。
言葉が足りなくなるのは悪い癖です。
精進するため、逝ってきます。
はぅ・・・。

おまけ。
>849の考え方を実現してくれる有志を募集。
もうヤケです。(笑

855 :デフォルトの名無しさん:02/01/22 06:42
>1バイトに15個入れるに至った経路
表現の仕方が良くない。それでは意味のある15個の情報と取れる数値を
1バイトの領域に格納する、というように取れてしまう。


856 :デフォルトの名無しさん:02/01/22 06:46
>>840タン(;´Д`)ハァハァ・・・


857 :デフォルトの名無しさん:02/01/22 08:08
> ・オンオフを表現すると128個が限界。
ここダウト。1byteでon-offとして表現できるのは8個。
だから、
> ・つまり、1バイトに数を保存するのでは無くて、
>各ビットがオンだったかオフだったかを保存する。
は、テンで意味をなさない。(その文の前後は同じ意味だから)

858 :デフォルトの名無しさん:02/01/22 08:43
>・1バイトは256、つまり256個の情報が詰め込める。
ここですでにダウト。256種類のうちの、どれか1つを表せるだけ。

859 :デフォルトの名無しさん:02/01/22 09:30
画像データ の  あるパターンの周波数 だけを抽出し、
そこを いじくりたい場合、 フーリエ変換か ウェーブレット変換を
使うのだと思うのですが、  数学に対してあまり知識が
ない私は 理解できませんでした。

なので どのような手順でやれば できるのか教えていただけませんでしょうか?



860 :デフォルトの名無しさん:02/01/22 10:00
>>859
数学勉強するのが一番いいと思われ。
ディジタルデータに対して周波数解析するんだったら、
DCT か FFT 使うな。
ウェーブレットは位置(時間)情報と周波数情報を同時に必要なときに使う。


861 :812:02/01/22 10:14
すいません。誰か答えてください


862 :デフォルトの名無しさん:02/01/22 10:53
をを、>>861=>>812=>>759=「すいません ヒントください」か!!
元気だったか??

863 :デフォルトの名無しさん:02/01/22 12:25
ある10進数の数値を入力したら32ビット長の固定小数点数や浮動小数点数、
JIS方式のゾーン型2進化10進法、パック型2進化10進法などに変えてくれる
プログラムとかってありませんか、たすけてください

864 :デフォルトの名無しさん:02/01/22 12:30
>>862
はい。こんにちは。あんまし元気じゃないっす
今風邪気味。げほげほ

865 :お願い・・・、ガク。:02/01/22 12:33
誰かオイラーの公式をCで作って〜〜〜〜〜。お願いだ〜〜〜〜。ヘルプミー---。そこのあなた。簡単だからって笑わない!
オネガイシマスダ---。

866 :デフォルトの名無しさん:02/01/22 12:36
>>863
10進->浮動小数点
float f;
scanf("%f", &f);

867 :デフォルトの名無しさん:02/01/22 12:46
他人に車を運転させて免許とろうって奴ばっかりだな。

868 :デフォルトの名無しさん:02/01/22 12:57
>>865
知らないようだから、教えてやるが、そういうのを丸投げという。
少しは調べれ。ネタだったら他をあたれ。

869 :デフォルトの名無しさん:02/01/22 13:20
すいません、教えてください。
宿題で、C曲線かゴッホ曲線かドラゴン曲線か、ヒルベルト曲線のどれかひとつのプログラムを作れと
宿題が出されました。
誰がご教授、または参考になるHPを教えてください。

870 :デフォルトの名無しさん:02/01/22 13:22
>>869
だから検索しろって。

871 :869:02/01/22 13:24
>>870
どこで検索するのがよいのでしょうか?
あと、プログラムをそのまま載せているHPってあるんですか?

872 :デフォルトの名無しさん:02/01/22 13:27
>ヒルベルト曲線
どうやったら描画したことになるんだ?

873 :869:02/01/22 13:30
>>872さん
Turtle Graphicsを使って描くようです。
いまいち原理が分からなくて。

874 :デフォルトの名無しさん:02/01/22 13:42
>>871
なんでそのまま載せている必要があるんだ?

875 :デフォルトの名無しさん:02/01/22 13:43
>>871
検索すれ

876 :869:02/01/22 13:45
>>874-875
どうやって検索したら良いかわからないんです。
どうかご教授ください、

877 :デフォルトの名無しさん:02/01/22 13:47
>>876
まず検索の方法を検索したほうがいいと思われます。

878 :869:02/01/22 13:48
そうでなくて、良いHPが見つからないんですよ。

879 :デフォルトの名無しさん:02/01/22 13:50
もしかしてLOGO?

Cだったらコッホ曲線とドラゴン曲線のソースがこれに入ってるな
http://www.vector.co.jp/soft/data/prog/se002453.html

880 :869:02/01/22 13:51
>>879
C言語の授業なんですけど、よく分からないんですよ。
助けてください。

881 :869:02/01/22 13:53
「CLEOS」ってのを使ってるみたいです。



882 :デフォルトの名無しさん:02/01/22 14:01
>>878
好きなだけ検索しろ。

http://www.google.co.jp/
http://www.yahoo.co.jp/
http://www.goo.ne.jp/
http://www.infoseek.co.jp/
http://www.lycos.co.jp/

だれにネットの使い方を教わったか知らないけど、
2chよりまず検索の方法を教えてもらえ。

883 :869:02/01/22 14:02
いろいろ検索したんですけど、載ってるHPがないんですよ。
載ってたとしてもjavaとか使ってるみたいですし。

884 :デフォルトの名無しさん:02/01/22 14:03
>>879 >>879がCのソースっていってるじゃん
そのものズバリ答え教えてもらっといてアフォか?

885 :869:02/01/22 14:04
実は今授業中で、DLできないようになってるんですよ。
だから、まだ確かめてなくて…。
ご指摘ありがとうございます。

886 :デフォルトの名無しさん:02/01/22 14:08
次はコンパイルできませんと質問してくるに一票。

887 :869:02/01/22 14:12
コンパイルってなんですか?

888 :デフォルトの名無しさん:02/01/22 14:14
盲点だったな。

889 :869:02/01/22 14:20
ってか>>879をDLして解答すればよいんですよね?
ありがとうございます!

890 :見事な攻撃だタケちゃんマン!:02/01/22 14:21
>>887 ワラタ

891 :デフォルトの名無しさん:02/01/22 14:22
>>869
>ゴッホ曲線
芸術っぽい(笑)

892 :869:02/01/22 14:24
あ、コッホでしたね・・・

893 :869:02/01/22 14:37
#include"turtle.c"
void koch(double,int);

void main(void){

int i;

InitTurtle();

for(i=0;i<6;i++){
X=320;
Y=240;
koch(270,i);
getch();
G_CLS();
}
}

void koch(double L,int n)
{
if(n==0)
{
FD(L);
}
else
{
koch(L/3,n-1);
LT(60);
koch(L/3,n-1);
RT(120);
koch(L/3,n-1);
LT(60);
koch(L/3,n-1);
}


これがコッホ曲線のらしいんですが、
こーゆーのが>>879で出るのでしょうか?



894 :デフォルトの名無しさん:02/01/22 14:53
クラスカルのアルゴリズム(C言語で実現:最小木をもとめる)を、
連結リストを用いて実現するにはどうしたら良いでしょうか?

ポインタからやり直します…鬱

895 :894:02/01/22 15:08
ぐあ…検索でいろいろ引っかかりました(汗)
クラスカルはすでに実装できているので自力で頑張ってみます。
お騒がせしました。

896 :デフォルトの名無しさん:02/01/22 15:47
>>869
ちょっときみはいくらなんでも場違いだと思うに一票


897 :デフォルトの名無しさん:02/01/22 16:17
EUCコードで漢字を入れる場合漢字イン、アウトなどってつかうのでしょうか?

898 :透明人間。(*´Д`)y~~ahu~ ◆73iRGUKc :02/01/22 16:20
その程度のプログラムで満足してる奴




とりあへず逝っとけ

899 :デフォルトの名無しさん:02/01/22 16:22
>897
EUCって、状態遷移系のコードじゃねーだろ。

900 :デフォルトの名無しさん:02/01/22 16:23
>>897
ttp://www.mars.dti.ne.jp/~torao/program/appendix/japanese.html

901 :897:02/01/22 16:27
ありがとうございます

902 :デフォルトの名無しさん:02/01/22 17:22
>>858
量子計算機だ量子計算機を使え!

903 :デフォルトの名無しさん:02/01/22 17:33
俺の宿題見んなよ!!

904 :デフォルトの名無しさん:02/01/22 19:19
>>903
すまん

905 :なにとぞお願いいたします。:02/01/22 19:20
C言語の宿題で困っています。
自分で一通り作ってみたのですが、
コンパイルもできませんでた。
問題は以下です。
=====================================



次のように、一行に日付けとその日の最低気温、
最高気温が記録されたファイル(ファイル名:temp.dat)があるとする。

_____________________

1  10.0  30.0
2  12.1  28.8
3  11.3  25.2
4  10.5  27.4
5  13.1  28.0
・・   ・・・・    ・・・・
_____________________

このファイルを読み込んでファイルの中での最高気温が最も高い日の
日付と最高気温、
同様に最も低い最低気温とその日付を表示するプログラムを作成せよ。

906 :なにとぞお願いします:02/01/22 19:22
自分で書いたものとコンパイルエラー表示は以下です。
=================================
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int da[i];
double hi[i];
double lo[i];
int i, j, max, min;

if ((fp = fopen("Temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}


fscanf(fp)"%d %lf %lf",&d, &f, &g";


for (i = 0; i < (n-1); ++i) {
x = data[i];
max = i;
for (j = i + 1; j < n; j++) {
if (data[max] < data[j]) {
max = j;
}
}
printf("最高気温, 日付=%d\n, %d\n" hi[max], max);



for (i = 0; i < (n-1); ++i) {
x = data[i];
min = i;
for (j = i + 1; j < n; j++) {
if (data[min] > data[j]) {
min = j;
}
}
printf("最低気温, 日付=%d\n, %d\n" low[min], min);

fclose(fp);
}

9-1.c:40:35: missing terminating " character
9-1.c:17:34: possible start of unterminated string literal
9-1.c:36:35: missing terminating " character
9-1.c:13:34: possible start of unterminated string literal



907 :なにとぞお願いします:02/01/22 19:23
どなたかアドバイスいただけないでしょうか?

908 :なにとぞお願いします:02/01/22 19:28
すこし訂正しました。(fscanfの部分)
それに伴いコンパイルエラー表示も訂正です。
================================

#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int da[i];
double hi[i];
double lo[i];
int i, j, max, min;

if ((fp = fopen("Temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}


fscanf(fp)"%d %lf %lf",&da[i], &hi[i], &lo[i]";


for (i = 0; i < (n-1); ++i) {
x = data[i];
max = i;
for (j = i + 1; j < n; j++) {
if (data[max] < data[j]) {
max = j;
}
}
printf("最高気温, 日付=%d\n, %d\n" hi[max], max);



for (i = 0; i < (n-1); ++i) {
x = data[i];
min = i;
for (j = i + 1; j < n; j++) {
if (data[min] > data[j]) {
min = j;
}
}
printf("最低気温, 日付=%d\n, %d\n" low[min], min);

fclose(fp);
}

9-1.c:40:35: missing terminating " character
9-1.c:17:46: possible start of unterminated string literal

909 :日下部圭子 ◆ib749tYo :02/01/22 19:27
In article >>906, なにとぞお願いします/906 wrote:

とりあえず間違っている行を教えてあげます。


fscanf(fp)"%d %lf %lf",&d, &f, &g";

printf("最高気温, 日付=%d\n, %d\n" hi[max], max);

printf("最低気温, 日付=%d\n, %d\n" low[min], min);

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

910 :デフォルトの名無しさん:02/01/22 19:28
>>907
このエラーメッセージ程度の英語は読んで下さい…
おながいします。

911 :なにとぞお願いします:02/01/22 19:34
>>909

ああ!ありがとうございます。
その部分、少し考えてみます。

>>910

見当たらない、終了"文字
終了していないストリング・リテラルの可能なスタート

・・・う〜んちょっと考えてみます。
ありがとうございました。


912 :デフォルトの名無しさん:02/01/22 19:35
とりあえず、勘違いしてそうなところを教えてあげます。

・fscanf では、一行分しか読み込めませんので、全行読み込むにはループが必要かも。
・ソートするには2重ループが必要ですが、最低値を求めるときは1重ループで十分かも。


913 :デフォルトの名無しさん:02/01/22 19:36
つうか、そのプログラムでは、905のデータは読めないべ。
よくみろよ。MBCSの処理が要るんだよ(w

914 :なにとぞお願いします:02/01/22 19:43
>>912

ありがとうございます。
しばらく落ちて考えてみます。

>>913
え〜と、MBCSっていうのは「マルチバイト文字セット」でいいんでしょうか?
う〜ん難しそうなフレーズで、、授業でやっていないような。。

もしよろしければどういう処理か教えていただけないでしょうか?


915 :デフォルトの名無しさん:02/01/22 19:45
このばあいは、「1」と「1」、「.」と「.」をちゃんと同一に扱う、ってことさ。

916 :なにとぞお願いします:02/01/22 19:59
>>915

ありがとうございます。
そのための処理をこのコードの中にいれなければいけないってことですね。
少し考えてみます。



917 :デフォルトの名無しさん:02/01/22 20:11
> 最高気温が記録されたファイル(ファイル名:temp.dat)があるとする。
> if ((fp = fopen("Temp.dat","r"))==NULL) {
winだと大文字小文字が違っててもファイル開けるんだっけ?


918 :デフォルトの名無しさん:02/01/22 20:12
Win/DosはCase Insensitiveだよ。

919 :デフォルトの名無しさん:02/01/22 20:19
>>912
> ・ソートするには2重ループが必要ですが、最低値を求めるときは1重ループで十分かも。
b-treeを使えばソートする必要ない。最低値と最大値も勝手に求まる。

それよりも
int da[i];
double hi[i];
double lo[i];
C99ってこれは許されるの?
# C89は無理だけど


920 :デフォルトの名無しさん:02/01/22 20:23
gcc拡張やないかな?

921 :デフォルトの名無しさん:02/01/22 20:24
>>919
それ以前にこの問題でどこにソートする必要が?

922 :デフォルトの名無しさん:02/01/22 20:33
>>919
可変長配列の事?C99ならOK。

923 :なにとぞお願いします:02/01/22 20:35
すいません。。
みなさんにアドバイスいただいてから、
少し手を加え、完成に近づきつつあると思うのですが、
下記から一歩も進めないのです。。
どうすれば、、、
コンパイルエラーの表示見ても、何を意味するのかわからないのです。
===============================================================


924 :なにとぞお願いします:02/01/22 20:35
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int da[100];
double hi[100];
double lo[100];
int i, j, max, min, n;

printf("number of data =");
scanf("%d", &n);

if ((fp = fopen("temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}

for(i=0, i<n, i++){
fscanf(fp,"%d %lf %lf",&da[i], &hi[i], &lo[i]);
}

max = 0;
for (i = 1; i < n; i++) {
if (data[max] < data[i]) {
max = i;
}
}
printf("最高気温, 日付=%g\n, %g\n" hi[max], max);

min = 0;
for (j = 1; j < n; j++) {
if (data[min] > data[j]) {
min = j;
}
}
printf("最低気温, 日付=%g\n, %g\n" low[min], min);

fclose(fp);

}

9-1.c: In function `main':
9-1.c:19: parse error before `)'
9-1.c: At top level:
9-1.c:25: warning: data definition has no type or storage class
9-1.c:26: parse error before `for'
9-1.c:31: parse error before string constant
9-1.c:31: warning: data definition has no type or storage class
9-1.c:33: warning: data definition has no type or storage class
9-1.c:34: parse error before `for'
9-1.c:39: parse error before string constant
9-1.c:39: warning: data definition has no type or storage class
9-1.c:41: warning: parameter names (without types) in function declaration
9-1.c:41: warning: data definition has no type or storage class
9-1.c:43: parse error before `}'

925 :デフォルトの名無しさん:02/01/22 20:49
>for(i=0, i<n, i++){
よくみりゃおかしいことに気づくだろうに。
つか、君はプログラムができるまで、
ソースとエラーの掲示を延々続ける気なのかね?

926 :デフォルトの名無しさん:02/01/22 20:50
>>924
とりあえず落ち着け、
最初のソースで問題なかった所までおかしくなってるぞ。
for文中の;が,になってたり。
あと909さんが指摘しているように、
printfの引数がおかしい。
それ以外はエラーメッセージを読んで、
参考書なりを照らし合わせれば分かると思う。
あせってるようだけど小一時間くらいは自分で見直してみるのも良いかと。

927 :なにとぞお願いします:02/01/22 20:52
>>925

どうもありがとうございました。
うっかり気が付きませんでした。

ご迷惑おかけしました。
あとは自分で頑張ります。

928 :デフォルトの名無しさん:02/01/22 20:52
つーか、
while(fscanf(/*---*/) != EOF){
 /*---*/
}


929 :デフォルトの名無しさん:02/01/22 20:54
>>927
最初のソースに比べればかなりよくなってるぞ。がんばれよー。

930 :デフォルトの名無しさん:02/01/22 20:57
あと、最大値、最小値を求めるのに、なぜ配列が必要?
とか。

931 :デフォルトの名無しさん:02/01/22 21:00
怜さんでも麻衣ちゃんでもいいのでそろそろ次のスレを。


932 :デフォルトの名無しさん:02/01/22 21:03
>>931
とりあえず>>924が終わるまで待て


933 :デフォルトの名無しさん:02/01/22 21:20
麻衣ちゃん、怜さんに続く女性の身内に登場キボン

934 :デフォルトの名無しさん:02/01/22 21:21
次スレの主は怜さんのおばあちゃんです。
お年寄りは大切に。

935 :ビル・ゲイツ:02/01/22 21:27
       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |   __________
   ヽノ    /\_/\   |ノ /
    ゝ   /ヽ───‐ヽ /  /次スレはぜひとも私をメインキャラ
     /|ヽ   ヽ──'   / <  にしてほしい。これはマジレスだ。
    / |  \    ̄  /   \どうか、お願いする・・・。
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


936 :デフォルトの名無しさん:02/01/22 21:33
人類初のプログラマ Ada Lovelace 女史きぼん。

937 :デフォルトの名無しさん:02/01/22 21:42
世界初のプログラム駆動方式のコンピュータをつくり、
作用素環論の研究、量子力学の研究やゲーム理論の創始など
「20世紀のレオナルド・ダ・ヴィンチ」と評される
フォン・ノイマンを希望。
あ、ノイマンは男か・・・。

938 :デフォルトの名無しさん:02/01/22 21:48
登場人物&過去スレ

●お姉さん
あなたの宿題、お姉さんが答えます
http://piza.2ch.net/tech/kako/972/972032579.html
で登場。

●麻衣
お兄ちゃんの宿題、私が答えるよ
http://pc.2ch.net/tech/kako/982/982853418.html
で初登場。可愛い妹キャラ

●お兄ちゃん(名称不明)
宿題見てやるよ
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
で初登場。しかし、女性がいいという影の圧力により
1以外には登場せず。

●怜
宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
で初登場。お兄ちゃんの恋人。
結構親切に答えてくれる年上キャラ。

939 :デフォルトの名無しさん:02/01/22 21:52
怜ちゃんの美人お母さんの登場きぼんぬ。

940 :デフォルトの名無しさん:02/01/22 21:53
http://www.nobodyhere.com/gfx/neus.swf


941 :デフォルトの名無しさん:02/01/22 22:01
>>938
ほんとだ・・・早速女性の身内と交代を希望されてる・・・(藁

前スレのお兄ちゃんの幼なじみなんていいんでない?
本当は彼のことが好きだけど、怜に遠慮して想いを秘めたままの
健気な女の子。

942 :デフォルトの名無しさん:02/01/22 22:04
まんまだけど女教師キボン
ハイミス・インテリ、質問者を厳しく指導しちくり

943 :デフォルトの名無しさん:02/01/22 22:05
怜の妹で、同級生。
一緒にレポートがんばろっ、って感じの女の子とか・。

944 :デフォルトの名無しさん:02/01/22 22:08
妹を増やせばいいだろ。

‥‥12人くらいに。

945 :(;´Д`) :02/01/22 22:09
>怜に遠慮して想いを秘めたままの健気な女の子。
(・∀・)イイ!



946 :デフォルトの名無しさん:02/01/22 22:10
>>941
それやるなら、お兄ちゃんの名前を決めたいね

947 :(;´Д`) :02/01/22 22:10
しすたーぷりんせす


948 :デフォルトの名無しさん:02/01/22 22:10
>>944
一つの質問に12個レスつくのか(w

949 :941:02/01/22 22:12
>>946
例えば"ひろゆき"だったら"ひろゆきちゃん"って呼ぶのか?
それは良いね!


950 :デフォルトの名無しさん:02/01/22 22:14
>>949
ちゃんづけなのか?(w
でも、”ひろゆき”はいいかもね。

951 :(;´Д`) :02/01/22 22:17
>お兄ちゃんの名前を決めたいね
西村博之キボンヌ


952 :デフォルトの名無しさん:02/01/22 22:19
(´-`).。oO( なんでヲタネタになると賑わうんだろう )

これまでの意見を総合した結果、
世界初のプログラム駆動方式のコンピュータをつくり、
作用素環論の研究、量子力学の研究やゲーム理論の創始など
「20世紀のレオナルド・ダ・ヴィンチ」と評される
人類初のプログラマの美人お母さんの女教師で同級生、
一緒にレポートがんばろっ、って感じの
12人のひろゆきちゃんに決まりました。

953 :デフォルトの名無しさん:02/01/22 22:25
漏れは麻衣スレでボソっと発言される
「麻衣を出せ」
の一行レスがなんか好きだった(藁

954 :デフォルトの名無しさん:02/01/22 22:25
>>952
おっと、ノイマン氏を一緒にしちゃあいけない。失礼だろう。男だし。
エーダ氏も一緒にしないほうがいい。失礼だろう。


955 :(;´Д`) :02/01/22 22:27
美人お母さんの女教師で幼なじみで同級生、
一緒にレポートがんばろっ、って感じの
12人の妹、名前は全員ひろゆきちゃんに決まりました。


956 :デフォルトの名無しさん:02/01/22 22:29
どの板でもヲタネタは賑わう。これ定説。


957 :デフォルトの名無しさん:02/01/22 22:31
なにとぞお願いします はどこいった?


958 :デフォルトの名無しさん:02/01/22 22:31
この際、「先生!宿題教えてください!」もいいかも。
あ、解答はAAで(w

959 :デフォルトの名無しさん:02/01/22 22:35
( ´_ゝ`)フーン

このAAで。

960 :デフォルトの名無しさん:02/01/22 22:38
日下部先生?

961 :(;´Д`) :02/01/22 22:39
( ´_ゝ`) //怜たん

ヽ(`Д´)ノウワァァァァァン //宿題でこまったちゃん

962 :デフォルトの名無しさん:02/01/22 23:28
ゴルゴきぼん

963 :デフォルトの名無しさん:02/01/22 23:33
>>960
先生はいらない。
圭子たんがいいよ。

964 :デフォルトの名無しさん:02/01/22 23:43
先生は持ち回りだろ。
http://choco.2ch.net/test/read.cgi/mona/1011101749/

965 :デフォルトの名無しさん:02/01/22 23:52
そろそろ新スレを・・・。
ひげずらおやじは睡眠中か?


966 ::02/01/23 02:02
うーん、私が新スレたててもいいんだけど、続けてたてちゃうのもちょっとな
と思うので・・・。誰かお願いできないかな?

967 :suzuki:02/01/23 02:37
先生!教えてください!
doblle型の配列を準備し、適当に6件のデータを読み込み、
それらの平均値を求め、平均値よりも大きな値を配列の前半に、
小さな値を後半に格納するプログラムを教えてください、
入力例
input a[0]=>12.2
input a[1]=>42.8
input a[2]=>83.1
input a[3]=>-12.9
input a[4]=>90.1
input a[5]=>2.26
出力例
平均

968 :suzuki:02/01/23 02:40
途中で間違って書き込んでしまった
出力例は
output a[0] = 42.80
output a[0] = 83.10
output a[0] = 90.10
output a[0] = -12.90
output a[0] = 12.20
output a[0] = 2.26



969 :デフォルトの名無しさん:02/01/23 02:47
>>968
ソートしる!

970 ::02/01/23 02:51
>>967
ちょっと眠いから詳しく説明はしないけど・・
ttp://www.cs.u-gakugei.ac.jp/~miyadera/LECTURE/SortAnim/ExAlgorithm5.html
このページでも参考に応用してみてね。

971 :えれな:02/01/23 02:58
ERROR:スレッド立てすぎです。。。っていわれちゃいました‥‥

宿題、手伝おっか?
名前: えれな
前々スレのお兄ちゃんの幼なじみ、えれなです。
宿題、判らないところとかがあったら、聞いてね。

怜さんの前スレはこちら、
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
キーワードがわかってるなら、googleで探してね。
http://www.google.co.jp/

972 :どっぺるえれな:02/01/23 03:04
代打で立てたよ

宿題、手伝おっか?
http://pc.2ch.net/test/read.cgi/tech/1011722640/

973 :えれな:02/01/23 03:06
ドッペルゲンガーの私、スレ立てありがとう。

974 :田代雅史:02/01/23 19:47
         ,〜((((((((〜〜、
        ( _(((((((((_ )
        |/ ~^^\)/^^~ヽ|
         |  _ 《 _  |
         (|-(_//_)-(_//_)-|)
         |   厶、    |  cout<<"このスレは無事に正常終了した。\n"
         \ |||||||||||| /      <<"私が最後の仕事をするとしよう。\n";
          |\___/::\ 
          /丶 / /    \ return 0;
        /,': //  ヽ    \}
       / /´ ̄ ̄ ̄ ̄ ::::::   \-、
     / _/         ::  、  ゙  `\
    /  ~_/`''         : 、`      ゙ヽ
    /  __/`''       ___  ::丶  \:: ヽ、 ヽ
  /   / `         ヽ、{丶    ヽ :::ヽ |
  /              ~ヽ、ヾ\      ゙i |
  。             -´/ /ゝ、  ` _ ヽ、/X
  ヽノ             :::|/// ~` '''  `' / ヽ
  | , |   |       :::| / | 〃   \  |
   {~ ヘ___ \  。  .:::ノ /_/| |    :::|   |
  丶ノ  \__ `- 、_____, -´イイ_| |    ::::| |  |
   {  |   \___ \ノ イ_ | |    :::|  |
     { ´|ヽ、   ,,`i` // \ノ  |丶    :丿   |
     {´_|_ `'''''´  l //ノヾ,ノ`ゝヽ____ /ヽ,、  |
     |  i `'''ー-''~  }=  ノ ヾ /〃     | ヽ}
      ヽゝ、_    } = ヾ  |      ノ  |


975 :ダダダダーん!:02/01/24 10:43
どうかこれも人助け。クラ−メルの公式をCでやってください。先生おねがい〜。

976 :デフォルトの名無しさん:02/01/24 10:46
>>975
うざいよおまえ。
一箇所に書いたら、しばらく待っとけよ。

977 :デフォルトの名無しさん:02/01/24 10:54
>>974
マルチポスト野郎のせいで最後の仕事にならんかったな。

printf("ざけんなよ、テメーコラ!>975"); /*終了処理*/

return 0;

978 :デフォルトの名無しさん:02/01/24 11:01
            /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
           /   このスレは無事に  /
           /  終了いたしました    /
          / ありがとうございました  /
          /                /
         /    モナーより      /
         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
  ∧_∧  /                /∧_∧
 ( ^∀^) /                /(^∀^ )
 (    )つ               ⊂(    )
 | | |                   | | |
 (__)_)                  (_(__)

979 :デフォルトの名無しさん:02/01/24 21:04
      ∧         ∧          ∧
        / ヽ      / ヽ_       / .∧
     /   `、   _/   `、⌒ヾ⌒ヽ/  ∧
    /       ̄ ̄/  u (.....ノ(....ノ   / ヽ
    l:::::::::        |     >>975  u .:(....ノノ
   |::::::::::  -=・=- / ̄ ̄ヽ        ::::::::::::::/`ヽ
   .|:::::::::::::::::  \_(___..ノ   u  ::::::::::::::::::::(....ノノ
    ヽ:::::::::::::::::::  \/ヽ  u    ::::::::::::::::::::::::::::ノ
ちょっとdatまで付き合えや…


980 :デフォルトの名無しさん:02/01/29 18:26
怜たんの居たこのスレをまだ死なせはしない。
閲覧用として、怜たん萌え萌え用として、
暫くとっておくべきだ。
緊急浮上age

なお、宿題は下記のスレで・・・
http://pc.2ch.net/test/read.cgi/tech/1011722640/l50


981 :カイン・ポブレム:02/02/02 23:32
質問してもよろしいでしょうか?C言語の課題なのですが・・・

/*受け取った文字列の中に小文字が含まれているかどうかを判定する関数の入ったプログラムを作成する*/

#include<stdio.h>
#include<string.h>
#define N 100
int mozi(int x[]);

int main(void)
{
char retu[N+1];
ibt a;

printf("何か100字以内で文字列を入力してください\n");
scanf("%c",&retu);

if(mozi(retu)==a){
printf("小文字が含まれています\n");
}else{
printf("大文字だけです\n");
}

return 0;
}

int mozi(int x[])
{
int i,j;
int a,b;

j=x[N];
for(i=0;i<N;i++){
if(j>=0x61&&j<=0x7a){
return 0;
}if else(j>=0x41&&j<=0x5a){
return b;
}
}
}

としたのですが、実行してみると、どんな文字列をいれても「全部大文字」みたいに出力されるのです。
どうしたらいいのでしょうか・・・

982 :デフォルトの名無しさん:02/02/02 23:50
バカタレ、sageとけ。>>980
あげるからこっちに宿題書き込む奴が出るじゃないか。
書き込みすればdat落ちはしないんだから。

>>981
>>980を読め。

983 ::02/02/03 00:31
>>981
>>980のスレの方で答えておいたから、見てね。

984 :デフォルトの名無しさん:02/02/03 00:36
/*受け取った文字列の中に小文字が含まれているかどうかを判定する関数の入ったプログラムを作成する*/

#include<stdio.h>
#define N 100

int mozi(char x[]);

int main(void)
{
  char retu[N+1];

  printf("何か100字以内で文字列を入力してください\n");
  scanf("%s",retu);

  if(mozi(retu))
    printf("小文字が含まれています\n");
  else
    printf("大文字だけです\n");

  return 0;
}

int mozi(char x[])
{
  int i,j;

  for(i=0;i<N;i++)
  {
    j=x[i];
    if(j>=0x61&&j<=0x7a)
      return 1;
  }

  return 0;
}

これでいいだろう。君はC言語自体理解していない。
次からは、自分自身で進んで取り組むことだ。
そうしないと、後が苦しくなるだけだろう。
高校生より。

ちなみに、このままコピペした状態でコンパイラに通さないように。
全角空白でインデントしてあるからな。


985 :うさ(本物):02/02/03 00:43
私が作ったプログラムの感想を聞かせてください。
ここでのレスor私のBBSにてお願いします。
辛口はできるだけ控えてね^^;
可愛いお絵かきプログラムだよ★
http://www.sfc.keio.ac.jp/~s01041mi/index.shtml





986 :デフォルトの名無しさん:02/02/03 00:45
      ∧         ∧          ∧
        / ヽ      / ヽ_       / .∧
     /   `、   _/   `、⌒ヾ⌒ヽ/  ∧
    /       ̄ ̄/  u (.....ノ(....ノ   / ヽ
    l:::::::::        |     >>980  u .:(....ノノ
   |::::::::::  -=・=- / ̄ ̄ヽ        ::::::::::::::/`ヽ
   .|:::::::::::::::::  \_(___..ノ   u  ::::::::::::::::::::(....ノノ
    ヽ:::::::::::::::::::  \/ヽ  u    ::::::::::::::::::::::::::::ノ
おまえも来るか?

987 :1000:02/02/04 21:22
まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

260 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)