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

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

宿題、手伝おっか?

1 :えれな:02/01/23 03:04
前々スレのお兄ちゃんの幼なじみ、えれなです。
宿題、判らないところとかがあったら、聞いてね。

怜さんの前スレはこちら、
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
キーワードがわかってるなら、googleで探してね。
http://www.google.co.jp/

2 :デフォルトの名無しさん:02/01/23 03:05
ずさー

3 :デフォルトの名無しさん:02/01/23 03:06
3サイズおしえれ

4 :デフォルトの名無しさん:02/01/23 03:06
ティンコズサー

5 :デフォルトの名無しさん:02/01/23 03:07
おっぱいずさー

6 :デフォルトの名無しさん:02/01/23 03:09
●お姉さん
あなたの宿題、お姉さんが答えます
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
で初登場。お兄ちゃん(ひろゆき(?))の恋人。
結構親切に答えてくれる年上キャラ。

7 :デフォルトの名無しさん:02/01/23 04:38
質問!

先生に>>1の性癖を調べてこいといわれました!
教えてください!

8 :sprit:02/01/23 04:41
1,23,456を,で区切って配列に格納するソースを教えてくださいよ

9 :デフォルトの名無しさん:02/01/23 04:43
>>8
@a = split(/,/,$b);

10 :えれな:02/01/23 04:52
ttp://pc.2ch.net/test/read.cgi/tech/1009499565/
からきたのね。C言語で、ってきちんと言わないと、私も>9さんみたいに
var = "1,12,456"; array = var.split(/,/);
って答えちゃうよ。

そうそう。C言語なら、
・','のあらわれる回数をしらべる
・mallocでポインタの配列を確保する
・forとかで、strtokを使って、その配列にポインタを入れていく。
という方法で、できると思うよ。

11 :デフォルトの名無しさん:02/01/23 05:01
for (i = pa = 0; str[i] != '\0'; i++) {
  if (str[i] == ',') {
    prats[pa] = '\0';
  } else {
    prats[pa] = str[i];
  }
}

12 :デフォルトの名無しさん:02/01/23 05:02
>11
strが文字列リテラルだという罠。

13 :sprit:02/01/23 05:06
>>10
>>11
ありがとう。やってみます。
>>8
C言語をしらない617もありがとう。
prelしか知らないだけあって詳しいですね。
perlも勉強になりました

14 :自慰、手伝おっか?:02/01/23 05:09
手コキで良いっすか?パイズリの方が良い?

15 :9:02/01/23 05:18
>>13
もしかしてその>>8って漏れのこと?いっとくが漏れは>>617じゃないよ。
単純に一番楽に実装できるコードを教えただけ。
>>10で言ってるスレはみてなかったもんで、追い出されてたとは知らんかった。
むかつくのは分かるが、確信もって言ってね。

16 :デフォルトの名無しさん:02/01/23 10:45
「麻衣を出せ」と言ってみるテスト。


17 :デフォルトの名無しさん:02/01/23 11:07
>>16
麻衣は産休中です。

18 :麻衣派:02/01/23 11:18
>>16
麻衣ファンの皆様、ごめんなさい。


19 :代打名無し:02/01/23 11:25
すみません誰か教えてください、、、unixです、、、

キーボードから円を入力すると,ドルに変換するプログラムを作成しなさい。
なお,変換レートは本日分の値を使用し,
変換値の表示は小数点第1位までとすること。



角度を−90〜90度まで5度ステップで変化させ,
そのときの正弦関数と余弦関数の値をディスプレイに並べて表示する
プログラムを作成しなさい。
なお,正弦関数と余弦関数の値は,小数点以下3桁で表示しなさい。


下記の指示にしたがって解答しなさい。

1 キーボードから1より大きい整数値nを入力して,
その階乗n!を計算し,結果を表示するプログラムを作りなさい。
その際,nが1以下の時には,
nが1より大きい値となるまで入力を繰り返し求めるようにする。
また,階乗の値は double 型とする。

n!=2×3×4×・・・×(n−1)×n

2 作ったプログラムをコンパイルし,正しく動作することを確認したら,
15!を求め,画面に表示された通りを答えなさい。


20 :デフォルトの名無しさん:02/01/23 11:43
>>19
最初の問題だけです。
(defun yen$ (x &optional (rate 130))
(format t "~,1F~%" (/ x 130)))


21 :デフォルトの名無しさん:02/01/23 11:43
>>19
すぐ上で「言語もちゃんと書けよ」って言われた直後にそれかい。
あと、画面に表示する課題がでてるけど、xlib? GTK+? Tcl/TK?
それとも、コンソール画面で * とかを表示して?


22 :デフォルトの名無しさん:02/01/23 11:45
>>21
グラフで出力するとは書いてないし...

23 :麻衣派:02/01/23 11:49


for(i=-90;i<=90;i+=(90+90)/5){
  printf("sin(%d):%.3f\n",i,sin(i));
  printf("cos(%d):%.3f\n",i,cos(i));
}


------------------


int p(int n)
{
  if(0==n)return 1;

  return p(n-1)*n;
}

int main()
{
  int n;

  do{
    scanf("%d",&n);
  }while(n<=0);

  printf("%d\n",p(n));

  return 0;
}






24 :デフォルトの名無しさん:02/01/23 11:49
>>20の修正
(defun yen$ (x &optional (rate 130))
(format t "~,1F~%" (/ x rate)))
(defun inputyen ()
(yen$ (read)))


25 :デフォルトの名無しさん:02/01/23 12:20
>20-24
http://pc.2ch.net/test/read.cgi/prog/1003156727/l50

26 :デフォルトの名無しさん:02/01/23 12:53
>20-24
http://pc.2ch.net/test/read.cgi/tech/1009190994/l50

27 :デフォルトの名無しさん:02/01/23 13:53
なるほど。言語はCだったか。>>26
他スレまでチェックしてなくてスマソ。(w


28 :デフォルトの名無しさん:02/01/23 14:01
>>20-24
http://pc.2ch.net/test/read.cgi/unix/1010749468/495-

こりゃアレだな。どのスレがどういう反応を返すか確認するテスト。

29 :デフォルトの名無しさん:02/01/23 14:14
>確認するテスト
なるほど。つまりこの後に本命が来るわけか。

# C言語系のBBSにもポストしてるんだろーな。きっと

30 :煽り:02/01/23 14:24
>>29
> # C言語系のBBSにもポストしてるんだろーな。きっと
fjにポストしたらどうなるんだろう


31 :デフォルトの名無しさん:02/01/23 15:06
>>23
この解答は正しくありません。

32 :ひろゆき:02/01/23 15:47
えれな、喋り方がいつもと違うぞ。
語尾のぁぃぅぇぉ具合が足りない。

誰も怒らない。普段の喋り方でいい。


33 :麻衣派:02/01/23 16:46
ごめんラジアンね。

34 :デフォルトの名無しさん:02/01/23 17:36
>>6
お姉さんのスレ・・・わざとなのか?
あのお姉さんの頼りなさ・・・。
なんか自作自演っぽい所も含まれてるし・・・。
怜スレ作ったのも同一者なのだろうか。

35 :デフォルトの名無しさん:02/01/23 17:46
>>34
もともとネタスレだったと思われ

36 :デフォルトの名無しさん:02/01/23 18:36
>>33
それだけじゃないよ。

37 :えれな:02/01/23 18:39
>33
>>5度ステップで変化させ
>i+=(90+90)/5
は、 i+=5だよっ。


38 :デフォルトの名無しさん:02/01/23 19:11
>>37
まだ、まだっ!

39 :デフォルトの名無しさん:02/01/23 23:39
C言語で簡易版の商品管理システムプログラムを
ご教授ください。
プログラムの仕様は以下のとおりです。
-------------------------------------
1、概要

このプログラムは登録、更新、削除、復旧、終了、表示、保存の機能を持った商品管理プログラムです。
各情報は商品コード、価格、商品名、登録日、有効フラグを持っています。
登録データは不定数である為、メモリアロケーションを行います。
削除されたデータは削除テーブルに移動し、商品コードを開放する。
削除テーブルのデータは普及コマンドで普及された場合に新しい商品コードで再登録する。

2 商品のデータテーブル情報
商品コード:一意(10〜100)
価格(100〜1000万)
商品名(半角50文字まで)
登録日
    →以上のデータを構造体商品情報として設定する。

3 起動オプション

引数として、データファイルを指定する。
ファイルが指定された場合はファイルの内容をテーブルに展開する。

4 機能
<コマンド>
add (A) : 登録    change (C) : 更新
delete (D) : 削除   undelete (U) : 普及
end (E) : 終了    print (p) : 表示
       save (S) : 保存    read (R) : 読出
       help (?) : コマンド表示

<

40 :デフォルトの名無しさん:02/01/23 23:40

続き
<登録> 商品名、価格を入力
入力された情報が正当化判定する。
商品情報テーブルの領域を確保する。
入力された情報を設定する。
商品コード、日付を取得し、設定する。

<更新> 商品コードを入力し、商品名、価格の入力を行う。
入力されたコードが正当化判断する。
入力されたコードのテーブルを入力された商品名と価格で上書きを行う。
登録日を取得し上書きする。

<削除> 商品コード名を表示する。
入力されたコードのテーブルを削除テーブルに移動する。
入力されたコードのテーブルのフラグを未使用にする。

<復旧>
削除済み情報を表示する。
情報番号の入力を求める
新しいコードを取得設定する。

<終了> プログラムの終了を行う。メモリの開放なども行う。
入力情報を保存するか聞く
保存ファイル名の入力を求める。

<表示>
抽出条件(等しい、以上、以下)を設定し、対象項目を設定
ソート項目の設定、昇順、降順を設定する。25件毎に入力待ちを行う。
入力項目を抽出条件で検索する。
検索結果のソートを行い、25件ごと表示する。

<保存>
ファイル名の入力を求める。
現在のデータを保存する。

<読出>
ファイル名の入力を求める。
ファイルからデータを読み出す


41 :デフォルトの名無しさん:02/01/23 23:46

続き
5 画面イメージ
起動後最初に画面をクリアする。

<起動画面>
商品管理システムVer0.01
コマンドを入力してください(HELPは?)

<登録>
登録:商品名を入力してください  XXXX
登録:価格を入力してください(半角) xxx

<更新>
更新:更新する商品コードを入力してください(半角) xxxx
更新:商品名を入力してください。  XXX
更新:価格を入力してください(半角) xxx

<削除>
削除:削除する商品コードを入力してください XXXX

<復旧>
番号 商品名 価格
---------------------------------
XXXX XXXXXX XXX
XXXX XXXXXX XXX

復旧する番号を入力してください(キャンセルはC) XXXX



42 :デフォルトの名無しさん:02/01/23 23:48

続き
<表示>
表示:抽出項目番号を入力してください
1 商品コード
2 商品名
3 価格
4 登録日
XXXX

表示: 抽出条件を入力してください
1 以上
2 等しい(商品名は等しいのみ)
3 以下
XXXX

表示:条件を入力してください XXXXXXX

表示:ソート項目番号を入力してください
1 商品コード
2 商品名
3 価格
4 登録日
xxxxx
昇順、降順を選んでください
1 昇順
2 降順
xxxx
画面をクリアする

商品コード   商品名 価格 登録日
------------------------------------------------
xxxxxxx XXXXXXXXX xxxxx xxxxxxxx
xxxxxxx XXXXXXXXX xxxxx xxxxxxxx

次の情報を表示します。リターンを押してください。

<終了>
入力データを保存しますか?
ファイル名を指定してください  XXX

<保存>
ファイル名を指定してください  XXX


<読出>
ファイル名を指定してください  XXX




43 :デフォルトの名無しさん:02/01/23 23:48
>>39
で、あんたは何が分からないの?
というか何なら分かるの?
どこまでプログラム作った?
問題文はちゃんと読んだか?

とりあえずな、氏ね。
(´-`).。oO( >>1に丸投げヤメロとは書いてないな、丸投げありかい… )

44 :デフォルトの名無しさん:02/01/23 23:50
>>39-41
環境を教えてください。

45 :デフォルトの名無しさん:02/01/23 23:52
>>43
氏ねは無いだろう。

でも他は同意、結構面倒だと思うんだけど
全部やれと言うの?>>39

46 :デフォルトの名無しさん:02/01/23 23:54
>>39-42
DBはSQL鯖とか使っていいの?
つーかOSは?
ここら辺教えてくんないと、何も教えれないのだが。

47 :!= 43:02/01/24 00:01
>>45
> 氏ねは無いだろう。
いーや、逝って良し。
丸投げにも程がある。つーか、銭出してやって貰え。

48 :デフォルトの名無しさん:02/01/24 00:03
すみません、皆様。
もっと勉強して出直します。
ちなみに環境はUNIXです。DBは使用しません。
まことに申し訳ありませんでした。

49 :デフォルトの名無しさん:02/01/24 00:14
>>47
確かに。
スレタイもあくまで"手伝おっか?"であって"私がやってあげる"
ではないからな。

50 :デフォルトの名無しさん:02/01/24 00:28
>>39-43

まずこんな構造体を作る。

typedef struct t_data{
  char  m_id;     // 商品コード
  int  m_price;    // 価格
  char  *m_name;    // 商品名
  int  m_y,m_m,m_d;  // 日にち
}TABLE;

あとはこれに対して、入出力処理を行う。
分かった?

51 :デフォルトの名無しさん:02/01/24 00:33
>>50
>char  *m_name;    // 商品名
よりも
char  m_name[];    // 商品名
のほうがいいような気がするんだけど・・・
ポインタにする意図がわからん。
これって俺が未熟なだけ?


52 :43:02/01/24 00:34
>>50
> 商品名(半角50文字まで)
なんで、
char m_name[51];
の方が、管理が楽ちんかな。

…という風に、問題切り分けて聞けば
ここに居る暇人は答えてくれるのよ>>1

53 :43:02/01/24 00:35
…なんで1やねん。
ここは単発質問スレ違うわー!>漏れ

×ここに居る暇人は答えてくれるのよ>>1
○ここに居る暇人は答えてくれるのよ>>39


54 :デフォルトの名無しさん:02/01/24 00:38
>>51-52
メモリが有効に使えるから。
新しいレコード作成時に
・・・
data->m_name = malloc(sizeof(name));
・・・
とするの。
16ビット開発がメインだったので、どうしてもメモリの無駄遣いが許せない。

55 :デフォルトの名無しさん:02/01/24 00:46
>>54
> 16ビット開発がメインだったので、どうしてもメモリの無駄遣いが許せない。
気持ちはわかる。
ただ文字列を配列に格納しておけば、ファイルとの入出力も楽だしなぁ…
メモリに置かずにファイル操作を主体にして、必要分を読み込むとか。
どんどん本題と外れてく…

56 :51:02/01/24 00:46
>>54
char m_name[]; で宣言してreallocするのはだめですか?


57 :デフォルトの名無しさん:02/01/24 00:49
>>56
あなたの意図するところと外れているかもしれないけど、
スタックとヒープって分かる?

58 :51:02/01/24 00:50
>>56
だめじゃん、俺何を言ってるんだろう。
激勘違いです。

59 :51:02/01/24 00:59
reallocは取得したメモリブロックの先頭のポインタを返すわけで、
char m_name[51]にはポインタを格納する場所が無い・・・
m_nameは配列の先頭のポインタを返すだけで、
ポインタを格納できる変数では無い・・・
と、言うことでいいのでしょうか?

60 :デフォルトの名無しさん:02/01/24 01:07
>>59
58で“だめじゃん”と書いたのは、

char m_name[10];
m_name = realloc(m_name, 51);

まさかこんな感じのコードがコンパイル通らなかったから、
とか言わないよね?

char* ptr = (char*)realloc(m_name, 51);
これならコンパイル通っちゃうけど、駄目というのは分かるよね?

61 :デフォルトの名無しさん:02/01/24 01:07
後々ソートするんなら、リスト構造作っといたほうがイイか?

typedef(略
  struct t_data *next;
(略

62 :デフォルトの名無しさん:02/01/24 01:09
昇順・降順があるなら双方向リストか?

typedef(略
  struct t_data *next,*prev;
(略


63 :デフォルトの名無しさん:02/01/24 01:16
じゃあさあ、もうここには迷惑かけられないから、
↓俺のサイト
http://www.geocities.co.jp/SiliconValley-Sunnyvale/2206/


64 :51:02/01/24 01:16
>>60
>m_name = realloc(m_name, 51);
m_name は左辺値じゃないから・・・ですよね?

>char* ptr = (char*)realloc(m_name, 51);
reallocはmallocとかcallocとかで取得したポインタ用に作られてるからですか?

的外れな答えだったらごめんなさい。
マジでC初めて一ヶ月にも満たない初心者なんです。
もし違ったら、どこが違うのか教えてください。

65 :デフォルトの名無しさん:02/01/24 01:18
>>64
不正解。

66 :デフォルトの名無しさん:02/01/24 01:21
m_name[]で宣言されるとスタック(静的)領域
alloc系はヒープ(動的)領域にメモリが確保される

67 :デフォルトの名無しさん:02/01/24 01:24
すいません、VBAで「もしxが整数なら」というのは
どう表現すればいいのでしょうか?
If TextBox1.value= ??
また、テキストボックス内の20000000のような数字を
20,000,000のようにカンマ表示にするにはどう記述すればいいのでしょうか?

68 :デフォルトの名無しさん:02/01/24 01:25
>>64
> >m_name = realloc(m_name, 51);
> m_name は左辺値じゃないから・・・ですよね?
m_nameに代入できない、という意味ではその通り。

> >char* ptr = (char*)realloc(m_name, 51);
> reallocはmallocとかcallocとかで取得したポインタ用に作られてるからですか?
まぁ、そういう事。
realloc()に渡すポインタには、ヒープに確保したメモリブロックを指す物を使う。
先のカキコ見て、ちと心配になったでおせっかい。


69 :51:02/01/24 01:26
>>66
ヒープ領域って、
newとdeleteとかのアレですか?

スタック領域って、
char a[]="abc";
とかやったときの、"abc"っていう文字列定数が入るところですよね?
ありゃ?そういえば、staticとかの宣言をした変数はどっちに入るんだろう・・・
うう、だめだ。知識無さ過ぎる。

70 :デフォルトの名無しさん:02/01/24 01:27
>>67
if textbox.value = int(textbox.value) then

カンマ表示
stringに変換して、右よりスキャンしながらカンマを挿入していく。

71 :デフォルトの名無しさん:02/01/24 01:30
で、>>39は来ないのか?

72 :デフォルトの名無しさん:02/01/24 01:30
そのnewがmallocを呼んでいたりする。

73 :デフォルトの名無しさん:02/01/24 01:39
>>69
> うう、だめだ。知識無さ過ぎる。
うん、でも始めて一ヶ月なら仕方ないよ。
とりあえず、“文字列定数”はスタックには置かれない。
スタックに確保されるのはここでいえばa[]とかのローカル変数ね。
(そういう意味で逝ってるのだと思うけど)
本読んで勉強しちくり。

74 :51:02/01/24 01:49
皆さん、やさしい。
スレをあげまくって一方的に質問してるにもかかわらず、
愚かな厨房に対してこんなに親切に教えてくれて・・・感激です。
プログラム板って凄いんですね。
(今までプログラムいじってなかったのでこの板を訪れることは無かったのです)
2chってなんか、どす黒い印象があったんですけど、
この板は凄いです!そういえば、Unix板とかも伝説になってますし、
プログラマの人たちって本当に偉大ですね。
私もプログラマの卵として、誇りに思いたいです。
そして、早く偉大な先輩たちに追いつけるよう、よりいっそう努力します。
今日は本当にありがとうございました。

最後は穏やかにsage...

75 :デフォルトの名無しさん:02/01/24 01:50
>>67,70
VBAでもFormat使えるでしょ?

76 :67:02/01/24 02:16
>>70>>75
ありがとうございます。
Formatって
MyStr = Format(5459.4, "##,##0.00")みたいなやつですよね?
再度の質問で恐縮ですが、Excelのセルと同じように
1の位から3桁ごとにカンマをつけるにはどうすれば良いでしょうか。

77 :デフォルトの名無しさん:02/01/24 02:28
すいません、PHPで複利計算のプログラムの宿題が出たのですが
サッパリ方法がつかめません。

PHPエキスパートの方、是が非にご援助お願いします。

「100万円銀行から借りると一ヶ月で一割の利子がつく。一年経ったら
金額は幾らになるか?」

フォームとかはいらないので計算結果のみが
表示されれば大丈夫です。PHP習って50日も経ってないのに・・・

78 :デフォルトの名無しさん:02/01/24 02:32
>>77
それって複利計算?

79 :デフォルトの名無しさん:02/01/24 02:33
>>78は無視してください。酔っ払ってました。

80 :えれな:02/01/24 02:43
>67
GetCurrencyFormat ,GetNumberFormat API
みたいなのを使ったら便利かも。

>77
<?
 $br = 100*10000;
for( $i=0; $i< 12; $i ++)
  $br += $br/10;
 echo "$br";
?>
でいいのかな?

81 :デフォルトの名無しさん:02/01/24 03:01
echo round($br);
の方がいいかもよ。

82 :デフォルトの名無しさん:02/01/24 03:40
ぐるが「えれな・・・頼む、えれな・・・」
ズダーン・・・

ぐるがは逝った。


83 :PHP厨房77です:02/01/24 04:37
>>80
そ、それです!!
ワタシも説明不足でした。

宿題提出して逝って来ます

100万円→110万円→121万円→133,1万円
複利方式でした・・・

84 :麻衣派 ◆COx/Mai. :02/01/24 09:23
5回でまわすのかと思ってたよ…。
これでどうですかっ!!>>37

for(i=-90;i<90;i+=5){
  printf("sin(%d):%.3f\n",i,sin(i*3.14/180));
  printf("cos(%d):%.3f\n",i,cos(i*3.14/180));
}


85 :デフォルトの名無しさん:02/01/24 09:27
M_PI使え。

86 :デフォルトの名無しさん:02/01/24 10:08
>>85
同意。

>>84
1問目はそんなもんでしょう。
2問目は.....。
問題は良く読みましょうねっ!

87 :ダダダダーん!:02/01/24 10:34
どうかこれも人助け。クラ−メルの公式をCでやってください。こら、そこのあなた簡単っだって笑わない!


88 :麻衣派 ◆COx/Mai. :02/01/24 10:49
>>86
>その際,nが1以下の時には,
ごめーん…。


89 :えれな:02/01/24 10:53
なにがわからないのかな?
行列?行列式?公式?
Cで表現するところ?

締め切り間近で、答えがほしいのかな?
ところで、どういうふうに入力するの?

90 :デフォルトの名無しさん:02/01/24 12:24
>>88
おおっ! それは気付きませんでした。
それに、謝らなくていいです。楽しませてもらってるので。
(問題を書きこんだ人はどう思ってるか知らないけど。)


91 :デフォルトの名無しさん:02/01/24 12:43
int main()
{
  int n;
  while (scanf("%d", &n) == 1) {
    if (n > 0) {
  double fact = 1.0;
  int i;
      for (i = 0; i < n; fact *= ++i);
      printf("fact(%d) = %.0f\n", n, fact);
      return 0;
    }
  }
  return 1;
}


92 :デフォルトの名無しさん:02/01/24 12:53
>>91
88 見た?

93 :ダダダダーん:02/01/24 13:02
見ましたー!完璧っす!感謝感激雨あられ!!!!!先生ありがとー!


94 :麻衣派 ◆COx/Mai. :02/01/24 13:03
>>92
見たよっ。
double型かー。


95 :デフォルトの名無しさん:02/01/24 13:05
>>92
スマソ。
    if (n > 1) {


96 :ダダダダーん:02/01/24 13:10
締め切りやばくて答えがほしいんです。Cあらわせないんです。キーボードでおねがいします。

97 :ダダダダーん:02/01/24 13:13
93は間違いです。ごめんなさい。

98 :デフォルトの名無しさん:02/01/24 13:13
>>96
おまえはもう書き込むな。
仕様(問題)の説明もできないのに、教えろ教えろって連呼しても無駄だよ。
っていうか迷惑。

99 :デフォルトの名無しさん:02/01/24 13:16
宿題を作るプログラムを教えてください。

100 :えれな:02/01/24 13:21
>99
こんな感じかな?

int main()
{
printf("宿題は以下の通り: 宿題を作ること。\n");
return 1;
}



101 :デフォルトの名無しさん:02/01/24 13:25
http://imaginary.homeip.net/math-qa/cramer.html

>「Cramerの公式」はたんなる解の表現形式にすぎず、間違ってもこの公式で解を求めようというものではない


102 :デフォルトの名無しさん:02/01/24 13:25
>>99

printf("宿題\n");
while(1){
printf("%d*%d=",rand(),rand())
}

103 :デフォルトの名無しさん:02/01/24 13:38
>>87 C++でもいいなら

TVector Cramer(TMatrix A, TVector B)
{
TVector result( 0 );
double dA=A.determinant();
if (dA==0) return result;
result.SetLength(B.size() );

for(int i=0 ; i<B.size() ; i++)
 {
 TMatrix C= A.displaceCramer(B,i) ;
 result.setValue( i , C.determinant()/dA );
 }
return result:
}


104 :デフォルトの名無しさん:02/01/24 13:43
>>101
97を弁護する気は全くないが、一応言っておくと、
確かにクラメルの公式で解を求めるのはダルイが、
計算機でやるぶんには全く問題無い。

>>97
宿題はあきらめて、まともに質問できるくらいの知識を得てこい。

105 :デフォルトの名無しさん:02/01/24 17:42
こんばんは、以前アドバイスいただいたものです。
その後先生に提出して、アドバイスをもらい、コンパイルはできたのですが、
プログラムとして正常に動くのかどうかは判断できません。
どなたか評価していただけないでしょうか?
特にaはcharで宣言しましたが、これでいいのかどうか。
また、iの使い方などをチェックしていただけたらと思います。

#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
char a;
int da[100];
double hi[100];
double lo[100];
int i, j, max, min, n;



if ((fp = fopen("Temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}

i = 0;
a = fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
while ( a != EOF ) {
++i;
a = fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
}

max = 0;
for (i = 1; i < n; i++) {
if (hi[max] < hi[i]) {
max = i;
}
}
printf("最高気温, 日付=%g\n, %g\n", hi[max], max);

min = 0;
for (j = 1; j < n; j++) {
if (lo[min] > lo[j]) {
min = j;
}
}
printf("最低気温, 日付=%g\n, %g\n", lo[min], min);

fclose(fp);
}



106 :デフォルトの名無しさん:02/01/24 18:11
>>105
 いや、動くかわからないんじゃなくて、ためしに動かしてみるものじゃ
ないのか? こういうデバッグ作業も課題のうちだよ。
 何十年前みたくコンパイルして実行したら何時間も待たないといけない
ような時代じゃないんだし。

107 :名無し:02/01/24 18:20
値が割り当てられていない
ローカルな変数 'n' に対して参照が行われました。

108 :デフォルトの名無しさん:02/01/24 18:35
>>106

ありがとうございます。
確かにおっしゃる通りだと思います。
楽しようと考えてしまいました。

ですが、実際にdatファイルがあり、それを読み込むというの習っていないし
テキストにも載っていないので、ヒントだけでもいただけないでしょうか?
temp.datを作って、デスクトップに置いたのですが、読み込まれませんでした。

>>107

ありがとうござます。
nは使っていないので削除しました。

109 :デフォルトの名無しさん:02/01/24 18:40
ちなみに問題は以下です。
********************************
次のように、一行に日付けとその日の最低気温、
最高気温が記録されたファイル(ファイル名: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
・・   ・・・・    ・・・・
_____________________

このファイルを読み込んでファイルの中での最高気温が最も高い日の
日付と最高気温、
同様に最も低い最低気温とその日付を表示するプログラムを作成せよ。


110 :デフォルトの名無しさん:02/01/24 18:40
>>108
Temp.datの中身はちゃんと書いた?
空のファイル作ったって読み込めないよ。
あとデスクトップに作ってもだめかもね。

111 :デフォルトの名無しさん:02/01/24 18:44
>>108
ファイルから読めないんだったら、
double hi[100]={1.0, 2.0, ... };

のようにすればいいよ。
nについては....。
もっとよく考えてみたら?


112 :デフォルトの名無しさん:02/01/24 18:49
>>105
> 特にaはcharで宣言しましたが、これでいいのかどうか。
駄目。

113 :デフォルトの名無しさん:02/01/24 19:08
>>110

はい。書きました。
どこに置けば。。。

>>111

その方法で考えたら訳わからなくなってしまいました。
できればファイルを読みこむかたちで作動させたいです。

nは使ってましたね。ご指摘ありがとうございます。
あせっております;;

>>112

えっっ;;
これはどういう宣言をしたらいいのでしょうか?
配列でもないですし、、。
もしかして、このプログラム、もっと大きな部分で間違ってます?


114 :デフォルトの名無しさん:02/01/24 19:10
>>113
実行可能ファイルはどこに?
それと同じ場所においておけばいいとおもう。

115 :デフォルトの名無しさん:02/01/24 19:18
>>113
とりあえず、ここをみましょう。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fscanf.3.html

116 :デフォルトの名無しさん:02/01/24 19:21
吉祥寺にある大検・大学受験予備校の中央高等学院
ここは、完全に狂ってる。
授業料は一年分一括前払いなので、
金が入れば、生徒は要らない
金を振り込んだら、何とかその生徒を辞めさせようと
講師どもが、あの手、この手でイヤガラセをしてきますね。
セクハラはもちろん、脈絡の無い罵倒は日常茶飯だね。
酒臭い講師もいるし・・・ 人生の最果て中央高等学院
学歴詐称、経歴詐称、合格実績詐称、デタラメ授業、
http://www.chuo-school.ac/

http://chs-f.com/index.html 中央高等学院福岡校
司法浪人の田中校長は ↑ また司法試験に落ちましたが
HP上では下らない見栄を張っています


117 :C言語教えてください:02/01/24 19:23
次の問題わかる人いますか?
15個以内の点数を入力し、その最高点・最低点・合計点・平均点を出力する関数
(tensu)を作成せよ。ただし、点数=9999の入力で終了とする。
条件 while文を使用すること。
入力するデータ 80,75,98,29,35,50,100,0,61,88
出力結果 最高点 =====>   100点
     最低点 =====>    0点
     合計点 =====>   616点
     平均点 =====>   61.6点

118 :デフォルトの名無しさん:02/01/24 19:26
>>117
丸投げするやつには教えてやんない。

119 :デフォルトの名無しさん:02/01/24 19:27
> 次の問題わかる人いますか?

試してるのか?(w

120 :C言語教えてください:02/01/24 19:34
こんな簡単な問題も分からないんですか?とても本題には入れませんね。
ではさようなら。

121 :デフォルトの名無しさん:02/01/24 19:43
>>117
#include <stdio.h>
int main(void)
{
  printf("出力結果 最高点 =====>   100点\n");
  printf("     最低点 =====>    0点\n");
  printf("     合計点 =====>   616点\n");
  printf("     平均点 =====>   61.6点\n");
  while(0);
  return 0;
}

122 :デフォルトの名無しさん:02/01/24 19:44
>>120
さようなら。

それにしても 117 の問題文はちょっと変ですね。
即興で作ったのだろうか?

123 :デフォルトの名無しさん:02/01/24 19:44
>>121

> while(0);

にワラタ

124 :デフォルトの名無しさん:02/01/24 19:46
>>121
ワラタ!

入力がないけどね。

125 :デフォルトの名無しさん:02/01/24 19:47
>>120
いつも学校でそう言われてるのか。(w
プログラミングが苦手だったら、LOGOからはじめるといいぞ。


126 :デフォルトの名無しさん:02/01/24 19:48
do{
 ・・・・
}while(0);
にすれば何ら問題無い、全然ひねくれてないね   w

127 :デフォルトの名無しさん:02/01/24 20:05
>120
こんな簡単な問題で試そうと思ったのですか?話になりませんね。
ではさようなら。

128 :117:02/01/24 20:29
>>124
入力も入れてみた

static intint input(int *s, int n) { int i; printf("入力するデータ ");
 for(i = 0; i < n && scanf("%d,", &s[i]) && s[i] != 9999; i++);return i; }
static int max(int *s, int n) { int i, r = INT_MIN;
 for(i = 0; i < n; i++) if(r < s[i]) r = s[i]; return r; }
static int min(int *s, int n) { int i, r = INT_MAX;
 for(i = 0; i < n; i++) if(r > s[i]) r = s[i]; return r; }
static int total(int *s, int n) { int i, r = 0;
 for(i = 0; i < n; i++) r += s[i]; return r; }
static double avg(int *s, int n) { return (double)total(s, n) / (double)n; }

int main(void)
{  int s[15], n;
  n = input(&s[0], sizeof s / sizeof *s);
  printf("出力結果 最高点 =====>%6d\n", max(s, n));
  printf("     最低点 =====>%6d\n", min(s, n));
  printf("     合計点 =====>%6d\n", total(s, n));
  printf("     平均点 =====>%6.1lf\n", avg(s, n));
  while(0);
  return 0;
}


129 :デフォルトの名無しさん:02/01/24 20:36
>>128
いいね!

130 :105:02/01/24 20:38
何度もすいません。
105です。

>>114

実行可能ファイルというのはなんでしょう?
環境としては、学校のPCでテラタームを使って
プログラミングしております。
programfiles>Ttermpro
の中には入れることができませんでした。

>>115

読みました。
数を返すということはintでいいのでしょうか。

131 :デフォルトの名無しさん:02/01/24 20:39
>>128

> 関数(tensu)を作成せよ。

132 :デフォルトの名無しさん:02/01/24 20:44
>>130
テラタームっていうのは、別のパソコンにログインして、そのパソコン
を操作するソフト。
面倒なので説明は省くが結論としては、テラタームでプログラム書いた
のと同じように、テラタームでデータファイルつくりなされ。

133 :デフォルトの名無しさん:02/01/24 20:45
>>130
> 実行可能ファイルというのはなんでしょう?
コンパイルが正常終了したときにできるファイル
Unixだとa.out Winだとexeファイルのこと


134 :デフォルトの名無しさん:02/01/24 20:51
>>130
ということは、Unix系のOSですね?
プログラムをコンパイルすると実行形式のファイルができるのですが、
あなたの使っている環境にはインタプリタでも入っているのでしょうか?

データファイルはカレントに作ればよいでしょう。
それから fscanf ですが、返り値の意味はわかりますか?

135 :105:02/01/24 20:51
>>132

おおありがとうございました。
muleでtemp.datを作ったら、実行できました。
結果からみると
最高気温, 日付=15
, 4.24399e-314
最低気温, 日付=5
, 0
ミスがあるようなので、考えてみます。
datファイルは以下のとおり

1 15 5
2 14 4
3 13 3
4 12 2
5 11 1

ともあれ一歩前進して嬉しいです。

136 :>:02/01/24 20:51
#include "stdafx.h"
#include "math.h"

#define EPS (0.00001)
#define N (9)

void cpy(float a[N][N],float b[N][N],int n)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
a[i][j]=b[i][j];
}

void del(float a[N][N],int k,int n)
{
int i,j;
for (i=k; i<n; i++)
for (j=0; j<n; j++)
a[i][j]=a[i+1][j];
for (j=0; j<n; j++)
for (i=0; i<n; i++)
a[i][j]=a[i][j+1];
}

float dat(float a[N][N],int n)
{
int k;
float ret=0.0,e[N][N];

if (n==2)
return a[0][0]*a[1][1]-a[0][1]*a[1][0];
for (k=0; k<n; k++){
cpy(e,a,n);
del(e,k,n);
if (k % 2)
ret -= a[k][0] * dat(e,n-1);
else
ret += a[k][0] * dat(e,n-1);
}
return ret;
}



137 :続き:02/01/24 20:52
int main(void)
{
int n,i,j,k;
float a[N][N],b[N],c[N][N],d;

printf("n=?");
scanf("%d",&n);
if (n > N){
printf("%d > %d .\r\n",n,N);
return 0;
}
for (i=0; i<n; i++)
for (j=0; j<n; j++){
printf("a%d%d=?",i+1,j+1);
scanf("%f",&(a[i][j]));
}
for (j=0; j<n; j++){
printf("b%d=?",j+1);
scanf("%g",&b[j]);
}

d=dat(a,n);
if (fabs(d) < EPS){
printf("|a| = 0\r\n");
return 0;
}
for (k=0; k<n; k++){
cpy(c,a,n);
for (j=0; j<n; j++)
c[k][j]=b[j];
printf("x%d=%g\n",k+1,dat(c,n)/d);
}
return 1;
}


138 :105:02/01/24 20:53
>>133

ありがとうございました


139 :>>87:02/01/24 20:54
>>136-137
作ってみた。遅かったみたいね。スマソ


140 :105:02/01/24 20:54
>>134

いいえ、OSはウィンドウズです。


141 :デフォルトの名無しさん:02/01/24 20:58
>>140
「あなたの使っているPCが」ですね?

142 :105:02/01/24 21:00
あっそうです。

>データファイルはカレントに作ればよいでしょう。
>それから fscanf ですが、返り値の意味はわかりますか?

学校が時間切れのようなので、
また、明日にでも考えてみます。


143 :105:02/01/24 22:24
みなさん、ありがとうございました。

144 :デフォルトの名無しさん:02/01/24 22:37
>>133
>コンパイルが正常終了したときにできるファイル
正確に言うとコンパイルとリンクね。


145 :デフォルトの名無しさん:02/01/25 01:13
puts("心地の良い朝には名曲でもいかがか。\n"
    "http://www.geocities.co.jp/Milkyway-Orion/1524/fre12dqc.wav");


146 :デフォルトの名無しさん:02/01/25 04:13
画像処理で顔画像から眉毛だけ抜き出すなんかいい方法ありませんか?


147 :デフォルトの名無しさん:02/01/25 04:44
とりあえずどこか無くしてみて、なんかちょっと怖かったら、そこはまゆげです。
それ以外を無くすと、ものすご怖いです。

148 :デフォルトの名無しさん:02/01/25 06:51
>>147
わかりやすい!
けどコンピュータで怖いかどうか判断するのは眉毛だけ抜き出すのよりも難しいと思うわれ。

149 :デフォルトの名無しさん:02/01/25 07:01
チン毛じゃなかったら眉毛。

150 :150:02/01/25 13:51
う〜ん、age

151 :麻衣派 ◆COx/Mai. :02/01/25 14:13
>>146
目を捜す。(白黒白のパターン?)
その上のほうにある眉毛色っぽい領域がそれ。
逆立ちしているときは、、、
どうしよう…。


152 :生徒B:02/01/25 14:15
先生、宿題じゃないけど質問です!

文字列をunsigned char型に「数値として」格納したくて下のようなプログラム書いたのですが
無駄が多い気がするので、よろしければご指導おねがいします!言語はC/C++です!

char num[]="ff"; //入れたい数値。
char head[]="0x";
strcat(head,num);

unsigned long numul=strtoul(head,NULL,NULL);
unsigned char numuc=(unsigned char)numul;


153 :麻衣派 ◆COx/Mai. :02/01/25 14:23
>>152
なにをしたいのかよくわからないけど…
unsigned char n=0xff;
じゃ、ダメなの?

>>151
目をつむっているときは、、、
どうしよう…。


154 :デフォルトの名無しさん:02/01/25 14:26
>>152
無駄とかなんかそんなことより
> strcat(head,num);
これはいいのか?

155 :生徒B:02/01/25 14:33
>>153,154
すいません。ここではchar num[]="ff"; と固定して書いたんですけど、
ホンとはこのnumにいろんな値が入ってくるのですよ。
・・・で、strtoulで16進と認識してもらうために"0x"つけたのですが・・・
やばいっすかねぇ・・・。

156 :デフォルトの名無しさん:02/01/25 14:36
sscanf

157 :えれな:02/01/25 14:42
undumpって事かな?
isxdigitと組み合わせて、ループまわした方が簡単そう。



158 :麻衣派 ◆COx/Mai. :02/01/25 14:43
>>152
あー、文字列で表された数字ね。
でもそれってstrcat()していいんですか。

それと、strtoulの第3引数はintです。


159 :デフォルトの名無しさん:02/01/25 14:49
>>154 たしかに strcat が head[]の配列境界を越えて
書き込んでしまうね。

たぶん >>152 の期待する添削結果は
char num[] = "ff";
unsigned char numuc = strtoul(num, NULL, 16);
だと思うな。

160 :生徒B :02/01/25 15:24
>>154-159 ありがとうございます。おかげさまで出来ました!
最終的には159さんの方法でやらせていただきました。

>>154
ご指摘の通りです。うっかりしてました。

>>156
sscanf(num,"%x",numuc);でうまくできそうですね。ありがとうございます。

>>157
undumpっていうんですか。・・・・知りませんでした。鬱

161 :デフォルトの名無しさん:02/01/25 15:53
宿題で検索サイトを作れと言われたんですけど
何から始めればいいのかわかりません。
まず最初に何をすればいいのかを誰か教えてください。

162 :デフォルトの名無しさん:02/01/25 16:04
>>161
「何の」検索サイトを作れと言われたのか。
それがわからないと誰もアドバイスしようもない。
また、それは「何の」授業の中でいわれたのか。
C の授業中に言われたのと perl の授業中に言われたのじゃ全然違う。

163 :SI:02/01/25 16:14
低能プログラマー共、こんな所で油売ってないで仕事しろ


164 :デフォルトの名無しさん:02/01/25 16:16
>>163
自称SIの実態は屑セールスマンな人ですか?
情死す板にでもお帰りやがりください。

165 :デフォルトの名無しさん:02/01/25 16:55
>>163
あんたもナー

166 :743:02/01/25 17:30
#include<stdio.h>
#include<math.h>
int n=10;
int func(int n){
if(n==1) return 1;
else return(n*func(n-1));
}
double func1(double x){
int i,a;
double z=1.0;
for(i=1;i<=n;i++){
a=func(i);
z+=1.0/a*pow(x,i);}
return z;
}
main(){
double x,z;
printf("please input x:");
scanf("%lf",&x);
z=func1(x);
printf("f(x)=%lf",z);
}
はeのx乗をもとめるものだがnがでかくなるとなぜオーバーフローするのか?
おしえてちょ。

167 :デフォルトの名無しさん:02/01/25 17:32
型の上限を越えるから

168 :743:02/01/25 17:34
ダブルは何桁までだっけ?

169 : :02/01/25 17:38
>>168
13桁だYO

170 :デフォルトの名無しさん:02/01/25 17:42
ソフトを作りました。公開するときにジャンルを書きたいと思います。
「メモリクリーナとシステムリソースの表示・アラーム機能etc」などの
機能をもったソフトはどのようなジャンルに分けられるのでしょうか?
具体的なジャンル名などありましたら教えてください。

171 :デフォルトの名無しさん:02/01/25 18:00
ユーティリティ

172 :105:02/01/25 18:10
皆さんのおかげで、どうやら完成したようです。
本当にありがとうございました。

もちろん参考資料として2ちゃんねるプログラム板を挙げておきます。

********************************************

#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int k,a,n;
int da[100];
double hi[100];
double lo[100];
int i, j, max, min;



if ((fp = fopen("temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}

i = 0;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
while ( a != EOF ) {
++i;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
}

max = 0;
for (k = 1; k < i; k++) {
if (hi[max] < hi[k]) {
max = k;
}
}
printf("最高気温, 日付=%g\n, %d\n", hi[max], max+1);

min = 0;
for (j = 1; j < i; j++) {
if (lo[min] > lo[j]) {
min = j;
}
}
printf("最低気温, 日付=%g\n, %d\n", lo[min], min+1);

fclose(fp);
}

********************************************************
最高気温, 日付=15
, 1
最低気温, 日付=1
, 5

173 :デフォルトの名無しさん:02/01/25 18:25
だからなんで、一旦配列にしまうんだろう。
それから、最低気温と最高気温の表示、まちがってるじょ。
da[i]は、どこへいっちゃったんだ?

174 :146:02/01/25 18:25
考えてくださってどうもありがとうございます。

目とか眉とか口とかそれ以外(鼻の穴とか)を
黒い部分(暗い部分)としては認識できるんですけど、
それらをどうやったら眉とかに分類してくれるんでしょうか?


175 :デフォルトの名無しさん:02/01/25 18:30
>>172
リファクタリングしてみようか
・同じことは2度書くな
・初期化、条件判定、カウントがあるならforの方がすっきり書ける
> i = 0;
> a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
> while ( a != EOF ) {
> ++i;
> a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
> }
for(i = 0; fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]) != EOF; i++)
  ;
また、これでaの変数はいらなくなる。


176 :デフォルトの名無しさん:02/01/25 18:35
>>173
> だからなんで、一旦配列にしまうんだろう。
あとで平均気温とかの仕様追加が発生したらとか考えると
微妙な問題だな...


177 :親切な人:02/01/25 18:40

ヤフーオークションで、幻の人気商品、発見!!!

今は無き「コピーガードキャンセラー」↓
http://page5.auctions.yahoo.co.jp/jp/auction/e5843828

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

178 :105:02/01/25 18:40
>>173,175

173さんいう配列にしてしまうというご指摘は、
175さんのご指摘と同じですか?

あとda[]が・・。
提出したのに・・(泣)
また送ろう、しょうがない。
↓なら完成ですよね。
**************
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int k,a,n;
int da[100];
double hi[100];
double lo[100];
int i, j, max, min;



if ((fp = fopen("temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}

i = 0;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
while ( a != EOF ) {
++i;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
}

max = 0;
for (k = 1; k < i; k++) {
if (hi[max] < hi[k]) {
max = k;
}
}
printf("最高気温, 日付=%g\n, %g\n", hi[max], da[max]);

min = 0;
for (j = 1; j < i; j++) {
if (lo[min] > lo[j]) {
min = j;
}
}
printf("最低気温, 日付=%g\n, %g\n", lo[min], da[min]);

fclose(fp);
}


179 :デフォルトの名無しさん:02/01/25 18:57
>>174
黒い部分同士の位置関係(他の部分との角度や距離)を、「典型的と思われる」データと比較するってのは、ど?

180 :デフォルトの名無しさん:02/01/25 19:06
>>178
そんなこと言い出したらきりないよ。
そのうち、もうちょっとましなコードが書けるようになるよ。
(経験つめばね。)

181 :105:02/01/25 19:09
>>180

そうですね。
がんばります。

長らくお世話になりました。
みなさんお元気で。

182 :デフォルトの名無しさん:02/01/25 22:15
とある二つの四角形が重ならないようになるプログラムってどんな感じなんでしょう?
教えてください!C++でお願いします!

183 :デフォルトの名無しさん:02/01/25 22:17
>>182
意味不明。

四角形が二つ与えられて、それが重なっているかいないかを判定したいのか?

それとも四角形を動かして、重ならないようにしたいのか?
そのときに何か条件はないん?

あと、自分でどれくらいまで考えたかも書くように。

184 :デフォルトの名無しさん:02/01/25 22:21
>182
どんな感じと問われても…
割とシンプルだよね。
洗練されてるかどうかは、設計によるんじゃないかな。
そんな感じ。

185 :デフォルトの名無しさん:02/01/25 22:32
△が重ならないように・・・・?

printf("△▽\n");

とか?

186 :デフォルトの名無しさん:02/01/25 22:34

先生!!ちょっと俺の手に負えないので質問させてください

→Z
___________
          |     |
          >     |
          >R    |
          >      |       
          |     =C
          )     |
          )L    |
          )     |
_________|_____|

上の回路でR=10KΩ、L=20mH、f=10KHzとしたときに
C=10pfから500pfまで5pf感覚で変化させたときの入力インピータンスZと
Zが最大になるときのCの値をプログラムで求めなさいと言う問題なのですが…
できますか?





187 :デフォルトの名無しさん:02/01/25 22:36
> 185
それだ!
って、そりゃ三角形だよ!! ヽ(`Д´)ノ

188 :デフォルトの名無しさん:02/01/25 22:37
>>182
申し訳無いです、4角形を動かしてです。
ゲームとかで使うような押し合い判定って言うのかな?
そんなかんじです。
自分では、二つが重なっているかいないかを判定する所まではできたのですが・・


189 :デフォルトの名無しさん:02/01/25 22:39
>>186
工業高校?電子基礎っぽい。


190 :デフォルトの名無しさん:02/01/25 22:40
>>182
半年前くらいに似た奴をやったけど
もう、データ削除してしまった…
スマソ


191 :デフォルトの名無しさん:02/01/25 22:40
>>189
はい、そうです


192 :デフォルトの名無しさん:02/01/25 22:41
>>186
? 公式知ってんなら簡単だろ?
オレ、公式忘れちゃったもんねぇ〜。

193 :191:02/01/25 22:41
一応大学なんですけど
落ちこぼれなんで高校生みたいなもんです


194 :デフォルトの名無しさん:02/01/25 22:41
>>191
同じだね。学年は?


195 :194:02/01/25 22:42
大学生か。

196 :デフォルトの名無しさん:02/01/25 22:46
>>188
つまり、四角形を押して動かすってことか・・。
どのくらい物理的に正確にやる必要があるの?

197 :デフォルトの名無しさん:02/01/25 22:48
>>186
Rのインピータンスは?
Lのインピータンスは?
このとき、RLのインピータンスは?
C=xとしたときの、Cのインピータンスは?
このときの、入力インピータンスは?

順に考えてみてください。

198 :186:02/01/25 22:50
うーん…どうプログラミングしたらいいのかが分からないんですよ
例みたいなものもないし、先生は絶対教えてくれませんから


199 :デフォルトの名無しさん:02/01/25 22:51
> 191
int zmax = 0 ;
int ans = 0 ;
for (int c = 10; c <= 500; c += 5) {
 int z = 公式(c);
 if (zmax < z) {
  zmax = z;
  ans = c;
 }
}

intでいいのかfloatやdoubleが必要なのかは氏らね。
画面に出すともファイルに吐くとも書いてないんで出力の事も氏らね。

200 :デフォルトの名無しさん:02/01/25 22:52
>>198
お〜っと、重症ですねぇ〜。
あなた一度でもプログラム組んだことあるの?

201 :デフォルトの名無しさん:02/01/25 22:53
とりあえずは…


202 :デフォルトの名無しさん:02/01/25 22:54
>>198
この回路の入力インピータンスをあらわす式はわかるってこと?
じゃあ、まずいままでの最大のZを与える変数を用意しておく。
Zmaxと名前付けとくとする。で、これに十分小さい値をいれとく。
で、for文で、cを10から500まで5ずつ変化させて、そのときの入力
インピータンスZを計算させる。
このとき、ZがZmaxより大きければ、Zmaxを更新して、このときのCの値を
記憶しておく。
で、最後に記憶していたCを表示させればいい。

。。とここまで書いたら199氏がプログラム例示してくれてますね。

203 :デフォルトの名無しさん:02/01/25 22:55
>>190
いえ、その心意気だけでありがたいです。

>>196
そんなに正確でなくともいいかと、指定されなかったものですので。

204 :デフォルトの名無しさん:02/01/25 23:00
えれなたんってあんまし来ないね〜。


205 :デフォルトの名無しさん:02/01/25 23:03
>>203
だったら、一番簡単なのは、Aを動かしてBと重なったときに、
BをAが動いたのと同じ方向に動かすとして、どれくらい動かせば
重ならないか計算すればいい。

206 :デフォルトの名無しさん:02/01/25 23:05
>>203
と言うことは、一次元でもいいのかな?
この手のものは、位置情報を保存するための
仮想マッピングテーブルを用意するといいのでは?

四角はどうやって表現するつもり?

207 :えれな:02/01/25 23:10
呼んだ〜?
x軸とy軸で分けて考えるといいよ。
+-------+
   +--------+
っていうのがあったら、重なってる部分だけ、どっちかの
四角形をずらしちゃう(半々でも、かたっぽを固定してもいいかな)。

(四角形が速度とかもってたら、その反対方向に、
速度に比例するように分配するとか。その場合は、
衝突で速度を交換したりするひつようもあるんじゃないかな)

208 :デフォルトの名無しさん:02/01/25 23:13
重心を求めて互いに反対方向にずらせばいいんじゃねぇの?

209 :186:02/01/25 23:19
とりあえず、>>199さん>>202さんの助言で
直列回路の場合の入力インピータンスは求められるようになりました
後は上記の図の場合どうすればいいか分かれば何とかなりそうです
>>199さん>>202さん
ありがとうございます

並列回路の場合のインピータンスの求め方が分かる方がいらっしゃいましたら
ぜひご教授ください


210 :デフォルトの名無しさん:02/01/25 23:27
>>209

>>197を見てどこまでわかるか答えてみなされ。
まあ、AとBが並列だったら1 / (1 / A + 1 / B)

211 :デフォルトの名無しさん:02/01/25 23:28
>210
複素演算の話でねーの?

212 :デフォルトの名無しさん:02/01/25 23:35
(R+jωL)//(1/jωC)

j^2=(-i)^2=-1
a//b=1/(1/a+1/b)
ω=2πf

213 :デフォルトの名無しさん:02/01/25 23:40
四角形の件にレス下さったみなさんありがとうございます!
これからじっくり考えて理解しようと思います。
どうもでした!


214 :デフォルトの名無しさん:02/01/26 00:14
>>207
スレ作成者がsageでいいの?
っていっても"sage"でなしに" sage"だから関係ないのか。


215 :214:02/01/26 00:16
関係あったみたいだね。
2chのシステムなら当然か。


216 :デフォルトの名無しさん:02/01/26 04:32
01234
56789
幅5で上の様に並べる場合、x=n%幅 y=n/幅で済みますが、
0259
148C
37BE
6ADF
の様に斜めに並べる場合のスマートな式が何も思い浮かびません。
どなたか知恵を貸しては頂けませんでしょうか。


217 :デフォルトの名無しさん:02/01/26 04:54
x += y

218 :えれな:02/01/26 05:30
>216
こんなのかな?えれな、泥臭い方法しか思いつかないよ。

#include <stdio.h>
#define X 4
#define Y 5
int main()
{
 int x, y, yy,i=0;
 int p[Y][X];
 for( y=0; y<Y; y++)
  for( x = 0, yy=y; yy>0; x++,yy-- )
   p[yy][x] = i++;
 i=X*Y-1;
 for( y=Y-1; y>0; y--)
  for( x=X-1, yy=y; yy<Y; x--,yy++)
   p[yy][x] = i--;
 for( y=0; y< Y ; y++ ){
  for( x=0; x< X; x ++ )
   printf("%2x ",p[y][x] );
  printf("\n");
 }
}



219 :えれな:02/01/26 05:44
あやや。ループの条件があやしいよ、、、
しかもXとYが離れすぎると破綻しちゃうし
こんどこそ、大丈夫かな?

#include <stdio.h>
#define X 7
#define Y 5
int main()
{
 int x, y, yy;
 int p[Y][X];
 int i = 0;
 for( y=0; y<Y+X; y++)
  for( x = 0, yy=y; x<X && yy>=0; x++,yy-- )
   if( yy < Y && x < X )
    p[yy][x] = i++;
   }

 for( y=0; y< Y ; y++ )
 {
  for( x=0; x< X; x ++ )
   printf("%2d ",p[y][x] );
  printf("\n");
 }
}



220 :デフォルトの名無しさん:02/01/26 05:57
>>216
一番左の数は、n行目の時(n-1行目の左端+n)だ。
次の行のあたまの数未満の間は、(x(n-1)+1, y(n-1)-1)を繰り返せばいい。
半分まで配置したら、こんどは>>216の例でいうと6-9の対角線でひっくり返した座標でFから順に配置だ。

221 :216:02/01/26 05:58
>>218-219 有り難うございます。
幅X・高さY時、n のx・y位置が欲しいのですが、
正直、最悪、その用な手法でiが一致したらbreakしようかと思っていました^;

なんとなく図にして眺めてみると、スマートな式で簡単に
求められる様な気がしてならなく、すっきりしません(;´Д`)

222 :220:02/01/26 06:00
対角線じゃないな、180度回転だな。

223 :216:02/01/26 06:09
>>220 どもです。。。現在理解&検証中(;´Д`)

224 :220:02/01/26 06:32
はしょって書いたから、伝わりずらかったかな?
ま、わかんなかったら聞いてね、もっと丁寧に説明するから。

225 :216:02/01/26 06:51
理解出来ませんでした。。。恥ずかしいヨウ(;´Д`)
眠気が吐き気に変わってきたので起きてからもう一度考えてみます。。

記憶の断片
if (n<W*H/2)
x=n-左端
y-=x
左端の数字とyが抜けてるなぁ(;´Д`)

226 :えれな:02/01/26 06:54
>220
それって、幅が高さに比べ2以上多いときとか、
真ん中の方が余ったりしないかな?

>幅X・高さY時、n のx・y位置が欲しいのですが、
それを最初にかいてほしかったなー。
安直に、逆変換テーブルをつくるとかもあるよね。

227 :デフォルトの名無しさん:02/01/26 07:27
>>226
>>216が理解すれば、そういうのは対応できると思われ。
nの最大数によって好きな方使えばええよ。

228 :220:02/01/26 10:53
/*ためしてみたけど、ぜんぜんスマートじゃないや、ゴメソ。では、細密充填リストで…*/
void left(int n, int* pi, int* pt){
int i=1, t=0;
while(1){if(t+i>n){*pt=n-t;*pi=i-*pt-1;break;}
t+=i++;}return;}
void position(int n, int xl, int yl, int* px, int* py){
int r, cn, m ;
if(xl<=yl) cn=xl*(xl+1);else cn=yl*(yl+1);cn/=2;
if(cn>n){left(n, &r, &m);*px=m;*py=r ;}
else if(xl*yl-cn<=n){left(xl*yl-n-1, &r, &m);*px=xl-m-1;*py=yl-r-1;}
else{m=n-cn;
if(xl<yl){*px=m%xl;*py=xl+m/xl-(m%xl);}
else{*px=m/yl+1+m%yl;*py=yl-m%yl-1;}}
return;}
#include <stdio.h>
#define X 8
#define Y 9
main(){int i, x, y ;int a[X][Y];
for(i=0;i<X*Y;i++){position(i, X, Y, &x, &y) ;a[x][y]=i;}
for(y=0;y<Y;y++){for(x=0;x<X;x++)printf("%3d", a[x][y]);printf("\n") ;}}


229 :(゚∀゚):02/01/26 13:23
えれなたんは沙夜たん・・・(;´Д`)ハァハァ

230 : :02/01/26 18:09
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float func1(int *a){
int sum=0,i;
float ave;
a=a+1;
for(i=1;i<=100;i++){
sum=sum+*a;
a++;
}
ave=(float)sum/100;
return ave;
}main(){
int a[110],i;
float ave,std;
for(i=1;i<=100;i++){
a[i]=rand()%100+1;
}

for(i=1;i<=100;i++){
printf("%3d",a[i]);
if(i%10==0) printf("\n");
}
ave=func1(a);
printf("ave=%f",ave);
}
4行目をvoid func1(int *a){
としてはいけないのはなぜですか?
そもそもvoidってなんですか?


231 :デフォルトの名無しさん:02/01/26 18:15
>>230
関数にはぁー、型とぉー、返り値があってぇー、
返り値がいらないときはぁー、void 型にするのぉー。


232 : :02/01/26 18:19
つまりreturnで返すときはvoidは使わないということですか?

233 :デフォルトの名無しさん:02/01/26 18:23
>>232
使わない、と言うかぁー、使えない。
void は型がないと言う意味だからぁー、
返り値の大きさ(使用されるメモリサイズ)がぁー、
わからないんですぅー。

234 :デフォルトの名無しさん:02/01/26 18:27
void とは 「無」です。


235 :デフォルトの名無しさん:02/01/26 18:49
void@(以下略)

236 :デフォルトの名無しさん:02/01/26 18:58
>>230
そもそも関数ってわかってる?

237 :えれなたん(;´Д`)ハァハァ・・・:02/01/26 19:04
>>229
勘弁してくれよ。


238 :(;´Д`) :02/01/26 19:05
>>230
ネタ?


239 :734:02/01/26 19:11
#include<stdio.h>

void func(float a[10][10],int n){
int i,j,k;
float c[10][10];

for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c[i][j]=0;
for(k=1;k<=n;k++){
c[i][j]+=a[i][k]*a[k][j];
}
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=c[i][j];
}
}
}
main(){
float a[10][10];
int i,j,n;
printf("please input n:");
scanf("%d",&n);
printf("please input a\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
}
printf("\nA=\n");
for(i=1;i<=n;i++){
printf("|");
for(j=1;j<=n;j++){
printf("%4.1f",a[i][j]);
}
printf("|");
printf("\n");
}
func(a,n);
printf("\nA^n=\n");
for(i=1;i<=n;i++){
printf("|");
for(j=1;j<=n;j++){
printf("%4.1f",a[i][j]);
}
printf("|");
printf("\n");
}
}
これだとAの2乗が求まりますが、n乗にするにはどうすればいいですか?

240 :デフォルトの名無しさん:02/01/26 19:13
void *


241 :デフォルトの名無しさん:02/01/26 19:22
>>239 そういう時は2乗関数ではなくて
c=a*b となる関数を作って あとはバイナリ分解で計算するのが定石

242 :デフォルトの名無しさん:02/01/26 19:25
>>239
Aのn乗求めるのにこんな長いコードが必要とは思えないが。
解読する気にもならん。

243 :えれな:02/01/26 19:44
for(i=1;i<N;i++)
 func(a,n);
カナ?

244 :デフォルトの名無しさん:02/01/26 19:57
memcpy(b,a,sizeof(a));
for(i=1;i<N;i++) func(a,b,n);
くらいにしなきゃだめでしょう。
2乗じゃなくて掛け算する関数を作ればいい。

245 :デフォルトの名無しさん:02/01/26 20:04
>>244
計算量の問題があるから、
Aのn/2乗を計算してから、Aのn乗を計算するような感じで再帰的にやりたいね。

246 :デフォルトの名無しさん:02/01/26 20:09
>>245
tail recursion にしないとね。

247 :デフォルトの名無しさん:02/01/26 21:03
厨な質問で申し訳ないんですが、C言語で#ifとif文はどう違うんですか?

#えれなちゃんに答えてもらうと嬉しいな(ワラ

248 :デフォルトの名無しさん:02/01/26 21:05
>>247
#if
プリプロセッサ用のif

249 :デフォルトの名無しさん:02/01/26 21:43
早坂日和>>>>>>>>>>璃月沙夜>神岸あかり>>>>>>>
>>>えれなたん>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>氷川菜織

250 :デフォルトの名無しさん:02/01/26 22:57
怜さん、麻衣タンにも復活希望。

251 :デフォルトの名無しさん:02/01/26 23:20
>>250 じゃあおまえがやれ(W

252 :デフォルトの名無しさん:02/01/26 23:57
>>249
えろげネタはえろげ板でやって欲しい風味。

253 :デフォルトの名無しさん:02/01/27 09:17
宿題age

254 :デフォルトの名無しさん:02/01/27 10:31
そろそろ卒研も終わりか...

255 :デフォルトの名無しさん:02/01/27 20:19
すみません、お恥ずかしい限りなんですが、お聞きします


Q.次の方程式の解をニュートン法によって求めなさい

sinΘ-cosΘ=0
ただし
0<=Θ<=2π


と言う問題です、できますでしょうか?


256 :デフォルトの名無しさん:02/01/27 20:22
>>255
google は力強い友だ。
http://www.google.co.jp/search?sourceid=navclient&ie=utf8&oe=utf8&q=sin+cos+%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E6%B3%95

257 :デフォルトの名無しさん:02/01/27 20:59
>>255
sinΘ-cosΘ=0
sinΘ=cosΘ
sinΘ/cosΘ=1
Θ=π/4,5π/4
でよろしいですか?

258 :247:02/01/27 21:10
>>248
と言われてもわからないんですが…
#ifとifの大きな違いというのは?
誰か詳しく教えてください!

259 :デフォルトの名無しさん:02/01/27 21:13
>258

> if
> プリプロセッサ用のif
プリプロセッサ>コンパイル前に処理される。

if文
制御構造>実行時の処理の流れを制御する。

260 :255:02/01/27 21:20
すみません、説明不足でした…

C言語を使って求めないといけないんです
ごめんなさい


261 :デフォルトの名無しさん:02/01/27 21:20
えれなを出せ

262 :デフォルトの名無しさん:02/01/27 21:24
>>258
実際にプログラム書いて、
プリプロセッサを通してみな。


263 :デフォルトの名無しさん:02/01/27 21:44
>>260 (255)
「ニュートン法」って何?

264 :デフォルトの名無しさん:02/01/27 21:48
えれなたん…
出てきて…
会いたいよ…

265 :デフォルトの名無しさん:02/01/27 21:55
#include <math.h>

void foo(double x)
{
 printf("sin(%f)-cos(%f)=%f\n", x, x, sin(x)-cos(x));
}

int main(void)
{
 foo(atan(1.0));
 foo(atan(1.0)+M_PI);
 return 0;
}


266 :デフォルトの名無しさん:02/01/27 22:23
「ニュートン法とは、実際に値を代入して方程式を解く方法です。」
だって。
単純に考えれば、for でまわせばそのうち答えがわかる、ということかな。
でも、精度の問題があるから、そんなに簡単には行かないと言うところか。
とりあえず、何がしかのコードを提示すれば、アドバイスもらえるんじゃないの?


267 :デフォルトの名無しさん:02/01/27 22:45
>>255
求められてる精度は?
問題に書いてない?

268 :デフォルトの名無しさん:02/01/27 22:53
>>267
書いてありません…
漠然ととけと書いてあります

とりあえず、いま友人にプログラムを見せてもらいました
ただ、そのプログラムですと
sinとcosをつかうとエラーがでてしまいます
ですから、sinとcosをつかっても動けるように改良していただけますか?


#include <stdio.h>
#include <math.h>
#include <conio.h>

float f (float); /*関数fの定義*/
float fd ( float ); /*関数の微分用の関数fdの定義*/

int main(void)
{
float x, xd, ep, eps = 0.0001; /*関数の設定*/
int n, nmax=50; /*計算回数と最大反復回数の設定*/

scanf(" %f",&x); /*初期値の入力*/
for(n=1; n<=nmax; n++){ /*規定回数内での繰り返し*/
xd=x-f(x)/fd(x);
ep=xd-x; /*収束の度合いを計算*/
printf("n=%2d x=%8.5f xd=%8.5f ep=%8.5f\n",n,x,xd,ep); /*計算の結果を表示*/
x=xd;
if( fabs ( ep ) < eps ) break;/*収束値が出たら計算を終了*/

}
printf( " 収束値 = %8.4f \n",x); /*収束値を表示する*/
getch(); /*結果をウィンドウに表示する*/
return 0; /*値を返す*/
}


float f ( float x ) /*関数fの計算*/
{
return sin * x - cos * x; /*計算式*/
}

float fd ( float x ) /*関数fdの計算*/
{
return 1-1; /*計算式*/
}


269 :デフォルトの名無しさん:02/01/27 23:01
>>267
Cの文法を理解せよ。
sin * xはsinという変数とxという変数を乗ずる意味で、sin xの値を求めていない。


270 :デフォルトの名無しさん:02/01/27 23:03
ついでにニュートン法もものにしていないようだ。
ほれ
http://www.sm.rim.or.jp/~shishido/newton.html


271 :デフォルトの名無しさん:02/01/27 23:05
つーか
http://www.geocities.co.jp/Playtown-Dice/1023/num-analys/newton.html
ここにずばりの答えがあったがどうよ?

272 :デフォルトの名無しさん:02/01/27 23:05
もう1個おまけだ

xd=x-f(x)/fd(x);

float fd ( float x ) /*関数fdの計算*/
{
return 1-1; /*計算式*/
}
だと、0除算だ。


273 :255:02/01/27 23:28
return sin(x)-cos(x);
と言うような書き方でよいのでしょうか?


274 :デフォルトの名無しさん:02/01/27 23:37
>>268
conio.hなんかインクルードするなよ・・・

275 :デフォルトの名無しさん:02/01/27 23:39
getch(); /*結果をウィンドウに表示する*/

ここらへんがイイ!
DOS時代を知らないんだろうな。

276 :デフォルトの名無しさん:02/01/27 23:40
>>273
それでいいよ。
fd()はなにやってるの?

277 :デフォルトの名無しさん:02/01/27 23:42
提出前にコメントは消しといたほうが無難だな

278 :デフォルトの名無しさん:02/01/27 23:43
fd()ってのは、df/dxのことだろ?
微分計算できねーのか?
なんで1-1なんだよ?

279 :デフォルトの名無しさん:02/01/27 23:46
そのプログラムを見せてくれた友人とは縁を切ることをお勧めする

280 :255:02/01/27 23:56
すみません…


281 :デフォルトの名無しさん:02/01/27 23:59
>>255=>>280
で、ニュートン法は分かったんだよね?

282 :デフォルトの名無しさん:02/01/27 23:59
>>280
君が謝る必要はない。
君が負うべき責は唯一つ、2chに聞きにきたことだ。

283 :デフォルトの名無しさん:02/01/28 00:02
>>280
つーか、友達が悪い(ワラ

284 :255:02/01/28 00:07
しかし、気づかずなかったことも事実な訳で
実質上同レベルかと…半年もやってるのに

今やってみたらなんかとんでもない数値が出ました



285 :デフォルトの名無しさん:02/01/28 00:09
>>255
まずは関数ポインタを受け取って微分の近似値を計算する部分からだな

286 :デフォルトの名無しさん:02/01/28 00:10
やってみるなよ(ワラ
で、もうオケーなの?

287 :デフォルトの名無しさん:02/01/28 00:11
>>285
うそはいわないように。

288 :285:02/01/28 00:16
大まじめ

289 :255:02/01/28 00:16
駄目みたいです、今日はそろそろ寝ます


290 :デフォルトの名無しさん:02/01/28 00:18
>>289
なんで?
ニュートン法が分からんの?Cが分からんの?
単純な漸化式なんで両方分かってればいけるはずだが。

291 :デフォルトの名無しさん:02/01/28 01:03
ここは、えれなたんが降臨しなくては。


292 :285:02/01/28 01:04
>>255こんな感じ、あまりうまく作れなかった。
#include <math.h>
#include <stdio.h>

#define FRST_DEVI 1e-4
#define ERR_RANGE 1e-8
#define LOOP_MAX 1000

double cal_error(double x, double y){
return fabs(x-y) ;}/*ここは手直しせよ(相対誤差にするべき)*/

double d(double (*func)(double), double x) /*funcのxでの微分係数を計算*/
{
int c=0 ;
double h, ret, prev ;

h = FRST_DEVI ;
ret = (func(x+2*h) - func(x)) / (2*h) ;
do {
prev = ret ;
ret = (func(x+h)-func(x))/h ;
c++, h/=2 ;
} while(cal_error(prev, ret)>ERR_RANGE && c<LOOP_MAX) ;

return ret ;
}

double newton(double (*func)(double), double x) /*初期値xでfuncのニュートン法*/
{
int c=0 ;
double prev_x ;

do {
prev_x = x ;
x = x - func(x)/d(func, x) ;
c++ ;
} while(cal_error(prev_x, x)>ERR_RANGE && c<LOOP_MAX) ;

return x ;
}

double f(double x){ /*ターゲット関数*/
return cos(x)-sin(x) ;}

void main(void){
printf("%lf\n", newton(f, 0)) ;}

293 :デフォルトの名無しさん:02/01/28 01:10
>>285
ここは自分の技術を披露するスレじゃないぞ。


294 :285:02/01/28 01:14
暇だから丸投げ大歓迎。分かる範囲で

295 :デフォルトの名無しさん:02/01/28 01:22
>>292
つーか、ニュートン法は単なる漸化式なんでそこまでやる必要は無いと思うぞ。

double f(double x){
  return (sin(x)-cos(x));
}
double fd(double x){
  return (sin(x)+cos(x));
}

この二つを定義して、あとは友達のループでいけるぞ。

296 :デフォルトの名無しさん:02/01/28 05:46
えれなたんは>>249の書き込みでショックを受けたようです。
ゴルァ出てこいや>>249

297 :デフォルトの名無しさん:02/01/28 18:35
#include <math.h>
#include <stdio.h>
#define VAL_ans 0.0
#define VAL_div 10.0
void sub( double t1,double t2 );
double func( double t );

int main() {
sub( 0.0, M_PI*2.0 );
return 0;
}

void sub( double t1,double t2 ) {
double a1,a2,step;
char wk1[ 20 ],wk2[ 20 ];

step = ( t2-t1 ) / VAL_div;
while( t1 < t2 ) {
a1 = func( t1 );
a2 = func( t1+step );
if( ( a1 < VAL_ans && a2 > VAL_ans )
|| ( a2 < VAL_ans && a1 > VAL_ans ) ) {
sprintf( wk1, "%17.14f", t1 );
sprintf( wk2, "%17.14f", t1+step );
if( !strcmp( wk1, wk2 ) ) {
printf( "ans = %s\n", wk1 );
break;
}
sub( t1, t1+step );
}
t1 += step;
}
}

double func( double t ) {
return sin( t ) - cos( t );
}


298 :デフォルトの名無しさん:02/01/28 20:21
↑なにがしたいのかわかりまてん。

299 :デフォルトの名無しさん:02/01/28 20:49
お願いです!この問題を解いてください。
問題
学生番号と点数を読み込んで上位10名分のデータを次のように
出力するプログラムを作成せよ。

    @1@@A95B@@@100   
    @2@@A95B@@@@94
    @3@@A95E@@@@70    @:空白
    @3@@A95B@@@@65
    @5@@A95D@@@@48
         ・
         ・
         ・
         ・

          

300 :デフォルトの名無しさん:02/01/28 20:51
ここは「手伝おっか?」スレで「やってあげる」スレではありまてん。

301 :デフォルトの名無しさん:02/01/28 20:53
%2d%6X%6d

302 :デフォルトの名無しさん:02/01/28 20:54
>>299
#include <stdio.h>
int main(void) {
const char* data[] = {
"    @1@@A95B@@@100   ",
"    @2@@A95B@@@@94",
"    @3@@A95E@@@@70    @:空白",
"    @3@@A95B@@@@65",
"    @5@@A95D@@@@48",
"         ・",
"         ・",
"         ・",
"         ・",
NULL
};
const char** p = data;
while(*p) puts(*p++);
return 0;
}
だって“何処から”読み込むとも書いてへんしなー

303 :デフォルトの名無しさん:02/01/28 20:54
>>299
言語は? 特に指定がないなら

sort -k 3,3 infile | head -n 10


304 :299:02/01/28 20:55
>>300
すみません。別スレに逝ってきます。

305 :デフォルトの名無しさん:02/01/28 20:56
宿題を頼むやつって、どうしてこう、問題の説明もできないバカばっかり
なんだ?


306 :デフォルトの名無しさん:02/01/28 20:58
>>304
「宿題丸投げしたらやってあげる!」
なんてスレは無いと思われ…

307 :デフォルトの名無しさん:02/01/28 21:00
>>305
つーか「だから」頼むんだよ。

308 :デフォルトの名無しさん:02/01/28 21:00
なんか「教えて君」がかわいく思えてきた今日この頃...


309 :えれが:02/01/28 21:07
下へさがりまーーーす。

310 :えれな:02/01/28 22:26
>299
全角・半角混合プログラムはちょっとむつかしいかな?
入力はぜんぶwchar_tに変換して、さらに、ぜんぶ半角に
してからとりあつかうと、簡単だよ。さいごには、
wchar_t to_wider(wchar_t ch)
{ if( L'A' <= ch && ch <=L'Z' ) return ch - 'A' + L'A';
 if( L'a' <= ch && ch <=L'z' ) return ch - 'a' + L'a';
 if( L'0' <= ch && ch <=L'9' ) return ch - '0' + L'0';
 if( ch == L' ' ) return L' ';  return ch;
}
みたいなのをループさせて、出力をみんな全角化すれば、
あとは普通にやればいいとおもうよ。

311 :高卒クン:02/01/28 22:52
struct car
{
char make[20];
int year;
};

car * input(void);

int main()
{
car * ps;
ps = input();

cout << "Make: " << (*ps).make <<"\n";
cout << "Year: " << ps->year << "\n";
delete [] ps;
return 0;
}

car * input(void)
{
car * ps = new car;

cout << "Please enter the make: ";
cin.get(ps->make, 20);

cout << "Please enter the year made: ";
cin >> ps->year;
return ps;
}

このステートメントをループさせたいのですが
ステートメントをintにする方法教えてください

312 :高卒クン:02/01/28 22:54
例えば最初にループの数きいて
Car#?
Please enter make ?????
please enter year ????
って感じにできますでしょうか?

313 :えれな:02/01/28 23:04
>311のソース、newにたいしてdelete[]発行してるよっ。
>312 こうかな?car*で扱う必要性はないんだけど‥‥

typedef std::vector<car*> carArray;
carArray input(void)
{
 int loop=0;
 cout <<"Car#?"
 cin >> loop ;
 carArray arr;
 for( int i=0; i<loop; i++)
 {
   car * ps = new car;
   cout << "Please enter the make: ";
   cin.get(ps->make, 20);

  cout << "Please enter the year made: ";
  cin >> ps->year;
  arr.push_back( ps )
 }
 return arr;
}

314 :高卒クン:02/01/28 23:19
>>313
見よう見真似で本の例題見ながら練習問題解いてて
つまってたとこです
それを参考に考えて見ます

315 :デフォルトの名無しさん:02/01/28 23:20
\0とNULLの具体的な違いを教えてくれませんか?

316 :デフォルトの名無しさん:02/01/28 23:23
>>315
それ、宿題?

317 :高卒クン:02/01/28 23:26
違います(笑)
ここだけの話し、時間かけてVisual Studio落としたんで
時間に見合うだけ遊んでみようかと・・・・

318 :デフォルトの名無しさん:02/01/28 23:28
ware?

319 :デフォルトの名無しさん:02/01/28 23:30
>>315
\0とNULLはまったく違うぞ?
'\0'とNULLならまだわかるが・・・

320 :デフォルトの名無しさん:02/01/28 23:33
>>319
'\0'とNULLの違いです。


321 :デフォルトの名無しさん:02/01/28 23:33
>話し
はなしし?

は置いといて。
MSDN会員、と言うわけでもなさそうだな‥‥


322 :デフォルトの名無しさん:02/01/28 23:35
MSDN会員ならそんなくだらない質問はしないと思われ

323 :デフォルトの名無しさん:02/01/28 23:36
>>321
'はなし'を変換してみてください。ちゃんと'話し'って出ますよ。


324 :デフォルトの名無しさん:02/01/28 23:38
>>323
意味が違う。
私が話します。
私の話。

325 :デフォルトの名無しさん:02/01/28 23:39
日本語の話は別スレでしてきます。
ところで\0とNULLの具体的な違いを教えてくれませんか?

326 :デフォルトの名無しさん:02/01/28 23:42
おなじ。

327 :デフォルトの名無しさん:02/01/28 23:42
'\0' -> (char)0
L'\0' -> (wchar_t)0
文字コードとしての0をあらわす。
NULL文字とも言ふ。
NULL -> 0 or (void*)0
ポインタがどのオブジェクトもさしていないことをあらわす。

328 :デフォルトの名無しさん:02/01/28 23:44
>>325
お前がこの違いを知ったところで何もできん。
同じと思ってろ。

329 :デフォルトの名無しさん:02/01/28 23:47
>>327
そうなんですか。ありがとうございます。

>>328
はぁ…

330 :デフォルトの名無しさん:02/01/28 23:47
>>317
warez利用者は(・∀・)カエレ!


331 :デフォルトの名無しさん:02/01/28 23:50
高卒で良いから
犯罪犯すなよ  (笑

332 :デフォルトの名無しさん:02/01/28 23:51
>>327
初心者が勘違いしそうな点があったので、
ちょっと補足させてくれ。
>文字コードとしての0をあらわす。
文字コードの0x00の事です。
数字の0じゃないからね。

333 :デフォルトの名無しさん:02/01/28 23:51
>>329
'\1'や'\2'も試してみれば理解できるかと。
'\0'はただCがそれを文字列の終端と認識するだけで、それ以外は他の文字と何の代わりもない。

334 :デフォルトの名無しさん:02/01/28 23:54
>>333
>'\1'や'\2'
え?まじ?
こんな命令あったの?
知らなかった・・・

335 :デフォルトの名無しさん:02/01/28 23:55
<html>
<MARQUEE direction="right" scrollamount="5">
    -= ∧_∧<BR>
  -=≡ (  ・∀・)<BR>
    -=( つ┯つ<BR>
   -=≡/  / //<BR>
  -=≡(__)/ )<BR>
   -= (◎) ̄))<BR>
</MARQUEE>
</html>

上の10行をメモ帳に書く。

名前を付けて保存。

保存したファイルの拡張子を.htmlに変更。

ブラウザで開く。

(・∀・)走る。


336 :デフォルトの名無しさん:02/01/29 00:13
(・∀・)イィ!

337 :デフォルトの名無しさん:02/01/29 00:57
ここは暇人も多いみたいだし、丸投げ専用スレでも作る?

338 :デフォルトの名無しさん:02/01/29 01:03
丸投げはよくないよ。
本人のためにもIT業界のためにも。

339 :デフォルトの名無しさん:02/01/29 01:09
出来るだけトリッキーなコードで応える○投げスレなら、おもしろそう。

340 :デフォルトの名無しさん:02/01/29 01:13
だってココに質問しに来る奴って、

○○教えてください

詳しく書けやゴルァ

すみません。もうきません。

そして誰もいなくなった・・・・。

だもん。
根性無しが多いから、人のソース読む(解析する)だけでも
少しは力つくから、まずはそこからということで。

341 :デフォルトの名無しさん:02/01/29 01:17
>>340
解析するならいんだけど、丸写しされて提出という可能性があるから。

それに、丸投げするにしても詳しく書いてくれないと・・・

342 :デフォルトの名無しさん:02/01/29 01:20
丸写し提出オッケーよーん。
同類出現の連座で零点でも知らんけど

343 :デフォルトの名無しさん:02/01/29 01:20
>339
えれなたんの>>310も、かなりキてるな‥‥

344 :デフォルトの名無しさん:02/01/29 01:47
えれなたんにはかつての怜たんのような勢いがないのう・・・。
日下部殿も何処かに行きよったし・・・。

あの頃が懐かしいのう・・・。

345 :デフォルトの名無しさん:02/01/29 01:54
懐古主義者は逝ってよし。

346 :デフォルトの名無しさん:02/01/29 01:56
>>345
ひどいのう・・・。


347 :田代雅史:02/01/29 03:50
         ,〜((((((((〜〜、
        ( _(((((((((_ )
        |/ ~^^\)/^^~ヽ|
         |  _ 《 _  |
         (|-(_//_)-(_//_)-|)
         |   厶、    |  cout<<"このスレは無事に正常終了した。\n"
         \ |||||||||||| /      <<"私が最後の仕事をするとしよう。\n";
          |\___/::\ 
          /丶 / /    \ return 0;
        /,': //  ヽ    \}
       / /´ ̄ ̄ ̄ ̄ ::::::   \-、
     / _/         ::  、  ゙  `\
    /  ~_/`''         : 、`      ゙ヽ
    /  __/`''       ___  ::丶  \:: ヽ、 ヽ
  /   / `         ヽ、{丶    ヽ :::ヽ |
  /              ~ヽ、ヾ\      ゙i |
  。             -´/ /ゝ、  ` _ ヽ、/X
  ヽノ             :::|/// ~` '''  `' / ヽ
  | , |   |       :::| / | 〃   \  |
   {~ ヘ___ \  。  .:::ノ /_/| |    :::|   |
  丶ノ  \__ `- 、_____, -´イイ_| |    ::::| |  |
   {  |   \___ \ノ イ_ | |    :::|  |
     { ´|ヽ、   ,,`i` // \ノ  |丶    :丿   |
     {´_|_ `'''''´  l //ノヾ,ノ`ゝヽ____ /ヽ,、  |
     |  i `'''ー-''~  }=  ノ ヾ /〃     | ヽ}
      ヽゝ、_    } = ヾ  |      ノ  |


348 :田代雅史:02/01/29 03:52
         ,〜((((((((〜〜、
        ( _(((((((((_ )
        |/ ~^^\)/^^~ヽ|
         |  _ 《 _  |
         (|-(_//_)-(_//_)-|)
         |   厶、    |  cout<<"すまない。冗談だ。\n"
         \ |||||||||||| /     
          |\___/::\ 
          /丶 / /    \
        /,': //  ヽ    \
       / /´ ̄ ̄ ̄ ̄ ::::::   \-、
     / _/         ::  、  ゙  `\
    /  ~_/`''         : 、`      ゙ヽ
    /  __/`''       ___  ::丶  \:: ヽ、 ヽ


349 :デフォルトの名無しさん:02/01/29 04:43
怜たん>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>えれなたん

350 :怜派:02/01/29 07:49
怜タンハァハァ…

351 :デフォルトの名無しさん:02/01/29 10:07
>>344
Dr.D!?


352 :デフォルトの名無しさん:02/01/29 10:28
もっともりあげるれす
えれなたんれてきてくらしゃい



353 :デフォルトの名無しさん:02/01/29 18:30
怜たん萌え萌えゲームでも作るか・・・。
麻衣たんも入れるか・・・。


354 :デフォルトの名無しさん:02/01/29 19:52
>>353
あ、それ宿題にしとくよ。

355 :デフォルトの名無しさん:02/01/29 21:40
>>354
勘弁してくれ、今はそんな暇はない。
いつか暇ができたら作るか・・・ということで。

まあ、>>353のような書き込みをしてしまうくらいに
萌え尽きない状態で終わってしまった怜たんスレを残念に思うわけだ。

356 :田代雅史:02/01/29 23:19
         ,〜((((((((〜〜、
        ( _(((((((((_ )
        |/ ~^^\)/^^~ヽ|
         |  _ 《 _  |
         (|-(_//_)-(_//_)-|)セミコロンを付け忘れていた。
         |   厶、    |  ;
         \ |||||||||||| /     
          |\___/::\ 
          /丶 / /    \
        /,': //  ヽ    \
       / /´ ̄ ̄ ̄ ̄ ::::::   \-、
     / _/         ::  、  ゙  `\
    /  ~_/`''         : 、`      ゙ヽ
    /  __/`''       ___  ::丶  \:: ヽ、 ヽ


357 :デフォルトの名無しさん:02/01/29 23:56
>>>356 (藁

358 :(;´Д`) :02/01/30 00:43
#include<stdio.h>//標準的な出し入れでエッチをインクルード
#include<stdlib.h>//標準的な図書館でエッチをインクルード
#include<conio.h>//出し入れ制御の為の意思の操作卓をインクルード

int main(void)
{
  const int Ore=0,Reitan=1;
  int Orgasmus[]={0,0};
  while(getch()=='i')//ティムポを入れる。偽なら途中でやめる。
  {
    switch(Orgasmus[Ore]+Orgasmus[Reitan])
    {
    case 0:
      printf("怜「あっ・・・。」\n");
      Orgasmus[Ore]=(++Orgasmus[Reitan]);
      break;
    case 2:
      printf("怜「あっ、はあっ、ああ・・・。」\n");
      Orgasmus[Ore]=(++Orgasmus[Reitan]);
      break;
    case 4:
      printf("怜「ああんっ、はっ、はあッ・・・!」\n");
      Orgasmus[Ore]=(++Orgasmus[Reitan]);
      break;
    case 6:
      printf("怜「あッ、んふうッ、あはあッ・・・!」\n");
      Orgasmus[Ore]=(++Orgasmus[Reitan]);
      break;
    case 8:
      printf("怜「はあッ・・・ああッ!はあん!」\n");
      Orgasmus[Ore]=(++Orgasmus[Reitan]);
      break;
    case 10:
      printf("怜「ああん!い、いっちゃう!ああッ!はぁッ!」\n");
      Orgasmus[Ore]=(++Orgasmus[Reitan]);
      break;
    case 12:
      printf("怜「あッ、はあ、あああはぁぁッ!!」\n");
      printf("俺と怜たんは共に絶頂を迎えた。\n"
          "怜たんの中はとても気持ち良かった。\n");
      while(!(getch()=='o'));//ティムポを出す
      return 0;
    }
    while(!(getch()=='o'));//ティムポを出す
    if(Orgasmus[Reitan]<=2)
      printf("ちゅっ・・・。\n");
    else if(Orgasmus[Reitan]<=4)
      printf("ちゅくっ・・・。\n");
    else if(Orgasmus[Reitan]<=5)
      printf("ちゅくちゅっ・・・。\n");
    else
      printf("ちゅくちゅくっ・・・\n");
  }
  printf("俺は途中でエッチをやめた。\n"
      "怜たんの悲しそうな表情が痛かった・・・。\n");
  return 1;
}

/*こうして怜たんと図書館で普通にエッチをしましたが、満足できません。
 どうすればよいのでしょうか?*/

359 :age:02/01/30 00:46
age

360 :デフォルトの名無しさん:02/01/30 01:05
なれ合いUZeee! もはや全然宿題と関係ねーし。
pinkbbsにでも逝ってよし!

361 :デフォルトの名無しさん:02/01/30 01:09
>>360
ならば何故ageる?
仲間に入りたいのか(藁



362 :デフォルトの名無しさん:02/01/30 01:12
つーか、ム板全体に厨房がなだれ込んでる気がするが・・・。
他のスレッドもいきなり荒れてきたぞ。
(おそらく受験終わった工房・春休みに入った大学生がなだれ込んでるんだと思うが)

363 :>>362:02/01/30 01:24
それもあるけど、monazillaスレがあちこちに紹介された
影響も結構あるように思う。

364 :デフォルトの名無しさん:02/01/30 02:01
>>362
それはあまり関係がないように思うが。
ただ、確かに少し荒れ模様だな。
不定期でときに起こる一時的な荒れだとは思うが。


365 ::02/01/30 02:04
>>358
これからチョクチョク顔出すようにするから、そういうのやめてね・・・

366 :デフォルトの名無しさん:02/01/30 02:05
えれな?怜?そんなものはどうでもいい。
宿題タンよ、来い来い。


367 :デフォルトの名無しさん:02/01/30 08:25
来んでいいよ、もともと隔離スレでしょうに、ここ。
こんなタイトルのスレがあるから、勘違いした丸投げや作って君が横行する。

368 :デフォルトの名無しさん:02/01/30 08:27
なければないで、新しいクソスレができるだけでは?

369 :デフォルトの名無しさん:02/01/30 10:11
メモリの確保のやり方か、データのやり方がおかしいので、
実行時にメモリーリークを起こしているみたいなのですがどこが
おかしいのでしょうか。
/* factorization.c 因数分解する */
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
/* 求める因数の下限 */
#define FACTOR_LOWER_LIMIT (2)
typedef struct Factor_tag Factor;
struct Factor_tag
{
int value;
Factor * next; /* 末端はNULL */
};
typedef struct Header_tag
{
int size; /* Factorのリストのサイズ */
Factor * head;
} Header;

static Factor * addition(int value, Factor * current, Factor ** head);

void factorization(const int number, Header * const pheader)
{
Factor * head = NULL, * current = NULL;
int loop, dest;

{
int tmp;
tmp = ceil(sqrt(number));
dest = (tmp > FACTOR_LOWER_LIMIT) ? tmp : FACTOR_LOWER_LIMIT;
}
if(number == dest * dest)
{
current = addition(dest, current, &head);
++pheader->size;
}
for(loop = FACTOR_LOWER_LIMIT; loop != dest; ++loop)
{
if(number % loop == 0)
{
current = addition(loop, current, &head);
current = addition(number / loop, current, &head);
pheader->size += 2;
}
}
pheader->head = head;
#ifdef DEBUG
printf("prcessing %d is over.\n", number);
#endif /* DEBUG */
}


370 :デフォルトの名無しさん:02/01/30 10:12

Factor * addition(int value, Factor * current, Factor ** head)
{
Factor * store;
store = malloc(sizeof(Factor));
store->value = value;
store->next = NULL;
if(NULL != current)
{
current->next = store;
}
if(NULL == * head)
{
* head = store;
}
return store;
}


371 :デフォルトの名無しさん:02/01/30 10:12
Factor * addition(int value, Factor * current, Factor ** head)
{
Factor * store;
store = malloc(sizeof(Factor));
store->value = value;
store->next = NULL;
if(NULL != current)
{
current->next = store;
}
if(NULL == * head)
{
* head = store;
}
return store;
}


372 :麻衣派 ◆COx/Mai. :02/01/30 10:34
>>370-371
どっちが呼ばれるんですか。


373 :麻衣派 ◆COx/Mai. :02/01/30 10:35
同じでした…

374 :麻衣派 ◆COx/Mai. :02/01/30 10:46
解放するところを見ないとわかりません。


375 :デフォルトの名無しさん:02/01/30 10:56
sizeof(Factor) が、アヤシイと見たが…

376 :デフォルトの名無しさん:02/01/30 10:57
あ、んなことねーか

377 :デフォルトの名無しさん:02/01/30 11:02
コンパイル、実行できる最小限のソースじゃないと…


378 :怜派:02/01/30 11:10
>>369
実行時に何か言われるの?

379 :369に追加です:02/01/30 13:36
void processbody(Factor * factor)
{
Factor * post;
if(NULL == factor) return;
post = factor->next;
free(factor);
factor->next = NULL;
// finalize(post);
processbody(post);
}

void finalize(Header * pheader)
{
processbody(pheader->head);
}

int main(void)
{
Header header;
Factor * current;
int i;
factorization(100, &header);
current = header.head;
for(i = 0; i != header.size; ++i)
{
printf("\n%d: %d ", i, current->value);
current = current->next;
printf("%d ends.", i);
}
printf("\n");
printf("finalize begins.\n");
finalize(&header);
printf("finalize ends.\n");
return 0;
}

380 :369に追加です:02/01/30 13:48
//int main()にHeader headerの初期化を入れる。
header.size = 0;
header.head = NULL;


381 :デフォルトの名無しさん:02/01/30 13:54
人の話を聞けよ>リスト垂れ流してるだけの猿

382 :麻衣派 ◆COx/Mai. :02/01/30 14:04
void processbody(Factor * factor)
{
  Factor * post;

  while(NULL!=factor){
    post=factor->next;
    free(factor);
    factor=post;
  }
}

再帰使わないといけない理由があるの?


383 :麻衣派 ◆COx/Mai. :02/01/30 14:07
>free(factor);
>factor->next = NULL;

こ、これはなに、、、


384 :えれな:02/01/30 14:09
header.sizeはどこで初期化するの?

385 :369:02/01/30 14:10
>>381さま、すみませんでした。
369に追加をくっつけるとコンパイルできると思います。
実行時エラーは「"hogehoge"の命令が"0x000000000"のメモリを参照しました。
メモリが"written"になることはできませんでした。」です。
>>382さま
再帰を使う理由はありません。しかし、main()からfinalize()を呼ばなくても
エラーはでます。だから、factorization()かaddition()に間違えがあると考
えているのですが。


386 :369:02/01/30 14:14
379を書き直しました。
int main(void)
{
Header header;
Factor * current;
int i;

//int main()にHeader headerの初期化を入れる。
header.size = 0;
header.head = NULL;

factorization(100, &header);
current = header.head;
for(i = 0; i != header.size; ++i)
{
printf("\n%d: %d ", i, current->value);
current = current->next;
printf("%d ends.", i);
}
printf("\n");
printf("finalize begins.\n");
finalize(&header);
printf("finalize ends.\n");
return 0;
}


387 :麻衣派 ◆COx/Mai. :02/01/30 14:29
>>free(factor);
>>factor->next = NULL;

>こ、これはなに、、、


/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
|  なんで見てくれないんだろう…  |
\                    /
  ̄∨ ̄ ̄∨ ̄ ̄ ̄∨ ̄ ̄ ̄∨ ̄

 |      |\|/ |     |   |
 |∧ ∧ |/⌒ヽ、| ∧_∧ | ∧∧ |
 |(,,゚Д゚) ||,,゚ Θ゚)|(; ´Д`)|(=゚ω゚)|



388 :369、逝ってきます:02/01/30 14:31
>>383
あ、あー、こ、これでした…
なんとも、複雑な気持ちです。みなさま、本当にありがとうございました。


389 :怜命:02/01/30 14:33
>>387
君が麻衣派だからだよ、きっと。

390 :ゆっちん:02/01/30 14:34
C言語での個人情報ファイルの作り方を教えてください。(ソート、検索が可能でレコードの追加、削除、訂正、新規などの操作ができるもの


391 :デフォルトの名無しさん:02/01/30 14:39
(○投げのくせに、内容の説明が出来ないようなやつ、なにかいい呼び方ない?)


392 :麻衣派 ◆COx/Mai. :02/01/30 14:39
麻衣派は信用されないのか…


393 :369、逝ってきます:02/01/30 14:39
>>389
麻衣さんも、怜さんも、こころからお慕いもうしております。
すこし、焦り気味だったもので、申し訳ありませんでした。

394 :デフォルトの名無しさん:02/01/30 14:43
>>391
エメリアンと太鼓


395 :デフォルトの名無しさん:02/01/30 15:14
>>391
謎かけクン
・・・う〜〜んいまいち。

つーかどのスレみても質問してるやつでまともな説明できてるやつのほうが少ない。
説明できるやつはそもそもこんなところに聞きに来ないかも。

396 :えれな:02/01/30 15:23
>390
PRO*CをつかってSQLを投げるといいよっ。


397 :391:02/01/30 16:01
>>395
そーね、たしかに。
でも、ほら、問題丸写しのほうが、よっぽど答えやすいし。
そういえば、問題をスキャナで取って、あぷろどしただけってやつもいたなぁ。

謎かけといえば、俺の小学生の頃は、「まっくろう」→「影マン」→「シャドーマン」
ってかんじだったなぁ…

「エメリアン、入りま〜っす」っすかね。

398 :デフォルトの名無しさん:02/01/30 16:06
宿題が割れてしまいました。誰か助けて

399 :デフォルトの名無しさん:02/01/30 16:12
>>398
シアノアクリレート系の接着剤がおすすめ。

400 :デフォルトの名無しさん:02/01/30 16:45
計算幾何学のプログラムつくらにゃいけないんだけど、
何か面白い題材ない?
凸包、領域探索、三角形分割、線分交差 程度の
基礎的なアルゴリズムを使うものできぼん。

401 :デフォルトの名無しさん:02/01/30 17:35
>>396
390とは関係無いけど、Pro*ってフリーでありましたっけ?


402 :デフォルトの名無しさん:02/01/30 18:55
Turbo C++って、今お店に売ってないんでしょうかね?

403 :デフォルトの名無しさん:02/01/30 19:31
>402
2年位前に秋葉で見た

404 :402:02/01/30 19:38
2年も前ですか…
最近は売ってないんですかね…

405 :デフォルトの名無しさん:02/01/30 20:18
>>402 英語版のTurbo C++ 1.0 なら
ボーランドのサイトでフリーダウンロードできるよ。

406 :デフォルトの名無しさん:02/01/30 20:29
リブルラブル作れ >>400

余裕があるなら対戦型ダンシングアイに発展させれ


407 :デフォルトの名無しさん:02/01/30 20:33
リブルとラブルで囲もう 見つけてバシシ♪

408 :402:02/01/30 22:33
>>405
高校時代に学校でWindows版のTurbo C++を使っていました。
それと同じ物が欲しいんですが…


409 :405:02/01/30 22:41
>>408 それは Turbo C++ for Windows かな?
とりあえず、日本語の製品ならホレこれだ。
http://www.borland.co.jp/bcsuite/index.html


410 :405:02/01/30 22:47
たぶん、>>409 のURLにある Borland C++4.5J with D/E が、
TC++forWinに一番近いものだと思う。
つーか、使っていたコンパイラとOWLのバージョンは何よ?
そこが肝心。

411 :デフォルトの名無しさん:02/01/30 23:33
>>400
海腹川背の、ちゃんとブロックの角や辺にそってゴムがびにょーんと
伸びるやつ・・・あぁ、なんて表現したらいいのか・・・

やっぱリブルラブルでお願いします。


412 :デフォルトの名無しさん:02/01/31 00:40
川背さんだろ。海原川背「さん」!

413 :デフォルトの名無しさん:02/01/31 00:57
19歳か‥‥

414 :411:02/01/31 01:57
>>412
おっしゃるとおりです。川背さん、ごめんなさい。


415 :デフォルトの名無しさん:02/01/31 23:21
誰か聞けよage

416 :デフォルトの名無しさん:02/01/31 23:26
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  丸投げ君、まだ?
             \_/⊂ ⊂_ )   \________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  .知ったか君.  |/


417 :デフォルトの名無しさん:02/02/01 04:10
このシリーズスレもそろそろ終わりを迎えそうだな。


418 :デフォルトの名無しさん:02/02/01 05:50
はるになれば、すがこもとけて、またどっさり丸投げ燻がくるさ。

419 :デフォルトの名無しさん:02/02/01 16:07
すがこ??

420 :デフォルトの名無しさん:02/02/01 19:23
こんばんわ、失礼します。
身長 h (m),体重 w (kg)を入力して,ローレル指数 R を求めよ。
ただし,R = W × 10 / h3 + 0.5である。
また,「 R が114以下なら痩せている」,
「 R が136以上なら太っている」という基準から R の値に応じて,
「太っている」「普通」「痩せている」の判断結果を出力せよ。
という問題なのですが、一応作ってみたのですが、
何故か上手に行きません…
皆さんのご指摘をお願いしたいです。

/*2-9*/
#include <stdio.h>

main()
{
float a,b,R;

printf("あなたの身長と体重を教えてください。\n");
printf("身長(m)は?");
scanf("%f",&a);
printf("体重は(kg)?");
scanf("%f",&b);

R=b*10/(a*a*a)+0.5 ;

printf("あなたのローレル指数は,%fです。\n",R);

if(R>=136){
printf("あなたは太っています。");
}
else{
if(R<=114){
printf("あなたは痩せています。");
}
else{
printf("あなたは普通です。");
}
}
}


421 : :02/02/01 19:34
>>420
詳しく読んではいないが、
下から9行目の
else{

一番下の
}
は、あきらかにいらない。
こんなの書くな。

422 :デフォルトの名無しさん:02/02/01 19:39
>>420
VC6で確認済み。
変更したところ
・括弧の数があってない(笑)
・浮動小数定数に fをつけた(10 → 10.0f)
・if 〜 else if の構文を整理
・最後のキー入力待ち

#include <stdio.h>

int main(void)
{
float a,b,R;

printf("あなたの身長と体重を教えてください。\n");
printf("身長(m)は?");
scanf("%f",&a);
printf("体重は(kg)?");
scanf("%f",&b);

R=b*10.0f/(a*a*a)+0.5f ;

printf("あなたのローレル指数は,%fです。\n",R);

if(R>=136.0f){
printf("あなたは太っています。");
}
else if(R<=114.0f){
printf("あなたは痩せています。");
}
else {
printf("あなたは普通です。");
}

getchar();
getchar();
}


423 :デフォルトの名無しさん:02/02/01 19:42
またscanf問題か。整数で取り込んだらどう?

424 :デフォルトの名無しさん:02/02/01 19:44
太ってる… 鬱死

425 :デフォルトの名無しさん:02/02/01 19:52
420です。早速レスありがとうございました。
421>
ご指摘ありがとうございました。
とりあえず、消しておきました…。

422>
421>さんと同じ方でしょうか?
もし違ってましたら、すみません…
ご回答のほう、ありがとうございました。
違う場所までご指摘、本当にありがとうございます。
勉強になります。
これでなんとか課題のほうが提出できそうです。

423>
アドバイス、ありがとうございます。

424>
私も太っていますでした…。


426 ::02/02/03 00:31
旧スレの891クンへ。
何か間違いが多くて、ネタ? とか思ってしまったわ・・。まあ、折角だから
添削ね。

まず、
scanf("%c",&retu);
まず、この場合retuは配列だから&はいらないの。
それにこれだと一文字しか、受け付けられないから、for文で100回繰り返す
とかいうことをしないといけないかな。
まあこういう処理に、個人的にはあまりscanfを使うのはお勧めしないかな。
getchar()で一文字ずつ、配列に読み込んでいくのがいいと思うな。

次に
if(mozi(retu)==a)
 っていうのは、mozi()関数が返してきた結果がaと一致してるか調べてる
ことになるよね。aは初期化されていないから何が入ってるかわからないし。
何か変だよね。

で、次に関数の宣言で、
int mozi(int x[])
で、int型の配列として引数を受けてるけどこれはまずいのね。mainの中で
retu[]は、char型の配列として定義されたよね? だから、それを受け取
るにはchar型の配列として受け取らないと。

それで、これだと、いつもN番目の文字がjに入ってることになるよね。
jに代入するうなら、for文の中で
j = x[i];
みたくしないと。

mozi内でreturnしているところで、return bって返すのはちょっとね。bも
定義してから初期化されていないから、何が入っているかわからないから。
普通は、真なら1を偽だったら0を返すようにするわ。
で、このままだと、大文字がみつかったら0を小文字が見つかったらbを返し
てるよね?
この場合、jが小文字だったら1を返して、違ったら何もしないで、関数の
最後で(for文を抜けた後ね)0を返すようにしないと。for文の中で一度
もreturnされないということは、一度も小文字が見つからなかったって
ことだから。、

427 :デフォルトの名無しさん:02/02/03 00:41
せっかく前スレで答えてみたら、
怜たんがこのスレに誘導したみたいだな。
とりあえず、解答例だ。

/*受け取った文字列の中に小文字が含まれているかどうかを判定する関数の入ったプログラムを作成する*/

#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言語自体理解していない。
次からは、自分自身で進んで取り組むことだ。
そうしないと、後が苦しくなるだけだろう。
高校生より。

ちなみに、このままコピペした状態でコンパイラに通さないように。
全角空白でインデントしてあるからな。


428 :デフォルトの名無しさん:02/02/03 01:14
あ、今気が付いた・・・。
scanfは%c以外の書式では空白を無視するんだったな。


429 :デフォルトの名無しさん:02/02/03 15:24
文字コードはASCIIを仮定していいの?

430 :デフォルトの名無しさん:02/02/03 17:32
>>429
今回の丸投げ君はASCIIコードと仮定してソースを書いていたからな。
それに従ったまで。

まあ、ソース自体ネタだったのかもしれんが。

431 :デフォルトの名無しさん:02/02/03 17:44
旧スレと紛らわしいのでage

432 :デフォルトの名無しさん:02/02/03 23:03
学生さんはお休みかな。
羨ましいかな。

433 :デフォルトの名無しさん:02/02/04 01:35
え?どうしたのカナ?どうしたのカナ?


434 :デフォルトの名無しさん:02/02/04 01:42
>433
カナ坊は葱板に(・∀・)カエレ! かえれよぅ。


435 :デフォルトの名無しさん:02/02/04 01:50
漏れに宿題を見て欲しかったら、
「若菜の恥ずかしいコードを見てください」
と切なげに囁け(w

436 :デフォルトの名無しさん:02/02/04 01:53
若菜たんってそんなに人気あるのか?


437 :デフォルトの名無しさん:02/02/04 01:58
>>435
次からそれね!
わかったか、丸投げ君どもよ!
次から頼むぜ!


438 :生徒C:02/02/04 10:51
charの配列で、文字列とバイナリデータを連結したいのですが、
バイナリデータに0x00をいれると終端と認識されるのかstrcat等がうまくいきません。
この場合、地道にすべてのデータを1バイトずつ格納していくしか無いのでしょうか?
アドバイスおねがいします。

ちなみに言語はC++です。


439 :デフォルトの名無しさん:02/02/04 10:54
>>438
string使え

440 :くそスレの1です。:02/02/04 10:56
mov ax,99
mov ax,98
add ax,99
mov [0120],ax
int 20
という簡単なアセンブラ語を書いて、それをところ
どころ変更してデバッグした時に出るエラーを調べる
宿題が出たのですが、MS−DOSでどうやったら
アセンブラ語が書けるのかが分かりません。(恥ずかしい)
教授に聞けば良いのですが、もう時間が無いので
みなさん、助けてください。m(__)m





441 :デフォルトの名無しさん:02/02/04 11:01
C:\>debug
-a
3506:0100 mov ax,99
3506:0103 mov ax,98
3506:0106 add ax,99
3506:0109 mov [0120],ax
3506:010C int 20
3506:010E
-g
プログラムは正常に終了しました.


442 :くそスレの1です。 :02/02/04 11:12
>441
ありがとうございました。

443 :生徒C:02/02/04 11:25
>>439
stringってつかったことないので良く分から無いのですが、
これ使うと、0x00のあとに連結できたりするのですか?

444 :デフォルトの名無しさん:02/02/04 11:36
>>438
文字列の '\0' のある位置に memcpy でバイナリをコピーすればいい。

445 :デフォルトの名無しさん:02/02/04 11:44
std::vectorはどうよ?

446 :生徒C:02/02/04 12:24
・・・度々、すいません。

>>444
逆の場合はどうなんでしょう?例えば、
0x01,0x00,0x02などと続いた後、"hoge"などをコピーしたい場合です。

447 :デフォルトの名無しさん:02/02/04 12:35
教えてください!

MS-DOSで「イベント処理」か「スレッド処理」をつかって
プログラムを作りたいんですが全然わかんないんです。
かなり簡単なのでいいので、サンプルつくっていただけないですか?

448 :デフォルトの名無しさん:02/02/04 12:52
>>446
バイナリサイズをどっかで覚えておけば、そのサイズ分ずらしてstrcpyかな?
char buf[1024] = "\x01\x00\x02";
int size = 3;
strcpy(&buf[size], "hoge");
とか。

449 :デフォルトの名無しさん:02/02/04 12:52
>>447
普通ではできない。
そういうのをサポートしてるライブラリや言語をひろってくるしかないね。

450 :デフォルトの名無しさん:02/02/04 12:57
500!

451 :デフォルトの名無しさん:02/02/04 12:58
450だった...

452 :デフォルトの名無しさん:02/02/04 13:13
>>449
ありがとうございます。
そのままパクれるところってないですか?
どこからか全部もってきたら全然使えなかったんですが・・。

453 :生徒C:02/02/04 13:16
>>448
ナ、ナルホドー・・
ありがとうございます!やってみます。

454 :デフォルトの名無しさん:02/02/04 13:37
>>452
言語は何でもよいなら、スレッドはDOS版のRubyとか。

イベントドリブンのライブラリは、昔のTurboC++についていたような
記憶がある。

455 :デフォルトの名無しさん:02/02/04 13:51
そういやinterrupt修飾子ってあったな。懐かしい。

456 :デフォルトの名無しさん:02/02/04 14:08
>>454


457 :デフォルトの名無しさん:02/02/04 14:10
>>454
ありがとうございます。
早速いってみます。
JAVA言語なんですけど大丈夫ですか?

458 :デフォルトの名無しさん:02/02/04 14:16
>>457
DOSでJava動くの?

459 :デフォルトの名無しさん:02/02/04 14:20
>>458
え?動かないんですか?
DOSでJavaプログラムを作らないといけないんですけど・・。
あれ?なにか勘違いしてますかワタシ・・。

460 :デフォルトの名無しさん:02/02/04 14:23
どうせ DOS プロンプトのことだろ…

461 :デフォルトの名無しさん:02/02/04 14:27
>>459
純粋なDOS上で動くJava環境は寡聞にして俺はしらない。
どっかがが組み込み用に作っててもおかしくはないが、、、


462 :デフォルトの名無しさん:02/02/04 14:27
>>460
ああ、そうです。
それで「イベント処理」を使ってプログラミングを。

463 :デフォルトの名無しさん:02/02/04 14:29
>>457-460
ワラタ


464 :デフォルトの名無しさん:02/02/04 14:35
まあ、Javaの動く環境なら、イベントドリブンもスレッドも
動きます。
サンプルは検索すれば、山ほど見つかりますし、本屋に行けば
Javaの本もたくさんあります。

465 :デフォルトの名無しさん:02/02/04 14:37
>>464
色々ありがとうございました!

466 :981:02/02/04 15:05
>426様、427様
どうもありがとうございました。

ただ426様に教えていただいたやり方で実行したところ、大文字しか入力してないのに「小文字が含まれている」と表示されたのですが、あなたのパソではどうでしたか?

467 :981:02/02/04 15:07
↑ああっごめんなさい426様じゃなくて427様です

468 :デフォルトの名無しさん:02/02/04 15:25
427のコードにはバグがあります。
それはどこにあるのか。自分で考えるのも
勉強と云うものではないでせうか。

469 :怜派:02/02/04 15:52
>>466
ヒント:mozi関数のfor文

470 :427:02/02/04 16:07
>>467
変だな。俺の環境では上手くいったんだが・・・。

俺もまだまだ初心者ということか。
精進しないとな。

471 :デフォルトの名無しさん:02/02/04 16:09
ちょっと外れるけど、
printf("何か%d字以内で文字列を入力してください\n",N);
なんの為にNが定義してあるのか。


472 :デフォルトの名無しさん:02/02/04 16:11
islower()萌え

473 :427:02/02/04 16:17
ASCIIコードにのみ対応では駄目?
mozi関数内でislower関数でも使った方が(・∀・)イイ?

まあ、最初からislower使えばよかったんだろうけどさ・・・。


474 :デフォルトの名無しさん:02/02/04 16:27
>>473
そういう問題じゃないんだが...

> 変だな。俺の環境では上手くいったんだが・・・。

ほんとかいな?
どういう環境でもバグるだろ。

475 :デフォルトの名無しさん:02/02/04 16:32
>>474
ふーむ、どういう場合にバグるのか教えていただきたい。

普通に大文字だけを入力しても「大文字だけです」と
出力されるんだが。


476 :デフォルトの名無しさん:02/02/04 16:34
>>475
scanfの前に
memset(retu, 'a', sizeof retu);
を入れてやって見ろ。


477 :デフォルトの名無しさん:02/02/04 16:37
>>475
1文字しか入力されてなくても100文字分チェックしてるじゃん。


478 :デフォルトの名無しさん:02/02/04 16:39
strlen()萌え


479 :427:02/02/04 16:41
>>476
なるほど。
俺もてっきり見落としていた。
retuを定義した後、
memset(retu,'\0',sizeof retu);
と記述した。

これでいいよな?


480 :デフォルトの名無しさん:02/02/04 16:43
>>479
それはそれで余計な処理だろ。

481 :デフォルトの名無しさん:02/02/04 16:43
>>475
パソコンの機嫌によってうまくいくこともあればうまくいかないこともある。
君の場合はたぶん日頃の行いが良かったのだろう。

482 :デフォルトの名無しさん:02/02/04 16:46
>>479
> これでいいよな?
駄目

現象を修正しているだけで原因を修正してない。
# チェックする範囲は「配列のサイズ」ではなく、「文字列長」だろ?


483 :427:02/02/04 16:48
入力した文字列の長さを調べて、
その情報をもとにfor文を記述したほうがよかったか。

そうすればmemset関数など使う必要もないしな。



484 :デフォルトの名無しさん:02/02/04 16:56
/*受け取った文字列の中に小文字が含まれているかどうかを判定する関数の入ったプログラムを作成する*/

#include<stdio.h>
#include<string.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[])
{
  unsigned int i,j;
  size_t length=strlen(x);

  for(i=0;i<length;i++)
  {
    j=x[i];
    if(j>=0x61&&j<=0x7a)
      return 1;
  }
  return 0;
}

これでよろしいか?

485 :デフォルトの名無しさん:02/02/04 16:59
>>484
>>471は?


486 :427:02/02/04 17:03
>>485
全角文字で出力したかったってことで。
と、いうかそこは前スレの981のソースをできるだけ
そのままにしておこうと思って放っておいたところだから。


487 :427:02/02/04 17:13
すまなかったな、前スレの981。
偉そうな物言いをしてしまって・・・。
本当に理解できていなかったのは俺だったのかもしれない。

これからも精進していきたいと思う。
どうもありがとう。

488 :981:02/02/04 21:58
>427様
いいえわざわざ教えたいただいたのだからこちらこそ感謝感謝です。

>469様
forの中ですか…明日また学校でやってみます。ご指南ありがとうございました。

>484様
unsigned int ですか…?”unsigned"なるものはまだ習ってないのではたして使ってよいものやら…
strlenは習ったのですが…

489 :484:02/02/04 23:37
>いいえわざわざ教えたいただいたのだからこちらこそ感謝感謝です。
優しいのだな・・・。俺などに感謝してくれるとは・・・。
今思うと何であんなソースを書いてしまっていたのか・・・。
とんでもないボケをかましてしまったものだ。すまない。

>unsigned int ですか…?”unsigned"なるものはまだ習ってないので
>はたして使ってよいものやら…
今回については、文字列長が最高でも100文字なので、
mozi関数内の変数は全てint型で定義してくれて構わない。
安心してくれ。


490 :デフォルトの名無しさん:02/02/04 23:48
>484
size_t i;
char j;
であるべきなのでは?

491 :484:02/02/05 00:20
>>490
確かに、jはchar型であるほうが文字コードを代入するという意味が
明確になると思う。
size_tがunsigned intと同義でない環境もあるのか?
ならば、iもsize_t型で定義したほうがいいだろうな。
俺はtypedef unsigned int size_t;と仮定した上で、
size_tはその名の通り、文字列のサイズ(やや語弊ありか)を格納する
変数に用い、他の用途・・・例えば反復子などには普通にunsigned intを
用いるという考えで記述したのだが。

492 :デフォルトの名無しさん:02/02/05 00:43
なんか突っ込める場所をわざと残してるように見える

493 :林田:02/02/05 16:57
もしもし、あのーさっき注文した林田ですけど
宿題まだですかー?


494 :デフォルトの名無しさん:02/02/05 17:10
ちょーど今、出たところですぅ

495 :デフォルトの名無しさん:02/02/05 17:42
なんだ・・・agaってきたから宿題かとおもった。

496 :デフォルトの名無しさん:02/02/05 19:11
なんだ…レス増えてたから宿題かとおもった、おれもか…

497 :981:02/02/05 19:40
なるほど、strlenがないと、(Nー入力された数)分だけ勝手に配列されてしまうわけですね。

皆さんどうもありがとうございました。おかげ様で課題を終えることができました。

498 :デフォルトの名無しさん:02/02/05 20:51
なんだ…レス増えてたから宿題かとおもった。 誤爆か…

499 :デフォルトの名無しさん:02/02/05 20:55
なんだ・・・agaってきたから宿題だとおもたら・・・ 出前か…

500 :junk:02/02/05 22:14
VC6.0で作成したプログラムに、ACCESSで作ったデータベースを
ODBCでつなげたいんですけれども。

以前に、作成したプログラムに ACCESSをつなげるにはどのような
手順でやればいいのでしょうか?

ACCESS単品のODBCのつなげ方はわかるのですが・・・
既存のプログラムにデータベースサポートのつけ方どうか
教えてください!!調べてもなかなかみつからなくて 泣

お願いします!

501 :ポケコンで:02/02/05 22:23
連立方程式を解くプログラムって
御存知の方いらっしゃいますか?
もしいらっしゃれば
何卒、
漏れにご教授いただけませんでしょうか?
お願いします

漏れは今SHARPのPC−G830
使ってます
BASICでお願いします

ネタなんかじゃありません

502 :えれな:02/02/05 22:30
http://www.interweb.ne.jp/~imani/gaus.htm

503 :501:02/02/05 22:33
>>502
ありがとうございます
これに行番号付けて入力すればいいんですよね?

504 :デフォルトの名無しさん:02/02/06 06:14
JAVA言語で乱数によって「○」と「×」を配列にいれ1行で表示せよ
また、表示させるボタンと表示を消すボタンつくり、表示させている間の
時間を計測する関数を組み込みなさい。

まったくわからないんですが、
なにか参考になる情報教えてもらえないでしょうか?

505 :デフォルトの名無しさん:02/02/06 07:33
http://www.google.com/
http://java.sun.com/
http://www.jcp.org/


506 :デフォルトの名無しさん:02/02/06 07:34
>>504
あなたが何が出来て何が出来ないか、
プログラムの開発経験はあるのかJAVAを使った事はあるのか、
まったくわからないんですが、
なにか参考になる情報教えてもらえないでしょうか?


507 :デフォルトの名無しさん:02/02/06 07:35
>>504
コツは1行で表示せよとは書いてあるが、何文字表示せよとは書いてないこと。
char[1]に適当に○×入れて文字一個だけ表示しちゃえ。
さらに表示させるボタンと消すボタンは作っても、表示時間の計測にそれを利用する必要が無いのも味噌。
プログラム側で固定してしちゃえば楽勝♪

508 :デフォルトの名無しさん:02/02/06 07:55
計測しても表示しろとは書いてないから、なにもしないが正解。

509 :504:02/02/06 07:58
>>505
検索は、かけたんですが
どうも、いいのがヒットしなくて、、
というか、ヒットしてても良くわかってないだけなのかもですが、、

>>506
あ、すみません。
開発経験はないというか、まだ高校生なので、、、
授業で2,3回JAVAはやったのですが、それもよくわからなくて。。

>>507
それいい考えですね^^
と思ったんですが、一応2、30文字くらいと聞いた気がします。

510 :デフォルトの名無しさん:02/02/06 08:02
>>506
JAVA以外は?
プログラミング自体の経験がどの程度かわからないと・・・。



511 :デフォルトの名無しさん:02/02/06 08:02
最近は高校の授業でJavaをやってるのかい?

512 :506:02/02/06 08:05
JAVA以外は、Cを構造体の前くらいまでやってました。
というか、それ以上は理解不能になってしまいまして、、TT

JAVAは、ちょうど私たちの年から取り入れることになったそうです

513 :デフォルトの名無しさん:02/02/06 08:09
>>512
クラスってわかる?オブジェクトってわかる?インスタンスってわかる?イベントは?
判らなかったらセンセんとこ殴りこみに行ってできるわけねだろゴルァ!

514 :デフォルトの名無しさん:02/02/06 08:15
ちったぁ努力せぇよ
http://www.google.com/search?num=100&hl=ja&q=java+%93%FC%96%E5&btnG=Google+%8C%9F%8D%F5&lr=lang_ja


515 :506:02/02/06 08:26
えっと、、一応見よう見まねでランダムで配列に入れて表示するみたいなのを
つくってみたんですが、コンパイルはできるんですが実行されないみたいで、、
わかる人がみたら、かなりへんてこなんでしょうね、、、
○をTに、×をFにしてるんですが、、難しいですね、、

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
import java.awt.Graphics;


public class atest extends Applet {

       String S;

public void main(String arg[]){

int i;
double rnd;
char word[]= new char[30];

for(i = 0; i < 30; i++){
          rnd = Math.random();
          if(0.0 <= rnd && rnd < 0.5){
                word[i]='T';
          }          
else{
word[i]='F';
}
}
S = new String( word );

}

public void paint(Graphics g) {
g.drawString(S,30,30);
}

}


516 :デフォルトの名無しさん:02/02/06 08:27
>>514
そんなことゆーたらこのスレの存在意義が・・・
大体こんなスレに聞きにくるやつでPGになろうと思ってるやつなんかどうせいないんだから答えてやってもいいじゃん。
自分で必死に調べたってどうせ無駄になるんだし。

517 :506:02/02/06 08:31
あ、、importってこんなにいらないんですよね?
最初は、いっぺんにいろんなことやろうとして
失敗して、消すの忘れてました。。。

518 :デフォルトの名無しさん:02/02/06 08:33
>>514
Appletってmainだっけ?initだったかrunだったかどっちかだった気がするんだけど・・・?Javaよく知らない。
あと背景色や文字の色もいちおセットしたほうがいいかなぁ?
Randomは・・・まぁそれでもいっか、個性でてるし。

519 :デフォルトの名無しさん:02/02/06 09:27
>>518
そだね。
初期化処理は
public void init()
でよろしく。

520 :デフォルトの名無しさん:02/02/06 09:50
>>506
すげぇなぁ、結構本格的な課題だのう。
まぁこの時期だから、最後のまとめみたいなもんなのか。

>>515
とりあえず、ボタン作らなきゃいけないので、Appletに
直drawString()しないで、
1.○×を表示するPanel(ここでdrawString()する)
2.表示ボタン
3.非表示ボタン
をAppletにadd()する方向で。

あとは、ボタンにActionListener(を継承したサブクラス)を
追加(addActionListener())すると、ボタンが押された時ActionListenerの
actionPerformed()が呼ばれるので、呼ばれたら上の1.に対して、
表示するメソッドや非表示にするメソッドを呼ぼう。

がんばれ

521 :520:02/02/06 09:53
>>515
すまーん。
ActionListenerを継承したクラス
じゃなくて、
実装したクラス
です。

522 :怜命:02/02/06 16:00
ひまだー

523 ::02/02/06 16:37
>>515
とりあえず、一番簡単そうな実装法書くね。
atestクラスのメンバ変数として、現在表示か非表示かを表す変数を持つ。
で、paintメソッドで表示状態なら、文字列を書くようにすればいいね。

で、表示、非表示のbuttonをaddして。
で、ボタンを押されたときに、(atestクラスの)action()関数でイベント
を受け取って、表示、非表示なら上で言ったメンバ変数を書き換える。
表示のボタンが押された場合は、そのときの時間を記憶(これもメンバ変数
として持ってないとね)。非表示のボタンが押されたときは、記憶した時間
からどれくらい経っているかを計算。
 actionの最後で、repaint()を呼ぶの忘れないでね。

 こんな感じで。っていっても、ここで書いたの全部理解して貰えるとも思
ってないので、わからないところはどんどん聞いてね。

524 ::02/02/06 16:43
ボタンとaction()の使い方なんかは、下のサンプルなんかを参考に。
ttp://www.wakhok.ac.jp/~tatsuo/kouki96/11shuu/action.html

525 :515:02/02/06 17:50
親切にありがとうです^^
でいきなりわからないのですが、
現在表示か、非表示か表す変数をどう組み込むのかわからないのですが、、
無知ですみません、、がんばってはいるんですが、、

526 ::02/02/06 18:35
String S;
と同じように(同じ位置で)
boolean flag;
と宣言して。

最初の状態で表示したいなら、
flag = true;
って、init()の中で書くのね。
もし表示させたくないときは、
flag = false;
ね。

で、paint()の中で
if(flag){
 (文字を書く処理)
}
みたくすればいいと思うわ。

527 :デフォルトの名無しさん:02/02/06 20:36
結局、“えれな”ではなく“怜”な罠(w

528 :515:02/02/06 23:44
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
import java.awt.Graphics;

public class atest extends Applet {

String S;
boolean flag;
public Button tButton, fButton;

public void init(){
int i;
double rnd;
char word[]= new char[30];
flag=false;

tButton = new Button( "表示" );
          tButton.setBackground( Color.lightGray );
          add( tButton );

          fButton = new Button( "消去" );
          fButton.setBackground( Color.lightGray );
           add( fButton );

for(i = 0; i < 30; i++){
          rnd = Math.random();
         if(0.0 <= rnd && rnd < 0.5){
word[i]='○';
         }    
 else{
word[i]='×';
}
}
S = new String( word );

}

public void paint(Graphics g) {
if(flag){
g.drawString(S,30,80);
}
}
      public boolean action( Event evt, Object obj ) {

        if( obj.equals("開始") ) {
    flag=true;
    }
 else if( obj.equals("終了") ) {
    flag=false;
    }
 repaint();
    return true;
   }
}

529 :515:02/02/06 23:44
↑教えていただいたとおりにやると、見事うごきました^^
ほんと感謝です!!
ただ、コンパイル時にactionのところが推奨されないとでます。
アプレットは、ちゃんと動くのですが、、、

あと、表示を押して、消去を押して、再び表示を押すと
また新しい文字列にするには、どこで初期化したらいいんでしょうか?
今のままだと、表示して、消去して、また表示おすと、同じものが出てきてしまうので、、

何度もすみません。。><


530 ::02/02/06 23:51
>>529
推奨されないって出るのは古いやり方だからなのね。
回避するためには、>>520さんの言ったようにやればいいのかな?
まあ、課題だったら今のままでも問題ないと思うよ。

  if( obj.equals("開始") ) {
    flag=true;
  }
この部分で、再び表示を押した処理をしているのだから、
ここで、initでやったようにもう一度Sを決めなおせばいいと思うよ。

531 :515:02/02/07 00:14
速レスありがとうです〜無事できました^^
ここで、忘れていたのですが、時間を入れないといけなかったんですね、、
時間はsetTimeというメソッドをつかうのでしょうか?
これを、表示のボタンと消去のボタンに組み込んで
最後に引き算すれば大丈夫なんですかね?
あ、でも、引き算ってできるんでしょうか、、、

532 :515:02/02/07 11:14
プログラムのほうに時間を測る関数をくみこみました。
表示押した時に
start = System.currentTimeMillis();
消去を押した時に
stop = System.currentTimeMillis();

で時間を計算する関数を
public long getTime(){
t=stop - start;
  return t;

のようにしてみました。
後は、これを表示させるだけなんですが、
終了の時に表示させたいんですが、この時は表示に何を使えばいいんでしょうか?
アプレットに表示させることが、どうしてもできなくて、、
ご教授おねがいします。

533 :515:02/02/07 12:27
時間計測を表示を実装したものをここだと長いのでアップしてみました。
ただ、時間が計測されず、0になってしまうのですが、、、
おかしいところをどなたか、教えてください。
お願いします。

http://rinarina.3nopage.com/atest.html

534 :デフォルトの名無しさん:02/02/07 12:28
>>532
○×表示するのと同じでいいやん。
さすがにこれ以上は教えてクンの仲間入りだぞ。

535 :デフォルトの名無しさん:02/02/07 12:36
>>533
ありがとう。
忘れていた何かを思い出した気がするよ(´Д`)
常に0が表示されるのは単にgetTime呼び忘れてるだけ。

536 :麻衣派 ◆COx/Mai. :02/02/07 14:07
怜タン…ハァハァ

…はっΣ(゚Д゚ )


537 :宿題おしえてください。C言語です。:02/02/07 16:13
英文テキストを読み込んで,母音の数を数えて,
その個数および全文字に対する比率を計算するプログラムを書きなさい.

C言語初心者な文系人間にこの課題はできそうにありません。
char がほとんど理解できていないので...
誰か教えてください。宜しくお願いします。




538 :デフォルトの名無しさん:02/02/07 16:25
>>537
> 誰か教えてください。宜しくお願いします。
まず、英文テキストを読み込んで
 ・文字数をカウントするプログラム
 ・aの文字数をカウントするプログラム
を作ってみよう。

539 :デフォルトの名無しさん:02/02/07 16:42
>>537
どこまで分かってるんだ?
fopen()は分かるか?

540 :デフォルトの名無しさん:02/02/07 17:02
宿題1000円で引き受けます。
hhonji@hotmail.com

541 :デフォルトの名無しさん:02/02/07 17:04
作ったよ。
って、fopen使わなきゃ駄目なの?
標準入力から読みこみにしたけど。

542 :デフォルトの名無しさん:02/02/07 17:24
>>540
本地さんがこんなところにも(^^;
っていうか本物?

543 :デフォルトの名無しさん:02/02/07 17:59
数学板で相手にされなかったのですが
連立微分方程式をとく(数値計算で)プログラム
どこかのサイトにありませんか?
検索したのですがみつからなくて・・
こんなかんじです.

a*(b+c*x)dy/dt=d*(e-y)-(f-c*y)*z
dx/dt=-1/a*z
z=g*(w(y)-i)

定数(a,b,c,d,e,f,g,i)
未知数(x,y,z)
独立変数t
w(y)はyによって決まる定数.

境界条件
t=0,x=3
t=0,y=28



544 :怜派:02/02/07 18:06
>>543
こんなの見つかったよ
http://www.ed.kagu.sut.ac.jp/~j-yajima/chemistry/PROGRAM/RNGKUT1.f

545 :543:02/02/07 18:12
>>544
ありがとうございます.
これはFORTRANですよね.
がんばってみます.

546 :デフォルトの名無しさん:02/02/07 19:29
JAVAで
アプレットのテキストフィールドに文字を入力して、
ボタンを押すとファイルに書き込まれるようにするには、どうしたらいい?
誰か、教えてほすぃYo!
お願いしま〜


547 :デフォルトの名無しさん:02/02/07 19:33
>>546
Javaアプレットではセキュリティの関係上
ファイルに書き込むことはかなり面倒


548 :545:02/02/07 19:38
面倒って事は、どうにかすればできます?
どうにかして書き込みたいんですが、、

549 ::02/02/07 19:39
あ、いきなり誤爆、、
回線切っ・・・

550 ::02/02/07 20:45
>>548
 んー、そういう話題はJavaスレの方がいいかも。
 私は余り詳しくない、というかやろうとしたことないから知らないん
だけど、サーバ側で(アプレットとは別に)ファイルを書き込む処理をす
るものを走らせて、Appletがそこと通信するとかかな?
 まあ、しばらくたって反応ないようなら、Java系のスレで聞いてみて
ね。

551 :デフォルトの名無しさん:02/02/07 22:24
>>548
電子署名付きアプレットってのでできるんじゃないですか?
http://www.dmz.hitachi-sk.co.jp/Java/Tech/security/11signedapplet.html
とか。めっちゃ面倒そうですけど。

552 :烏龍茶:02/02/07 22:42
>>546
IE 限定技。そのアプレットを置く Web サイトを「信頼するサイト」に
登録し「信頼するサイト」の Java セキュリティレベルを「サンド
ボックス」から「有効」にする。これでアプレットの全てのセキュリティが
外れる。


553 :烏龍茶:02/02/07 22:48
もう一つ、サーバ側でサーブレットや CGI を作ることが出来るなら
有効な技。アプレットからサーブレット (CGI) に保存したいデータ
を渡す (URLConnection を使用)。サーブレットそのデータをメモリ
なりファイルなりに保管する。アプレットは showDocument() を
使用してもう一度サーブレットを起動する。サーブレットは
Content-Type: application/octet-stream でも付けて保存したい
データを返す。これでブラウザの「名前を付けて保存」機能を使用
することが出来る。


554 :546:02/02/07 23:23
みなさま、ありがとうです〜
いろいろ試してみたいと思います

555 :537です。:02/02/07 23:26
英文テキストを読み込んで,母音の数を数えて,
その個数および全文字に対する比率を計算するプログラムを書きなさい

>>538
文字数のカウントの仕方がわかりません。文章をよみこむところまでできました。

>>539
fopen()って習ってないので使えないです…。
検索かけて調べてみましたが、イマイチ使い方がわかりません。

556 :デフォルトの名無しさん:02/02/07 23:28
>>555
習うもんじゃない。
自分で学べ

557 :超先生@プログラム板:02/02/08 00:07
  ∧_∧
< `ш´> <ちょっとだけヒントだ
int i,vowel = 0;
...
/* 母音の数を数える */
for(i=0;text[i]!='\0';i++){
 if(text[i]>='A'&&text[i]<='Z') vowel++;
}


558 :557:02/02/08 00:08
  ∧_∧
< `ш´> <間違えた、、、

559 :デフォルトの名無しさん:02/02/08 00:52
それは大(以下略

560 :デフォルトの名無しさん:02/02/08 01:04
int i,vowel = 0;
...
/* 母音の数を数える */
for(i=0;text[i]!='\0';i++){
 if(strchr("aiueo",text[i])) vowel++;
}


561 :デフォルトの名無しさん:02/02/08 01:29
"aiueoAIUEO"じゃない?

562 :葉鍵板住人:02/02/08 08:50
さすが超先生、ここでも日本語間違えてるし(w
こうでしょ。

int is_vowel(const int c)
{
cosnt char vowel[] = "aiueoAIUEO";
int i;

for(i = 0;i < (signed int)strlen(vowel);i++)
if(c == vowel[i])
return 1;
return 0;
}


563 :デフォルトの名無しさん:02/02/08 11:47
> for(i = 0;i < (signed int)strlen(vowel);i++)
最悪。

564 :超先生@プログラム板:02/02/08 12:49
  ∧_∧
< `ш´> <#define c_strlen(t) (sizeof(t)/sizeof(t[0])-1) /* 文字列定数の文字数ゲット */

565 :生徒B:02/02/08 13:40
皆様、憶えていらっしゃるでしょうか。生徒Bです。
>>160にて私、
>sscanf(num,"%x",numuc);でうまくできそうですね。

などと、とんでもない事を書いていたので、訂正にまいりました。
numucはunsigned charなのでこれ、至極おもしろい事になるような、ならないような。
ということで、

int numi;
sscanf(num,"%2x",&numi);
numuc=(char)numi;

printf("えれなタンをだせー!!");


あ〜、すっきりage。

566 :デフォルトの名無しさん:02/02/08 14:26
> for(i = 0;i < (signed int)strlen(vowel);i++)

こういう書き方する人ってVBかなにかでプログラム覚えた人?

567 :デフォルトの名無しさん:02/02/08 15:08
>>566 pascalかも pascalのfor文は最初の1回しか評価しないから

568 :デフォルトの名無しさん:02/02/08 15:12
ところで、>562は何のためにstrchrの劣化版を再生産しているんですか?

569 :デフォルトの名無しさん:02/02/08 15:26
勉強とは先人の歩んだ道のりを辿ることに他ならない

570 :デフォルトの名無しさん:02/02/08 15:42
素人にかぎって「こんなの自分で作っても簡単だよ」と言って、
標準関数の劣化版を作りたがる。

571 :デフォルトの名無しさん:02/02/08 15:57
母音の数を数えるなら、strcspn()使うのが速いのかな?
それから sizeof(char)==1 は保証されてないんだっけ??

572 :デフォルトの名無しさん:02/02/08 16:08
>>571
されてるよ

573 :デフォルトの名無しさん:02/02/08 16:46
ワイドキャラのリテラルというワナ。

574 :デフォルトの名無しさん:02/02/10 12:54
age

575 :( ´∀`):02/02/12 23:31
この漏れはCの独学で毎日泣きをみているドキュンだ。
自己紹介はここらで終わって早速糞な質問に答えてくれる
やさしいお前らにお願いです。

言葉足らずな参考書に変わってmalloc関数とfree関数の
使い方、書き方を説明してくれ。
褒美は後日レス600のヤツがしてくれると思う。

576 :デフォルトの名無しさん:02/02/12 23:36
free(malloc(0));

577 :デフォルトの名無しさん:02/02/12 23:36
>>575
態度がデカい割には可愛い顔してるんだな(w

578 :デフォルトの名無しさん:02/02/12 23:53
p = malloc(必要なバイト数)
p は voidへのポインタ、NULL が帰ってきたら領域が確保できてない。

この確保した領域は free(p) で開放する。
exit で抜けた時に領域が開放されるので free が必要ないという輩がいるが、それはけしからん話。
坊主が人殺しして「でも仏に仕える気持ちは本物なので私は聖職者」と言っているくらい本末転倒。

579 :デフォルトの名無しさん:02/02/13 00:03
また拗れそうな話を(w
exit(プロセス終了時)にプロセスが確保したメモリが解放されるのは事実でしょ。
free()しない事の問題点を理解できてれば呼ばなくても。
でもfree()の呼び出しコストが問題にならないならmalloc()系とfree()は対で呼び出すべき。

580 :578:02/02/13 01:06
>>579
いや、「メモリが最終的に開放される/されない」は関係ない。
例外は少ないほどいい。例外を許すという事はそれだけ混沌が増えるという事。
可能な限り一般的な方法を用いるべし、という意識を小手先のテクニックのために
わざわざ低下させるような事は好ましくないと思う。

581 :580:02/02/13 01:07
age てしまった。スマソ。

582 :デフォルトの名無しさん:02/02/13 01:13
ほら拗れた(w

583 :デフォルトの名無しさん:02/02/13 01:25
>578
チョパーリのボージはニクダベルヨ

584 :581:02/02/13 01:40
>>583
チョッパリのジーボは肉田ベル代?
意味がわからん。

585 :デフォルトの名無しさん:02/02/13 04:34
田代の肉ボーはベリチョルパッジ

586 :デフォルトの名無しさん:02/02/13 21:07
> 例外は少ないほどいい。例外を許すという事はそれだけ混沌が増えるという事。
例外は全く許さないのか?

> でもfree()の呼び出しコストが問題にならないならmalloc()系とfree()は対で呼び出すべき。
とフォローしているだろ。

なんで教条主義者は人の話を聞かないのか。

587 :デフォルトの名無しさん:02/02/14 15:41
えれなタン…このスレを救ってくれ…


588 :デフォルトの名無しさん:02/02/16 16:38
age

589 :デフォルトの名無しさん:02/02/16 17:04
malloc/calloc/realloc と free が対?
あほなことを…

590 :デフォルトの名無しさん:02/02/17 19:23
次の数式を定義する文法に属性に関する式を追加して、逆ポーランド記法の中間言語を出力する属性文法を作成せよ。

文法 G = (T, N, S, P)

T = {+, *, (,), a}
N = {E, T, P}
S = E
P =
{E → E+T,
E → T,
T → T*P,
T → P,
P → (E),
P → a}

スレ違い気味ですが助けてください、、、

591 :デフォルトの名無しさん:02/02/17 19:34
具体的にどこがわからないのか説明しなさいよ。

592 :590:02/02/17 19:40
失礼しました。ぶっちゃけて全くわからんのですがとりあえず属性文法ってゆうのからお願いします。


ぁ、もちろん検索はしたんですがさっぱりなのです。。

593 :デフォルトの名無しさん:02/02/17 19:44
>>592
http://watalab.cs.uec.ac.jp/OBandG/fukuda/semi/attr.htm
この辺読んで、どの辺わからないかを。

594 :デフォルトの名無しさん:02/02/17 19:53
いや、そこ読んだんですがあまり理解できず…
問題にどうやって活かしたらいいのか、と。

595 ::02/02/17 20:07
>>594
 んーと、私も属性文法って全く知らないんだけど、>>593を読んで理解した
範囲で説明ね。
 例えば、ビット列の場合、継承属性と合成属性っていうのを使っているん
だけど、逆ポーランド記法の場合は、継承属性は無くても大丈夫じゃないか
な? というのも、ビット列の場合、「それが何桁目か」っていう情報が重
要だけど、逆ポーランド記法の場合は重要じゃないから。
 まず、与えられた式を文脈自由文法で解釈するっていうのは、それは木を
作っているのに等しいっていうのはいい?
 このときに、この木を計算するには、ビット列みたくこれが木のどの位置に
あるかていうのが重要でなければ、基本的には葉から順に計算してけばいい
わけね。
 このときに、例えば、E→E+Tというプロダクションをしたときに、これは
逆から見れば、EとTというノードをまとめて、Eというノードにしたってこ
とだよね? このとき、右側のEのが取る値をSyn(E1)として、Tが取る値を
Syn(T)とすれば、左側のEが取る値はSyn(E1)+Syn(T)になるよね?
 まあ、こんな感じで定義していけばいいんじゃないかな。
 ちょっと、属性文法に関しては>>593の知識だけで話してるので、間違っ
てるところあったらフォローくれたら嬉しいな。

596 :デフォルトの名無しさん:02/02/17 20:25
>怜さん
すいません、お詳しいようなのでちょっと甘えてみたいのですが、、、
熟読させていただきましたがどーにも、、、
とりあえずこの辺の知識でわかってることを整理してみますと
逆ポーランド記法ってのが
ab+c*
みたいに書くものであることと
たとえば式からa*aという語を導出する際には
E > T > T*P > P*P > a*P > a*a
とやることぐらいで、、、
この場合問題の答え方もわからんです、、、

597 ::02/02/17 20:34
>>596
ごめん、ごめん、すごくうそ書いてたかも。
数式を解釈して、逆ポーランド記法にするのね。

何か誤解してた。説明全面的に書き直すからちょっと待っててね。

598 :通過する人:02/02/17 20:35
>>596
俺も属性文法ってのは知らんが
文脈自由文法まわりの話をきちんと理解してるかどうかがまず先だね。
それが分かってれば >>593 のところのページを読むだけで分かる。

まず滅茶苦茶大雑把にイメージで言ってしまえば、
1)与えられた文法に従って導出木を作ってから、
2)木のてっぺんから末端へ向かって継承属性を繰り返し全ての末端にいたるまで適用し、
3)今度は末端から木のてっぺんへ向かって合成属性を繰り返し適用する、
という流れで、属性文法が適用される。
1)の作業ルールを決めるが文脈自由文法で、
それに2)と3)の作業ルールを追加したものが属性文法(と>>593のページに書いてある(藁))。
文法使って木ができる、というあたりのイメージはちゃんと頭にあるかい?

599 :デフォルトの名無しさん:02/02/17 20:39
あくまでメインはキミで、このスレはちょっとしたサポートなんだからな。
このスレだけの回答だけで宿題の回答を作ろうとするなよな。
勘違いするなよな。

600 ::02/02/17 20:50
実は、この辺全然詳しくないの・・・
無理して説明してみるから苛めないでね>識者の方

a*aの例で説明してみるね。

E > T > T*P > P*P > a*P > a*a
という風に解釈するわけよね?
これは、数式を木に直したのと同じなわけね。つまり、
E−T−T−P−a
  |
  P−a
って木にしたってことね。

じゃあ、この木を逆ポーランド記法で表したいっていうのが今の問題ね。
ちょっと、このままでは説明しにくいから、ノードに番号ふるね。
E1−T1−T2−P1−a1
   |
   P2−a2
としとくね。ここで、例えばT1を表す逆ポーランド記法をSyn(T1)と書く
ことにするの。
このとき、P2を表す逆ポーランド記法は、a2と同じ、つまりaでいいよね?
これはP→aというプロダクションだったら、Syn(P)=a
っていうことになるんだと思う。P1も同様ね。

次にT2→P1って変化について考えるね。
これは、T→Pってプロダクションで生成されたものだよね?
このとき、T2とP1のポーランド記法は一緒だということで、
T→Pってプロダクションのときは、Syn(T)=Syn(P)
ということになるわけで。

で、T1→T2,P2と分岐しているとこあるよね?
これは、
T→T*Pというプロダクションで生成されたものね。このとき、
T1はaa*って表して欲しいわけで。
つまり、
Syn(T) = Syn(T)Syn(P)*
って感じになるのかな。

うーん、本当にこういうものなのかな・・不安。

601 :デフォルトの名無しさん:02/02/17 21:02
怜たんのちょっぴり頼りない一面ハケーン・・・(;´Д`)ハァハァ
いいYO!怜たん!(・∀・)イイ!

602 :590:02/02/17 21:20
すいません。考えながら読んでたら亀レスで、、

>T2とP1のポーランド記法は一緒だということで、
>T→Pってプロダクションのときは、Syn(T)=Syn(P)
>ということになるわけで。

というところがよくわからんのですが、、



603 :590:02/02/17 21:33
あ、ちゃんと木書いてみたらわかりました。
怜さんのおっしゃることは理解できた…つもりになりました。
みなさまご協力どうもです。

604 :デフォルトの名無しさん:02/02/17 21:34
怜たんが駄目なのならえれなたんしかいない!
確か違うオッサンが演じてたよね?

605 ::02/02/17 21:34
>>602
 えーと、まず文脈自由文法周りは理解してる?
 その上でこの問題において、E,T,Pはどういう状態を表しているかは
わかる?

606 :デフォルトの名無しさん:02/02/17 21:34
あ、終わったのか

607 ::02/02/17 21:36
って、スレ違い・・・・。

608 :デフォルトの名無しさん:02/02/17 21:49
怜たんって学校どこ?

609 ::02/02/17 22:25
んー・・・大学名は秘密。

今M1です。みなさんよりちょっと年上ってくらいだね。
(ちょっとじゃないって突っ込み入りそう・・・)

610 :デフォルトの名無しさん:02/02/17 22:57
と・・年下・・・ハァハァ

611 :Kanai:02/02/17 23:26
C言語で、下記の表をあらわすにはどうしたらよろしいでしょうか?
(例:行を6列に指定した場合。N行の場合はどうなるのでしょうか)

# #####
## ####
### ###
#### ##
##### #

612 :デフォルトの名無しさん:02/02/17 23:29
そうか。オッサンじゃなかったのか。こりゃ失礼。

613 :デフォルトの名無しさん:02/02/18 00:47
>>611
forでぐるぐるまわせ。

614 :デフォルトの名無しさん:02/02/18 00:51
>>611 NxNじゃないのは間違いじゃないのかとか、
「行を6列」って表現が気にならないでもないけど、
char m[N-1][N+1];
としておいて
m[j][i]=((i-1==j)?(' '):('#')); /*0オリジン*/
で、forすればどう?
コスト的には全部埋めてから違うとこだけ書くほうが
いいと思うけど、何回もやらなければこれでもいいかな?

615 :デフォルトの名無しさん:02/02/18 01:28
614は怜たんっぽい

616 :デフォルトの名無しさん:02/02/18 01:40
>>612
それは怜タンの設定であって・・・
大学名が秘密なのは考えるのが面倒だったんだと思われ

617 ::02/02/18 06:31
>>616
いや、そういうわけではないです・・・

618 :デフォルトの名無しさん:02/02/18 07:01
>>617
そういうわけではない、というのが1行目の書き込みに対してなのか
2行目の書き込みに対してなのかわからないんだが・・・

もしかして演じている貴方も大学生なのかい?
それとも演じて自体いないとか・・・そうだったら(;´Д`)ハァハァだYO!

619 ::02/02/18 07:42
>もしかして演じている貴方も大学生なのかい?
>それとも演じて自体いないとか・・・そうだったら(;´Д`)ハァハァだYO!

どちらかはご想像に任せます(笑)


620 :デフォルトの名無しさん:02/02/18 08:04
>>619
そのどちらかなんだね?
ふーむ・・・

621 :怜命:02/02/18 18:09
そろそろageても良い時間帯だろう。

622 :デフォルトの名無しさん:02/02/20 12:53
怜ちゃんは可愛いな・・・。
いつか怜ちゃん萌え萌えゲームでも作る予定にしておこう。

623 :デフォルトの名無しさん:02/02/21 05:24
えれなはどこいった?

624 :ガクセイ:02/02/23 00:42
質問です。
ストリーム系のオブジェクトを引数として受け取り、
大文字の文字列を小文字に変換して返すクラスを作れ
といわれました。
ファイルからもキーボードからも読み込めることが条件です。
どういうことなのかサッパリです。


625 :デフォルトの名無しさん:02/02/23 01:19
class toUpper
{public:
 void operator()(FILE *in, FILE*out)
 {
  int ch;
  while( ch = fgetc( in ), ch != EOF )
   fputc( tolower(ch), out );
 }
};

626 ::02/02/23 10:15
>>624
言語は?

627 :デフォルトの名無しさん:02/02/23 15:11
C++何ですけどどなたか教えてくれませんか?
APIでビットマップをファイルから読み込んで、読み込んだファイルに
反転とか原色とかのエフェクトをかけるプログラムを作成したいんで
すけどどうやったらいいんですか?もうさっぱりです。

628 :デフォルトの名無しさん:02/02/23 15:56
Googleで調べな。
その手については根気よく調べれば必ずヒントは見つかるはず。

629 :ガクセイ:02/02/23 21:37
>>625
ありがとうございます。
>>626
JAVAです。アプレットではなく。
ファイルからも、キーボードからもというのがわかりません。
先生がインターフェースを提供するとかなんとかいってました。

630 ::02/02/23 22:52
>>629
んー、おそらく、
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/io/InputStream.html
この辺を、引数として取って、read()で一文字づつ読んで、大文字を小文字に変換
して出力するのだと思うな。

631 :学生さん:02/02/24 02:33
VC++でプログラムを作っているのですが、(ダイアログベースで作っています。)
ダイアログのエディットボックスのデータを別のダイアログのエディットボックスに
移すにはどうしたらいいのでしょうか?教えて下さい。




632 :デフォルトの名無しさん:02/02/24 02:57
>>631
エディットコントロールに入ってるテキストをゲットする関数、
えーと、GetWindowText()だっけ?でテキスト取得して、
なにかしらの方法(メッセージを定義して、SendMessage()?)
で他のダイアログのプロシージャに送って、SetWindowText()で
エディットコントロールにセットする感じでよろ。

633 :デフォルトの名無しさん:02/02/24 13:53
>>632
SendMessage()はいりません。
GetWindowText()とSetWindowText()だけでOK

634 :632:02/02/24 13:58
>>633
フォローさんきう。
ちなみに、それって別ダイアログ(のエディットコントロール)の
ウインドウハンドルを送信元が知ってることが前提ということでいいのかな?

635 :学生さん:02/02/26 02:05
ありがとうございます。詳しく申しますと下のようになります。宜しくお願いします。
いま卒業研究をやっていまして、質問があります。
ダイアログベースで、親ダイアログのエディットボックスにファイルパスを
入れて、子ダイアログのエディットボックスにファイルの内容を表示して、
入力不可にするには親ダイアログのボタンにどのようなコーディングをすれ
ば、よいのでしょうか?教えて下さい。宜しくお願い致します

636 :デフォルトの名無しさん:02/02/26 06:23
>>635
んあ?どのへんで迷ってるの?

とりあえず、なにしたらいいか全く分からない時は、
http://203.174.72.112/y_kumei/
がいいよ。

637 :デフォルトの名無しさん:02/02/27 22:58
宿題募集age

638 :デフォルトの名無しさん:02/02/27 23:27
>>637
よろしかったらJAVAスレの方に来ていただけますか?
あちらに宿題を貼っております。
どうか助けて下さい、お願いします。

639 :デフォルトの名無しさん:02/02/28 01:10
c言語でエノン写像
x(n+1)=1-1.4x(n)~2+y(n)
y(n+1)=0.3x(n)
のリヤプノフスペクトラムのデータを出したいんですが
どうすればいいんでしょうか?

#include <stdio.h>
#include <math.h>

const long N=1000;
main()
{
long i;
double x, x1, x2, y1, y2;
double lambda;


x = 0.2;

x1 = 0.001;
y1 = 0.001;

lambda = 0.0;

for(i = 1; i <= N; i++)
{
x2 = -2.8*x*x1+y1;
y2 = 0.3*x1;


lambda = lambda+log(sqrt(x2*x2+y2*y2)/sqrt(x1*x1));

printf("%lf\n",lambda/i);


x1 = x2;
y1 = y2;

lambda = lambda;
}

}

640 ::02/02/28 09:11
>>639
 うーん、リヤプノフスペクトラムって何かわかる人ってかなり限られちゃう
と思うから、その辺説明していくれないと答え期待できないんじゃないかな。
私もわからないし。

641 :ムタ:02/03/02 05:02
VC++で、Memory Assumption の測り方分かる人いますかね?
具体的な数字で出したいんっすけど、HELP使ってもどこにあるのやら。
多分メモリー測るファンクションを二つ使って(メモリー使う前後に)、その数字を後から差し引く
って方法だとは推測できるけど、どんなファンクション使ったらいいのやら。
誰か分かる人いたら教えてください。

642 :デフォルトの名無しさん:02/03/02 09:04
>>641
MSDN で allocMemDF とか _CrtMemCheckPoint とか CMemoryState とか ‘診断サービス’ とか調べてみれ。

643 : :02/03/02 09:07
>>641
ついでに GlobalMemoryStatus() も見とくか?

644 :デフォルトの名無しさん:02/03/02 10:03
あるWebサイトにあるHTML文書内の指定された箇所に書かれている文字列を抜き出す方法をご存知でしたら教えてください。

例えば・・・
Yahooファイナンスを使って、ある企業AとBの本日の最高株価を抜き出して、それをエクセルのセル(0,A)、セル(0,B)に表示する

というような事をしたいのです。
使えるプログラムはJavaとVBEです。
よろしくお願いします。

645 :644:02/03/02 10:03
すいません、ageで。

646 :デフォルトの名無しさん:02/03/03 02:38
SGMLパーサとか、HTML-DOMとか使え。
invalidなHTMLなら、その担当をうらみつつ、
パターンマッチで切り抜けろ。

647 :トロだにゃ& ◆s3MjONwo :02/03/05 14:30
          |\              /|`、
            | | \            / | |
            | |   \_____/  .| |
         |レ ´              \|
          |                 ヽ
           |                  ヽ
          |               ,,,,;;::'''''ヽ
          |     ,,,,;;:::::::::::::::       __ ヽ
          |     "   __ ::::  '"ゞ'-' |
          |       - '"-ゞ'-' ::::::...     |
          |             :::::::   ヒつ |
           |       ヒつ   ( ,-、 ,:‐、   |
          |                     |
          |            __,-'ニニニヽ . |
..          |              ヾニ二ン"  /
           ヽ                   /
            ー――――――l――l――‐´
                      /、  ||
                       | |  / |
                       || |  | |
                      | | |  | |
                      | | |  | |
                     /  | | _ | |ー 、
                    / /  ̄   ̄ー- _/>
                    `ー          ´
            嘘は嘘であると見抜ける人でないと
           (怜たんの消息を知るのは)難しい


648 :デフォルトの名無しさん:02/03/06 12:53
ageとく

649 :Help_Me:02/03/07 05:55
Please help me.

http://www.geocities.com/sukiyaki0001/java2.doc
http://www.geocities.com/sukiyaki0001/java2.txt

650 :ニコさん:02/03/07 08:21
SQLを実行させようと思いまして下記の様にコーディングしましたが、
"\'m_Com1\'" を読み取ってくれません。シングルコーテーションの中では
なくて、’’も含めて読み取りたいのです。どなたか教えて下さい。
ちなみに、m_Com1はメンバ変数です。全体はこのコードで大丈夫でしょうか?
心配です。
CString strSql = "Select timem,exp,tostn from jikoku where ";

if(m_Com1 == ""){
strSql+= "Stn = " + "\'m_Com1\'" + " AND ";
}else if(m_Com2 == ""){
strSql+= "Goto = " + "\'m_Com2\'" + " AND ";
}else if(m_Com3 == ""){
strSql+= "Day = " + "\'m_Com2\'" + " AND ";
}
strSql+= "Timeh = " +m_ji;
m_Recordset.Open(CRecordset::dynaset,_T(strSql));
UpdateData(true);
m_Recordset.Requery();

651 :デフォルトの名無しさん:02/03/07 08:51
>>650
よくわかんないけど、
if(m_Com1 != "") {
  strSql = "Stn = " + "'" + m_Com1 + "'" + " AND ";
} else ....
って感じじゃない?

652 :デフォルトの名無しさん:02/03/07 22:15
>>1002
よくわからないが、
while(1)
  puts("\a>>1は怠け者");
って感じでは?


653 :デフォルトの名無しさん:02/03/12 17:54
C言語でシェルスクリプトみたいに、あらかじめ決めておいたコマンドを
順番通りに実行するにはどうすればいいですか?
例えば、chmod 700 a.out → ./a.outという具合に。

654 :デフォルトの名無しさん:02/03/12 18:04
>>653
main(){
system("chmod 700 a.out");
system("./a.out");
}

655 :653:02/03/12 19:08
>>654
どうもです。

あと、もう一つ質問があるんですが、コマンドの実行結果をテキストファイルに
出力するにはどうすればいいんですか?
例えばsystem("ls")とやるとlsの実行結果がls.txtに書き込まれるということをやりたいのですが。

656 :デフォルトの名無しさん:02/03/12 19:10
>>655
アホなの?アホなのかな?
system("ls > ls.txt");

ネタかも!ネタにマジレスかも!
・・・ハズカシイ

657 :デフォルトの名無しさん:02/03/12 19:10
>>655
main(){
system("ls > ls.txt");
}

658 :デフォルトの名無しさん:02/03/12 19:11
>>656
main(){
printf("結婚してください\n");
}

659 :656:02/03/12 19:11
>657
ケコーンする?ねえケコーン?

660 :デフォルトの名無しさん:02/03/12 19:20
狂った怜

661 :デフォルトの名無しさん:02/03/12 19:58
>>658 ("結婚してください\n ←この\nがいいね。

662 : @:02/03/12 20:18
プログラミングですか?

やってみやいな〜

http://sc5.tripod.co.jp

663 :暇人:02/03/14 05:44
暇な人へ問題:

X(1) + X(2) + ... + x(n) = C
C、N、X、は全て0以上の整数。(Nは1以上)
CとNはユーザー入力から。
この全ての場合をアウトプットするアルゴリズムを記せ。

例)C = 3, n = 3 (User input)
1, 3 + 0 + 0
2, 0 + 3 + 0
3, 0 + 0 + 3
4, 1 + 2 + 0
5, 1 + 0 + 2
6, 0 + 1 + 2
7, 0 + 2 + 1
8, 2 + 1 + 0
9, 2 + 0 + 1
10, 1 + 1 + 1

簡単そうで、難しかった〜(*_*)
因みに私はC++でソース書きましたん☆

664 :デフォルトの名無しさん:02/03/14 09:26
>>663
難しい?(^^;
1分でかけそうだけど。

665 :664:02/03/14 09:32
えらそうに書きつつ5分かかってしまった。鬱

666 :aaa:02/03/15 08:23
分からん。教えて。
>>664
そんな簡単?

667 : :02/03/15 08:35
forで回して合計がCになるのだけ出力とか言うのは駄目なの?

668 :暇人:02/03/15 08:42
for で回すけど、どうやって回すかが問題。
N がユーザー入力だからね。
全ての場合を出力するのがキー。
ループする回数もなるべく早めに終わらすのが重要。
分かった人、解答簡単に書いてみて。それが俺のより早いから
どうか比べる。(BIG(O)Notation)

669 :デフォルトの名無しさん:02/03/15 08:51
X(1) + X(2) + ... + x(n) = C

x(n) を0〜C として 残りを C:=C-x(n) として n:=n-1) 再帰

670 :669:02/03/15 08:58
と思ったけど それだと数は簡単に数えられるけど 総覧はメンドクサイな

671 :デフォルトの名無しさん:02/03/15 10:17
>>666
#include<stdio.h>
#include <iostream.h>

void showres(int *a, int n){
 int i;
  for(i = 0; i < n; i++){
  printf( "%d" , a[i]);
  if(i + 1 < n) printf(" + ");
 }
 printf("\n");
}

void func(int k, int n, int c, int *a){
 int i;
 if(k + 1 == n){
  a[k] = c;
  showres(a, n);
 }else{
  for(i = 0; i <= c; i++){
   a[k] = i;
   func(k + 1, n, c - i, a);
  }
 }
 return;
}

int main(){
 int c, n;
 int *a;
 cout << "C = ";
 cin >> c;
 cout << "n = ";
 cin >> n;
 a = (int*)malloc(n * sizeof(int));
 func(0, n, c, a);
 free(a);
}

672 :aaa:02/03/15 13:24
>>666
なるほど。すごい。ありがと☆

673 :デフォルトの名無しさん:02/03/15 15:35
>>668
ループで書いたヤツもアップしてみてよ。
再帰がよくわからん人が参考にできるかもしんないから。

674 :668:02/03/18 11:44
コメント遅れてスマセン。
>>671
アップしてくれてありがとね。
っていうか、俺のアルゴリズムとRecursion 使うってのは
ほとんど一緒です。誰かIteration でやらないかな〜って思ってね。
今考えているけど、明日、明後日テストなので、Iteratioin で
出来次第アップします。お許しあれ。
>>671
にしても、俺の場合Recursion のプログラムになるとどうしても
時間かかってしまいます。まだBeginnerだと自分で思います。
Recursion のアルゴリズムのこつとかありますかね?
(5分で出来たあなたはすごい。)

675 :デフォルトの名無しさん:02/03/18 16:37
強引にグルグルまわすプログラムなら5分でできたが、
あまりに強引すぎて10 10くらいでも終わらなかった。

676 :デフォルトの名無しさん:02/03/19 13:27
>>674
再帰のプログラムは慣れです。とにかく色々やってみましょう。

 計算量のオーダーが多項式で抑えられないときは、再帰使わないとまず無理だと
思いますよ。

677 :674:02/03/20 16:41
>>676
アドバイスありがとうございます。
これからまた色々な言語を勉強すると思いますが、
再帰のプログラム色々やって慣れるようにしますね。

みなさんは、何の言語が一番得意なんでしょうか?
そして、根本的な基盤となる言語は何と思います?(個人的に)


678 :デフォルトの名無しさん:02/03/20 16:44
根本的な基盤となる言語はマシン語だろ。

679 :デフォルトの名無しさん:02/03/20 16:46
一番得意なのはC。次がアセンブラ。
基盤となってるのもこの2つ。

680 :デフォルトの名無しさん:02/03/20 21:24
668ではないですが。
長くてすいません。
#include <stdio.h>
#define SSIZE 1024
#define LIMIT 256

typedef struct {
  int rest;
  int pos ;   // 数字のおき場所
  int list[LIMIT];
} Table;

Table stack[SSIZE];
int sp = 0;
int sum, count;

Table pop(void) { return stack[--sp]; }
void push(Table *t) { stack[sp++] = *t; }

void print_answer(Table *t)
{
  int i;
  for ( i = 0; i < count - 1; i++ )
    printf("%d + ", t->list[i]);
  printf("%d\n", t->list[i]);
}


681 :デフォルトの名無しさん:02/03/20 21:25
void make_expression(void)
{
  int i;
  Table now = {0, 0, {0}};
  now.rest = sum;
  
  push(&now);
  while ( sp > 0 ) {
    now = pop();
    if ( now.pos >= count ) {
      print_answer(&now);
    } else {
      if ( now.pos < count - 1 ) {
        int pos = now.pos;
        int rest = now.rest;
        now.pos++;
        for ( i = 0; i <= rest; i++ ) {
          now.rest = rest - i;
          now.list[pos] = i;
          push(&now);
        }
      } else {
        now.list[now.pos] = now.rest;
        now.pos++;
        push(&now);
      }
    }
  }
}
int main(void)
{
  printf("合計 個数 :");
  scanf("%d %d", &sum, &count);
  make_expression();
  
  return 0;
}

682 :デフォルトの名無しさん:02/03/22 15:59
助けを求める人を求めてage

683 :助けてください。:02/03/22 16:02
notepadで書いたIntel系のアセンブラ語のプログラムを
MS-DOS Promptでアセンブル、リンク、実行する方法を
一歩一歩優しく教えてください。

684 :デフォルトの名無しさん:02/03/22 16:06
>>683 まずはアセンブラは何?

1、MASM
2、TASM
3、GAS
4、NASM
 それとも
5、Debug で直接書くの?

685 :助けてください。:02/03/22 16:08
>>684
TASMだと思います。

686 :デフォルトの名無しさん:02/03/22 16:10
>>685 じゃあ TASM(ボーランドのターボアセンブラ)はインストール出来てるんだね?

プロンプトで
tasmか tasm32 として改行してみて 最初の1行目を教えて

687 :助けてください。:02/03/22 16:14
実は今自分のうちから2ちゃん使ってまして(汗
ガッコのパソコンがどうなってるか良くわからないんです。

688 :助けてください。:02/03/22 16:15
学校のパソコンはWin98でPentiumIIを使っています。

689 :デフォルトの名無しさん:02/03/22 16:17
まず、おちつけ。
そして、がっこ逝け。

690 :デフォルトの名無しさん:02/03/22 16:18
>>688
tasmがインストールされていなかったら、tasmは使えん。
そんなのに大してコメントしろってほうが無理だ。

家からネットワークに繋げるなら、家でもできることをやったらどうだ?

691 :助けてください。:02/03/22 16:19
オレの友達は2ちゃんねらーだけなんだぁー。。。

692 :デフォルトの名無しさん:02/03/22 16:23
そうだな 家で出来そうな方法としては

1)TASMの代わりに NASM をダウンロードしてやってみる

2)Debugの使い方を覚えて、Debugでやる

どっちがいい? 2の方が教える方は簡単なんだが

693 :助けてください。:02/03/22 16:25
NASMの使い方を教えてください。

694 :デフォルトの名無しさん:02/03/22 16:27
では、まずダウンロードしなさい

http://www.web-sites.co.uk/nasm/where.html


695 :デフォルトの名無しさん:02/03/22 16:32
>>693 あとは検索すればいいと思うが?
ttp://www.axe-inc.co.jp/pds/nasm.html


696 :助けてください。:02/03/22 16:32
なんか英語がいっぱいでどこをクリックすればよいのかわかりません。。。

697 :デフォルトの名無しさん:02/03/22 16:35
少しは読む努力しようよ、downloadくらい読めるだろう。

698 :デフォルトの名無しさん:02/03/22 16:38
>>696
おまえはクリックするとまずいようなことあるのか?
とりあえずできるまでやっとけ。

699 :デフォルトの名無しさん:02/03/22 16:59
まってたけど、ダウンロードまだかい?

1、メモ帳を開いて 以下の入力をする 空白は全部 半角空白にする事

  org  100h
  section  .text
  start:
  mov  ax,cs
  mov  ds,ax
  mov  dx,txt_hello
  mov  ah,09h
  int  21h
  mov  ax,4c00h  ;終了
  int  21h

  section  .data
txt_hello:
  db  'みなさんこんにちは'
  db  13,10  ;13,10は改行コードです
  db  '$'   ;終端文字は  $  です

2、メモ帳保存する時に HELLO.ASM と名前を付ける事

3、dos窓から
nasmw -fbin hello.asm -ohello.com
と入力して改行する

4、DOS窓から
HELLO.COM
と入力して実行する


700 :>699:02/03/23 08:48
丁寧に有難うございます。頑張ってダウンロードします。

701 :デフォルトの名無しさん:02/03/23 09:04
>>700
この例は windows版NASMで DOS16ビットアプリを作った場合ね
 DOS版のNASMなら nasmw -> nasm と読み替える事

それから 16bitアプリでなく Win32bitアプリを作りたい場合はだいぶややこしい
 でもアセンブラだけで win32アプリを作れなんて課題は絶対ない筈

.COM ではなく .EXE を作る場合は、少しややこしい。
NASMはリンカ一体(アブソリュートアセンブラ)なのでEXEヘッダをアセンブラ内で
生成するようにする。 でもNASMの解説サイトを読めば判るだろう

702 :デフォルトの名無しさん:02/03/23 10:56
俺にとってはWin32のほうがわかりやすかったり。

.386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

.data
DlgName db "SAMPLEDLG", 0
AppName db "win32 assemble", 0

.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
buffer db 256 dup(?)

.const
IDD_EDIT    equ 101


.code
start:
    invoke GetModuleHandle, NULL
    mov    hInstance,eax
    invoke DialogBoxParam, hInstance, ADDR DlgName,NULL,addr DlgProc,NULL
    invoke ExitProcess,eax

DlgProc proc hdwnd:HWND, message:UINT, wParam:WPARAM, lParam:LPARAM
    .if message==WM_COMMAND
        mov eax,wParam
        .if al == IDCANCEL
            invoke EndDialog, hdwnd, NULL
            mov eax, 1
            ret
        .elseif al == IDOK
            invoke GetDlgItemText, hdwnd, IDD_EDIT, ADDR buffer, 256
            invoke MessageBox, hdwnd, ADDR buffer, ADDR AppName, MB_OK
            mov eax, 1
            ret
        .endif
    .endif
    mov eax, 0
    ret
DlgProc endp
end start

703 :デフォルトの名無しさん:02/03/23 15:51
http://www.geocities.com/sukiyaki0001/java.txt
http://www.geocities.com/sukiyaki0001/java2.txt

Javaに詳しい方よろしくおねがいします。訳はご要望があれば、そのつど。




704 :デフォルトの名無しさん:02/03/25 03:35
C言語です。
配列の、0クリアして右から順位付けするやり方がいまいちわからないのです。

#include<stdio.h>
main(){
int i=0;
int j=11;
char data[]={1,3,5,5,7,9,9,10};
char juni[11]; /*10番目と11番目を用意する*/

for(i=0;i<=11;i++){ /*iが11以下の間繰り返す*/
juni[i]=0; /*配列 juni[i]を0でクリア*/
}

for(i=0;i<8;i++){ /*iが8より小さい間繰り返す*/
juni[data[i]]++;
}
juni[j+1]=1;

for(i=j;i>=j;i--){
juni[i]+=juni[i+1];
}
printf("得点 順位\n");
for(i=0;i<8;i++){
printf("%d %d\n",data[i],juni[i]);
}
}

間違ってるとこを訂正してもらえると助かるっす。

705 :デフォルトの名無しさん:02/03/25 06:20
>>704
マルチ
http://pc.2ch.net/test/read.cgi/tech/1016631412/200

706 :デフォルトの名無しさん:02/03/28 11:48
age

707 :デフォルトの名無しさん:02/03/28 11:54
>>704
juni[]のクリアのところで、配列をオーバーしとるやん。

708 :デフォルトの名無しさん:02/03/28 12:49
>>704
char juni[11]; /*10番目と11番目を用意する*/

これだと11個用意することになるんよ。


709 :デフォルトの名無しさん:02/03/28 13:00
>>704
#include  <stdio.h>

#define  DATSIZ  (8)

static void getJuni(const char *, char *, int);

int main(void)
{
  int i;
  char data[DATSIZ] = {1, 3, 5, 5, 7, 9, 9, 10};
  char juni[DATSIZ];
  
  /* 順位付けを行う,得点はソートされている必要がある */
  getJuni(data, juni, DATSIZ);
  
  printf("得点 順位\n");
  for(i = 0; i < DATSIZ; i++) {
    printf("%4d %4d\n", data[i], juni[i]);
  }
  return 0;
}

static void getJuni(const char *data, char *juni, int size)
{
  int i;
  int j;
  int p;
  
  p = 128;  // CHAR_MAX かな ?
  for(i = size - 1, j = 1; i >= 0; i--, j++) {
    if(p > data[i]) {
      juni[i] = j;
      p = data[i];
    }
    else if (p == data[i]) {
      juni[i] = juni[i + 1];
    }
  }
}


710 :デフォルトの名無しさん:02/03/28 13:06
>static void getJuni(const char *, char *, int);



711 :デフォルトの名無しさん:02/03/28 13:31
juniはintのほうがいいと思う。

712 :デフォルトの名無しさん:02/03/28 13:47
>>710
わけわからん。

713 :デフォルトの名無しさん:02/03/28 14:50
Javaを助けてください。
長くなるかも知れませんがお願いします。
頭がわるいもんでずーーーっとつっかえてます。

今Lsystemをいろいろとみてあるいてます。
http://www.asahi-net.or.jp/~pd4s-hgwr/lsystem/
ここでソースを落としてみたんですが
Rule.javaをコンパイルすると以下のようなエラーがでます。

Rule.java:104 : class Rule で宣言されたメソッドjava.util.Enumeration.values()は、
class.java.util.Hashtable で宣言された同じシグニチャーのメソッドをオーバーライドできません。同じ形の戻り値を持たなければなりません。
public Enumeration values(){

誰か落としてヘルプしてくれる人います?藁
Rule.java長くないんですが 読みやすいように書くと1000文字越えちゃう・・・
本当にいっぱいいっぱいです。助けて・・・



714 :デフォルトの名無しさん:02/03/29 02:48
>>713
エラーの意味は、「同じ引数の型(シグネチャ)を持つメソッドを
オーバーライドするときは、戻り値の型も元のメソッドのと
同じじゃなきゃいかん」ってことだね。

で、今調べてみたけど、
jdk1.1系にはjava.util.Hashtableクラスに、values()って
メソッドは定義されてなかったので、Rule.javaでvalues()を
定義してもオーバーライドではなかったわけだけど、
java2では残念ながらvalues()っつーのがすでに定義されてるので、
上記のエラーとなるわけだ。

715 :デフォルトの名無しさん:02/03/29 10:46
>>714

と言うことは・・・
簡単に言えばvalues()がかぶっちゃってる(オーバーライド)ってことですよね。
なら単にvalues()を違う名前で定義すればOKなのかな??
そんな簡単なもんじゃない??

716 :デフォルトの名無しさん:02/03/29 11:31
yattemire

717 :デフォルトの名無しさん:02/03/29 17:20
宿題じゃないのですが助けてちょ、矢印が引きたいのよ

いまは drawLine(from, to) ってやると from から to にむけて矢印
がひけるのね、これを from から to にむけた → って矢印にしたい。

最初に考えたのは from.x, from.y と to.x, to.y を使って、from-to
線分の傾きを出して、それに対して 30 度くらいの回転をかけた直線を
to を通るように from の方向へちょびっとづつ書こうと思った。

けど、それってなんかチカラで押さえ込んでいるみたいで、もっとシンプ
ルな方法があるのではないかなー? と思ったりした。

動作環境は Java 1.0.2 で JavaApplet として作ってます。
古い JavaMachine (JVM じゃなくて)で動かすので Java 1.1 以降は利用
できません。

とりあえず具体的なコードでもアイデアだけでもいいんですが、助けて。


718 :デフォルトの名無しさん:02/03/29 17:57
中学校で授業をちゃんときいてましたか?
  http://www.geisya.or.jp/~mwm48961/math/m3pita03.htm


719 :デフォルトの名無しさん:02/03/29 18:47
ある日付から、通算の食事の回数を入力して、
その時点の年月日を出力するプログラムって、どう組めばよいですか。
C言語です。うるう年の分け方やループの仕組みはわかるんですが、
scanfで入力データに対応した日付を書き出す方法がわからないのです。
よろしくおねがいします。


720 :デフォルトの名無しさん:02/03/29 20:47
>>717
どのくらいの精度が欲しいのかわからんが、5度刻みで矢の
画像を持っておいて、最も角度が近いものを描画したらどうだ?

5度刻みだと18パターン、矢の角度を計算するよりは楽。


721 :デフォルトの名無しさん:02/03/30 10:20
>>717
Delphiでよければ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1004530597_1/MyDraw.pas


722 :デフォルトの名無しさん:02/03/31 04:45
./a.out 192.168.1.1と入力して192.168.1.1にpingを打てるようにしたいの
ですが、./a.out %sと実行されてしまってうまくいきません。
よろしく頼みます。

#include<stdio.h>
int main(int argc,char *argv[])
{
int i=0;
while(i<3){
system("ping %s",argv[1]);
i++;
}
}


723 :デフォルトの名無しさん:02/03/31 05:07
>>722
sprintf( hoge, "ping %s", argv[1]);
system(hoge);

724 :デフォルトの名無しさん:02/03/31 09:00
>>722
は、いいがそのプログラムに何の意味が?
[CTRL]+[D}しない限りping回り続けるだろ・・・。

725 :デフォルトの名無しさん:02/03/31 10:51
問題。
Web掲示板のプログラムを作るとして、以下の3つの
数値が分かっているものとします。

 (1) 現在のページで表示を開始する投稿番号 x
 (2) 1ページに表示する投稿数 y
 (3) 全投稿数 z

とする時、現在のページが何ページ目かを算出するには
どのような式になるでしょう? 回答は PHP, Perl, Java いずれかの
言語で答えること。


1ページに表示する投稿数が「5」件で、全投稿数が「15」件
あったとします。現在のページでは投稿番号「6」から表示
するとします。このとき
 1ページ目: 投稿番号「1〜5」が表示される。
 2ページ目: 投稿番号「6〜10」が表示される。
 3ページ目: 投稿番号「11〜15」が表示される。
つまり答えは「2」ページ目になります。

726 :デフォルトの名無しさん:02/03/31 11:21
>>725
板違い。WebProg

727 :デフォルトの名無しさん:02/03/31 11:26
>>725
ceil(x / y)

728 :デフォルトの名無しさん:02/03/31 13:50
VBで以下の動作をするものをつくりたいのですが・・初心者なんでサパーリです
どなたか教えてくらはイ お願いします

数字を入力し、「実行」ボタンを押すと、1から入力された数値までの合計数を表示する。
ただし、入力されたものが数値でなかった場合、「数値を入力してください」というエラー
メッセージを表示する。
「終了」ボタンを押すと、プログラムが終了する。


729 :デフォルトの名無しさん:02/03/31 13:53
1から入力された数値xまでの合計数=x*(x+1)/2


730 :デフォルトの名無しさん:02/03/31 13:53
>>728
マルチにより放置。

731 :デフォルトの名無しさん:02/03/31 15:30
マルチって何?

732 :デフォルトの名無しさん:02/03/31 17:26
>725
なぜ「z」が必要なの?混乱させるため?

use POSIX;
$page_number = int ($x / $y + 0.5)


733 :ダメリーマン:02/03/31 18:28
どうやっても思いつきません。どなたか助けてください。
もう2CHだけが頼りです。C言語初級講座です。

コマンドライン引数に指定されたファイルすべてに対して、
改行文字以外の各行を、逆さまにして表示するプログラム
を書いてください。
このプログラムを a.out とすると実行結果としては、
以下のようになります。
% cat text
text1
text2
text3
% ./a.out text
1txet
2txet
3txet

逆さまに表示する部分は、以下のようにすると簡単にできます。

1.文字列の最後に改行文字があれば、そこに「\0」を代入
2.文字列の最後の文字から先頭に向かって、順に 1 文字ずつ表示
3.1で改行文字があったならば、改行文字を表示


734 :デフォルトの名無しさん:02/03/31 18:42
>>733
そこまでわかってるなら自分でやれや。

735 :デフォルトの名無しさん:02/03/31 18:48
>>733
そのぐらい本があればすぐだと思うが。


736 :デフォルトの名無しさん:02/03/31 18:54
>>73
丸投げするのに「思いつかない」っていうなよ。

737 :733:02/03/31 19:23
はずかしいかぎりです。
自分でやってみます。

738 :719:02/03/31 20:36
自分なりに組んでみたんですが、goto文で、入力データとcountが一致したらループを抜ける。とさせたいんですがうまくいきません。何か言い方法はありませんか。おねがいします。

#include<stdio.h>
main(){
int i=0,j=10,k=0,count=0,year=1800;
char nen[20];
char getu[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char niti[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
char shokuji[3];

while(1){printf("count= ");
scanf("%d",&i);
year++;
while(k<12){
switch(k+1){
case(1):case(3):case(5):case(7):case(8):case(10):case(12):
while(j<31){
while(i<3){
i++;count++;
if(count=&count){
goto end;
}}i=0;j++;}break;
case(4):case(6):case(9):case(11):
while(j<30){
while(i<3){
i++;count++;
if(count=&count){
goto end;}}i=0;j++;}break;
case(2):
if((year%4==0&&year%100!=0)||(year%400==0)){
while(j<29){
while(i<3){
i++;count++;
if(count=&count){
goto end;
}}i=0;j++;}}
else{
while(j<28){
while(i<3){
i++;count++;
if(count=&count){
goto end;}}i=0;j++;}}break;
} /*switch文の終わり*/
j=0;k++;
} /*while(k<12)の終わり*/
k=0;
}
end:;
printf("count= %d,date= %d. %d. %d\n",count,year,hako[k],kan[j]);
}

739 :デフォルトの名無しさん:02/03/31 21:04
そもそもgotoなんざ使うなってーの。

740 :デフォルトの名無しさん:02/03/31 22:05
> if(count=&count){
??

741 :デフォルトの名無しさん:02/03/31 22:53
>733
まぁいちおうベタなコードとしては

適当にバッファを用意して1行づつ読み込む。
バッファのケツは\nになるはずなのでそこまでポインタを進める。
その後ポインタをバッファの頭までデクリメントしつつstdoutに投げる。
最後に\nをつける。
次の行へ

というような感じになるんじゃないかな。

742 :デフォルトの名無しさん:02/03/31 23:02
ファイルポインタを終端に持ってく。
先頭までループしながら、
読む、書く。

遅そうだ

743 :デフォルトの名無しさん:02/03/31 23:09
しかも問題を勘違いしている。
最悪だ。

744 :デフォルトの名無しさん:02/03/31 23:19
>719
738をコピペしてコンパイルしたんだけど最後のpirntfの引数hako,
kanをgetu,nitiにしただけでコンパイル通っちゃったよ。
一見してこんなのコンパイル通るわけないと思ったんだけど。ある意味すごい。

とりあえず740の指摘したif (count = &count)がおかしい。intにint *を代入しているし
そもそも代入文でいいのかと思うのだが、後でじっくり見てみようかな。

>そもそもgotoなんざ使うなってーの。
などという言葉に耳を貸してはいかん。Switchから抜けようと思えば仕方ない。
しかしネストが3段以上になるのは何か基本的におかしいぞ。
それから変数の名前の付け方のセンスがなっていない。コメントがない。
enumを使え。

nitiという配列だけど、
niti[0] => 1, niti[1] => 2, .... , niti[30] => 31 という配列はナンセンスだとおもう。
それより、
getu[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
の方が意味があるとおもわない?



745 :デフォルトの名無しさん:02/03/31 23:28
>>719
ととととと (;´Д`) とりあえず

> while(j<31){
> while(i<3){
> i++;count++;
> if(count=&count){
> goto end;
> }}i=0;j++;}

みたいなコードが都合 4 回も出てますが,
これを一つにまとめるべきだと思ったです。
ヒントとしては,先頭の行の while の部分に注目。
while (i < days) の days の部分が年や月によって少しずつ違うだけっすね。
>>744 さんのヒントの gatu[] も併せて考えて,うるう年にもちょっと気をつけるって方向で。

あと,if (count = & count) の部分がわりとオシャレな事になってますが,
ナニがどうなれば end ラベルにジャンプしたいですか? (;´Д`)

746 :745:02/03/31 23:30
誤 : 744 さんのヒントの gatu[]
正 : 744 さんのヒントの getu[]

747 :719:02/03/31 23:46
みなさん、いろいろな助言をありがとうございます。
if(count=&count)は、もうひとつ変数scan_countを作って、
if(count==scan_count)としました。
いろいろ自分で考えて手を加えてみた結果、
いちおう、入力データが小さいうちは、正常に動作しました。
入力データがかなり大きい数になると、countの表示がマイナスになるのですが、
なにか改善策はありますか?

748 :デフォルトの名無しさん:02/04/01 00:01
>719
いまさらだけど元の仕様を読んだのだけどはっきりしない点を確認。
「ある日付から通算の食事の回数を入力する」というのはどう有意味?
なんかcountとdateを表示するんだけどさっぱり意味がわからない。
もしかしてたとえば

「ある日にちから10回食事した。ある日にちとは今日から何日前か?
ただし1日3回食事をとることにして今日はまだ食事をしていないとする」

なら答えは出せる。今回投稿したものは正しくないようだけどいきなり
1801. 1.12なんて答えが返ってくるんだけど。

プログラムを走らせるとcountを聞いてきて計算結果を表示するけど
たとえばcount = に3を入力するとどんな答えが返ってきてほしいの?


749 :デフォルトの名無しさん:02/04/01 00:45
>747
>if(count=&count)は、もうひとつ変数scan_countを作って、
>if(count==scan_count)としました。
これは要するにscanf("%d", &scan_count)という意味ですか?

仕様がわからないから断言はできないが変数のネーミングにセンスがなさすぎる。ふつうi,j,kって言ったら単なる
ループカウンタで単にMAXの回数だけループという使い方をする場合が多いのだけれど
この場合は
i < 3  1日3食? 
j < 29, 30, 31 ひと月の日数に関係がある?
k < 12 月に関係がある?
という風にi, j, kに何らかの意味がありそうだからそれなりの変数名にするべきなんじゃ無いだろうか。
その割にはcountなんて言う何をカウントしているんだかわからない変数があるし。

ふつう仕様が舌足らずでもプログラムを見ればたいてい意図していることはわかりそうなものだが
738のコードを見ても何がしたいのかさっぱりわからない。

しかしやる気は感じるので応援はするよ。
とりあえず仕様をよろしく。何を入力したらどういう答えが返ってきてほしいのか
はっきりさせてちょ。



750 :Disca ◆NAfP6znE :02/04/01 01:59
>>733
#include <stdio.h>
#include <string.h>

void main()
{
int i, j;
int n;
char c;
char *(aa[3]);

aa[0]= "text1";
aa[1]= "text2";
aa[2]= "text3";


for (i=0 ; i < 3 ; i++)
{
n= strlen(aa[i]);

for (j= 0 ; n / 2 ; j++)
{
c= aa[i][j];
(aa[i])[j]= (aa[i])[n - j - 1];
(aa[i])[n - j - 1]= c;

}
}

for (i= 0 ; i < 3 ; i++)
printf("%s\n", aa[i]);
なぜか動かない、問題でもあるかなぁ〜。

751 :デフォルトの名無しさん:02/04/01 03:54
>>750
mainの{を閉じてないから。
と、一応つっこんでおく。

752 :デフォルトの名無しさん:02/04/01 09:12
>719
自分でも物好きだと思うけどコードを読んでみた。
もしかしてやってることはこんなことか?

食事をした回数まで1から数えていく。
3回カウントしたら1日をカウントアップ。
以後同様にして1800年の1月1日(なぜこの日付?)から何日目たっているかを表示。

もしやりたいことが上のようなことなら上に書いてあるものそのままをコーディング
してみたら。

もう少しいうとすぐに日付を求めるのではなくまず何日たったかを出せばいいのではないかな?
例えば300日経過していたとして西暦1800年の300日目は何月何日になるかということを
考えればよい。とりあえず閏年は考えないで2月は28日まで1年は365日として
コーディングする。その後閏年に対応することを考えればよい。
西暦X年のY日目は何月何日かという関数を考えてもイイかも。

もし後で閏年に対応できないようなコードなら元のコードに問題がある。

753 :デフォルトの名無しさん:02/04/01 09:39
>750
751のmain閉じはコピぺみすだとしてコンパイルは通るけどメモリエラーで
落ちるということだよね。
とりあえず文字列の配列の宣言部は
char *(aa[3]); ではなくて char *aa[3]; じゃないかな?

前者は (aa is array(element3)) is pointer to char
後者は aa is array(element3) of pointer to char
aaはcharへのポインタの配列(要素数3)という感じで読むんだけど。
前者は私には自然に読めないな。


754 :デフォルトの名無しさん:02/04/01 09:45
>752
グレゴリオ暦、ユリウス暦、太陽太陰暦、イスラム暦、
ユダヤ暦、和暦、などなどに対応したい、とかいわれたら、
格好の練習問題といえそうですね :-)

755 :デフォルトの名無しさん:02/04/01 09:51
>>753
char *(aa[3]); も char *aa[3]; も同じ意味じゃない?

756 :デフォルトの名無しさん:02/04/01 10:41
>754
それはいいかもね。各暦に対応した変換関数を考えればいいわけだからね。

>750
とりあえずfor (j= 0 ; n / 2 ; j++)はループの中でnが変化しないからnが0じゃなければ
無限ループするよ。

なんか文字列の先頭からとケツから人文字づつとって入れ替えようとしているみたいだね。
それなら
aa[j][i] = aa[n - j - 1][i]
になるような気がする。


757 :デフォルトの名無しさん:02/04/01 10:45
これで通る。

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

void main()
{
    int i, j;
    char *str[3];
    char temp;
    int len;

    str[0] = "test1";
    str[1] = "test2";
    str[2] = "test3";

    // それぞれについて処理
    for (i = 0; i < 3; i++){
        len = strlen(str[i]);
        for (j = 0; j < len / 2; j++){
            temp = str[i][j];
            str[i][j] = str[i][len - j - 1];
            str[i][len - j - 1] = temp;
        }
        printf("%s\n", str[i]);
    }
}

758 :デフォルトの名無しさん:02/04/01 10:47
>char *(aa[3]); も char *aa[3]; も同じ意味じゃない?
勘違いだったみたいです。混乱させてごめん。
756もちょっと変だった。
超手抜きだけどこんな感じになるのでは

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

int main(void)
{
int i, j, k;
int length;
char c;
char *aa[3];
char temp[6]; /* ダサいバッファ*/

/* 文字列の初期化 */
aa[0]= "text1";
aa[1]= "text2";
aa[2]= "text3";

for (i = 0 ; i < 3 ; i++) {
length = strlen(aa[i]); /* 文字列の長さを取得 */

/*
* aa[i]のNUL文字を除く文字を後ろから一文字づつ
* tempバッファにコピー
*/
for (j = length - 1, k = 0; j >= 0; j--, k++)
temp[k] = aa[i][j];

temp[5] = '\0';

strcpy(aa[i], temp); /* tempをaa[i]にコピー */
}

for (i = 0 ; i < 3 ; i++)
printf("%s\n", aa[i]);

return 0;
}


759 :757:02/04/01 10:48
…って、見直してみたら殆ど変わってないな。
適当に見て、最初から書き直したのが惡かったスマン。

>>756が言っているとおり、ループが終わらないのが原因。
確保されてない領域まで交換しようとしてる。

760 :デフォルトの名無しさん:02/04/01 10:56
>>758
tempがダサい。
for (j = length - 1; j >= 0; j--){
    putchar(aa[i][j]);
}
putchar('\n');

761 :デフォルトの名無しさん:02/04/01 12:56
>tempがダサい
わかってたんだけどさ。
反転させてコピーって方がわかりやすいかなと思って。
だめ?
あんまり変わらないかな?

762 :デフォルトの名無しさん:02/04/01 14:23
真っ当なコード。
char buf[BUF_SIZE];
while( fgets(buf,BUF_SIZE, stdin) )
{
 buf[BUF_SIZE-1] = '\0';
 int length = strlen(buf);
 for( int i=length-1; i>0; i++ ){
  fputc(buf[i], stdout);
 }
 fputc('\n', stdout);
}


763 :デフォルトの名無しさん:02/04/01 14:38
>>761
temp が temporary以上の役割をしているので、rev_strとでもしたほうが
可読性があがります。また、入ってくる文字数を決め撃ちするのも
どうかと思います。temp[length + 1]に '\0' を入れたほうが。

>>762
インクリメント/デクリメントの方向が真っ当では無い気がします。

764 :Disca ◆NAfP6znE :02/04/01 16:05
char *p="AAAAAA";

*(p + 2)= 'B';
printf("%s\n", p);

なぜかこのプログラムが動かない。なぜでしょうか…?
簡単なプログラムなのに…。概念も間違っていないのに…。

765 :大ヒント:02/04/01 16:16
>>764
> char *p="AAAAAA";

char p[] = "AAAAAA";

こう直してみましょう。

766 :デフォルトの名無しさん:02/04/01 16:49
>764
そのコードが通ってしまう環境もあるだろうけどエラーになるのが全うだと思うよ。
pは初期値で文字列リテラルを指している。文字列リテラルは書き込み禁止領域に
確保されているとここの値を書き換えようとするとエラーになるっちゅうわけだ。

対処としては765のようにするかヒープに領域を確保しよう。
ちなみにchar p[]="AAAAAA";
はchar p[] = {'A','A','A','A','A','A','\0'};のシンタックスシュガーで
文字列リテラルの扱いとしては例外的なので間違えやすいところです。


767 :Disca ◆NAfP6znE :02/04/01 16:58
>>764, >>765
ありがとうございます。無知そのものでした…。
さすがに恥ずかしいデス。C言語いつからしているのか…(鬱。


768 :デフォルトの名無しさん:02/04/01 17:00
for( int i=length-1; i>0; i++ ){
って
for( int i=length-1; i>=0; --i){
??

769 :デフォルトの名無しさん:02/04/01 17:08
宿題より俺のオナニー手伝ってくれよ。そう、その手で


770 :デフォルトの名無しさん:02/04/01 17:15
それはオナニーじゃなくて、手コキだ。

771 :デフォルトの名無しさん:02/04/01 18:17
手古希きもちいいYO

772 :デフォルトの名無しさん:02/04/03 03:44
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
 if (argc < 0) {
  int c, r;
  c = getc ((FILE *)argv);
  if (c == EOF || c == '\n')
   return c;
  r = main (argc, argv);
  putchar (c);
  return r;
 } else if (argc > 1) {
  FILE *fp = fopen (argv[1], "r");
  if (!fp) {
   perror (argv[1]);
   return EXIT_FAILURE;
  }
  while (main (-1, (char **)fp) != EOF)
   putchar ('\n');
  fclose (fp);
  return main (argc - 1, argv + 1);
 }
 return EXIT_SUCCESS;
}

773 :デフォルトの名無しさん:02/04/03 11:09
>>772
なんともトリッキー。面白いYO。

774 :デフォルトの名無しさん:02/04/04 17:05
JavaのAppletについての問題です。


テキストボックスをAppletに配置します。
そのテキストボックスに何かメッセージを入れます。
入れた後に、エンターキイを押す。
そうするとgetSizeを使ってキャンバスの中央にそのメッセージが現れるようにする。


ボタンとプルダウンのチョイスボックスを設置。
その中にはなんでもいいので適当な名前を入れる。
1つの名前を選択してボタンをクリックするとその選択された名前が
キャンバスに中央に現れるようにする。
getTextとgetSizeを使用。

ボタンなどの設置の仕方は問題ないのですが。
以上の2つ、特にキャンバスにそれぞれ選択したものを現れるようにするところで
かなりつまずいております。

どなたか助けて!


775 :デフォルトの名無しさん:02/04/04 23:42
>>774
Graphics取得して、がつっと描画しちゃえばいんじゃない?
でもふつーは、update()をオーバーライドしといて、repaint()呼ぶかな。

776 :774:02/04/05 11:50
>>775

repaint()でどうにかできました。ありがとう。

それで、もう1つ。

ボタンやチャックボックスなどをパネルにまとめてアプレットの上(North)に置きます。
はい、これは全く問題ないです。
それで今度はキャンバスをアプレットのセンターに置きます。
ここで問題が発生。
参考書の例をみながらやっているのですが
その参考書と私の浅はかな知識からすれば
まず、キャンバスを宣言。
private DrawOn canvas = new DrawOn()とかなんとか。
それで次にadd(canvas, "North")でちゃんといくと思うんですが上手くいきません。
動かして見るとキャンバスがボタンやチェックボックスなどのすぐ下の左上によってしまいます。
これはどうしてでしょうか?
参考書などでは綺麗にセンターによっているんですが・・・

もう1度お助けください。

777 :775:02/04/05 15:40
>>776
ソースが見れれば一撃なんだが、とりあえず憶測で。

1.setLayout(new BorderLayout()) し忘れている。
2.キャンバスにsetSize()でサイズを明示的に指定してみる。
3.キャンバスをPanelにつっこんで、Panelをadd()してみる。
4.マジボケで"Center"じゃなくて"North"と書いている。

778 :774:02/04/05 16:49
>>775

3を試したらできました。ありなとう。
でもなんで????
add(canvas, "center")でいかないの?

779 :774:02/04/06 01:52
教えて君になってしまってますが、最後にもう1つだけ。

JavaでAppletのサイズってどうやって変えれるのですか?
もちろんhtmlのAppletのWidhtとHeightで変えるのではないです。
htmlファイルで決めたAppletの大きさ以内なら変えられるとのことなんですが・・・
Dimensionとかresizeを使うらしいんですが完全に分かりません、はい、全く・・・

お願いします!!!!

780 :デフォルトの名無しさん:02/04/06 09:14
>>779
アプレットのサイズはコード量を減らせば必然的に小さくなります。

781 :デフォルトの名無しさん:02/04/06 09:20
>>779
漏れはやったことないけど、Appletは、Componentを継承してるから、
ComponentクラスのsetSize()メソッド使って、
this.setSize(new Dimension(10,10));
でいんじゃないの?
いちおう、サイズ変えた後 repaint()呼んどいたほうがいいかも。

782 :デフォルトの名無しさん:02/04/06 13:02
宿題手伝ってくれるんですか?お願いします。

練習問題
西暦のカレンダーを作成する。
@年はエラーとする。
A月は「1〜12」以外はエラーとする。

うるう年の条件
@西暦の年数が「4」で割り切れる。
A西暦の年数が「100」で割り切れない。
B西暦の年数が「400」で割り切れる。

計算するにあたり、西暦1年は1月日は「月曜日」とする。

y年m月の求め方

 a=365*(y-1)+(y-1)/4-(y-1)/100+(y-1)/400 うるう年のによるづれをもとめる。

 b=month[1]=31,month[2]=28,month[3]=31month[4]=30,month[5]=31,month[6]=30
month[7]=31,month[8]=31,month[9]=30,month[10]=31,month[11]=30,month[12]=31

c=(a+b)%7 y年m月1日の曜日
       c=0なら日曜日、c=6なら土曜日

正直、まったくC初めてでこの問題はつらいです。すいません。





783 :デフォルトの名無しさん:02/04/06 13:06
>>782
>@年はエラーとする。
>A月は「1〜12」以外はエラーとする。

ユーザーに年月を入力させて、その月のカレンダーを出力するって
ことかいな?
「年はエラーとする」って意味がわからん。

784 :デフォルトの名無しさん:02/04/06 13:08
この時期に宿題って、会社の研修?

785 :デフォルトの名無しさん:02/04/06 13:25
>784
勉強のために、自分自身に課題を課しているのでは?

786 :デフォルトの名無しさん:02/04/06 13:29
>>785
それにしても、文章の解読の方が難しい。

787 :デフォルトの名無しさん:02/04/06 13:43
>>786
わかりやすい文章を書けた時点でプログラミングの半分は終わったと思われ。

788 :デフォルトの名無しさん:02/04/06 13:51
>782
ttp://www.indsys.chuo-u.ac.jp/~kato/IPEx98/CGuide/C-5.html


789 :774:02/04/06 13:51
>>781

ありがとう。そんな感じに使うんだと思う。
でも、試したところちょっとやりたいことと違うとこが・・・

えーと、textfieldとcheckboxをパネルに入れてNorthにキャンバスをCenterに設置します。

setLayout(new BorderLayout());
Panel bar = new Panel();
bar.add(text);
bar.add(boxes);
add(bar, "north");
add(canvas, "center");

それでcheckbox(サイズsmall, large, etc)を選んだら

Appletのサイズが変更されるようにしたいのです。
でも、教えてもらった方法だとどうもCanvasのサイズだけが変更されます
Northのbar(textfieldとcheckbox)はそのままのサイズで大きさが変わりません。
どうしてでしょうか?
最初のPanelとかの設定がおかしいのでしょうか?

790 :デフォルトの名無しさん:02/04/06 13:51
いま読み返したら、
>練習問題
>西暦のカレンダーを作成する。
>@年はエラーとする。
この(1)の時点で、意味不明ですね。
782さんのその後のフォローも無いし。
ネタ決定ですか?

791 :デフォルトの名無しさん:02/04/06 16:17
>>782
読めない漢字は飛ばしましたか?

792 :781:02/04/06 23:17
>>789
Applet(のオブジェクト)に対してsetSize()しなさい。

793 :デフォルトの名無しさん:02/04/06 23:23
>>782
どこまでできてて、どこでつまずいてるの?

もしまだ1行も書けてない&UNIX使ってるんなら、
#include <stdlib.h>
int main() {
system("cal");
return 0;
}
てなのはどうかね。

794 :774:02/04/07 01:19
>>781

すいません、そのやり方が分からないのですが・・・
どうやってやるんでしょうか?

795 :デフォルトの名無しさん:02/04/07 01:23
>>793
おいおい・・・。

796 :793:02/04/07 01:42
>>794
UNIXなら、viかemacsでcalendar.cというファイル名でセーブして、
cc -o calendar calendar.c
でコンパイルして、
calendar
で実行。

797 :デフォルトの名無しさん:02/04/07 09:07
Cなんだけど、
ESCで終了するように
while((c=getche())!='\x1b)
てやったら空リターン受け付けないんだけど、どうすればいい?


798 :デフォルトの名無しさん:02/04/07 11:32
CR('0x0d')も取れ。

#include <stdio.h>
#include <conio.h>

void main()
{
    int c;
    while (1){
        c = getche();
        switch (c){
            case 0x1b: // escape
                putchar('\n');
                goto loop_end;
            case 0x0d: // carriage return
                putchar('\n');
                break;
            default:
                printf("%c", c);
        }
    }
loop_end:
}

799 :デフォルトの名無しさん:02/04/07 22:03
>>798
サンクス!CRを'\n'だと思ってタヨ。
厨房でスマソ。

800 :デフォルトの名無しさん:02/04/07 23:05
782です、申し訳ないです。まさしく研修中で、
C++をよく理解していないまま、この問題を渡されました。

訂正箇所は、
    西暦のカレンダーを作成する。
    @年は「0」はエラーとする
この箇所だけです。すいませんでした。


801 :デフォルトの名無しさん:02/04/07 23:07
>>800
「800getズッザー」が抜けてます。

802 :デフォルトの名無しさん:02/04/07 23:22
>>801
ナイス。

803 :デフォルトの名無しさん:02/04/07 23:37
誰か>>800の宿題解いてあげて下さい。漏れは風呂入ってくるけど、
あがって誰も解いてなかったら作ってみるか。

804 :デフォルトの名無しさん:02/04/07 23:38
>>803
機種依存文字使う人嫌い。

805 ::02/04/07 23:42
久しぶりに登場してみようかな。

とりあえず最初から置いていかれると、どんどん辛くなっていくから、
頑張ってついていかないと大変だと思うよ。
やっぱ、ネットだと教えににくいところもあるから、同僚でできる人
と友達になって教えてもらうのがいいんじゃないかな。お礼はすると
してね。まだ、働いたことのない私がいうのも何ですが・・。

で、y年m月のカレンダーを作るときには、その1日が何曜日かわから
ないとできないよね? それを計算しようというのがヒントに書いて
ある話ね。
西暦1年1月1日(1が抜けてたけどそう?)の曜日がわかってるって
ことで、1年1月1日からy年m月1日まで何日あるかえを調べたいわけね。

まず、西暦1年1月1日から、y年1月1日まで何日あるかって計算し
てみると。
365*(y-1)+(y-1)/4-(y-1)/100+(y-1)/400
ってなるのね。なんで、この式になるかは考えて理解してみてね。
整数/整数の場合は、答え整数になる。9/4=2みたいにね、念のため。

806 ::02/04/07 23:42
で、次にy年1月1日から、y年m月1日まで何日あるかって考えると
month[1]=31,month[2]=28,month[3]=31month[4]=30,month[5]=31,month[6]=30
month[7]=31,month[8]=31,month[9]=30,month[10]=31,month[11]=30,month[12]=31
とmonthに代入した後に、

int b = 0;
int i;
for(i = 1; i < m; i++) b = b + month[i];

ってことをしてあげればbにその日数が入るのね。これが何をしてるかはわかる?

で、そうすると

1年1月1日からy年m月1日まで何日、あるかは上の2つを足したものになるよね。
で、これを7で割った余りをみれば、y年m月1日が何曜日かはわるよね?

とりあえず、ここまで理解できたら続きを書くね、

807 :デフォルトの名無しさん:02/04/07 23:59
782です。805さんの言うとうり1が抜けてました。すいません。
たしかに、forの式でbの値はわかりますよね。ifを使ってうるう年の
条件をだすんですか?


808 ::02/04/08 00:15
>>807
ああ、そういえばうるう年忘れてました。
ええ、ifを使ってiが2のとき、うるう年かどうか調べてください。

809 :デフォルトの名無しさん:02/04/08 00:20
>>807
うるう年の判定をif文を使わずに計算で出そうとしている模様。
しかし、
> a=365*(y-1)+(y-1)/4-(y-1)/100+(y-1)/400 うるう年のによるづれをもとめる。
これは気を付けないと、365*(y-1)の部分でオーバーフローしやすいぞ。変数は
longで宣言しておくべきだな。もっとも、intが16ビットの処理系もマイナーになっ
てきたが。

810 :デフォルトの名無しさん:02/04/08 00:30
>>809
多分うるう年のときの、3月以降のカレンダーを出す場合の話。

811 :デフォルトの名無しさん:02/04/08 01:02
782です、了解です。なんとか形になってきました。
ありがとうございます。やれるとこまでやって明日
聞いてみます。しかし、文系出の初心者には大変です。
5日前に初めてC++の参考書開いたのに今週で覚えろ
なんて・・・これって普通なんですかね??
私には酷なんですけれども。

812 :デフォルトの名無しさん:02/04/08 01:25
 酷だと思いますよ。システム系の会社だったら、ある程度は勉強してきた
んだろう、という前提で研修をしているのかもしれません。

813 :新卒:02/04/08 14:34
>>811
それはひどすぎ。最低でもプログラミング研修3ヶ月はある。
ゲーム業界とか特殊な企業は除くけど・・

814 :デフォルトの名無しさん:02/04/08 15:36
>>811
他スレでは4.5年かかるとか書いてあったよ
1週間で覚えたらスゴイ

815 :_:02/04/09 09:52
age

816 :デフォルトの名無しさん:02/04/09 12:32
Cで整数の引数のビットを文字列として表示するってどうやればいーの?
たとえばbit(60);ってやったら
11-1100
みたいに4文字ごとに区切り文字を入れろって言われたんだけど・・・

教えてくださーい

817 :えれな:02/04/09 12:39
>>816
下位ビットから見ていく処理でーす。
参考にして考えてみてね。
わからなかったら、また書き込んで。

unsigned int n = xxx;
while (n!=0) {
 if (n & 1) ビットが立っている
 else ビットが立っていない
n >>= 1;
}


818 :デフォルトの名無しさん:02/04/09 12:44
以下のように CWinApp *Application から操作しようと考えているのですが、
どうしても、WinMain.cppの3行目のif文で真となってしまい終了してしまいます。
何か基本的なことが分かっていないと思うのですがどうかよろしくお願いします。

(WinMain.cpp)-------------------------------------------
#include "CWinApp.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
   if(Application == 0)
      return -1;

   //Application->Init(hInstance, lpCmdLine, nCmdShow); の様に続く
}
(CWinApp.h)-------------------------------------------
#ifndef __CWinApp
#define __CWinApp
class CWinApp {
   public:
      CWinApp();
      ~CWinApp();
・・・省略
} // class CWinApp終了
extern CWinApp *Application; //CWinApp.cppの2行目で宣言
#endif
(CWinApp.cpp)-------------------------------------------
#include "CWinApp.h"
CWinApp *Application;
CWinApp::CWinApp() {
   Application = this;
}
CWinApp::~CWinApp() {
   Application = 0;
}


819 : :02/04/09 12:48
消防の頃、手探りでBASIC覚えてる時、論理演算も2進数の存在も知らずに、
if (n>=128) { b[0]=TRUE; n-=128;}
if (n>=64) { b[1]=TRUE; n-=64;}
if (n>=32) { b[2]=TRUE; n-=32;} //BASICの文法忘れた
とかやってた。 もう馬鹿かとアホかと。

820 :えれな:02/04/09 12:50
>>818
それじゃCWinAppのコンストラクタが実行されないよ。


821 :デフォルトの名無しさん:02/04/09 14:34
unsigned char data[4] = {0x31, 0x32, 0x33, 0x00}; と宣言した変数dataに
10進数の20を16進数に変換した数字をdata[1]に入れたい場合、どうすればよいでしょうか?

自分なりに以下のようにやってみましたが、うまくいきませんでした。

int main()
{
unsigned char data[4] = {0x31, 0x32, 0x33, 0x00};
char temp[1];

sprintf(temp, "%x", 20); //20を16進数に変える。tempには14が入る。
memcpy(&data[1], temp, 1);
cputs(data);
cputs("\r\n");
return 0;
}

結果
113

となってしまいます。20を16進数に変える方法がよくないんだと思いますが、
なにかアイデアあれば、教えてください。

822 :821:02/04/09 14:37
書き忘れましたが、環境はwindowsNT、TurboC++ ver.3.0です。

823 :デフォルトの名無しさん:02/04/09 14:39
>>821
はげしく勘違いしとる(^-^;

824 :まい:02/04/09 14:43
>>821
どう説明したらわかってもらえるかわからないけど、
10進数とか16進数っていうのは、ソースに記述したり
外部にテキスト形式で出力したりするときに関係してくる
もので、コンピュータの内部では常にバイナリで処理されてます。
はい。


825 :821:02/04/09 14:52
いえ、あのつまり、0x31, 0x32, 0x33, 0x00は、
asciiコードで言えば、それぞれ1,2,3,nullですよね?
それで、20を16進数に変えますと14ですから、これを表示すると、
Π こんなようなマークが表示されるわけですよ(14のアスキーコードが見つかりませんでした)
これでも勘違いしていますか?

826 :まい:02/04/09 15:03
>>825
もしかして、charを他の言語の文字列型と同じように思ってる?
(temp[]の要素数が1だし)
charは、文字列型ではなくて文字型だから一文字しか入らないよ。

char temp[3];
sprintf(temp, "%x", 20);

"14"を変数に入れたかったら、temp[3]にしないとだめ。

827 :助けてください:02/04/09 15:10
Fortran で、バイト文字をアスキー型に変換する関数を教えてください。
もしくは、その辺に詳しいサイトを紹介してください。
m(_ _)m

828 :821:02/04/09 15:18
>>826
ありがとうございます、こんな質問に付き合っていただいて。
言葉足らずで申し訳ありません。

20を16進数に変えた後、その配列には最終的にはこうなってもらいたいんです。
{0x31, 0x14, 0x33, 0x00} //変数dataの中身

826さんのおっしゃるようにやりますと、
14という数字の1の部分(1バイト分)がその配列の先頭に入るだけになってしまいます。
つまり、
{0x31, 0x32, 0x33, 0x00} となり、結局中身は変わらないです。
説明不十分で826さんがミスリーディングしてしまいましたら、申し訳ないです。

829 :デフォルトの名無しさん:02/04/09 15:25
>>821
最近までBASICやってたような質問だねぇ

830 :まい:02/04/09 15:29
>>828

そうしたいなら、これでいいけど。。。

int main()
{
unsigned char data[4] = {0x31, 0x32, 0x33, 0x00};

data[1] = 20; /* data[1] = 0x14;と同等の処理 */

cputs(data);
cputs("\r\n");
return 0;
}


831 :821:02/04/09 15:42
>>830
ちょっと、こちらで実行してみます。それから返事します。どうもです。

832 :821:02/04/09 15:52
>>830

できました。なんか拍子抜けしてしまいました。
単純にこれでいいんですね。ありがとうございました。

833 :デフォルトの名無しさん:02/04/09 15:57
>>832
入門書の一冊でも買ってよめや。

834 :デフォルトの名無しさん:02/04/09 17:12
だね

835 :デフォルトの名無しさん:02/04/09 19:48
DirectInputについて勉強しているのですが、
これを使うとキーボードなのの反応が早くなるとならいました。

実際どうやって初期化するか、キーの状態を取得するか
は分かったのですが、どこで取得するのがいいのでしょうか?

メッセージを処理するCALLBACKの所で取得すると、DirectInputを
使わない時と変わらなくなってしまうので、メッセージループの部分で
やるとなると毎回呼び出す分、負担が大きくなってしまうと思うのですが、
それ以外に方法が思いつきません。

どうかよろしくお願いします。

836 :デフォルトの名無しさん:02/04/09 20:30
必要になったときに取得しろ
そもそもDirectInputを使う必要があるのかどうかよく考えろ

837 :デフォルトの名無しさん:02/04/09 21:12
>>835
それって宿題ですか?

838 :デフォルトの名無しさん:02/04/10 03:12
>>835
ゲームのループってーのは、ディスプレイのリフレッシュレートに
あわせて回すのが一般的です。

例えば、リフレッシュレートが60Hzの場合、画面は1秒間に60回しか
書き換わらないので、それ以上の速度でVRAMを書き換えても、
無駄です。

なので、普通は1ループ終了後(すなわち、キーを一回読み込み、
必要な処理をし、バックバッファに次のVRAMイメージを描画し終った後)、
ダブルバッファをフリップするタイミング(垂直帰線期間の開始)までウェイトします。

つーことで、CALLBACKやループでキーを読み出すのではなく、
垂直帰線期間が開始したら、1回分読み出せばOKです。

(DirectDraw使ってるなら、LPDIRECTDRAWSURFACE3のFlip()呼ぶ時に、
Flip(NULL, DDFLIP_WAIT)みたいにDDFLIP_WAIT指定すれば、
勝手に垂直帰線期間までウエイトしてくれるんじゃないかなぁ?
まちがってたらスマン。)

839 :デフォルトの名無しさん:02/04/10 03:55
そもそも、ノートとか垂直同期検出不可能な環境もあるから、
現在はタイマで待つのが一般的かと。

840 :デフォルトの名無しさん:02/04/12 18:05
C言語で、BMPファイルのグラフィクデータを直接いじるやり方ってどうやるのでしょうか。
調べましたが、どうにもアドレスでどうにかするしかないらしいのですが・・・


841 :デフォルトの名無しさん:02/04/12 22:55
>>840
アドレスでどうにかするんじゃないとしたら、どんなふうに直接
いじりたいの???
getColor(bmp,x,y)とかsetColor(bmp,x,y,color)みたいなかんじ?

842 :デフォルトの名無しさん:02/04/17 12:52
不定期アゲ

843 :デフォルトの名無しさん:02/04/17 13:38
>>835
ちゃんとスレッドを作って実行してる?

>>840
直接操作しないとパフォーマンスが悪いよ

844 :デフォルトの名無しさん:02/04/17 22:08
すいません、教えてください。
Cなんですが
宿題で、ANK文字や漢字1バイト、漢字2バイトを
見分けなければならないのですが、
どうやって見分ければいいのでしょうか?
教えてください。

845 :デフォルトの名無しさん:02/04/17 22:11
>>844
ctype

846 :デフォルトの名無しさん:02/04/17 22:13
>>844
ANK文字って響き、懐かしいなぁ。
ほい。
http://www.google.com/search?hl=ja&q=%8A%BF%8E%9A+ANK+%94%BB%95%CA%81@%91%E6%82P%83o%83C%83g&btnG=Google+%8C%9F%8D%F5&lr=lang_ja

(余談だけど、ANKって、Alphabet Numeric Kana の略なんだね。)

847 :デフォルトの名無しさん:02/04/17 22:16
>>846
魚でなく釣り竿を渡す。大岡越前のようです。

848 :デフォルトの名無しさん:02/04/17 22:18
漏れは消防の頃、大岡越前をおおおかこしまえと読んでいました。

849 :844:02/04/17 22:19
わかんない(汗
ctypeはしらべてわかりましたが
やっぱ漢字を見分けるのが出来ません。
どなたか簡単に教えてください〜

850 :デフォルトの名無しさん:02/04/17 22:22
>>844
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/w/whatKanji.html

851 :844:02/04/17 22:24
>>850サマ!!
ありがとうごぜえます〜♪

852 :デフォルトの名無しさん:02/04/18 00:20
>>850の悪行によって>>851のプログラマ人生は絶たれたのでした・・・。

853 :デフォルトの名無しさん:02/04/18 00:37
そんな事も自分で調べられないなら
元々プログラマに向いてないでしょ。

854 :デフォルトの名無しさん:02/04/18 01:10
>>851>>850のソースを活用できないに1ドラクマ。

855 :デフォルトの名無しさん:02/04/18 10:35
>>844
その課題、それを分別してから、単語ごとに区切ってクイックソートしたりする?

856 :デフォルトの名無しさん:02/04/23 19:52
fortranの参考書を本屋で探したんですが、どこにも売ってませんでした。
先生も文法をたいして教えずに課題を出しやがる。
問題は1、2、3、・・・20の等差数列の和を出すプログラムを書けをいうものです。
どなたかまじで助けてください。

857 :デフォルトの名無しさん:02/04/23 19:59
1から20までの総和

01 c
02 c
03 c
04 s=0.
05 do i=1,20
06 s=s+i
07 end do
08 c
09 write(*,*) 's=',s
10 c
11 end


858 :デフォルトの名無しさん:02/04/23 20:00
>>856
Σn=(n+1)*n/2
n=20として 21/20/2=21*10=210

よって
INTEGER ANS
    ANS=210
    WRITE(*,*) '答えは',ANS
    END

の4行で終わりかと

859 :デフォルトの名無しさん:02/04/23 20:43
ほんとありがとうございました。
まんま書いてもなぜかできなかったんですが、
この前授業でもらったプリントと重ねあわせてやってみたところ。
下のやつで出来ました。
n=0
do i=1,20
n=n+i
end do
write(*,*) 'n=',n
stop
end
注文した参考書が届いたらちゃんと勉強したいと思います。

860 :デフォルトの名無しさん:02/04/26 16:47
答えを整数型で表示する次のプログラムを、実数で表示するようにかえてください。
言語は見ての通りCです。お願いします。
#include <stdio.h>
#define INPUT_FORMAT "%d"
#define SUM_FORM "%d"
void input(int);
void sum(int);
int M[100],n,m,l,s=0;
main()
{
printf("数を入力してください。結果を出したいときは数字以外のものを入力してください\n");
input(n);
sum(n);
m=s/6;
l=s%6;
printf("商="INPUTF_ORMAT"\n",m);
printf("あまり=" SUM_FORM"\n",l);
}

void input(int n)
{
for(n=0; n<100; n++)
{
if( scanf(INPUT_FORMAT,&M[n])!=1 )
break;
printf("M[%d]="SUM_FORM"\n",n,M[n]);
}
return (M);
}
void sum(int n)
{
for(n=0;n<100;n++)
s+=M[n];
return (n);
}


861 :デフォルトの名無しさん:02/04/26 16:52
>>860
void の関数でreturn(M)とかやって、コンパイルとおるのか?

862 :デフォルトの名無しさん:02/04/26 16:53
それ以前に、
void input(int n)
{
...(略)
return (M);
}
void sum(int n)
{
...(略)
return (n);
}
って何よ。

863 :デフォルトの名無しさん:02/04/26 16:55
>861
VC++6のデフォルトなら、
「warning C4098: 'input' : 戻り値の型が 'void' で宣言された関数が、値を返しました」
とか言われるけど、コンパイルはできる。
なんかCのイヤなところを見てしまった気分

864 :860:02/04/26 17:01
>861さん
863さんの言う通りコンパイルは出来るんですよ。
ただこのプログラムを実数表示にしようとするともう頭が・・・・。
何とかなんないでしょうかね?


865 :デフォルトの名無しさん:02/04/26 17:03
printf("商=%d.0\n",m);
printf("あまり=%d.0\n",l);

866 :デフォルトの名無しさん:02/04/26 17:06
>>864

main()
{
printf("数を入力してください。結果を出したいときは数字以外のものを入力してください\n");
input(n);
sum(n);
printf("商=%g\n",s/6.0);
printf("あまり=%d",l%6);
}

あんたの意図がいまいちわからんけど、
実数表示ならこれでいいと思う。

867 :デフォルトの名無しさん:02/04/26 17:10
input()もsum()も引数をとる意味が無いような…

868 :860:02/04/26 17:15
>865さん
>866さん
ありがとうございます。今からやってみます。ちなみにdefine文は書き
換えなくてもいいのでしょうか?それとこのプログラムの正しい戻り値っ
てどうすればいいのでしょう?気になったもので。
>867さん
僕にも意味はわかりません(笑 



869 :860:02/04/26 17:33
先生曰く「戻り値が正しくないから駄目です。やり直し。」
誰か〜、戻り値教えてください〜(泣

870 :デフォルトの名無しさん:02/04/26 17:41
>>869
もしかして教室から?

int input(int n)
int sum(int n)


871 :860:02/04/26 17:51
>870さん
回答ありがとうございます!コンパイルできました!ちなみにただ今授業の
真っ最中です。コソーリ書き込んでます。
で、新たな問題が・・・865さんと866さんの教えてくれたプログラムに
書き換えたんですけど、入力で実数の4.5とか入れるとその時点で終わってしま
います。この解決方法はどうすればいいのですか?

872 :デフォルトの名無しさん:02/04/26 17:57
>>871
「答えを整数型で表示する次のプログラムを、実数で表示するようにかえてください。 」
って言ってたじゃん・・・

873 :860:02/04/26 18:12
>872さん
!!(;´Д`) すみません!どうやら間違いがあったようです。
正しくはさっきのプログラムに実数を入力しても正しく動くようにして
ください、ってことです。たとえば5.4と8.3と9.4を入力すると商に3、
あまりに5.1を表示できるように、ということです。文章力&プログラム力
なくてすみませんがよろしくお願いします。



874 :デフォルトの名無しさん:02/04/26 18:15
http://choco.2ch.net/test/read.cgi/news/1019808938/

【2ch vs TIME】我等が不死鳥田代-12【戦争】

1 :番組の途中ですが名無しです :02/04/26 17:15 ID:n4EtZFI6
■STEP 1
-------↓ここから-------
<html><head><meta http-equiv="refresh" content="0"></head><body>
<iframe height=500 width=500 src="http://www.time.com/gdml.dyn?page=www/time/asia/features/heroes/poll/asianheroes_new.oft&gameid=asianheroes2&q1=M%3C%21--2ch--%3Easashi+T%3C%21--2ch--%3Eashiro ">
</iframe></body></html>
-------↑ここまで-------
をメモ帳を立ち上げ、コピー&ペースト。
■STEP 2
それを、ファイルに「tashiro.htm」と名前を付けてデスクトップに保存。
■STEP 3
デスクトップにできた「tashiro.htm」を飽きるまでダブルクリックして、ブラウザを立ち上げる。

    ___
    /     \     __________
   /   ∧ ∧ \  /
  |     ・ ・   | < 生きろおめーら
  |     )●(  |  \__________
  \     ー   ノ
    \____/


875 :デフォルトの名無しさん:02/04/26 18:30
>>873
授業料500円払えや!
(って仕様を読み違えてる可能性有り)

#include <stdio.h>
#include <math.h>
int input(float M[], int);
float sum(float M[], int);

main()
{
float M[100], s;
int num;
printf("数を入力してください。結果を出したいときは数字以外のものを入力してください\n");
num = input(M, 100);
s = sum(M, num);
printf("商=%g\n", s / num);
printf("あまり=%g\n",fmod(s, num));
}

int input(float M[], int max)
{
int i;
for(i=0; i<max; i++)
{
if( scanf("%f",&M[i])!=1 )
break;
printf("M[%d]=%g\n",i,M[i]);
}
return i;
}

float sum(float M[], int num)
{
int i;
float s = 0.0;
for(i=0;i<num;i++)
s += M[i];
return s;
}


876 :860:02/04/28 09:31
>>875さん
お礼が遅れてすみません!ありがとうがざいました!
遅れた言い訳→授業中にネットをやっているのがばれて先生に激怒され、今日まで
演習室に立ち入り禁止処分を食らったため・・・・。しかも宿題増やされるし。
欝だ逝ってきます。

877 :デフォルトの名無しさん:02/04/28 18:06

>>144
> 正確に言うとコンパイルとリンクね。
正確に言うと、プリプロセス -> コンパイル -> アセンブル -> リンク ね。

878 :デフォルトの名無しさん:02/04/28 18:21

>>233
>使わない、と言うかぁー、使えない。

return そのものは使えるよ。

void func(void){
if(....){
........
return;
}else{
........
........
}
}

とか。
途中で処理を打ち切るのに使ってる。

879 :デフォルトの名無しさん:02/04/28 18:37

>>390
> C言語での個人情報ファイルの作り方を教えてください。
>(ソート、検索が可能でレコードの追加、削除、訂正、新規などの操作ができるもの)
K&R の 5 章と 6 章に殆どそのものが載ってる。

880 :デフォルトの名無しさん:02/04/28 19:44
c++で1234と表示するプログラムなんですが、
kazu.cpp: In function `int main (...)':
kazu.cpp:21: no matching function for call to `kazu::setkazu (const
char[5])'
kazu.cpp:7: candidates are: void kazu::setkazu (const int *)
というエラーがでてうまくいきません。intとcharに関連したエラーだという
ことはわかるのですが、始めたばかりでどう直せばよいのかよくわかりません。
よろしく頼みます
//ヘッダファイル"kazu.h"
class kazu
{
int a [20];
public :
virtual void setkazu (const int *p_a);
virtual void putkazu();
};
//"kazu.h"END

//mainファイル"kazu.cpp"
#include<stdio.h>
#include<string.h>
#include<iostream.h>
#include"kazu.h"

void kazu::setkazu(const int *p_a)
{
for(int i=0;p_a[i]!='\0';i++){
a[i]=p_a[i];
}
}
void kazu::putkazu()
{
cout<<a\n;
}
void main()
{
kazu ka;

ka.setkazu("1234");
ka.putkazu();
}




881 :デフォルトの名無しさん:02/04/28 19:48
C言語で、+・−の演算子を使わずに、加算・減算ができるプログラムを
作りたいのですが・・・。教えていただけますか?インクリメント・デクリメントの
使用はOKらしいです。

882 :デフォルトの名無しさん:02/04/28 19:56
>>880
setkazu に数字の配列を渡してるつもりなんだろうけど
"1234"は文字列(charの配列)だぞ。

883 :882:02/04/28 19:59
の割には
a[i]!='\0'
って書いてあったりするんだね。
わかってるのか、わかってないのか・・・

884 :デフォルトの名無しさん:02/04/28 19:59
>>881
+=や-=はOKなのか?

885 :デフォルトの名無しさん:02/04/28 20:01
>>883
intとcharの違いがわかってないと読んだ。

886 :デフォルトの名無しさん:02/04/28 20:02
>>881
元の上位=A
元の下位=B
後の上位=C
後の下位=D
として
C=A and B
D=A xor B
とすれば加算になる。
これを桁数分だけ繰り返す。

887 :880:02/04/28 20:03
>>882
なるほど・・・では数字の配列として渡すにはどうすればいいですか?

888 :886:02/04/28 20:03
1ビットずつね

889 :デフォルトの名無しさん:02/04/28 20:06
頭悪い回例
int add( int left, int right )
{
for( int i=0; i<right; i++ )
left ++;
return left;
}
ところで、型がdoubleだったら面倒だよな。

>>880
int nums[]={1,2,3,4,5,0};
ka.setkazu(nums);
とか


890 :882:02/04/28 20:07
>>887
というか、このクラスのコンセプトは?
もともと数を文字列で持つつもりで作ったんじゃないの?

891 :デフォルトの名無しさん:02/04/28 20:25
>>881
こんなんどう?

int add( int i, int j)
{
_asm
{
mov eax, i
add eax, j
mov i, eax
}
return i;
}

892 :デフォルトの名無しさん:02/04/28 20:28
>881
いいにくいんだが、別スレでがいしゅつ・・・。
ttp://pc.2ch.net/test/read.cgi/tech/1019372139/162-


893 :デフォルトの名無しさん:02/04/28 20:35
>>892
・・・鬱。
同じ授業か何かか?

894 :892:02/04/28 20:52
漏れも昔、他人のレポート丸写したから、べつにいいんだけどね。
たしかに授業でやるにはちと難かしいかも。

895 :881:02/04/28 21:33
>892様
既出でしたか。すいませんでした。リンク先を参考にしてみます。

896 :デフォルトの名無しさん:02/04/29 12:31
C言語の質問なんですが、int型の配列に、キーボードからの入力を格納していくにはどうすればいいですか?

897 :デフォルトの名無しさん:02/04/29 12:52
>>896
getchar()で一文字ずつ取得するってのはどぉ?

898 :デフォルトの名無しさん:02/04/29 12:54
>>896

char buf[MAX];
int k=0,n[N] ;
while(fgets(buf,MAX,stdin) && k<N){
/*ここでbufの内容が(scanfに)適正かチェック*/;
sscanf(buf,"%d",n+(k++));}

みたいな

899 :太田家:02/04/29 13:53
a.rea1+jimag
b.real+b.imag に対し、
a+b, a-b, a*b, a/b , eのa乗, aの絶対値
を求めるプログラムを教えて!ヒントキボンヌ

900 :デフォルトの名無しさん:02/04/29 14:05
>>899
君は『人に何かを伝える』とはどういうことか、考えた事はありますか?

901 :デフォルトの名無しさん:02/04/29 14:09
>を求めるプログラムを教えて!ヒントキボンヌ

無理に2ch用語使わなくてもいいんだよ?

902 :デフォルトの名無しさん:02/04/29 14:12
やべっ漏れマジでe^a忘れた。
だれかe^aだけでいいから教えてくれよ。

903 :デフォルトの名無しさん:02/04/29 14:17
>>902
a = x + iy
e^a = e^x * e^iy = e^x * ( cos(y) + i * sin(y) )

904 :900:02/04/29 14:19
良く見ると >>899 は…複素数か?
C99 で _Complex 型を使うってのはどうだ?つーか、言語何よ?

905 :デフォルトの名無しさん:02/04/29 14:24
>>903
サンクス。
指数の加算は分離できるんだったね。

906 :デフォルトの名無しさん:02/05/01 16:07
実数を一つ入力して(%lf)、全体の桁数を10桁として、それぞれ小数以下を
3桁、2桁、1桁で表示するプログラムを作りなさい。(%10.3f、***、***) ***
は各自決定せよ。
という問題があるのですが誰かわかりませんか?



907 :デフォルトの名無しさん:02/05/01 16:07
>>906
VC++です

908 :デフォルトの名無しさん:02/05/01 16:09
>>906
printfで%10.3fだと13桁にならない?
%*.*fを使うとよいかも。

909 :デフォルトの名無しさん:02/05/01 16:10
>>906
私はわかりますが、決定するのはあなたです。

910 :デフォルトの名無しさん:02/05/01 16:27
>>909
てつだってねー

911 :デフォルトの名無しさん:02/05/01 16:29
問題文見て答えが推測できなきゃダメ。

912 :デフォルトの名無しさん:02/05/01 16:31
>>911
だって〜まだ初めて一週間もたってないんですよ
たのみますよ〜

913 :デフォルトの名無しさん:02/05/01 16:33
#include <stdio.h>
void main(void)
{
double a;
scanf("%d",&a);
printf("%10.3f%10.2f%10.1f\n");
}
のどこが悪いかわかりません

914 :デフォルトの名無しさん:02/05/01 16:34
始める前でもある程度予想つきそう。

915 :デフォルトの名無しさん:02/05/01 16:34
>>908には手伝ってもらわないほうがいいでしょう。

916 :デフォルトの名無しさん:02/05/01 16:36
>>914
つかないっすよ〜
プログラムなんて初めてなんだから

917 :デフォルトの名無しさん:02/05/01 16:45
>>916
参考書買え。

918 :908:02/05/01 18:03
>>915
(^_^;)

>>916

#include <stdio.h>

int main()
{
double d;
int keta;

scanf("%lf",&d);
for(keta=3;keta>0;keta--)
printf("%10.*f\n",keta,d);
return 0;
}


919 :デフォルトの名無しさん:02/05/01 18:08
次スレの女の子の名前は?

920 :デフォルトの名無しさん:02/05/01 18:15
>>918
理解しにくい、プログラムの見本だな。出力結果も3行になるし、やっぱ
こいつには手伝って欲しくないよ。

921 :デフォルトの名無しさん:02/05/01 18:16
>>918
お〜すごいです〜!!!
欲を言うとFor関数習ってないので使わないでできるでしょうか?

922 :デフォルトの名無しさん:02/05/01 18:17
”のえみ”でどうよ?

923 :918:02/05/01 18:18
>>920
なんで三行になってはいけないのよ・・・・

>>921
#include <stdio.h>

int main()
{
double d;

scanf("%lf",&d);
printf("%10.3f %10.2f %10.1f\n",d,d,d);
return 0;
}

forは関数じゃない。

924 :デフォルトの名無しさん:02/05/01 18:20
>>923
mathematicaと混同したw
まじでありがとうございます!!!!!!!!!!!!!!!!!!!!!!!
神!!
(・∀・)/I
少ないですがこれで

925 :デフォルトの名無しさん:02/05/01 18:23
10.3fだと9桁しか出ないという罠

926 :デフォルトの名無しさん:02/05/01 18:23
>>925
小数点は桁に含めないの?

927 :デフォルトの名無しさん:02/05/01 18:43
>>923
元が一行だから。

928 :デフォルトの名無しさん:02/05/02 01:00
>>920
この程度のプログラムで、理解しにくいってどのへん??
もしかしてネタなのか・・・

929 :デフォルトの名無しさん:02/05/02 01:20
>>928 相対的な話だよ。

930 :928:02/05/02 01:28
>>929
なるほどね。
で、俺的にはfor()のあとには{}付けてほしいってくらいだけど、
他になんか気になる点ある?

931 :デフォルトの名無しさん:02/05/02 01:32
>>929
もしかしてエラーチェックしていないってこと?
そんなの省略したに決まっているじゃない。

932 :930:02/05/02 01:58
>>931
エラーチェックしてないことが、理解しにくいってことにはならないだろ。
理解しにくいってのは、記述やアルゴリズムの問題。

933 :929:02/05/02 02:54
漏れは>>920じゃ無いから、べつに理解しにくいとは思わないけど。

934 :930:02/05/02 03:01
む・・・
すると>>920はやはりネタなのか・・・。ムカツク野郎だな。

935 :デフォルトの名無しさん:02/05/02 16:59
スマソ、
VBマガジン11月号の記事みてちとやってみたらクイックソートがうまくいかなんだが
ちと知恵貸してくれんかのう・・・

まずクラスモジュール定義して・・・

'qsort class

Option Explicit

Public Event compare(ByVal x As Long, ByVal y As Long, ByRef flag As Long)

Public Event swap(ByVal x As Long, ByVal y As Long)

Public Sub sort(ByVal startPos As Long, ByVal endPos As Long)

Dim i As Long
Dim j As Long
Dim xPos As Long
Dim compareflag As Long

i = startPos
j = endPos
xPos = (startPos + endPos) \ 2

Do
RaiseEvent compare(i, xPos, compareflag)
While (compareflag < 0)
i = i + 1
RaiseEvent compare(i, xPos, compareflag)
Wend
RaiseEvent compare(j, xPos, compareflag)
While (compareflag > 0)
j = j - 1
RaiseEvent compare(j, xPos, compareflag)
Wend

If (i <= j) Then
RaiseEvent swap(i, j)
i = i + 1
j = j - 1
End If
Loop Until (i > j)

If (startPos < j) Then sort startPos, j
If (endPos > i) Then sort i, endPos
End Sub


936 :デフォルトの名無しさん:02/05/02 17:00
次に

Option Explicit

Private WithEvents objQSort As qsort

Dim data(4) As Long

Private Sub Command1_Click()

data(0) = 10
data(1) = 3
data(2) = 30
data(3) = 6
data(4) = 2

Set objQSort = New qsort
objQSort.sort 0, 4

Dim i As Long
For i = 0 To 4
Debug.Print data(i)
Next

End Sub

Private Sub objQSort_compare(ByVal x As Long, ByVal y As Long, ByRef flag As Long)

flag = (data(x) - data(y))

End Sub

Private Sub objQSort_swap(ByVal x As Long, ByVal y As Long)

Dim temp As Long

temp = data(x)
data(x) = data(y)
data(y) = temp

End Sub

とやってるのだが、これだと

2
3
10
6
30

の並びなってうまくいかんのだが、どこがおかしいんだか教えてくれんかキボーン


937 :デフォルトの名無しさん:02/05/02 20:14
VBか・・・配列は?

938 :920:02/05/02 21:20
>>908=>>918=>>923, >>928=>>934
バカ。単純に書ける所をわざわざ for() なんか使って書くからバカだって言っ
てんだよ。質問の本質と違うところで変な変更するなよ。しかも、動きまで違う
し。バグ作りこむ前に氏ね。

939 :!=920:02/05/03 00:18
オレなら、>>923 のprintfを3つに分割するか、関数化して3回呼ぶかな。

940 :!=923:02/05/03 01:04
オレは、>>923のように書くなぁ。

941 :デフォルトの名無しさん:02/05/03 19:38
>>938
ところで、改行してはいけないってどこに書いてあるんだ?

942 :デフォルトの名無しさん:02/05/03 19:42
>>941
バカか、お前。
> 質問の本質と違うところで変な変更するなよ。しかも、動きまで違うし。
> バグ作りこむ前に氏ね。
おまえもなぁ〜〜〜。

943 :デフォルトの名無しさん:02/05/04 00:26
宿題はSCHEMEもやってくれるんですか?


944 :デフォルトの名無しさん:02/05/04 00:38
>>943
schemeでもかまわないが、まるまるやってはやらんぞ。
どこまで自分でやって、どこでつまずいてるか教えてね。

945 :デフォルトの名無しさん:02/05/04 02:07
久しぶりに来てみたが・・・怜ちゃんはいるのか?

946 :デフォルトの名無しさん:02/05/04 02:09
スレを読めば分かることだと思いますが?

947 :デフォルトの名無しさん:02/05/04 02:18
>946
久しぶりに名前を出したかっただけだ、ageてすまない。

948 :デフォルトの名無しさん:02/05/04 19:24
ぐはっ


949 :デフォルトの名無しさん:02/05/05 00:05
シェルの作成についての課題なのですが、

MyshellはCshellと違って、Cで実行できていたコマンドや機能のうち
働かないものがある。これらを調べ、どのような機能が実行できないか、
なぜできないか、どのような機能を追加すればいいか?

例えば次のが実行できない

エイリアス、ヒストリー、ワイルドカード、ファイルへのリダイレクト、
shellプログラミング、ディレクトリー操作(popd、pushdなど)

これらから4つほど(エイリアス、ヒストリーは必須)をmyshellに追加せよ。

という課題です。助けてください、お願いします。できればソースを、、。

950 :デフォルトの名無しさん:02/05/05 00:11
>>949
Myshellは一般的なものじゃないので、それがどんなものか
教えてくれないとわかんないよーん。

951 :949:02/05/05 01:06
>>950様、これです#include<stdio.h>
#define MAXARGS 10 /* 許されるコマンドの引数の最大の数 */
#define LINELENGTH 80 /* コマンドラインの最大文字数 */
#define CONTINUE 1
#define EXITCOM 0

main(int argc,char* argv[])
{
char linebuf[LINELENGTH];
int hist;

for(hist=1; ;hist++){
printf("myshell[%d] ",hist);

    gets(linebuf);
  
if(exec_one_command(linebuf)==EXITCOM) break;
}
}
char *skipspace(char* s)
{
while(*s==' ') s++;

return s;
}



952 :949:02/05/05 01:07
int getcl(char* line,char* argmv[])
{
int argnum=0;

do{
line=skipspace(line);
if(*line=='\0'){
argmv[argnum]=NULL;
return argnum;
}
argmv[argnum++]=line;
while(*line!='\0' && *line!=' ') line++;
if(*line=='\0'){
argmv[argnum]=NULL; return argnum;
}
*line='\0'; line++;
}while(1);
}

int exec_one_command(char linebuf[])
{
int argnum, status;
char *argmv[MAXARGS];

argnum=getcl(linebuf,argmv);
if(argnum==0) return CONTINUE;

if(strcmp(argmv[0],"exit")==0){
return EXITCOM;
}
if(fork()==0){
execvp(argmv[0],argmv);
printf("Error at execvp\n");
exit();
}
wait(&status);
return CONTINUE;
}



953 :950:02/05/05 01:32
>>951
おぉぉ。おもしろいね。コレ。
で、まず
エイリアス:
1.exec_one_command()で、alias っていうコマンドが来たら、第2引数(エイリアス名)と第3引数以降(コマンド)を何か(alias_bufと名づけよう)に保存。
2.exec_one_command()で、alias_bufに登録してあるエイリアス名を探して、存在すれば、保存してあるコマンドを代わりに実行する。

ヒストリ:
1.exec_one_command()で、コマンドを実行するたび、何か(history_buf[hist]としよう)に保存していく。
2.exec_one_command()で、!数字 っていうコマンドが来たら、代わりにhistory_buf[数字]に保存しといたコマンドを実行する。

でできるよ。簡単簡単。
あと簡単そうなのは、shellプログラミング(制御構造が無い、batファイルみたいな単純なの)と、
ディレクトリ操作かなぁ。ワイルドカードも、そんなに難しくないかも。リダイレクトは、ちと難しい。

954 :949:02/05/05 02:34
>>950
丁寧な説明、ありがとうございます!
おもしろい、、のでしょうか?(汗
僕もそう思える日がくればいいなぁ、、。

955 :デフォルトの名無しさん:02/05/05 15:08
(冗) <フムフムソレカラ?

956 :デフォルトの名無しさん:02/05/06 00:47
ageてみるか

957 :デフォルトの名無しさん:02/05/06 00:54
そろそろ新スレを誰か。

958 :玉三郎:02/05/06 00:56
ワシの出番か・・・

959 :デフォルトの名無しさん:02/05/06 01:03
>>958
玉三郎が宿題を教えてくれても、あまり嬉しくないぞ

960 :玉三郎:02/05/06 01:06
こら誰が金玉三郎じゃヽ(`Д´#)ノ

961 :デフォルトの名無しさん:02/05/06 01:10
玉三郎は、金玉三郎と… φ(.. )

962 :デフォルトの名無しさん:02/05/06 01:12
そういや、えれながいつのまにか消えたな・・・

963 :デフォルトの名無しさん:02/05/06 01:29
最多真鯛の宿題か…

964 :デフォルトの名無しさん:02/05/06 02:23
えれなや怜って演じてる奴何回くらい変わってんだろ?

965 :デフォルトの名無しさん:02/05/06 05:14
http://pc.2ch.net/test/read.cgi/tech/994129650/958-
クロスリンク

966 :デフォルトの名無しさん:02/05/06 09:26
>>949はマルチポスト厨房
無視が一番

967 :デフォルトの名無しさん:02/05/06 09:43
>>965
こっちも
http://pc.2ch.net/test/read.cgi/tech/1019743589/77-

968 :まとめ:02/05/06 09:58
http://pc.2ch.net/test/read.cgi/tech/994129650/958-
http://pc.2ch.net/test/read.cgi/tech/1019743589/77-
http://pc.2ch.net/test/read.cgi/tech/1020208001/684-
http://pc.2ch.net/test/read.cgi/tech/1011722640/949-

969 :えれな:02/05/06 20:05
>962
呼んだ?

970 :デフォルト:02/05/07 21:41
#include<stdio.h>

void main(void)

{
int a;

a = 10;
}

上のプログラムを実行すると「aの値は10です」と
出力するようにするにはどうしたら良いのでしょうか?
(%dを使って)

971 :デフォルトの名無しさん:02/05/07 22:45
>>970

%dとまでいってて、何がわからないの?
もしかして全角でってこと?

972 :デフォルトの名無しさん:02/05/07 22:50
その前にニホンゴができてないな。
母国語なんだろうけどいいたいことを正確に伝えられない
言語障害者はプログラミング言語をつかっても駄目なこと多いよ。


973 :初心者:02/05/07 23:04
簡単なアルゴリズムを教えてください。
問題は
「キーボードから文字列を読み込んで,
読み込んだ文字列を逆にした文字列を表示する」解答 I94==>49I
という問題なのですが。。配列でやったのですが。。。

974 :デフォルトの名無しさん:02/05/07 23:10
>>973
スタック使え...。多分これだけでは、ちんぷんかんぷんだろうから、
スタックを配列で作れ。とまでは言っておこう。

975 :デフォルトの名無しさん:02/05/07 23:13
配列でやったならあとは一文字ずつ...

976 :デフォルト:02/05/07 23:14
>>971
自分、超初心者なんで%dも良く分からないです。
全角でとは、どういう事ですか?


977 :デフォルトの名無しさん :02/05/07 23:23
文字を入力してカウントするプログラムで

main()
{
int i=0,j;
while(j=getchar()){
if(j==EOF)break;
i++;
}
printf("文字数は%dです。\n",i);
}

と記述したのですが、
どうしても文字数+1となります。
なぜでしょうか?

978 :初心者:02/05/07 23:23
973ですが、スタックってキューとかって
実際今まで使ったことがないのでわかりません。
基本情報を勉強したときに障った程度です。

配列でいこうと思っているのですが。。。

979 :素人。:02/05/07 23:25
printf("aの値は10です\n%d%c%c",a,0x08,0x08);

あってる?

980 :素人。:02/05/07 23:27
getchar()
で開業コードもカウントされるからですかな。
と書いてみるテスト。

981 :977:02/05/07 23:31
>>980

どうやって回避すればいいのでしょうか?>改行コード
printf("",i-1);
とすると何も入力しないとき-1が帰ってくるので困ってます。

982 :デフォルトの名無しさん:02/05/07 23:33
>>973
#define MAX_LINE 2000
int ri;
char line[MAX_LINE];
while(1){
fgets(line,MAX_LINE,stdin);
for(ri = strlen(line)-2;ri>=0;i--)
putchar(line[ri]);
putchar('\n');
}
//toka

983 :素人。:02/05/07 23:33
strlen
とか使えばいいのではないかしら。

984 :977:02/05/07 23:36
>>983
すみません。getcharつかうのが前提なんです。(・∀・;)

985 :デフォルトの名無しさん:02/05/07 23:39
>>984
なら、改行コード('\n')のときは i++ しないってので、どぉ?

986 :デフォルトの名無しさん:02/05/07 23:39
while(j=getchar()){
if(j==EOF)break;
else if(j=='\n')continuel
i++;
}
//違ったらごめん

987 :デフォルトの名無しさん:02/05/07 23:40
l → ;

988 :デフォルトの名無しさん:02/05/07 23:43
>>982
エラー: 'i' が未定義です。
警告: MAX_LINE より MAX_CHARS のほうがより良いと思います。
警告: プログラムが終了できない可能性があります。EOF を入力したら
   ちゃんと終了するように作りましょう。

989 :デフォルトの名無しさん:02/05/07 23:47
#define MAX_LINE 2000
int ri; char line[MAX_LINE];
while(fgets(line,MAX_LINE,stdin) > 0){
for(ri = strlen(line)-2;ri>=0;ri--)
putchar(line[ri]);
putchar('\n');
}
//tekito desuga dozo

990 :977:02/05/07 23:48
>>986
それでいけました。ありがとです。ヽ( ´ー`)ノ
continueてのは初めて聞きましたよ。

991 :デフォルトの名無しさん:02/05/07 23:51
>>973
#include <stdio.h>

rev_put(ch)
{
 if (ch != '\n') {
  rev_put(getchar());
  putchar(ch);
 }
}

main()
{
 rev_put(getchar());
}


992 :素人。:02/05/07 23:52
mov cx,200
hoge:
mov ah,07h
int 21h
push
loop hoge
mov cx,200
hogehoge:
pop dl
mov ah,02h
int 21h
loop hogehoge

あってる?

993 :デフォルトの名無しさん:02/05/07 23:52
>push

994 :素人。:02/05/07 23:53
push al
ね。

995 :デフォルトの名無しさん:02/05/07 23:54
なにがやりたいのかわからん

996 :デフォルトの名無しさん:02/05/07 23:55
>>991
そんなのアリか?

997 :そろそろ:02/05/07 23:55
1000!!!!

998 :そろそろ:02/05/07 23:56
1000!!!!



999 :そろそろ:02/05/07 23:56
ほいしょ。
せん。


1000 :デフォルトの名無しさん:02/05/07 23:57
はいはい

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

280 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)