ほう、宿題とはな。

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
妻の美砂子が持病で急死した為これから君等の面倒は私が見ることになった。
名は恭祐だ。わからないことは全てここで聞いてくれ。


前スレはこれだ。
 あらあら、宿題なのね
http://pc.2ch.net/test/read.cgi/tech/1020785918/
 キーワードがわかっているならググれ。
http://www.google.co.jp/
急死したのかよ
>>1
女の身内と交代してください。
若い方がいいです。
もしかして本当なのか?ご愁傷様。
取り敢えず、他のスレでは頭から相手にしてもらえないような
初心者を育むべく頑張りましょう。
「『他のスレでは頭から相手にしてもらえないような』初心者」を育む???
勘弁してくれ。。。
男か。まぁ、男にも穴はあるしいいな。
早くケツ出せ
実は鮫島葵級のロリプニオヤジ
8恭祐さん教えてください。 :02/06/21 11:57
プログラム技術@2ch掲示板でここを紹介されて来ました。

#include <stdio.h>

int main()
{
char Myoji [80] = "Suzuki";
char Namae [80] = "Muneo";
char Shimei [80];

long i,i1,n,m;
m = strlen(Myoji);
n = strlen(Namae);

for(i=0; i<m; Shimei[i] = Myoji[i++]);
Shimei [i++] = ' ';


for(i1=0; i1<n; Shimei[i1+i]=Namae[i1++]);
Shimei[i1+i] = 0;

printf( "%s\n", Shimei );

return 0;
}
このプログラムから、”Suzuki Muneo”を姓と名の二つに分けるプログラムを作りたいのですが、
どうやればいいのですか?教えてください。
9デフォルトの名無しさん:02/06/21 12:01
>>8
sscanf(Shimei, "%s %s", Myoji, name);
10恭祐さん教えてください。:02/06/21 12:05
>8
レスありがとうございます♪どこにいれればいいですか??
>>10
学校やめた方が良いと思われ。
>>11
いろんな意味でね
>8
最初から分かれているから繋げなければよい。
誰だよ2chなんて勧めやがったやつは>>8
8はここもム板だってことに気づいてないのか?
>>8
どこに入れたらいいかわからないということは、現在の
プログラムを理解していないということだろう。
そんな状態で「姓と名の分け方(文字列の分割)」を聞いたところで仕方ない。
君が今学ばなくてはいけないのはCの基本文法からだ。
それができないならプログラマに向いてないからあきらめたほうがいい。
(11-12が言ってるのはそういうこと。)
17オナニー伯爵 ◆qmiH3ekA :02/06/21 14:41
美人の娘とかにしろよ。親父でてくるならかあちゃん復活させろ。
>>16
一番最初(ここにリダイレクトされてくる前)の質問見れば
いかに>>8が何もわかってないかがわかるよ

# ちなみに12は問題があまりに糞なのでそんな学校やめちまえ、と
19デフォルトの名無しさん:02/06/21 16:54
#include <stdio.h>
#include <conio.h>
void main(){       

int su1,su2,kekka1;
float kekka2;
char enzansi;

printf("2つの整数と演算子を入力してください\n");
printf("1つ目の値を入力 =");
scanf("%d\n",&su1);
printf("2つ目の値を入力 =");
scanf("%d\n",&su2);
printf("演算子を入力   =");
scanf("%c\n",&enzansi);


if(enzansi == '+'){
kekka1=su1+su2;
printf("%d+%d=%d",su1,su2,kekka1);
}
else if(enzansi == '-'){
kekka1=su1-su2;
printf("%d-%d=%d",su1,su2,kekka1);
}
else if(enzansi == '*'){
kekka1=su1*su2;
printf("%d*%d=%d",su1,su2,kekka1);
}
else if(enzansi == '/'){
if(su2 == 0){
printf("kekka1=0");
}
else{
kekka2=su1/su2;
printf("%d/%d=4.1%f",su1,su2,kekka2);
}
}
else if(enzansi == '%'){
if(su2 == 0){
printf("計算できません");
}
else{
kekka1=su1%su2;
printf("%d%%d=%d",su1,su2,kekka1);

}
}

else{
printf("演算子がおかしいです");

getch();
}
}
2019:02/06/21 16:56
エラーは出ませんが、警告が出ます。
あと、実行して、演算子を入力しても、「演算子がおかしいです」
ってでます、このプログラムのどこがおかしいんでしょうか?
>>20
あ・な・た
>>20
君の人間性がおかいしい。
>>20
そこまで出来てて、そんなことが分からないってことは、
どうせそれも人に教えてもらったんだろ。
友達に、飯でもおごって教えてもらえや。
なんで0で割ると0なんだよ。
2519:02/06/21 17:02
>>23
ここまではマジで自分でやったよ
>>25
まあ、それを信じて一ついいこと教えてあげよう。
scanf("%c\n",&enzansi);
の下に...
printf("DEBUG: su1 = %d, su2 = %d, enzansi = %c (%x)\n",
su1, su2, enzansi, enzansi);
を追加して、コンパイル/実行してみな。たぶん「なんで!?」って思う
から。
>>19
scanf()を使ってるところを
fgets()とsscanf()の組み合わせに置き換えてみな。

char s[100];
fgets(s, 100, stdin);
sscanf(s,"%d",&su1);
確かに自力でやってると思う
conio.h と getch(); はよく知らんが、
curses.h の getch(); と同じだろうな。

で、警告ってmainがint型じゃないってだけじゃないの?

>>26やってみれば分かるけど、scanfの穴が見事に出てるね
10\n20\n+\nと入力したら、(\nは改行)
最初のscanfで10が読み込まれる
次のscanfで\nが読み飛ばされ(%dだと頭の連続する空白文字は読み飛ばされる)、20が読み込まれる
次のscanfで\nが読み込まれる

scanfは、フォーマット(%dとか)で変換不可能になるまでしか読み込まない。
変換不可能になったら、バッファに溜められる(読み捨てたりしない)。
10\n20+\nと入力したら上手く行く。想定した動作じゃないだろうけど。
ちなみに最初に+と入力すると、0+0=0ってなるかもしれない。
いきなり変換不可能な文字が入力されると、scanfが行われない。
よって、最初の2つのscanfによるsu1とsu2の設定が行われない。
→初期値のままになる。→初期値未設定。これで警告が出るかもね。

標準入力ストリームのことがわからないと混乱するかも。
しかしそれ以上に俺の説明が悪い罠。
2919:02/06/21 19:15
>>28
警告は、
「warning C4244: '=' : 'int' から 'float' に変換しました。データが失われているかもしれません。」
こんなんがでます。
一応実行して四則演算できるようになりましたが、演算子を入力してから、何か入力してからエンターを押さないと
結果が表示されません。
scanfを使わないっていうのが一番いい方法なんだが。
(おそらく)望んでいる動作はあまりおすすめできない方法ならないこともないが・・・。

警告はそのまま「 'int' から 'float' に変換しました。」
明示的にキャストしろと言うことだ。
3119:02/06/21 19:23
>>30
>明示的にキャスト
ってどういうことですか?馬鹿のわかるように教えてください。
すいません。
>>31
(゚∀゚) お前がすっとろいことしてっから、
コンパイラがかわりにキャストしてくれたんだよ。

これからは自分でしっかりキャストしろってこと。

>>31
http://pc.2ch.net/test/read.cgi/tech/1021620974/561
全く同じ質問がある。答えも出てるので見てきなさい。
マルチだったのカー・・・
>>31
つまんなすぎ、3点。
3726:02/06/21 21:17
ダメだよ、答え教えちゃ。詩文でやんないと身につかないよ。まあ、scanf() は
落とし穴いっぱいだから、一応ヒントの意味で >>26 書いてんだからさ。

> →初期値未設定。これで警告が出るかもね。
でるわけねーだろ。それやるなら実行時の検査がいるぞ。Cインタープリタとか、
教育用の特殊な処理系でないとそんな事やってないよ。
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
37はあほ.c:
警告 W8013 37はあほ.c 7: 'i' は、おそらく値が代入される前に使われている(関数 main )
Turbo Incremental Link 5.60 Copyright (c) 1997-2002 Borland
37じゃないが、>>38が何を言いたいのかわからない。
>>37って間違ってないと思うんだけど。

あえていうなら誤字はあるが。
>>38はアドレス渡しが理解できないに100カノッサ。
>>37
ごめんよ(´・ω・`)。でもscanfの動作はかなり難しいから、
初心者に自力で理解できるはずもないと思って・・・

>でるわけねーだろ
さすがにそこまで賢くないね
アドレス渡ししたら変更があったと考えていいのか
scanfの動作から、特別に警告出すコンパイラがあってもおかしくないかなと思った。
# printfは特別な警告が出るし

コンパイラいってくれれば(俺の知ってるのなら)こんな間違いはしねーんだけどさ

>>31
ぐぐることくらい覚えろ。「C言語 明示的 キャスト」
42デフォルトの名無しさん:02/06/21 23:25
ヾ(≧▽≦)oきゃはは
バッカじゃねーの(ププ
( ´3`)ムチュー >>42
4426:02/06/22 00:29
>>41
確かに、scanf() の挙動って理解しにくいし、はっきり言って実務で使えない
から覚えても無駄なんだよね。だから、俺は >>19 に scanf() の動きを覚えて
もらうというより、とにかく自分で >>26 に書いてあることをやって、何が起き
てんのかを知って欲しかったんだよね。(まあ、デバッガ使えりゃそれでもいいん
だけどさ。)

> scanfの動作から、特別に警告出すコンパイラがあってもおかしくないかなと
> 思った。
と言うか、警告出すべきかどうかが実行時に決まるから、コンパイラがエラーを
出すのことはできないよ。「printfは特別な警告が出るし」と言うのは、フォー
マット文字と変数の型が違う時だよね。これは、コンパイル時に決まるし
scanf() でも、フォーマット文字と変数の型については警告を出すこともできる
と思うよ。(実現している処理系があるかどうかは知らないが...。scanf()
なんて普通使わないからね。) でも、char s[xxx]; printf("%s", s); で、s[]
の中身がぐちゃぐちゃかもしれないから警告出すなんて言われたら、ウザクて
やってられないと思うよ。

>>39
> あえていうなら誤字はあるが。
詩文でって何だよ !? > 俺
ちょっと恥ずかしいな。でも見てる奴の 99% は、前後の文脈から「自分で」と
解釈してるよね...。
>>44
gccにある-Wuninitializedオプション、
あれで、scanfにアドレス渡ししても値を設定しただろうと判断しなくてもいいかな、と。
そーゆーのはさすがにないですかね。

個人的にはscanfに警告出して欲しいところ。
そうすれば学校でscanfなんて教えないだろう。

>詩文
かな入力派ですね
>>45
だーかーら、アドレス渡しした変数に scanf() が値をセットするかどうかは、
実行時の入力によって決まるんだからコンパイル時に判断するのは無理。
警告を出すというのもあるけど、毎回警告がでるからウザイだけ。
(あくまでも、>>28 の話だよ。scanf("%d", &a, &b); なんて時にエラーに
するとか言うなら、可能だと言うのは >>44 に書いた通り。)

> 個人的にはscanfに警告出して欲しいところ。
> そうすれば学校でscanfなんて教えないだろう。
学校で教えるなら「scanf() は使うな。fgets() + sscanf() でやれ。」と
教えて欲しい。欲を言えば、使うべきでない関数を取り除いたヘッダーファイルと
ライブラリ (+対応したマニュアル) で、やって欲しい。

> かな入力派ですね
やっぱりばれましたね。まあ、'J' と 'S' はあんまり打ち間違えないからね。
>>46
分かってます。
>>28は、コンパイラを書かなかった皮肉と、初期値設定はした方がいい
ってのを遠まわしにいったつもりなんです(´・ω・`)

>警告を出すというのもあるけど、毎回警告がでるからウザイだけ
だからオプショナルだと・・・(´・ω・`)

(;´д⊂)モレノマケデス

学校教育に不満があるのは、このスレの住人には当然ですかね
26って粘着馬鹿?
馬鹿は28(モレ)
50デフォルトの名無しさん:02/06/22 07:40
全く危険さのレベルが違うのでこれを直接引合に出しても説得力
がなくて申し訳ないのだけれども、FreeBSD 付属の ld は、tempnam
を使うだけで警告をだすのよね。しかも、FreeBSD の tempnam には
問題が無いにもかかわらず。移植性を考慮してのことらしい。
んでもって、 scanf なんかもこの仲間にいれたらってことかしら。
51デフォルトの名無しさん:02/06/22 07:44
【緊急事態】 大変です! 私の肛門から屁が止まりませぬ!!! 【緊急事態】

牛乳飲み過ぎますた
52デフォルトの名無しさん:02/06/22 07:57
>>44
「scanf 系関数」が使えないんじゃなくて、
「scanf 系関数を使いこなせない人間」が使えないのな。

そこの区別はしっかり頼むよ。

初心者には勧められないのは同意。
scanfとfscanfは使えないと思うけど。
printfさえあれば他はいらん。
学校では見事に入力はscanfやgetsだったな・・・
>>51
多分屁の元の実を出すまで止まらんぞ。
>>32
厳密に言うと暗黙の型変換とキャストは違う
共通してるのは「型変換」という点
それにキャストしないと警告が出るからキャストするというのは
本末転倒なような
本来警告が出るべきケースまでキャストで警告が消えてしまって
実行時まで気づかない罠とかありそう
59デフォルトの名無しさん:02/06/22 11:53
自分で関数の定義しろとか書いてあるがなんですかこれは?
>>59
どこに書いてあるんだ?
6126:02/06/22 12:20
>>47
> >>28は、コンパイラを書かなかった皮肉と、初期値設定はした方がいい
> ってのを遠まわしにいったつもりなんです(´・ω・`)
コンパイラ (≒処理系) を書かなかった皮肉と言うのはちょっと意味不明なんだ
けど (一応 ANSI 準拠で進めて OK だよね。あと、>>29 のエラーメッセージから
多分 VC++ だろうと想定してるし。)
初期値設定をした方がいいと言うのには同意。

>>50
そうそう、そんな感じ。もう作られたプログラムは仕方ないけど、
新規の奴には使うなって感じ。

>>52
scanf() って、初心者には勧められないし、初心者じゃない奴は
普通使わないんじゃないの ? 使う機会ってあんまりないような
気がするけど...。まあ、自分しか使わないようなツールとか
ぐらいならありうるけどねぇ。

>>55
まあ、アルゴリズムとか教えてる時に入力とかに凝ってられないとも
思うんだけど、実用プログラムって入力が一番大変で重要だったりするから
そこのところもちょっと配慮して欲しかったりする。

>>58
> それにキャストしないと警告が出るからキャストするというのは
> 本末転倒なような
激しく同意。(コンパイラの) 警告/エラーが消えればプログラムが正しく動くと
思っている奴が結構多いと思う。キャストはダメだよと言うと union で
書いてきた奴がいて唖然としたことがある。
62混じれ洲薫:02/06/22 14:12
i8080AでメモリのXX,YY,ZZ,WW番地の内容を交換する(逆順にする)プログラムを作るにはどうすればいいですか?よろしくお願いします.
下のに付け足すのですが使うのはLXI,MOVだけみたいです.

LDA WW

ここに書き足す

HLTXX: DB 1
YY: DB 2
ZZ: DB 3
WW: DB 4
END
8080なんて知ってるやついるか?
LXIってレジスタに値を代入するニーモニックか?全然わからん。
まあ、主要な命令は Z80 に引継がれてるし、そもそもこの問題自体が
難しいわけじゃないからなんとでもなるけど...

1. 既に i8080 のニーモニックを覚えていない
2. どう見ても田舎の工業高校あたりの宿題にしか見えない
3. こいつはマルチで質問する不届きもんだ (これ見るの三つ目だ)

だから、無視するがよろし。
66雑じれ主勳:02/06/22 15:42
だれも>>62を解けない。
>>65
ここは宿題スレだから 2 は問題ないだろ。
68デフォルトの名無しさん:02/06/22 16:46
もしかしてほんとに>>62解ける人いないかもしれないな
http://www.st.rim.or.jp/~nkomatsu/intel8bit/i8080.html

命令表があるから、だれかといてやれや。
8086ならなんとなく覚えてるが、8080なんてしらん。
>>62
LXI HL, XX
MOV A, (HL)
LXI HL, YY
MOV B, (HL)
LXI HL, ZZ
MOV C, (HL)
LXI HL, WW
MOV D, (HL)
MOV (HL), A
LXI HL, ZZ
MOV (HL), B
LXI HL, YY
MOV (HL), C
LXI HL, XX
MOV (HL), D
あっそうか。
MOV A, (XX)
MOV B, A
MOV A, (YY)
MOV C, A
MOV A, (ZZ)
MOV D, A
MOV A, (WW)
MOV (XX), A
MOV A, B
MOV (WW), A
MOV A, C
MOV (ZZ), A
MOV A, D
MOV (YY), A
でもいいな。
>>72は忘れて下さい。MOVでなくてLDA, STAになってしまう。
8086に慣れきってしまっとる。
>>68
合ってるかな ?
LXI SP,XX+4
POP H
MOV L,A
MOV H,L
MOV A,H
XTHL
MOV L,A
MOV H,L
MOV A,H
PUSH H
HLT
2バイトの交換を2回やるんだから、MOVは4*2回で済むと思われ。
にしても、わざわざLXI使えっていう問題の意図がわかるひとの解答きぼん。
INRとかXCHGとか使えるならわかるんだが…
>>74
それは 0123 を 1032 にしてるような…
問題は 0123 を 3210 にしたいんでないのか?
7775:02/06/22 17:33
あ、ペアレジスタにイミディエート値入れるのはLXIなのか、すんまそん。
78デフォルトの名無しさん:02/06/22 18:01
AVL木の挿入部分を実装するのですが,完全に詰まっています
もとになる2分木の実装は終わったのですが...

1)新しい要素を挿入したとき,木のバランスが崩れているかどうかを
判断する方法が分かりません
2)(1)においてバランスが崩れたと判断したときに,そこから回復する
方法の実装の仕方が分かりません

ヒントだけでも良いので,お願いします


79デフォルトの名無しさん:02/06/22 18:37
>>69>>77
勉強になりました。ありがとうございました
8019:02/06/22 23:26
rewind(stdin);
で全て解決しました。
みなさん、大変ご迷惑をおかけしました
>>78
思いつきで書かせてもらうと、
あるノードにくっついてる木の大きさをノード毎に記録する事で、
バランスが崩れている事がわかる。

バランスが崩れているノードがあれば、
そのノードを少ない方の木に挿入して、木をマージするという動作を繰り返せば
いいのでは?
>>78
ttp://retropc.net/x68000/software/develop/dis/diseririn/DIS313.ZIP
に汎用AVL木ライブラリが入ってるけど参考になるかなぁ…
>>81
AVLはつりあってるかどっちかが一つ大きいかだけじゃなかったっけ。
>>78
ぐぐったらこんなの見つけた
http://www.jaist.ac.jp/~y-sudo/summer/AVL.html
あと、木の高さは再帰を使えば求められるはず。

#AVL木にこだわらないなら赤黒木とかの別の木のを使うと(゚∀゚)イイかも。
>>80
解決しねーよ。
>>85
rewind(stdin); はstdinのバッファを捨てるんじゃなかったっけ
リダイレクトで暴走確定
つーか、シークできないデバイスに対するfseek()はシステム依存。
8878:02/06/23 04:03
>>81
>>82
>>84
レス,有り難うございます
リンク先で勉強してから出直してきます
89デフォルトの名無しさん:02/06/23 07:52
n個の数字でできるすべての順列を表示するにはどうしたらいーの?
こんな時こそ数学の出番だ
>>89
お前「順列」って分かってるか?
n個のからr個取るんだろ?
ああ、r=1〜nまで全部の順列か。
漏れなら再起呼び出しを使うな
92デフォルトの名無しさん:02/06/23 10:31
static int fact(int n){
if(n==1){
return 1;
}else{
return n*fact(n-1)
}
}
93デフォルトの名無しさん:02/06/23 10:32
(n-1)のあと、;忘れた・・
鬱だ。
94デフォルトの名無しさん:02/06/23 10:34
91って頭わるそう(w
>>89
とりあえずこんな感じ...

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

void PermSub(const int a[], int used[], int perm[],
 const size_t n, const size_t level)
{
 if(level < n){
  for(size_t i = 0; i < n; i++){
   if(!used[i]){
    used[i] = 1;
    perm[level] = a[i];
    PermSub(a, used, perm, n, level + 1);
    used[i] = 0;
   }
  }
 } else {
  for(size_t i = 0; i < n; i++){
   printf(" %d", perm[i]);
  }
  printf("\n");
 }
}

void Permutation(const int a[], const size_t n)
{
 int *used = new int[n];
 int *perm = new int[n];
 for(size_t i = 0; i < n; i++){
  used[i] = 0;
 }
 PermSub(a, used, perm, n, 0);
 delete [] perm;
 delete [] used;
}

int main()
{
 int a[] = {1, 2, 3, 4, 5};
 Permutation(a, sizeof(a)/sizeof(a[0]));
 getch();
 return 0;
}

適当に組んだから、C なのか C++ なのかよくわからんようになって
しもうた。
>>94
挑発に乗って答えを書くほど悪くはない
質問しなおしゃ答えてやるのに
97混じれ洲薫:02/06/23 12:06
アセンブラi8080Aで
メモリの1EH,1FH,20H,21H,22H番地の内容を
逆に並べるプログラムをつくりたいのですが,
INR,DCR,INX,DCXを使って下のに書き足す形なのですが,
ヒントもしくは解答を教えて下さい.
解説もしていただけるとうれしいです.
よろしくお願いします.

LXI D,1EH
LXI H,22H
LDAX D
MOV B,M
XCHG
MOV M,B

ここに書き足す

HLT
ORG 1EH
DB 1,3,5,7,9
END
>>96
「書かない」じゃなくて「書けない」だろ ? ププ
頭悪いことを何回も表明しなくていいぞ。
>>97
宿題そのまま書かないで、ちょっとは自分で考えろ。
>>98
確かに私も「俺なら再起でやる」としか書けません
残念ながらシックスセンスはもってないので
早とちりしてCで答えてるやつ等もいるけど
挑発してる暇があったら質問書き直せ
まあ厨の質問なんて誰も教えてくれないだろうけど
>>89
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>

void sp(int n) {
std::vector<int> v(n) ;
int i = 0 ;

for(std::vector<int>::iterator vi=v.begin();vi!=v.end();vi++)
*vi = i ++ ;

do {
std::copy(v.begin(),v.end(),std::ostream_iterator<int>(std::cout, " ")) ;
std::cout << std::endl ;
} while(std::next_permutation(v.begin(),v.end())) ;
}
>>100
粘着ウザイよ。氏ね。
103デフォルトの名無しさん:02/06/23 15:53
必死な奴が一人紛れこんでるな。
しかも煽るの下手だし。

晒しとこう。
104デフォルトの名無しさん:02/06/23 16:04
晒し上げだゴルァ(゚Д゚#)
105デフォルトの名無しさん:02/06/23 16:18
>>96
まあ、落ち着けや。

宿題を他人に教えてもらってそのまま提出したところで
結局本人が得する訳じゃないのは分かっているのだから、
気が向いたなら、挑発に乗って書いてやってもいいのでは?
むしろ相手の役に "立ちたくない" なら書いてやるのが吉。
(ただし、面倒臭いなら書く必要なし)

それとも、頭わるそうっていう発言を気にしているの?
どちらが頭がわるそうかは傍目から見ても明らか。
それほどこの板の人間(一部を除く)は馬鹿じゃないよ。気にするな。
>>105
おまえは答えられないだけだろ。この屁理屈野郎
>>106
答えてやればいいじゃんって意見を煽るお前のバカさ加減を是非とも分析したい。
108105:02/06/23 16:44
>>106
おう。もちろん俺は気前がいいから教えてやる。
ただし、手書き(&でばぐ)するの面倒臭いから
他人のコードで勘弁してくれ。
まあ、有名どころでこんなのがある。

ftp://ftp.matsusaka-u.ac.jp/pub/algorithms/src/genperm.c

これコピペして明日先生に提出しれ。
宿題せずに済んで、良かったね(w
10989:02/06/23 17:21
89ですけど、以降の煽りは私じゃないです・・・。
なんだか、誤解の招く書き方して申し訳ないです。
n個の数字でできる順列を計算するプログラムは作れたんですけど、
順列を全て表示するプログラムができなくて。
↑これでもわかりにくいですね(汗
例:(n=3として)3!=6 ていうのはできるんですけど。
  123 132 213 231 312 321
  と表示するのができなくて教えて欲しかった・・・。
嫌なムードの元を作ってすみません。
>89
101さんのじゃだめなの?全部に1足せばまさに89さんが望んだものが
得られるのでは?
http://pc.2ch.net/test/read.cgi/tech/1024752903/
>>89が↑の1なら>>101見てもわからんかモナー
Java限定ということですか?
>>109
> n個の数字でできる順列を計算するプログラムは作れたんですけど、
> 順列を全て表示するプログラムができなくて。
「計算できて、表示できない」ってどういうことだ ?

> 例:(n=3として)3!=6 ていうのはできるんですけど。
そりゃ階乗じゃねーのか ?

> 嫌なムードの元を作ってすみません。
>>91 みたいなバカはほっとけ。それより、何がしたくて何がわからない
かちゃんと書け。
同じ学校のヤシらかな
115学生:02/06/23 20:19
プログラマーの皆さまお疲れ様です。
不動小数点の質問なんですが、
「2014」の4桁をXとし、Xを2バイトの
符号付整数として表せ。と言う問題と
XをIBM方式により浮動小数点として表し
32ビットで表せ。と言う問題が良く解かりません
どなたか解説をお願いします
不動なの?
>>115
なめるな。
> 「2014」の4桁をXとし、Xを2バイトの符号付整数として表せ。
これもわからないんだったら首釣って市ね。
118アフォ ◆mxnad08k :02/06/23 20:44
宿題手伝ってもらえませぬか?(prolog)
2バイトで表すって単に2014→0x07DEってことかな。
浮動小数点数のIBM方式はサパーリ
120アフォ ◆mxnad08k :02/06/23 20:47
↓の[]内の文字を打ち込むと、次の[]までが表示されるようなプログラムをprologで作りたいんです。

?-[add.]

Input=[あ.]

 1件

Input=[い.]

 2件

Input=[う.]

 3件

Input=[end.]

現在3件です







以上
>>117
恭祐さんキビシいな
恭祐さんて誰?
スレを重ねるごとにスパルタになっているぞ。
麻衣よ帰ってきておくれ。
答えるどころか罵声を浴びせるような奴が、なんでこのスレを見てるのか疑問だ。
黙ってるか見なけりゃいいのに。
ああ、恭祐ってここのおやじか。
レベルの低い奴がもっとレベルの低い奴を罵倒するためにここに居る罠

アフォ ◆mxnad08k が完全にシカトされてる罠
>>123
今、マイちゃんはボーイフレンドに夢中で、お兄ちゃんにかまってる
ヒマはできません。
>>113
>何がしたくて何がわからないかちゃんと書け。
>>91は正にそれを言ってるんじゃ・・・
よーするに回答者を煽って人口減らそうとしてるやつが紛れ込んでるってことだな
130デフォルトの名無しさん:02/06/23 22:05
引き続き
>>97をよろしくお願いします
>>130
>>99
132デフォルトの名無しさん:02/06/23 23:15
>>20
ここの奴等はレベル低いから難しすぎるんじゃねぇか?藁
133デフォルトの名無しさん:02/06/23 23:18
そんなに答えて欲しいのか?


ところで今PC鯖めちゃ重くない?
他のカテゴリは普通なのに。
134デフォルトの名無しさん:02/06/23 23:27
>>prolog
リストにして保存
リストの数を数えつつ表示
135デフォルトの名無しさん:02/06/24 00:13
http://www2.nasicnet.com/~hila/C/kadai6-1.c

このソースをコンパイルすると32行目と52行目に
illegal pointer combination (!=)
という警告がでます。
どこが間違ってるのかわからないのですが・・・
ちなみにコンパイラはLCCです
>135
ポインタと-1は比較できないんでは?
>>135
> t->left!=-1
原因はコレではないでしょうか?
>>135
どこから-1が出てきたん?
139デフォルトの名無しさん:02/06/24 00:25
問題が、ノードが無い時は‐1を入力するとなってるのです。
こういうときはどうやって比較すればいいのでしょう?
-1を入力するのはいいけど、ポインタに-1を入れるのはいただけない。
141デフォルトの名無しさん:02/06/24 00:31
多分これが解決してもうまくいかなくて、そっちが本題になると思うので
問題も見てもらいます(^^;

>140
構造体*tの中のint numに入ってるのですがだめでしょうか?

問題
キーボードから,数値データ(1〜100の整数)を入力し,
以下のような2分木を構築するプログラムを作成せよ

http://www2.nasicnet.com/~hila/C/tree.gif
実行結果例
http://www2.nasicnet.com/~hila/C/tree.txt
>141
numに-1を入れるのはいい。それならなぜleftやrightと-1を比較する?
143デフォルトの名無しさん:02/06/24 00:40
ああ、そうか!
とりあえず警告は消えました!

でもやっぱり実行結果は上手くいかないっす・・・
最初の入力を求める時に
Input data [0: depth = 0] of a left node =
と出てしまうのですが・・・
>>143
直したソースを示してくれないと、誰も何とも言えんがな。
>>135
動くかどうかは別として、(struct Data *)-1 という風にキャストしてから
比較するとエラーは出ない。

でも、設計をしっかりしないと、バグの泥沼にはまるぞ・・・・
146デフォルトの名無しさん:02/06/24 00:46
http://www2.nasicnet.com/~hila/C/kadai6-1.c

とりあえず (t->left)->num != -1 みたいな感じに直したら
警告は消えました。
でもInput data [0: depth = 0] of a left node =
となってしまう・・・
>>146
Data->leftもData->rightも初期化されてないので、俺の環境では
Access Violationが出るよ。
mallocで確保した領域は自動変数と同じで不定値が入っているから、
確保した後は必ず初期化しよう。それかcallocで0で確保するかだな。
148デフォルトの名無しさん:02/06/24 01:04
http://www2.nasicnet.com/~hila/C/kadai6-1.c

>147
とりあえずmallocの後にleftとrightにNULLをいれるようにしました。
それでもやっぱり最初のデータ入力のメッセージが
Input data [0: depth = 0] of a left node =
ってなってしまいます・・・
あ、いい忘れたけどとりあえず実行結果例
http://www2.nasicnet.com/~hila/C/tree.txt
と同じようにデータを入れていこうと思ってるので、
最初の Input data of a top node =  で20を入力しています。
そのあと
Input data [20: depth = 0] of a left node =
と出て欲しいのですが・・・
topのleftやrightもNULLクリアしてる?
>>148
次のようにしてご覧。GenTreeにはまだ問題があるけどね。

int main()
{
int count=0;
struct Data *top;
void GenTree(struct Data *,int);

top = (struct Data *)malloc(sizeof(struct Data));

top->left = top->right = NULL;
printf("Input data of a top node = ");
scanf("%d",&top->num);

GenTree(top,count);
return 0;
}
151デフォルトの名無しさん:02/06/24 01:14
ああ、そうだった!
なんとか表示はうまくなりました。

でも例と入力の順番が違う・・・
ループの仕方がおかしいんだろなぁ・・・
てかデータを全部いれ終わる前に終わる(爆)
>>151
正直、ゼロから作り直したほうが、かえって早くできるかも
>>153
全く見当違いすかね?(^^;
>154
いや、ゴールに近いため、かえって間違いを探しにくいんじゃないかと。
再帰関数を作るときは、挙動と呼ばれる順番をよく考えてみよう。
ああ、原因はわかりました。
一つ目のifでデータを左右に作ると
2つ目のifで絶対rightがあるから絶対ひっかかってしまうんですね・・・
うーん、どうすりゃいいんだ・・・

>>156
挙動とはなんでしょう?
>>157
再帰関数は、自分自身を呼び出しているので、パッと見、どういう
風に動くのか、判断しにくい。

だから、再帰関数に渡されるパラメータをその都度表示するなど
して、挙動をつかんでおくと、デバッグが容易になりやすい。

もっとも、頭の中で挙動がイメージできにくい場合、無理にプログ
ラムしても、変な動きをして、泥沼にはまってしまう場合が多い。
http://www2.nasicnet.com/~hila/C/kadai6-1.c

うーん、だんだん近づいてきた。
depthが増えない・・・
‐1をいれても終わらなかったり・・・

ところでこの実行結果例をみるとleftに-1をいれるとrightは
データの入力も求めてませんがなんででしょう?
問題文もあれだけだしとにかくこのとおりやればいいか・・・
なんでGenTreeでc++を渡しているの?
1個下の階層に行くのでdepthの表示をあげるためのつもりなんですが・・・
c+1じゃだめなん?
>>162
同じじゃないんですか?
c++だと、1足す前の値が渡される。
165135:02/06/24 01:52
そうなのか・・・

っていうかさっきから名前欄に何もいれてなかった、すんません(^^;
c+1にすれば、depthが増えない問題は解決するかと。
167135:02/06/24 02:02
>>166
あ、それは解決しました、ありがとうございます。
次の問題は-1いれても-1のleftを聞いてくることだぁ。
なぜか90なんて表示が出て来たりする・・・
168135:02/06/24 02:07
ぎゃあああ!できたぁああ!(爆)
ありがとうございました〜〜!
今週中にまた次の問題を聞きに来ると思うのでよろしく(笑)
そりゃあ、
if(left->num != -1){
  printf("Input data [%d : depth = %d] of a right node = ",t->num,c);
  scanf("%d",&right->num);
}

t->left=left;
t->right=right;
GenTree(t->left,c+1); ←A
GenTree(t->right,c+1);

ってなっているから、-1が入力されたときにも普通にAが呼ばれるからでは?
170169:02/06/24 02:08
いやん、おそかった。
if(t->left!=NULL && (t->left)->num!=-1)

if((t->left)->num==-1)
return;
else if(t->left!=NULL)
では?
>171
leftがNULLの時に死ぬんじゃ?もう終わったみたいだからあれやけど
というか、GenTreeが呼ばれるときは必ずnum != -1で、
t->left == NULLのように思うのですが…どうでしょうか?
>173
あ、そうかも。
でもなんとなくテストしないでポインタ使うと気持ち悪くないですか?
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |
   ヽノ    /\_/\   |ノ
    ゝ   /ヽ───‐ヽ /  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     /|ヽ   ヽ──'   / < 気持ち悪くないデース
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

void GatesTree(struct Data *t, int c)
{
    int left_num, right_num;

    printf("Input data [%d : depth = %d] of a left node = ", t->num, c);
    scanf("%d", &left_num);

    if (left_num != -1)
    {
        printf("Input data [%d : depth = %d] of a right node = ", t->num, c);
        scanf("%d", &right_num);

        t->left = (struct Data *)calloc(1, sizeof(struct Data));
        t->left->num = left_num;
        GatesTree(t->left, c+1);

        if (right_num != -1)
        {
            t->right = (struct Data *)calloc(1, sizeof(struct Data));
            t->right->num = right_num;
            GatesTree(t->right, c+1);
        }
    }
}
176デフォルトの名無しさん:02/06/24 07:44
引き続き
>>97をよろしくお願いします
>176
>>99
178デフォルトの名無しさん:02/06/24 12:15
>>176一応考えたりしてます。
>178
作りかけのを貼ってみたら?
>176

LXI D,1EH ← DEレジスタペアに(16ビット)1EHを入れる
LXI H,22H ← HLレジスタペアに(同上)22Hを入れる
LDAX D ← DEレジスタペアが指す番地の中身をAレジスタに読み込む
MOV B,M ← HLレジスタペアが指す番地の中身をBレジスタに読み込む
XCHG ← HLレジスタペアとDEレジスタペアを交換
MOV M,B ← Bレジスタの中身をHLレジスタペアが指す先に代入

ここに書き足す

HLT ← 実行おはり
ORG 1EH ← 1EH番地
DB 1,3,5,7,9 ← データ
END

じゃないの?

>>120
もう自分でやっちゃったかもしれないがかいてみる。
これであってるかな?

add_word(end,Words,Num,Words,Num) :- writef('%w%w%w\n',['現在',Num,'件です']).
add_word(X,Words,Num,A,B) :- append(Words,[X],Result),plus(Num,1,Num1),writef('%w%w\n',[Num1,'件']),
write('Input='),read(Y),add_word(Y,Result,Num1,A,B).
make_list(List) :- write('Input='),read(X),add_word(X,[],0,List,_).
print_list([]) :- writeln('以上').
print_list([W|Remain]) :- writeln(W),print_list(Remain).

add :- make_list(Words),print_list(Words).
182デフォルトの名無しさん:02/06/24 14:25
windowsでprologってできる?
183:02/06/24 14:48
>>181
まだやってる、やりつづけてるです。
なんだかみたことない記号が…(。。;)
自分はここまでです。
助けてくだしぃ…。

l:-assert(no(0)),repeat,qa('Input=',A),retract(no(D)),L is D+1,assert(no(L)),tab(4),write(L),write(件),nl,A=end,!,com(A).
l.
com(end):-no(L),write(現在),write(L),write(件です),nl,write(A),nl,fail.
com(end):-write(以上).

qa(Q,A):-prompt(_,''),write(Q),read(A).

184:02/06/24 15:04
その前に、お返事ありがとうございました!
あと1時間で提出なので、放置状態承知で
きてみたのですが、よかたです。
ほんとにありがとうです。
186185:02/06/24 15:08
ごめん、まちがえた
187デフォルトの名無しさん:02/06/24 17:58
>>177>>180
出来ました.迷惑かけました.
一応貼ります.プログラム中のコメントは
適当に書いたんでつっこまないで無視して下さい.
isim (Intel 8085 Simulater) Ver. 1.0 by T.Inoue
Program:kadai11.asm

loc. object label opcode operand
0000 111E00 LXI D,1EH ; D,Eペアに1EH番地の情報が入る
0003 212200 LXI H,22H ; H,Lペアに22H番地の情報が入る
0006 1A LDAX D ; D,Eペアの値をAに転送する
0007 46 MOV B,M ; Bにメモリを転送
0008 EB XCHG ; D,EとH,Lを交換する
0009 70 MOV M,B ; メモリにBを転送
000A 12 STAX D ; Aの内容をメモリに転送
000B 12 ;; 1FHと21H番地を逆にする
000B 111F00 LXI D,1FH ; D,Eペアに1FH番地の情報が入る
000E 212100 LXI H,21H ; H,Lペアに21H番地の情報が入る
0011 1A LDAX D ; D,Eペアの値をAに転送する
0012 46 MOV B,M ; Bにメモリを転送
0013 13 INX D ; D,Eペアを1加算
0014 13 INX D ; D,Eペアを1加算
0015 2B DCX H ; H.Lペアを1減算
0016 2B DCX H ; H,Lペアを1減算
0017 70 MOV M,B ; メモリにBを転送
0018 12 STAX D ; Aの内容をメモリに転送
0019 76 HLT ; 計算機の動作停止命令
ORG 1EH
001E 01 DB 1,3,5,7,9
001F 03
0020 05
0021 07
0022 09
END



============= SYMBOL TABLE ===========

=======================================

Executed from 001E.

:A=03 B=07 C=03 D=00 E=21 H=00 L=1F IR=76 PC=0019 SP=0000

0000: 111E 0021 2200 1A46 EB70 1211 1F00 2121
0010: 001A 4613 132B 2B70 1276 0000 0000 0907
0020: 0503 0100 0000 0000 0000 0000 0000 0000

Cを学び始めて半月な厨ですが、早速つまいでしまってます
1. 標準入力から以下の16個の16進数を入力し、
"a"と"b"で表されるビットマップ図形として標準出力へ出力(表示)
0200
0200
3FF8
0400
0440
07F0
1C5C
3444
2446
6482
4482
4506
4604
381C
0070
0000

2.

標準入力から"a"と"b"で表される図形を入力し、
16個の16進数として標準出力へ出力

(例)aaaaaaaaaaaaaaabなら0001
aaaabbbbaaaabbbbなら0f0f と出力される。

という感じの問題で1はできたのですが2の問題ができません。お願いします
189デフォルトの名無しさん:02/06/24 22:16
>188
・質問ならageたら?
・文章の意味がよくわからん
・厨を自称しないほうがいい
>>188
文字列の2進を数値の16進にするということ?
>>188
どこらへんがわからない?
1.の問題が出来るなら2.も出来ると思うけど、何でつまづいてるのか教えてくれ。
188のこのレスポンスの悪さは、もしかしてここを宿題の「すべり止め」的
に使用する気か?
>>188
stdin2int(){int c,a=0;while(31<(c=getchar())&&c!=EOF)a+=a+(c=='b');return a;}
>>192
2ch を本命にするはずないと思うけど...。
195188:02/06/24 23:21
あ、すいません。ちょっとした勘違いでした。
問題の意味は文字列の2進を16進数で表すと言う意味でした。
ご迷惑おかけしました
>>195
で、できたのか?
197デフォルトの名無しさん:02/06/25 01:01
1  2  3  4  5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

配列なんですけど、プログラム教えておながい
C++で一次元と二次元で作るんですけど全く思いつきません
>>197
何をしたいのかもなにがわからないのかも分からない
うーむ、こいつぁ難問だ・・・
下手するとなんとかの定理とかより難しいかもな(w
200197:02/06/25 01:10
うずまき型で数字を出力したいのですが
手段として配列を使わねばならないのです。
久々のpuzzleだ・・・
アタック25〜
>>200
チミはまず質問の仕方から学ばねばならないようだね
その質問では、例え我々が答えを書いたとしても
「そうじゃない」と言われるのがオチだ
キタ━━━━━━━━━┓
 ┏━━━━━━━┓ ┃
 ┃┏━(゚∀゚)━!!!!  ┃ ┃
 ┃┃         ┃ ┃
 ┃┗━━━━━━┛┃
 ┗━━━━━━━━┛
205197:02/06/25 01:33
ああ、この答えは全く分からないので「そうじゃない」
なんて言いませんよ。197のように出力するプログラムをC++で一次元配列の場合、
二次元配列の場合、それぞれ考えようっていう問題なんですけど。

1次元配列に 1,2,3,4,5,16,17,18,19,6 ・・・13,12,11,10,9 って入れて5個ずつ5回表示する。
2次元配列に5つの行の値を入れておいて、それを表示する。

って、こんなことじゃないよな。問題が良くわからん。
printf("
1  2  3  4  5\n
\n
16 17 18 19 6\n
\n
15 24 25 20 7\n
\n
14 23 22 21 8\n
\n
13 12 11 10 9 \n");
>>205
こんなのでもいいのか?

#include<iostream>
using namespace std;

int main(){
int a[25]={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};

cout << " " << a[0] << " " << a[1] << " " << a[2] << " " << a[3] << " " << a[4] << endl;
cout << a[15] << " " << a[16] << " " << a[17] << " " << a[18] << " " << a[5] << endl;
cout << a[14] << " " << a[23] << " " << a[24] << " " << a[19] << " " << a[6] << endl;
cout << a[13] << " " << a[22] << " " << a[21] << " " << a[20] << " " << a[7] << endl;
cout << a[12] << " " << a[11] << " " << a[10] << " " << a[9] << " " << a[8] << endl;

return 0;
}
おまけだ。
#include<iostream>
using namespace std;

int main(){
int a[25]={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};
cout << " " << a[0] << " " << a[1] << " " << a[2] << " " << a[3] << " " << a[4] << endl;
cout << a[15] << " " << a[16] << " " << a[17] << " " << a[18] << " " << a[5] << endl;
cout << a[14] << " " << a[23] << " " << a[24] << " " << a[19] << " " << a[6] << endl;
cout << a[13] << " " << a[22] << " " << a[21] << " " << a[20] << " " << a[7] << endl;
cout << a[12] << " " << a[11] << " " << a[10] << " " << a[9] << " " << a[8] << endl;

int b[5][5]={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};
cout << "\n " << b[0][0] << " " << b[0][1] << " " << b[0][2] << " " << b[0][3] << " " << b[0][4] << endl;
cout << b[3][0] << " " << b[3][1] << " " << b[3][2] << " " << b[3][3] << " " << b[1][0] << endl;
cout << b[2][4] << " " << b[4][3] << " " << b[4][4] << " " << b[3][4] << " " << b[1][1] << endl;
cout << b[2][3] << " " << b[4][2] << " " << b[4][1] << " " << b[4][0] << " " << b[1][2] << endl;
cout << b[2][2] << " " << b[2][1] << " " << b[2][0] << " " << b[1][4] << " " << b[1][3] << endl;

return 0;
}

こんなくだらないことしてないでそろそろ寝よう・・・
int i, array[] = {
1,2,3,4,5,
16,17,18,19,6,
15,24,25,20,7,
14,23,22,21,8,
13,12,11,10,9
};

for (i = 1; i <= 5*5 ;i++) {
if (i%5 == 0)
cout<<"\n";
cout.width(3);
cout.fill(' ');
cout<<array[i];
}
cout<<endl;

とか。
早押しクイズみたいだね。問題がわからないのに答えが出るとは。
for (i = 0; i < 25 ;i++) {
失礼こっち。
桁揃えようとして半角スペース入れたけど、2chでは反映されない罠・・・

鬱駄寝よう・・・
じゃぁおれも

#include <iostream>
#include <iterator>

int main()
{
char text[][30] = {
" 1  2  3  4  5 ",
"16 17 18 19  6 ",
"15 24 25 20  7 ",
"14 23 22 21  8 ",
"13 12 11 10  9 ",
};
std::copy( text, text+5, std::ostream_iterator< char* >( std::cout, "\n" ) );
}
215197:02/06/25 02:02
みなさん
ありがとうございます
>>215
(;´-`).。oO(さすが>>197
>>215
214を提出したらほめてやる
やろうとしている事は>>206だと思う。

で、その配列に入る値は、ハードコーディングではなく実行時に計算する、と。
for の組み合わせでできそうですな。1...nを順番に配列に入れていけばよい
わけだけど、そのときのインデックスをどうfor文でうまく計算するか。
(多分for文2個か4個でできる)

行・列数を簡単に増やせるようにしておくのが、宿題的にも吉だよ、と。
219197:02/06/25 02:16

    ∧ ∧ 
| ̄ ̄( ゜Д゜) ̄ ̄| <みなさん。遅くまでありがとうございますた。
|\⌒⌒⌒⌒⌒⌒\     214もありがとう。
|  \           \
\  |⌒⌒⌒⌒⌒⌒⌒|
  \|________|

そして、多くの謎を残し、197は消えた・・・
#define SIZE 5
int main(){
int a[SIZE][SIZE] = {0};
int i;

bool isHoriz = true;
int x=0,y=0;
bool isRev = false;
for(i=1;i<=SIZE*SIZE;++i){
a[x][y] = i;
if(isHoriz){
if(isRev){
if(x-1 < 0 || a[x-1][y] !=0){
isHoriz = false;
--y;
}else{
--x;
}
}else{
if(x+1 > SIZE || a[x+1][y] != 0){
isHoriz = false;
++y;
}else{
++x;
}
}
}else{
if(isRev){
if(y-1 < 0 || a[y-1][y] !=0){
isHoriz = true;
isRev = false;
++x;
}else{
--y;
}
}else{
if(y+1 > SIZE || a[x][y+1] != 0){
isHoriz = true;
isRev = true;
--x;
}else{
++y;
}
}
}
}

for(y=0;y<SIZE;++y){
for(x=0;x<SIZE;++x){
printf("%02d ", a[x][y]);
}
printf("\n");
}
return 0;
}

やってみた。
冗長だなあ。もっとエレガントなのキボンヌ。
問題があまりにも分からなさすぎると逆に盛り上がる罠
>>221

ほい

#include <iostream>
#include <iterator>
#include <iomanip>

static int const SIZE = 5, SPACE = 3;

int main()
{
int array[SIZE][SIZE];

std::fill_n( &array[0][0], SIZE*SIZE, 0 );

for( int x = 0, y = 0, dx = 1, dy = 0, i = 1; i<=SIZE*SIZE; ++i, (x+=dx), (y+=dy) )
{
array[y][x] = i;
int const nextx = x+dx, nexty = y+dy;
if ( nextx<0 || nexty<0 || nextx>=SIZE || nexty>=SIZE || array[nexty][nextx]!=0 )
{
int const tmpdy = dy; dy = dx; dx = -tmpdy;
}
}

for( int y = 0; y<SIZE; ++y )
{
for( int x = 0; x<SIZE; ++x )
std::cout << std::setw( SPACE ) << array[y][x];
std::cout << std::endl;
}
}
224223:02/06/25 03:25
>>221

Σ(゜д゜lll)ガビーン
そうか・・・そうやって配列全部初期化できるんだっけ・・・
fill_nなんか使ってバカみたいだ
225221:02/06/25 03:38
>>223
そうか・・・いちいち場合分けしなくても、xとyの増加量を順番に反転させてやればいいんだね。
思いつかなかった・・・

初期化は配列でも構造体でも最初の要素だけで全部できるよ。
漏れも最近知って、結構お気に入り。
でも、クラスには使えない罠。

std::string s[10] = {"hoge"}; //s[0]だけが"hoge"
forでくるくるくるくるとな
228馬鹿な僕に愛の手を!:02/06/25 22:37
次の覆面算を何らかのヒューリスティックスを
用いて、枝刈りをしながら解け。
SEND+MORE=MONEY
CROSS+ROADS=DANGER

一体どうすればいのでしょうか?アルゴリズムだけ
でいいんで教えてください。
229:02/06/25 22:41
この問題を教えてください.
3×3行列Aに対し
1,Aを読み込みAの行列式を出力
2,Bを読み込みA×Bを出力
3,|A|≠0の時のA^(-1)を出力
>>228
↓この中のfukumen.cを見てみて。
http://www.vector.co.jp/soft/data/prog/se002453.html

>>229
マルチ氏ね
231デフォルトの名無しさん:02/06/25 22:46
BASICの完全数を高速で求めるプログラム教えてください
学校の宿題ででてるんだがわかないので・・・
切実
>>231
↓このPDFの3ページ目にハケーンしたよ
http://www5b.biglobe.ne.jp/~simomac/paso2001/10sinb.PDF
233a:02/06/25 22:56
nの階乗を求めるプログラムをCで作ってください・・・
むむむ・・
234デフォルトの名無しさん:02/06/25 22:57
ありがとうなんですが・・・なーんかこれ分かりにくいんですが・・・
>>234 これでちゃんと動くよ。10進BASICなので適当にコンバートしてね

10 input n
for a = 1 to n
let n = int(sqr(a))
for i = 1 to n
let r = a - i * int(a/i)
if r = 0 then
let s = s + i + a / i
end if
next i
if a = s - a then print a; s - a
let s = 0
next a

END
>>233
nのかいじょー

int result = 1;
int i;

for (i = 1; i <= n; i++)
    result *= i;
>231
「BASICの完全数」って何サ?
238馬鹿な僕に愛の手を!:02/06/25 23:25
>>230
手計算では無理でしょうか?
>>238
まず普通に手で解いてみるとよいのでわ?
>237
完全数をもとめるBASICのプログラムってことだろ?
6とか。
>>237は完全数を知らないのではないのでしょうか・・・。
奇数の完全数は、あるでしょうか。
>>241
書き方が悪いという皮肉だろう。
>231
日本語がわかりにくいよ。
大体、「高速で求める」ってなんやねん?
高速道路で求めるんか?
>242
ないんじゃない?
>>242
発見したり、ないことを証明できれば有名になれるかも

#まだ未解だよね?
>>244
あんなのも読み取れないのか。へー。
248馬鹿な僕に愛の手を!:02/06/26 00:48
>>239
枝刈りのうまいやりかたがわかりません・・・
>248
枝刈りをしないバージョンはつくれたん?
>>248
まずは手で解けるようにならないと、プログラム上で枝刈りなんて
高等テクニックは使えないよ。
252デフォルトの名無しさん:02/06/26 03:59
  ノ     ∧     /) ∧
  彡  ノW \从/V  W \   ミ
  (  ノ        |      ノ \)
  ∩V      、、 |       >V7
  (eLL/ ̄ ̄\/  L/ ̄ ̄\┘/3)
  (┗(      )⌒(      )┛/
   ~| \__/ |  \__/ |~     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    爻     < |  ;     爻    < ほう、宿題とはな。
    ~爻     \_/  _, 爻~      \____________
     ~爻__/⌒ ̄ ̄ ̄~~ヽ_ 爻~
     /    ー ̄ ̄\_ ̄\
  _一‘     < ̄ ̄\\\J
<\       ー ̄ ̄ヽ_ヽJ   ̄\_
  \     _ニニニヽ )       ~\
   \  _/⌒|\ ヽ_~~ ~⌒\_
  __/~    V \_|     ~\_
初心者なんですけど逆ポーランド計算を作るところで詰まってしまいました・・・教えてください
>>253
マジな話、その質問の仕方のレベルだったら、先生のとこ行って
教えてもらったほうがいいと思うぞ。
本当にわからないんです。お願いします・・・
参考になるページだけでもいいので。
>>255
べつに>>254は意地悪してるんじゃなくて、ここで聞くより先生に聞いたほうが100倍ましな答えが得られるって言ってんの。
(そもそもそのための教師って職業だし)
あの質問じゃ俺らは大して役に立つ答えは返せそうにない。
掲示板で聞くにはそれなりの聞き方を身につけてからでないと望んだ答えは得られないよ。
258javaの問題です。:02/06/26 08:21
数nを入力して、幅nで高さnの以下のような直角三角形を2つ並べて画面に
表示するプログラムを書け。
これはnが5の場合。
____s
___ss
__sss
_ssss
sssss
____s
___ss
__sss
_ssss
sssss

「_」はスペースの意味です。
誰か教えて下さい。


>>258
どこが直角なんですか?
260258:02/06/26 08:29
すみません。うまくいきませんでした。「凵vの形に直角になるはずなんです。
スペースとsの合計数は行ごとにn個になっています。
(例では5つ)
Javaで文字や文字列の連結のやり方は知ってますか? >>258
262258:02/06/26 08:37
すみません…よくわかりません…
Javaでループの書き方(forとか)は知ってますか? >> 258
264258:02/06/26 08:40
それはわかります。ループをつなげればよい、
というのはわかるのですが…
265258:02/06/26 08:44
すみません、途中で申し訳ないのですが、今から高校に行ってきます。
許してください。(遅刻するわけにはいかないので)
最後の質問です。
画面に文字を出力するやりかたは知ってますか? >> 258
これがyesなら、文字の扱い方を勉強すれば必要な
知識はそろいますよ。言語がなにかわからないので
これでおしまい。
(今回は試しに一問一答形式で進行してみました。)
267266:02/06/26 08:48
しまった、逃げられた。にしても20分ちょっとで
宿題の答えが欲しかったのか。すげー。
>>266
おい、言語Javaってはじめに書いてないか?
Javaは和下欄
class S
{
public static void main(String[] args)
{
int num = 2;
char[] data = {' ', ' ', ' ', ' ', ' ', 's', 's', 's', 's', 's'};
for (int i = 0; i < 5; i++) {
for (int j = 0; j < num; j++) {
System.out.print( new String(data, i + 1, 5) );
}
System.out.println();
}
}
}
270デフォルトの名無しさん:02/06/26 08:58
>>269
[]の位置はそこでいいの?
ダメなの?
>>269
数を入力してって書いてあるぞ。
>>272
だから和下欄と書いたじゃないか。
apiドキュメントを見ただけでJDKも入れてないので動くかどうかは和下欄し、
Java自体いじるの始めてでどうしたらいいか和下欄
Javaがわかんないんだろ。要件を満たしてないこととかんけーねーじゃん。
>>274
一文字ずつprintしていくなら作れるけど、ダサ過ぎる。
誰かがJavaで文字列の構築方法を教えてくれたら書き直すよ。
sprintfとかstringstreamみたいな奴が欲しい。
276すいません、おしえていただけないでしょうか....:02/06/26 09:38
「ある特定の文字列を含んだ行を異なるファイルとして抽出するプログラム。
まず、抽出する文字列と検索対象ファイル名を入力する。
また、結果出力用のファイル名を入力する。
そして、検索対象ファイルを読み込んで文字列が含まれるか否かのチェックを行い、
当該文字列が含まれていればそのデータを結果として出力する。」
というプログラムをつくりたいのですが、うまく動いてくれません。
どなたか間違いをご指摘してくだされば幸いです。
どうかよろしくおねがいします。


#include <stdio.h>

main()
{
FILE *fpp1, *fpp2;
char line1[10], line2[10], line3[20], line4[10000];
int num1, i, j;

printf("imput file name >");
fgets(line1, sizeof(line1), stdin);
printf("output file name >");
fgets(line2, sizeof(line2), stdin);
printf("keyword >");
fgets(line3, sizeof(line3), stdin);


fpp1 = fopen(line1, "r");
fpp2 = fopen(line2, "w");
num1 = strlen(line3);
num1 = num1 - 1;

while(fgets(line4, 10000, fpp1) != NULL){
for(i = 0; i < 10000; i++){
if(line3[0] == line4[i]){
for (j = 1; j < num1; j++){
if(line3[j] != line4[i+j])
break;
}
if(j == num1){
fputs(line4, fpp2);
}
}
}
}
fclose(fpp1);
fclose(fpp2);
}
>>276
だから「うまく動かない」だけじゃなくてどう動かないか書けって
なんども言われてるだろう。
コンパイルできないのか、実行時エラーなのか、うまく抽出されないのか?

今回の場合、一度にやろうとせず
1.入力ファイルを読み込み画面に出力(TYPE/cat相当)
2.入力ファイルを読み、出力ファイルにそのまま出力(COPY/cp相当)
3.文字列の中にキーワードが含まれるか判定する関数を作る
4.2と3を組み合わせる(grep相当)
とステップアップしていくといいんではないかな?
(関数の作り方習ってないか?)
とりあえずな、ファイルがきちんと開けているか
くらいは最低限チェックしろよ。

それとな、strstr使わないのもまあいいけれど、
文字列の終端子\0をキチンと考慮しろよな。
279すいません、276です:02/06/26 09:57
<output file>と< keyword>の入力が同時に求められてしまうのです。
コンパイラはgccです。
よろしくおねがいします。
すくなくとも10000文字以上の行があって、lins3[0]と同じものが
はじめて10000-num1文字目で現れたときに確保した領域の外を読んじゃうね。
「なんども言われてるだろう。」みたいな内容は恭祐さんが
1に書いておくべきだったなぁ。今度からテンプレ作る必要が
あるかもね。
282280:02/06/26 10:18
しまった、境界条件より先にfor(i = 0; i < 10000; i++){
に気づかない俺って... 駄目駄目だ。

cat inputfile | grep mojiretu > outputfile

じゃ無理かな。よくわからん。
>>258
Javaに移植すれ

int i, n, j;
cin>>n;
for (i = 1; i <= n ;i++) {
for (j = n-i; j > 0 ;j--) cout.put(' ');
for (j = i; j > 0 ;j--) cout.put('*');
cout<<endl;
}
>>276
line1とline2が10Byteって少なすぎないか?
最低でも8+3(拡張子)+2('.'と'\0')で13は必要。
ネスケのブックマークから抽出しようとフルパスと書くと
C:\Program Files\Netscape\Users\hogehoge\bookmark.htm
55byteは必要になる。80Byte程度はほしい。
>>283
grep相当の物を自分で書くというのが宿題(を出した人)の意図じゃないの?
>>279
gccはいってないから確認できないけど、入力でこけてるなら
fgets(line3, sizeof(line3), stdin);
の行よりあとを消して、確認してみれば?
それぞれの変数に何が入ってるか表示させてみたり、fgets以外の入力を使ってみるとか。
>>286
Group Regular Expression Print

REの部分は宿題としてどうかとw
289284:02/06/26 10:55
何、2つ並べてかΣ(´□`||)
290286:02/06/26 11:38
>>288
確かに宿題としては正規表現はヘビーすぎるな。すまん。
宿題スレでは既存コマンドと同等(の下位バージョン)を作る宿題が
たまにでるということを言いたかったんだ。
そういう質問に「○○を使えばできる」というのはネタとしてはともかく
回答としてはいかがなものかと。
(初心者スレかくだらない質問スレならそれで正解と思うけどね)
この場合は fgrep inputfile > outputfileだろう。
>>289
>>258では縦に並んでるような気が汁。とりあえず横に並べるバージョン。
縦にすんのはテメエでやれ。>>258

class triangle
{
  int size;
  char ch;

  triangle(int size, char ch)
  {
    this.size = size;
    this.ch = ch;
  }

  void line(int n)
  {
    for (int i = n; i < size; ++i) {
      System.out.print(" ");
    }
    for (int i = 0; i < n; ++i) {
      System.out.print(ch);
    }
  }

  void show(int n)
  {
    for (int i = 1; i <= size; ++i) {
      line(i);
      for (int j = 1; j < n; ++j) {
        System.out.print(" ");
        line(i);
      }
      System.out.println();
    }
  }

  public static void main(String[] args)
  {
    char c = 's';
    int num = 2, size = 5;
    if (args.length > 0)
      size = Integer.parseInt(args[0]);
    if (args.length > 1)
      c = args[1].charAt(0);
    if (args.length > 2)
      num = Integer.parseInt(args[2]);
    new triangle(size, c).show(num);
  }
}
293デフォルトの名無しさん:02/06/27 02:15
C++でlong型のポインタをint型のポインタに変更するには
(int*)(value)
reinterpret_cast<int*>(value)
これらのどちらを使うべきなのでしょうか?
reinterpret_castの誤用は危険だと習ったのですが、
上の場合とはどのように違うのでしょうか?
Cのキャストはソース上で見づらい
しかもどんな型変換もOKだった気がする
ので私はC++のキャストを選ぶ
295デフォルトの名無しさん:02/06/27 02:32
>>294
ありがとうございます。
ということはCスタイルのキャストはreinterpret_castと同じか
それ以上に危険ということでしょうか?
ものわかりが早いコって好きよ♥
297くいずたいむしょっく:02/06/27 02:51
至急お願いします!!

N88BASICなんですけどできますか?

テーマ IF・・・THEN・・・ELSEを使う

1 X,Aを入力して、XがAの倍数か否かを表示するプログラムを作れ。

2 Nを入力し、2からNまでの素数を表示するプログラムを作れ。Nも表示し改行せよ。
  素数はPRINT USING"#####"を用いて5桁で表示せよ


10 INPUT "X:",X:INPUT "A:",A
20 IF INT(X/A)*A = X THEN PRINT "#t" ELSE PRINT "#f"
299くいずたいむしょっく:02/06/27 03:22
298さんありがとうございます!
2番わかりますか?
FOR・・・NEXTとかIF・・・THENとかINT使うと思うんですけど
BASICインタープリタ・・・Excel VBAか十進BASICしかねえよ・・・・
keyword:エラストテネスの篩

ついでに300ズダー
ヽ(`Д´)ノウワァァァン
>>299 十進BASICで作ったから、適当にコンバートしてくれ。

100 REM 2以上の自然数を入力すると,素数か否かを判定する
105 INPUT n
110 FOR j = 2 to n
120 IF MOD(j,2)=0 THEN
130 IF j=2 THEN PRINT using "#####":j
140 ELSE
150 FOR i=3 TO SQR(j) STEP 2
160 IF MOD(j,i)=0 THEN EXIT FOR
170 NEXT i
180 IF i>SQR(j) THEN PRINT using "#####":j
190 END IF
195 next J
200 END
つーか、BASICで配列を使う方法しりましぇん。
なもんで振るいアルゴリズムは実装できない。
dimとかじゃなかったっけ。
307デフォルトの名無しさん:02/06/27 04:12
Cについて教えてください。
ある数群から条件に合う物だけ抜き出して配列に入れたいのですがその数群というのが数千個あり、その条件に合う物は高々数個から十数個で実行するごとに違います。
数千個の配列を用意してもいいのですが、もっとメモリ効率のいい方法を探しています。

条件に合う物を探す前にメモリ領域を確保しなければならないのでmallocも使えなくて困っています。
方法が有れば教えてください。
>>307
その数群ってどっから持ってくるの?

>>307
・2パスにする(先に条件に合うものの数を数え,メモリ確保後に以下略)
・malloc,memcpyを繰り返す
・reallocを使う
・高々10数個なら配列サイズを20にすれば?
・線形リストを使い,あとで配列に変換
310デフォルトの名無しさん:02/06/27 05:36
整列済みの整数データの重複を取り除くにはどうすればいいっすかね
>>310
>>253-257を読んで出直して来い
>>308
バイナリー画像データから配列に入れるんです。
>>309
・2GHzのマシンに計算させても2分ほどかかる計算なので2パスにすると計算量が。。。
・mallocを繰り返して使うやりかたがいまいちよく分からない。。。・この方法採用させていただきます。
・数百分の一の確率で数十個出たりするので固定はできないんです。。。
・リスト、スタックは考えたのですが、自分の脳味噌足りませんでした。。

ありがとうございました
>>312
ちなみに「数千個の配列」とやらは、何バイトぐらいになるの?
>>312
元の画像は破壊しちゃだめなの?画像配列内部で条件を満たすものだけ
前に持ってくるとか?
ひょっとして画像データの数千個の配列か?
>・mallocを繰り返して使うやりかたがいまいちよく分からない。。。・この方法採用させていただきます。

マズ最初にサイズ10の配列用意して、それが一杯になったらもうちょっと大きい配列
ようして、そちらに全部コピーする。
realloc()ならコピーまでしてくれる。
>>312
配列の要素がめちゃくちゃ大きいようだったら、
malloc,memcpyの繰り返し(もしくはrealloc)は時間がかかるぞ。
リストの配列化をオススメしる
・リストの数を数えて
・「要素へのポインタ」の配列を確保して
・順番に入れていく
qsortとか使う時によくやる
リストが分からないなら...この先苦労しそうだが...
>>312
2GHzで2時間って・・・さては宿題じゃなくて研究だな
ひょっとしてT研か?
|
|ρ・)<2GHzのマシンで"2分"
|
322デフォルトの名無しさん:02/06/27 12:24
vectorに突っ込みまくれば?(w
323お願いします:02/06/27 12:41
問題
 始めに配列に文字列を入力します。
次に1文字入力をし、入力した配列の何番目にその文字があるのか出力せよ。
文字がない場合は”ありません”と表示する。
なお、配列中には同じ文字が何個入ってもかまいません。
文字列のサイズは100位ないとする。

勉強を始めてから2ヶ月経つのですがわからないです。
お願いします。
324予想:02/06/27 12:48
↓に、”質問の仕方から勉強しろ”とレスがつく予感
>>323
1.入力した(検索される)文字列を配列に格納する
2.入力した(検索する)文字を変数に格納する
3.配列の中身を1つずつチェックし2の変数の中身と同じかどうか調べる

どこまでできる?
>>324
予想を裏切ってスマソ
(´・∀・`)
>>323
質問の仕方から勉強しろ
char line[101], *pbuf;
int c;

cout<<"100文字以内よ: ";
cin.getline(line, sizeof line, '\n');
cout<<"1文字だけよウフ: ";
if ((c = cin.get()) == EOF || (pbuf = strchr(line, c)) == NULL)
cout<<"ありませーん(´д`)"<<endl;
else
cout<<"\nline["<<pbuf-line<<"] の位置にハケーン"<<endl;
330お願いします:02/06/27 13:07
すいません。
質問の仕方もお願いします。
>329さん、私には高度すぎて・・・

今知っているのは分岐型(if)繰り返し(for)くらいです。
ネタはもう少し人が寄って来る話題を振ってください。
おながいします。
>>330
質問の仕方はここで聞かれても困ります。
小学校あたりからやり直してみてはいかがでしょうか?
>>330
>>325は無視?どこまでできるか聞いてるんだけど。
334お願いします:02/06/27 14:00
>325さん すいません。
3番目がどうしたら良いのかわかりません。
1番目はscan("%s",配列)でよろしいでしょうか?
335デフォルトの名無しさん:02/06/27 14:23
p:\DQN.c(5) warning C4013:関数'scan'は定義されていません int型の値を返す外部関数と見なします。
DQN.cs(7,4): error CS0103: 名前 'scan' は クラスまたは名前空間 'DQN.DQN'
に存在しません。
337お願いします:02/06/27 14:48
あああああああああああああああああああああ
scanfでした
>>330
言語の指定がないのだからC++だろうとperlだろうとBasicだろうと
どの言語で回答されても文句はいえないはずだが。
つまりは言語/環境を明記しろってこと。<質問の仕方
339お願いします:02/06/27 15:45
>338さん、有難うございます。かなり恥ずかしいです。
言語はC言語です。
>329さん、すいませんでした。
340デフォルトの名無しさん:02/06/27 16:27
C言語です。1:ある文字列をキーボード入力 例:abcdbc
      2:比較対照の文字列を同様に入力 例:#bc
3:比較対照が1の文字列に何回出現するか数える
というプログラムなんですが(この場合2回)、
比較対照にワイルドカード文字#を入れなくてはならないんです。
私の貧弱な頭ではさっぱりでして…もしよろしければ回答お願いします。
あう…対象でした
とりあえず、"abc"と"#bc"がマッチするか調べる
関数は作れるのかえ?
ここは宿題を教えるスレですか?手伝うスレですか?
そのワイルドカードが今ひとつでして…
一文字づつ比較して#部はその工程を飛ばすような形で考えているんですが…
>>343
質問者の態度によって変わる。
>>344
#がワイルドカードってことは
最初の文字列がbcdbcなら1回?
はい。「dbc」の部分が一致するので一回です。
>>347
#は一文字としかヒットしないわけだね?
abbba

a#a
は一致しないってことでよろしいか?
ワイルドカードだとしたらマッチは1回だろ
#=abcdにマッチするんだから
>>348
はい。そういうことです。その場合だとa###aで一致になるわけです。
すいません。ワイルドカードの意味も分かってなかったみたいです。
#はひとつ一文字に対応です。
>>350
検索の方法はどうするんでしょう?
abacadaeと入力して
a#a#
と比較した場合、
1.abac adae の2回
2.abac acad adae の3回
>>352
2.abac acad adae の3回です。説明不足で申し訳ありません。
こんな感じでせうか

for( i = 0; i<=文1の長さ-文2の長さ; ++i )
{
 for( j = 0; j<文2の長さ; ++j )
 {
  if ( 文2[j]!='#' && 文2[j]!=文1[i+j] ) break;
 }
 if ( j==文2の長さ ) ++ヒット数
}
コンパイルしてみましたがこんな感じです。
ただ、scanfが必要なんです。問題はこいつなんですよね。
scanfでとりこんでアドレスをずらしながら比較…とか考えてたんですけど
難しいです…
ま た s c a n f か
どうやらscanfを使うのはよくないみたいですね。
fgets()とsscanf()の使い方を調べてやってみます。
今 度 は s s c a n f か
>>357
sscanfは必要ないのでは・・・?
>>358 >>359
過去ログ漁って>46を見て意味も分からず書いてしまったので…すいません。
361312:02/06/27 22:56
reallocで無事解決しました。
とある画像から条件の合う物だけコピーしてイロイロ操作するプログラムを組んでます。
画像配列のメモリ容量は多いと言っても50kBぐらいなので
全部確保できないことはないのですが、自分的にイヤなもので。。
リストはこれからミチーリ勉強します。
362デフォルトの名無しさん:02/06/28 01:24
鬼初心者なんですけど・・・
質問させてください。

実行ファイル名をtstとします。
書き込み対象のファイル名をsmp.txtとします。

それでですね、
tst smp.txt abcde
と、引数を渡したときに
文字列abcdeがsmp.txtに書き込まれる
プログラムをCで書きたいのですが、まったくわかりません。

どなたかご教授ください。
おながいします!!
363予想屋:02/06/28 01:25
↓に"マルチは氏ね"とレスが付く予感
>>362
なにがわからないのかまったくわかりません。
>>362
Cの入門書やWebサイトにいくらでも同じプログラムが転がってると思うが・・・
1 引数の扱い
2 ファイル操作(オープン/クローズ)
3 入出力

どれが分からん。
>>362

main(int argc, char** argv)
{
 fprintf(fopen(argv[1], "w"),"%s",argv[2]);
}

エラーチェックとかは自分で汁
int main(int ac, char **av)
{
FILE *fp;
int i;
if (ac < 3) {
fputs("引数が少ないよ\n", stderr);
return 1;
}
if((fp = fopen(av[1], "w")) == NULL) {
fputs("書き込みファイルを開けないよ\n", stderr);
return 1;
}
for (i = 2; i < ac ;i++) fprintf(fp, "%s\n", av[i]);
fclose(fp);
return 0;
}
標準入力と標準出力ってなんですか?
それを利用したプログラムを書かないといけないのですが。
370362:02/06/28 01:47
みなさんどうもありがとうございました。
解決いたしました。

ほんとお恥ずかしい質問でしたが、これから
精進したいと思います。
(・∀・)人(・∀・)ババーナ!
>>369
>いや、5時間くらい悩んでるんですよ

知るか。本読め。検索しろ。適正無い。学校やめて違う道を探せ。
#include <stdio.h>

int main(){
printf("hello,Word\n");
}
標準出力を利用したプログラム(ぷ
>>369はフィルタが書きたいのかと小一時間。
>>372
すいません、それは一番最初にやりました。
たぶんそれじゃダメだと思います。
とりあえず今googleで検索してるので、また後で聞きに来ます。
>>374
これも標準出力を利用したプログラムといえるので先生に提出してください
>>374
ダメかどうか判定するのはお前じゃないだろ。
まあ仕方ない、標準入力も利用してやるよ。

int main() {
printf("hello,Excel\n");
getchar();
}
>>374
ダメと思う理由を簡潔に述べよ

>>376
せめてgetcharの戻り値を使ってやってくれよ
>>369
標準入出力を使ったファイル(テキストファイル)のコピー
使い方は、自分で考えると良さげ

#include <stdio.h>
main () {
 int buf ;
 while ( ( buf = fgetc ( stdin ) ) != EOF ) fputc ( buf, stdout ) ;
}
379改良:02/06/28 02:07
int main() {
printf("おはようエクセルくん\n");
return getchar();
}
>>378
ありがとうございます。
標準入力って面白いですねこんなの作ってみました。
でもごみが表示されるんだけど、なんでですか?

#include <stdio.h>

void main()
{
int i;
char buffer[9999],c;
for(i=0;i<=9999;i=i+1)
{
c=getchar();
buffer[i]=c;
if (c==EOF)
break;
}
for(;i>=0;i=i-1)
{
putchar(buffer[i]);
}
}
>>370
(・∀・∀・)ヌッヘッホー
>char buffer[9999],c;
>for(i=0;i<=9999;i=i+1)

とりあえずこれはまずいだろ。
>>380
コンピュータは正直です。
ゴミが出るのは、ゴミを入れてるからです。

ゴミの正体については次週の解決篇で。
char buf[9999] は 0...9998・・・・・・
>>383
来週かよ!
誰かネタバレしる!
じゃあ一つだけ・・・・・
cはcharなので、絶対にEOFにならない。
>>386
自分がバラしとるやん
>>387
処理系によってはEOFになるよ。EOFが-1の場合、
(char)-1 == (int)-1
>>389
Σ( ̄□ ̄ || 〒 ||そうだった!char == signed charだとintにする時符号拡張
されるのか。どちらにしろcはintにせにゃならんけどね。
>>380
cをint型にして、bufferへの代入を EOF の判定後にすれば良さげ
ゴミは多分EOFマーカーをputcharしているせいです。EOFはbufferに
代入しないように。
腹痛え。トウガラシ麺を2個も食ったせいだ。トイレ逝ってくる。
出来ました!
ありがとうございました。
ところで、マイクロソフトのコンパイラだと
abc^Zと入力しても入力が続くんですが、なんででしょう?

#include <stdio.h>

void main()
{
int i,c;
char buffer[1000];
for(i=0;i<=9999;i=i+1)
{
c=getchar();
if (c==EOF)
break;
buffer[i]=c;
}
for(i=i-1;i>=0;i=i-1)
{
putchar(buffer[i]);
}
}

>>394
まだだめだ。char buffer[10000]にしないと。
それから、ctrl+z押してからenter押さないと、バッファを読みとってくれない。
>>395
あ、ポカミスです。
それから、enterは押してます
ボーランドのだとうまくいくのですが。
それはコンパイラではなくDOS窓のことか?
行の途中でも効いたっけ?
>>396
MSVCRTはctrl+dじゃなかったっけ?
2回目のループは
while ( i>0 ) {
 putchar ( buffer[--i] ) ;
}
に汁
>>397
そうだわ。行の途中のctrl+zはEOFと見なしてくれない。
行頭じゃないと。
VC6.0だと行頭でC-z[enter]じゃないとダメ
gcc(cygwin)は行頭でC-d
bccはどこでもC-z[enter]でOK
>>399
ありがとうございます。
394のはバグありますか?
ちょっとよく分からないのですが。
>>402
別に、そこの部分はバグじゃない
ただ、for で同じ式を繰り返し使ってるのが美しくないだけ
あとは、使い方をリダイレクト限定にすれば期待どうりに動くはず
404デフォルトの名無しさん:02/06/28 03:41
>>276 2日前のにレス

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

#define MAXLINE 1024

int main(int argc, char *argv[]){

    char *prog = NULL;

    char *pattern = NULL;

    FILE *fpin = NULL;
    FILE *fpout = NULL;

    char line[MAXLINE];


    if(argc != 4){
        fprintf(stderr, "Error: wrong number of argument\n");
        fprintf(stdout, "Usage: ./prog <pattern> <input-file> <output-file>\n");
        exit(1);
    }

    prog = argv[0];
    pattern = argv[1];
    fpin = fopen(argv[2], "r");
    if(fpin == NULL){
        fprintf(stderr, "Error: cannot open %s\n", argv[2]);
        exit(1);
    }
    fpout = fopen(argv[3], "w");
    if(fpout == NULL){
        fprintf(stderr, "Error: cannot open %s\n", argv[3]);
        exit(1);
    }

    while(fgets(line, sizeof(line), fpin) != NULL){
        if(strstr(line, pattern) != NULL)
            fputs(line, fpout);
    }


    fclose(fpin);
    fclose(fpout);

    return 0;
}
>>404
おまえ、不吉
406デフォルトの名無しさん:02/06/28 04:49
>>404のソースみたいに、
複数桁のスペースを入れるにはどうすればいいの?
>>406
全角スペースを入力しる。
 を好みの数だけ
&nbsp;
void main(int argc, char *argv[])
{
    printf("(・д・)");
}
>>409
ありがとー
412test:02/06/28 06:22
  cout<<"Fuck men!\n";
  cin>>str;   //紛らわしい、何れオーバフローする
413遭難中:02/06/28 08:18
二分木探索法をポインタではなく、配列でやるにはどうしたらいいんでしょう?
友人に聞いたら、配列の添え字を返すようにすればいいんじゃん?といわれましたが・・・
まず、ポインタでどうやっているか書いてみろ
>>413
配列の添字を相対的なメモリアドレスと考えれば通常の変数がポインタの役割を担えることに気付くだろう。
その代わり配列管理が面倒だと思われ。

俺、この方法でスタック書いたけど。
二分木の探索を配列の添え字を使ってする場合、
二分木を配列上に構築しなければならないんだけど、
それ自体できてる?
それとも二分探索の書き間違い?
417ほんまわからん:02/06/28 12:58
文字列strをメモリに格納するための関数char*SaveStr(char*)を作成しなさい。

C言語でおながいします。

方針としては、文字列の長さを求めて、メモリの確保をおこなって、文字列をコピーする。
>>417
文字列の長さの求め方はわかるか?
メモリの確保の仕方はわかるか?
文字列のコピーの仕方はわかるか?
strlen, malloc, strcpyが怪しいぞ(w
420ほんまわからん:02/06/28 13:17
わかりますよ。一応模範解答がほしいのです・・・
無駄なプログラム書きそうなので(^^
>>420
じゃあ、その無駄なソースをアップしてくれ。
こっちで添削する。

宿題を見るって本来こういう事だし。
422sager:02/06/28 13:20
↓に”>>420 氏ね” とレスがつく予感
423ほんまわからん:02/06/28 13:21
ちょっとまってください。がんばってつくりまふ。

整数んとmをコマンド行から入力し、nからmまでの和をディスプレイに表示するプログラムをつくりなさい。

これはわからないっす・・・・(T_T)
>>423
大丈夫、日本語じゃないから。
425ほんまわからん:02/06/28 13:27
整数nとmをコマンド行から入力し、nからmまでの和をディスプレイに表示するプログラムをつくりなさい。

だったw
426デフォルトの名無しさん:02/06/28 13:27
>>424
氏ね
ミス
>>425 失せて。
428デフォルトの名無しさん:02/06/28 13:46
>>417
strdup を検索してみると吉。

>>425
とりあえず普通に数列の問題として解くことはできるのか?

>>426
ストレス発散ならお前の家から一番近い繁華街まで行って、
そこら辺でたむろしてるチンピラにでも喧嘩売ってろ。

徒に死ねとか言うな。
429ほんまわからん:02/06/28 13:55
数列の問題としてなら

#include<stdio.h>
main()
{
int m,n,t;

printf("m=?");
scanf("%d",&m);
printf("n=?");
scanf("%d",&n);

t= (n+m)*(m-n+1)/2 ;

printf("mからnまでの和=%d\n",t);
}

でいいとおもうのですが・・・
>>429
forループ回すより明らかに効率が良いのよね。
数学はやっておくもんだ。
>>429
ほほう
432ほんまわからん:02/06/28 14:35
で、コマンド行からの入力はどうしたらいいのですか?
433ほんまわからん:02/06/28 14:40
文字列strをメモリに格納するための関数char*SaveStr(char*)を作成しなさい。
格納したアドレスを関数の戻り値とすること。

わかんないっす。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main(void)
{
char str[99];
int i=0,t,l;

printf("文字列を入力して下さい");
scanf("%s",&str);

l = strlen(str);
malloc(l);
strcpy(str);

printf(


}

ここらへんまではやったのですが・・・
434riarutyuubou:02/06/28 14:43
>>432
mからnまでの和の意味が全然分からないので、それを教えてくれたら、教えます
>>433
Σ(゚д゚lll)ガーン
char*SaveStr(char*)っていう関数ないじゃん
あの式を見るたび小学生のときに読んだガウスの話を思い出す。
437riarutyuubou:02/06/28 15:03
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* SaveStr(char *str){
char *c;
c=(char *)malloc(strlen(str)+1);
strcpy(c,str);
return c;
}

int main(){
char *str="omankobanzai";
char *c;
c=SaveStr(str);
printf("%s\n",c);
return 0;
}

mからnまでの和の意味を教えてください
438riarutyuubou:02/06/28 15:11
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
int m,n,t;

m=atoi(argv[1]);
n=atoi(argv[2]);

t=(n+m)*(m-n+1)/2;

printf("mからnまでの和=%d\n",t);

return 0;
}

mからnまでの和の意味を教えてください
>>433
メモリ確保、コピーはchar*SaveStr(char*)の中でやらんと意味ないぞ。
あとmallocは確保したメモリのアドレス返すから受け取ってやらんと。
というか433はポインタ理解してるか?
440riarutyuubou:02/06/28 15:14
ほんとうにmからnまでの和の意味がわからないんです。
数学さっぱりなんで。
>>437
借りたものは返してください。
442riarutyuubou:02/06/28 15:19
>>441
期末テストが終わってfreeな気分だったので、、すみません
>>440
m=1,n=3の時のmからnの和は6
(1+3)*(3-1+1)/2

あ、プログラムはこれを最後に辞めたほうが良いよ。
>>440
ちなみに 1 から n までの和が n * (n + 1) / 2
ということは知っているのか?
445riarutyuubou:02/06/28 15:34
>>444
しりません。
というかmからnの概念がまだ理解できません
もうプログラミングやめます
446riarutyuubou:02/06/28 15:45
>>444
n=3だとすると
13ですかね?
447riarutyuubou:02/06/28 15:46
いや6.5ですか。
ひょっとして和=合計の意ということが分からないのか?
和差商積=+−÷×
449riarutyuubou:02/06/28 15:50
>>448
和==+ということはわかるんですが
m=8
n=5
で、なぜ26なのかがわかりません。
450444:02/06/28 15:58
1以上n以下の自然数の総和が n * (n + 1) / 2
ということは知っているのか?
451riarutyuubou:02/06/28 15:58
>>444勘違いしてました6ですね。
452riarutyuubou:02/06/28 16:02
>>450
つまりn=3だとすると
1+2+3ってことですよね?
んでm=8,n=5だと
5+6+7+8ってことですか!
やっとわかりました!!本当にありがとうございました。
453444:02/06/28 16:15
なんだ遠回しに間違いを指摘しているのではなかったのか。
454デフォルトの名無しさん:02/06/28 17:02
int a[] = {0,1,2,3,4};
int *p[] = {a,a+1,a+2,a+3,a+4};
int **pp = p;

このように定義したとき、a,+a,p,*p,**p,pp,*pp,**ppは何をさすか
>>454
+aってなんすか?
456デフォルトの名無しさん:02/06/28 17:08
*a
でしたw

ぐはーw
457デフォルトの名無しさん:02/06/28 17:10
aは変数
*aはそのアドレス
どういう値になるかを答えるのか?
459デフォルトの名無しさん:02/06/28 17:21
おれもよくわからんです。
さしてるものを答えるのか、値なのか・・・
多分値だとおもいます。。。
なんていうか・・・。答えられない問題だなぁ。
461デフォルトの名無しさん:02/06/28 17:32
ん?なんで?
なにが?
>>454
a 配列aの先頭アドレス
*a 0
p 配列pの先頭アドレス
*p 配列aの先頭アドレス
**p 0
pp 配列pの先頭アドレス
*pp 配列aの先頭アドレス
**pp 0

じゃ、駄目か?
だめです。
465!463:02/06/28 17:52
>>464
じゃあ、正しい答えよろしく。
466じゃんけん:02/06/28 18:01
ポソ
>>463
*a とかは代入可能なんだから、
配列 a の先頭の要素って感じで書かないといけなくない?
468463:02/06/28 18:14
>>467
たしかに
char *i;
((i)) = "(・∀・)マンコー";

//(;´Д`)ハァハァ
470デフォルトの名無しさん:02/06/29 18:29
  *
 ***
*****
471デフォルトの名無しさん:02/06/29 18:32
ピラミッドを作りましょう。
何段ですか:3
  *
 ***
*****
472デフォルトの名無しさん:02/06/29 18:35
勉強しててつまづいたので教えてください。
471に示すように、読み込んだ整数の段数をもつピラミッドを表示するプログラムを作成せよ。
ってな感じの問題があるんですがわかりません。教えてください。
473デフォルトの名無しさん:02/06/29 18:37
471に近いやつは
#include <stdio.h>
main()
{
int i,j,in;
printf("ピラミッドを作りましょう。\n");
printf("何段ですか:");
scanf("%d",&in);
for(i=1;i<=in;i++){
for(j=1;j<=in-i;j++){
printf(" ");
}
for(j=1;j<=i;j++){
printf("**");
}
printf("*");
printf("\n");
}
return(0);
}
のプログラムでできたのですが、なんか違います
474デフォルトの名無しさん:02/06/29 18:38
完全数を求めるプログラムを高速化したいんだけど
そのためには、普通のアルゴリズムじゃ、
その演算に多大な無駄が。。。

そこで!!10000までの完全数を求めるために必要な時間が、
数秒程度になるようにこのアルゴリズムを改良したいんです。

演算部分のアルゴリズムをどのように変更すればいいのか教えて!
その数学的理由とともに。。
>>474
こっちでレスしてやったじゃん。
紹介したサイトは証明も載ってるから翼嫁。

***すれ立てるまでもない質問はここで 第16刷***
http://pc.2ch.net/test/read.cgi/tech/1024791990/257
476デフォルトの名無しさん:02/06/29 19:32
>>474
6
28
496
8128
1740msec

適当に作ってみたけど、PentiumV500MHzでこんなもんだったよ。
普通のアルゴリズムとやらを示してみな。
改良点を教えてやるから。

本当に適当に書いたんだけど、数秒におさまってしまった…
477476:02/06/29 19:37
> 普通のアルゴリズムとやらを示してみな。
> 改良点を教えてやるから。

って書いたけど、普通のアルリズムってのと全く同じだったらどうしよう。
しかもsage損ねたし…
>>472
#include <stdio.h>
int main()
{
int i,j,in;
printf("ピラミッドを作りましょう。\n");
printf("何段ですか:");
scanf("%d",&in);
printf("\n");
for(i = 1;i <= in;i++)
{
for(j = i;j < in;j++)
{
printf(" ");
}
for(j=0;j<i*2-1;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
479472:02/06/29 20:53
違うスレで質問してみます
>>472
はぁ?
>>478で問題ないジャン
それとも、BASICで答えろって?
そもそも言語くらい書いとけ
481472:02/06/29 21:38
>>478
gomennasai!!
>>479nohatugen,tasikani,bokudesu.
matigaeta,hatugendesu.
honto,mousiwakennai,desu.
suimasen,suimasen
ima,mnihongo,dasenaidesu.hontodesu.gomennasai!!
kotae,arigatougozaimasu!!
tottemotasukarimasita!!arigatou,gozaimasu!!
教 え て 君 の 鏡 だ な
>>482
な に が 映 っ て る の で す か ?
教 え て 君 必 死 だ な
>>483
お前の間抜け面。
単に鑑だろとつっこみを入れたかっただけなのだが。
教えて君といっしょにされたか。
487デフォルトの名無しさん:02/06/29 22:18
>>477
INPUT m
FOR n=2 TO m
sum=0
FOR k=1 TO (n-1)
a=n MOD k
IF a=0 THEN
sum=sum+k
END IF
NEXT k
IF n=sum THEN
PRINT n;
END IF
NEXT n
END
488487:02/06/29 22:19
どこかえればいいの?
単に >>472 っていうリンクを見逃したってことでは?

最近答える方も叩く準備しているような気がする。
この板も WebProg 板のようになってしまうのか。。。ガクガク、ブルブル
490!476:02/06/29 22:35
>>487
kのループをn-1までやらなくてもいいだろ
n/2までで済むハズ

もっとやるなら、ループをnの平方根までにして
剰余が0のとき
sum=sum+k
sum=sum+(n/k)
とすると、良いかな?
試してないので、やってミソ
>>489
らら枯れておかしくない質問が増えたのも・・・
>>489
Ruby、HSP、VB、Delphi といったスケープゴートが機能しなくなって
一般のスレが荒れだしている。
>>476
6
28
496
8128
50ms(Celeron650)
どうやったらそんなに遅くなるのかと…
6
28
496
8128
33550336
8589869056
137438691328
1ms(ポケコン)
495476:02/06/29 23:34
もう言われてしまいました。
というかBASICだったのね。
実は、Cなら普通に組んでも数秒でおさまるだろうと首をかしげてた。

>>493
n / 2 でやっていたから、それで目標値は出たのでよしとしてた。
平方根版だと、50msなったよ。
496490:02/06/29 23:46
>>493
>>495
もっと、早くする方法ないかな?
この方法だと5つ目以降が遅すぎ。

>>496
アルゴリズムスレでやったほうが良いのでは……
498デフォルトの名無しさん:02/06/30 00:25
JAVAにて、「元金を入れてください」と
「金利を%で入れてください」の質問に答えたら、
1〜3年後の金額が出てくる元利計算のプログラムを
書けと言われたのですが、全く分かりません。
まわりにJAVAを知っている人がおらず、困っております。
書いていただけないでしょうか。
>>498
超基礎的なところを触れば出来るだろ。
ネットで解説ページ探せ
>>498
Excelでいいんじゃないの?
501500:02/06/30 00:28
ごめん、ここ宿題スレだった。
>>501
作れない方がおかしいんだから気にしない。
503490:02/06/30 00:32
>>497
ごもっとも、逝ってきます
ここは宿題スレだし。煽るだけなら(・∀・)カエレ!
>>504
おお、だから何だ?
明らかに宿題直前の授業も理解できてないようなDQNだぞ?
こんな奴ら今の内に単位落とさせて退学にし、プログラマ人生を
断ってやった方がこいつらのためだ。
いるね。こういう余計なお世話な人。
>>504 (=498=504)
まぁまぁ落ち着けよ。お前も煽ってるだけだぞ。

確かに此処は宿題スレだ。しかしな、やる気の無いやつの
宿題を肩代わりしてやるスレではないんだよ。
508498:02/06/30 01:33
ただの文系大学生。パソコンがちょっと使える程度なのに、
調子に乗って共通教育の情報科学S(JAVA入門)を取り、
講義を受けてみれば、先生が工学部の情報工学なら、
生徒もほとんど工学部の情報工学の学生ばかり、
講義もいい加減で、身内が理解出来てるだけ。
で、結局全学部の学生対象とかいいながら、
僕を含め、情報工学の学生以外は落ちこぼれ〜
509476:02/06/30 01:38
>>496
1 : 1
2 : 6
3 : 28
5 : 496
7 : 8128
13 : 33550336
17 : 8589869056
19 : 137438691328
31 : 2305843008139952128
0msec
メルセンヌ素数を使うと素数判定をいい加減に作っても一瞬で終わる。
ポケコンで1msというのはそういう訳のよう。

自分で数学的理由が説明できないので悲しいものがあるが…
>>507
> 確かに此処は宿題スレだ。しかしな、やる気の無いやつの
> 宿題を肩代わりしてやるスレではないんだよ。

答えるかどうかは回答者次第なんだから勝手に決めるなよ。
教授って研究する人であって物を教える人じゃないからね。
総合大学っておもしろそうだね。
>>509
?それは偶数の話だろう?
俺は暇で何か問題解きたい時や自己満足に浸りたい時に答えるよん。
相手のレベルなんてこのスレで問いたりしまへん。
でもJava知らないので>>498はパスっ
>>510
お前の偽善が一人の人間の人生を潰してるんだよ。
515498:02/06/30 01:44
>>507
504は僕じゃない。
そんなこと書くほど身勝手じゃないですよ。
>>515
504 名前:デフォルトの名無しさん 投稿日:2002/06/30(日) 00:46
ここは宿題スレだし。煽るだけなら(・∀・)カエレ!

身勝手?
いつもこのスレ見てて思うんだけど、金払ってんだから
教官に聞けばいいのに。
なんで510が偽善なんだ?


>>516
ちょっと言葉が足りなかったのですが、
ちょっと自分の質問に答えてもらえないからって、
カエレ!って書くとか・・・
>>507
504だけど、498ではないよ。
勝手にイコールで結ばないように。

こんなところに宿題を丸投げするようなやつに説教しても無駄。
調べろって言っても調べるわけないじゃん。ほっとけ。
>>514
おやさしいことで・・・
522 :02/06/30 01:54
ここは宿題の答えを教えるスレじゃなくて宿題を手伝うスレだよね?
ならば、問題だけ書いて答えてくれっていうんじゃ話にならないでしょ。
どこまでやったかを書かない時点で質問者として駄目でしょ。

>>498はどこまで出来た?出来たところまででも書いてみ。
誰かヒントくれるから。俺は答えられないけど。JAVAしらないし。
>ここは宿題の答えを教えるスレじゃなくて宿題を手伝うスレだよね?
ば〜か。そんなのどっちでもいいんだよ
勝手に決めるな傲慢野郎
>宿題、判らないところがあったら、遠慮しないで聞いてくださいね。
           〜〜〜

全部はところじゃないな。お馬鹿さん。
> やる気の無いやつの宿題を肩代わりしてやるスレではないんだよ。
とか、
> ここは宿題の答えを教えるスレじゃなくて宿題を手伝うスレだよね?
とかってルールあるの?
俺はその時の気分で答えてるけど。
ここは、宿題を聞くやつをひとつのスレに封じ込めるためにあるんじゃないの?
527デフォルトの名無しさん:02/06/30 01:58
☆ chin        hungry~
      hungry~
☆ chin  〃 Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ヽ ___\(\・∀・)< download 92 % complete.
    \_/⊂ ⊂_)_ \____________
  / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
  |  ̄  ̄ ̄ ̄  ̄ ̄:| :|
  |            |
528498:02/06/30 01:59
import java.io.*;

public class Ganrikeisan {
public static void main(String[] args) {
System.out.println("元金を入れてください。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in), 1);
try{
String line = reader.readLine();
System.out.println("金利を入れてください。(%で)");
line = reader.readLine();
int per = Integer.parseInt(line);
System.out.println("1年後は" + ( x * (1 + (per / 100)) ) + "円です。");
System.out.println("2年後は" + ( (x * (1 + (per / 100))) * (1 + (per / 100) ) + "円です。");
System.out.println("3年後は" + (((x * (1 + (per / 100))) * (1 + (per / 100))) * (1 + (per / 100))) + "円です。");
} catch (IOException e) {
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("数値が正しくありません。");
}
}
}

あるプログラムに当てはめてみたのですが、
全然成立していません。コンパイルも出来ません。
こんな情けないものをお見せするのが恥ずかしいです。
>全部はところじゃないな。お馬鹿さん。

幼稚園児がいるようで
>>526
正解。
答える・答えない・ヒントだけ出すっていうのはレス付ける人の自由かと思いますが。
個人的には、ここで答えないとマルチを始めるお馬鹿さんもいるので
下手に煽るより答えた方がいいと思っております。
>>529
>幼稚園児がいるようで
反論できないと。
>>524はどっからの引用で誰へのレス?
>>528
おまえなぁ…

まぁいい、ヒント。
計算する前に、入力した値をそのまま表示するようにしろ。
534498:02/06/30 02:28
String line = reader.readLine();
System.out.println(line + "円ですね");
System.out.println("金利を入れてください。(%で)");

こういうことですか?
>java Ganrikeisan
元金を入れてください。
3万[enter]
3万円ですね
金利を入れてください。(%で)
2
元金をいれてください。
3万[enter]
3万元ですね
>>498 いやたぶん533は x にはちゃんと数値が入ると思うの?
ってことを確認させたいんだと思うよ。
でも、それ以前に(と)の対応がとれてないから確認できない
かもしれないけど。コンパイラのメッセージも確認してごらん。
538528:02/06/30 02:47
import java.io.*;

public class Ganrikeisan {
public static void main(String[] args) {
System.out.println("元金を入れてください。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in), 1);
try{
String line = reader.readLine();
System.out.println(line + "円ですね");
int x = Integer.parseInt(line);
System.out.println("金利を入れてください。(%で)");
line = reader.readLine();
int per = Integer.parseInt(line);
System.out.println("1年後は" + ( x * (1 + (per / 100)) ) + "円です。");
System.out.println("2年後は" + ( (x * (1 + (per / 100))) * (1 + (per / 100)) ) + "円です。");
System.out.println("3年後は" + (((x * (1 + (per / 100))) * (1 + (per / 100))) * (1 + (per / 100))) + "円です。");
} catch (IOException e) {
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("数値が正しくありません。");
}
}
}

上記のプログラムで、535のようになりました。
あとはうまく計算させるだけのようなんですが、
そこが一番の難問です。
すまん、535ってネタだと思ってた。
「30000」じゃなくて「3万」って入力する必要あるの?
540528:02/06/30 02:53
>>539
そんな高度なことしません(出来ません)。
3万円の時は「30000」正解です。
541540:02/06/30 02:54
× 「30000」正解です。
○ 「30000」で正解です。
回答側の推奨事項:
・自分がどうするかは自分が決める。
・他人の意見を勝手に代弁しない。(このスレは〜するところです、とか)
・質問者の将来について心配しない。(ここでの質問事項にのみ関わる)
・DQNな質問者は放置。

他なんか推奨意見ある?

質問者側の推奨事項とかも挙げて、次スレ辺りから >>1 に書くことを希望。
>>538
単に計算式がおかしいだけじゃないの?
・ダメな質問者の家族や家臣やパイロットを呼ばない
>>512
更に勉強してみた。
えーと、偶数の完全数とメルセンヌ素数との関係は
オイラーが証明済み。
奇数の完全数があるかどうかはわかっていない。

ってことは、後は奇数の完全数がある範囲内にはないってことを
プログラムで確かめてみればいいってことでいいのかな?
奇数は偶数の約数を持たないってことを考慮すると
処理は平方根板の4分の1程度になるということでいい?

それでも10000000の範囲を調べるには数時間かかりそうだけど。
>>538
Javaやっとことないから理由はわからないけど、
int a;
a = x * (1 + (per / 100));
System.out.println("1年後は" + a + "円です。");
こんな感じにすると計算できてるような。
>>546
スマソ。取り消してくれ
式は合ってると思うが、変数の型がおかしい。

>538
System.out.println( 50/100 );
って、どういう結果になると思う?
この実行結果が予想と違った場合、その原因は?
>>538
int型だから端数が切られてるに一票
>>542
理想的には
http://www.hyuki.com/writing/techask.html#template
を熟読して欲しい。けど質問者にはなにも望まない、期待しない。
551540:02/06/30 03:11
>>549
型というのは、絶対値の大きな方だけではなく、
小さな方も考慮しなければならないのですか?
>>551
絶対値の大きい・小さいじゃないけど、
int x=0.5;
ってやるとどうなる?
553538:02/06/30 03:16
>>548
50/100は0になるんでしたよね?
0.5<1なので。
ここってただの隔離スレだろ?
あんまり細かいこと言い出すと宿題丸投げ君が他で迷惑かけそうなんだけど。
555538:02/06/30 03:24
分かりました。
int perをdouble perに治したら、うまくいきました。
が、答えの1〜3年後は○○○円の所に、小数点以下が出てしまいます。
これを何とか出来ないでしょうか?
>553
おめでとう。

で、宿題は出来たか?
>555
100.6 円だったら、101 にする?
それとも、単に切り捨てる?

まぁ、いずれにせよ、キャストぐらい覚えとけ。
558538:02/06/30 03:38
完成しました。本当にありがとうございました。
1〜3年後の数値の前に、それぞれ(int)を入れてやったら、
ちゃんと切り捨ててくれました。
この際なので、もう一つ勉強させてください。
切り上げるにはどうすればよいのでしょうか?
切り上げ:+1.0して端数切り捨て
四捨五入:+0.5して端数切り捨て
560538:02/06/30 03:50
分かりました。最後までお世話になりました。
初歩的な問題(僕には高度でしたが)の質問攻めに
答えてもらい、大変感謝しております。
ありがとうございました。m( _ )m
-1 かけて、切り捨てて、もっかい -1 かけるのが手っ取り早いかな…?
>559
それで2.0を切り上げると3になるよ。
Javaはよく知らんけど、Mathにceilとかないの?
563538:02/06/30 03:57
先生が切り捨てでいいよって言った理由が
よ〜く分かりました・・・
四捨五入は Math.round でいいんじゃないの?
Math.ceil あるなー。
nativeメソッドだからちょっと速いかも。
566490:02/06/30 04:31
>>545
何か、調べてくれてThx!
メルセンヌ素数 (2^p)-1
完全数 (2^(p-1))*((2^p)-1 )
だから、メルセンヌ素数を知ってれば、
完全数(偶数)は求められる。
あるかどうか分からない奇数は、
奇数の約数でがんがれば、
コストは1/4だと言うことで納得。
メルセンヌ素数から完全数を求めるのはインチキだろ。
メルセンヌ素数もプログラムで求めるならいいけど。
568デフォルトの名無しさん:02/06/30 04:42
☆ chin        hungry~
      hungry~
☆ chin  〃 Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ヽ ___\(\゚∀゚)< download 100%, completed!
    \_/⊂ ⊂_)_ \____________
  / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
  |  ̄  ̄ ̄ ̄  ̄ ̄:| :|
  |            |
569476=545:02/06/30 11:08
>>567
>>545 は実際にメルセンヌ素数をプログラムから求めてる。
1 <= p < 32 の31個の数が素数かどうか調べているだけなので、
処理量は少ない。

奇数の処理は入ってない。
570デフォルトの名無しさん:02/06/30 13:16
数秒で10000までの完全数出すBASIC 2進のプログラム教えて!
あとどうして半分まで調べれば分かるのかが分からない。
完全数だらけ
572476:02/06/30 13:57
>>570
>>487 に書かれてあったプログラムで今何秒ぐらいかかっているんだ?
BASIC環境がないんで、どのくらい短縮すればいいのかわからん。

32 の約数 1,2,4,8,16,32
33 の約数 1,3,11,33

という具合に、自分自身を除けば、約数は1 / 2以下しかないから。
逆に言うと1より大きい約数は2以上になるから。
573デフォルトの名無しさん:02/06/30 17:18
あれでやると4桁の完全数出るのに数分かかるの。。。
もっと短縮するのにはどう変えたらいい??
ってかどうしたら早くなるのか理由を教えて〜。
574476:02/06/30 18:37
>>573
もっと正確に時間が測れないのか?
>>487 のプログラムを変更して10秒内にしたいとしたら、
半分にするやり方の場合、現時点で20秒以内じゃないとまずい。
平方根+奇数の約数の場合でも、133秒以内じゃないとまずい。
つまり数分というのが2分を超えるかどうかによって、
メルセンヌ素数を使ったプログラムにするかが決まってくる。
残念ながら、メルセンヌ素数に関しては、私自身数学的理由を
説明できる自信がない。

平方根に関して説明すると、
36の約数 1,2,3,4,6,9,12,18,36
1 × 36 = 36
2 × 18 = 36

6 × 6 = 36

18 × 2 = 36
36 × 1 = 36
という関係を使う。
1〜6 までの約数を求めれば、自然と9〜36の約数も求まる。
で、その境目が36の平方根となる。

奇数が偶数の約数を持たない理由は、
奇数が素因数2を持たないから。

ちなみにメルセンヌ素数+平方根+奇数の約数の場合でも、
400秒以内じゃないとまずいと思われるんで、6分40秒以上
かかっているなら、今までの考えじゃ無理。
575476:02/06/30 18:39
× 測る
○ 計る
576デフォルトの名無しさん:02/06/30 19:45
学校でC言語やってるんですが、(Visual C++)
貰ったプリントにあった問題が分かりません。(問題の意味さえ)
今、ポインタに入ったばっかりです。

問題

変数の宣言(例えば int a,b;)で、変数のアドレスが決まることを確かめる。

次に、scanf(" ",&a);の代わりに&aの値(&aの値をcに代入)を用いて、
scanf(" ",c);としても同じことであることを確かめる。

また、*(&b)は、bに等しい子を、g=&e;,c=&a;の場合に*g=*cはe=aと同じことを確認する。

ようなプログラムを作成する。
577576:02/06/30 19:46
分かるとこまで書いたプログラム。

#include <stdio.h>

void main (void)
{
int a,b,*c,*d;
c=&a;
d=&b;
printf("adress a=%d, adress b=%d \n",c,d);

printf("a= ");
scanf("%d",&a);
printf("b= ");
scanf("%d",d);
printf("a=%d, b=%d \n",a,b);
}

578デフォルトの名無しさん:02/06/30 19:55
>>577
×printf("adress a=%d, adress b=%d \n",c,d);
○printf("adress a=%p, adress b=%p \n",c,d);
> 変数の宣言(例えば int a,b;)で、変数のアドレスが決まることを確かめる。

これってポインタの中身を表示しなくても、int *c,*d; c=&a,d=&b;でコンパイル時に警告がでなければ確かめられたことになるんじゃない?
>>577
printf("*c=");
scanf("%d",c);
printf("a=%d\n",a);
581576:02/06/30 20:08
>>578
×の方ではadress a=1245052ってなり、pにすると、0012FF7Cってなります。
整数型ではだめなんですか?

>>579
確かめるというのは、結果表示で可能とヒントに書いてありました。
582580:02/06/30 20:08
>>577
printf("b= ");
scanf("%d",d);
printf("b=%d,*(&b)=%d\n",b,*(&b));
>>581
ポインタを文字列で表現するときは%pを使う。
584576:02/06/30 20:10
>>576
前半はなんとなく、>>577でやりましたが、後半の
>また、*(&b)は、bに等しい子を、g=&e;,c=&a;の場合に*g=*cはe=aと同じことを確認する。
ってのが全く分かりません…

>>584
× bに等しい子を、
○ bに等しいことを、

だろ
586576:02/06/30 20:12
>>585
あ、訂正ありがとうございました。すみません。
587デフォルトの名無しさん:02/06/30 20:12
>>584
int b;に何かをいれて、printf("%d\n",*(&b));ってやってみな。
588576:02/06/30 20:16
>>587
なるほど。これは分かりました。やった後で気づきましたが、
>>582にあった…>>580さん、>>587さんありがとう。
589576:02/06/30 20:21
>>583
送れてスミマセン。ありがとうございました。
590576:02/06/30 20:41
最後までやってみたんですが、最後の方が全く
自信ないです…

#include <stdio.h>

void main (void)
{
int a,b,e,*c,*d,*g;
c=&a;
d=&b;
printf("adress a=%p, adress b=%p \n",c,d);

printf("a= ");
scanf("%d",&a);
printf("b= ");
scanf("%d",d);
printf("a= %d, b= %d \n",a,b);

printf("b= ");
scanf("%d",d);
printf("b= %d,*(&b)= %d \n",b,*(&b));

g=&e;
c=&a;
printf("e= ");scanf("%d",&e);
printf("a= ");scanf("%d",&a);
printf("*g= %d,*c= %d \n",*g,*c);
}
>>573
十進BASIC
100 INPUT m
LET t = TIME
DIM primenum(SQR(m)/2)
LET pnmax = 1
LET primenum(1)=2

LET n=2
DO WHILE primenum(pnmax)<=SQR(m)
LET n = n + 1
FOR i=1 TO pnmax
IF mod(n,primenum(i))=0 THEN GOTO 200
NEXT I
LET pnmax = pnmax+1
LET primenum(pnmax)=n
200 LOOP
300 FOR n=2 TO m
LET nn = n
LET i = 1
LET sum=1
LET partsum=1
LET prevnum = 2

DO WHILE (primenum(i)*primenum(i)) <= nn
400 IF mod(nn,primenum(i))=0 THEN
LET nn = nn/primenum(i)
IF prevnum <> primenum(i) THEN
LET sum=sum*(partsum*prevnum-1)/(prevnum-1)
LET partsum=1
LET prevnum = primenum(i)
END IF
LET partsum = partsum * primenum(i)
GOTO 400
END IF
LET i=i+1
LOOP
IF prevnum <> nn THEN
LET sum=sum*(partsum*prevnum-1)/(prevnum-1)
LET sum = sum*(nn+1)
ELSE
LET sum=sum*(partsum*prevnum*prevnum-1)/(prevnum-1)
END IF

IF n=(sum-n) THEN
PRINT n;
END IF
NEXT n
LET t = TIME -t
PRINT t
END
592591:02/06/30 21:18
私のパソコンで
>>487だと203.58秒
>>591だと1.03秒
593デフォルトの名無しさん:02/06/30 22:03
487を591にするのってどう考えを変えたんですか?
数学的理由ってよく分からなくて487を591にする過程を説明してください。
>>578
些細なことだが...
×printf("adress a=%d, adress b=%d \n",c,d);
△printf("adress a=%p, adress b=%p \n",c,d);
○printf("address a=%p, address b=%p \n",c,d);
>>593
まず約数の和は
http://naomi.is.s.u-tokyo.ac.jp/~yato/puzzle/note.html
のホームページのような形にかけるから、(確か中学で習ったと思う)
これに等比級数の和の公式を適用すればいい。(これは高校で習ったと思う)
これは完全数に関するオイラーの定理の証明の過程でもでてくるね。

そうすれば残った問題はいかにはやく素因数分解するかということになる。
このプログラムでは簡単に先に必要な素数テーブルを作っておき
素因数分解を行ってみた
596476:02/06/30 22:43
>>595
うへ〜。全然記憶に残っていない。
実際に展開して確かめてみましたけど、約数の総和は確かにそうなりますね。
597490:02/06/30 22:50
>>595
Cに直して実行したら、
10000まで計算するのに、0mS

早い・・・
598デフォルトの名無しさん:02/07/01 01:46
>>593
うーん。。説明しろと言われると難しい。
誰か説明できる人いたら俺もしりたい。
599591:02/07/01 04:28
>>593,>>596-598
こんな時間にごめん。結構バグっていた。BASICなど数年ぶりなものだから
C++(Windows)で同等の表現に書き直したからこちらをよろしく
#include<iostream>
#include<windows>
#include<cmath>

intmain() {
intmax ; // 最大値読み込み
std::cout << "Max>" ; std::cin >> max ;

DWORD dwTime = timeGetTime() ; // 開始時間

// 最小限の素数テーブル作成
int*pr_num = new int[std::sqrt((double)max)/2+1] ;
pr_num[0]=2 ;
for(int i=0,n=pr_num[0]+1;pr_num[i]*pr_num[i]<=max;n++) {
int flag=1 ;
for(int j=0;j<=i&&pr_num[j]*pr_num[j]<=n;j++)
if(!(n%pr_num[j])) { flag=0 ; break ;} // 割り切れてしまったら終了
if(flag) pr_num[++i]=n ; // 今までの素数で割り切れなかったらテーブルに追加
}

for(int n=2;n<=max;n++) {
int m=n,sum=1 ; // 素因数分解と同時に約数の和を計算
for(int i=0;pr_num[i]*pr_num[i]<=m;i++) { // 全ての素数について調べる
int part_mul=1 ;
while(!(m%pr_num[i])) // 素因数の場合は重複分のべき乗を得る
m/=pr_num[i],part_mul*=pr_num[i] ;
sum*=(part_mul*pr_num[i]-1)/(pr_num[i]-1) ; // 約数の和を更新
}
if(m!=1) sum*=m+1 ; // 最後に残ったmは√m以内に約数がないので素数である
if(sum==n+n) std::cout << n << "\n" ; // 約数の和は自身を含む。完全数なら表示
}

dwTime = timeGetTime() - dwTime ; // 終了時間との差を表示
std::cout << dwTime << "[msec]" << std::endl ;
}
timeGetTime()なんてシステム固有のじゃなくてclock()使えよ。
601デフォルトの名無しさん:02/07/01 10:42
氏ね
602デフォルトの名無しさん:02/07/01 10:53
>>601
手本見せてくれ。
603上げちゃえ♪:02/07/01 11:15
604経営情報学科1年:02/07/01 15:46
すみません急ぎでおながいします。
2014を浮動小数点数として表現し
32ビットで表せと言う問題と
2014を2バイトの符号付整数(補数表現)
として表せ。と言う問題です。
お願いします。
IEEE754単精度
01000100111110111100000000000000
short int
0000011111011110
606経営情報学科1年:02/07/01 16:11
問題間違えますた。
整数2014を2バイトの符号付整数(補数表現)
として表せ。と
整数2014をIBM方式により浮動小数点数として
表現し32ビットで表せ。です。
おながいします。
マジで?あれは16進だっけ。ちょっと分からん
むかし見たことのあるような宿題。
609経営情報学科1年:02/07/01 16:24
最速でおながいします。
>>609
>>605に対するコメントは無いのか?
01000010011111011110000000000000
かな?
612経営情報学科1年:02/07/01 16:36
すみせん、>605の方
ありがとうございます。
ANDみなさま。
613経営情報学科1年:02/07/01 16:51
>611
の方の01000010011111011110000000000000
が正解ということで良かったのでしょうか?

614デフォルトの名無しさん:02/07/01 17:41
何をどうまとめたんだ。
>>615
激しく的を射た突っ込みに思わずワラタよ
>>615
HSPスレからのコピペだよ
618構造体テンプレート:02/07/02 15:31
構造体テンプレートをstruct complex{ float real; float imag; };
と宣言して、その条件で変数をstruct complex z1, *p1;と
宣言したとき、z1の要素realを p1の要素に代入する式をおしえてください。
>>618
p1------------------>real = z1.....................real;
p1 = (struct complex*)malloc(sizeof(struct complex)) ;
p1->real = z1.real ;
それとも
p1=&z1 ;
621デフォルトの名無しさん:02/07/02 15:51
int *p a[5]={3,4,5,6,7};の記述において、pの中の
3番目の値5のアドレスと、3番目の値5のアドレスを
ポインタを用いて取り出し、表示するプログラムを
おしえてください。


(´-`).。oO(まさか電波で俺より上のヤシがいるとはな)
>>621
自分で文章を考えずに出された問題をそのまま書くことを勧めておく。
>>621
#include<stdio.h>
void main(void){
int *p,a[5]={3,4,5,6,7};
p=&a[2] ;
printf("%p:%d\n",p,*p);
}
625デフォルトの名無しさん:02/07/03 02:34
fopenの返すファイルポインタからファイル名の逆引き
ということは可能なのでしょうか?
>>625
無理。
>>625
つぅか責任持てるっしょ。自分の開いたファイルなんだから。
628 :02/07/03 20:21
シェルを作る課題がでました。
サンプルを改造するようになってるのですが、とりあえず実行方法から全くわかりません。

#include <stdio.h>

int main(void){
printf("Hello world!\n");
return(0);
}

これを実行して、Hello world! と出力されるようにするには、どうすればいいんでしょうか?
ファイルにプログラムを書き込んでもできません。

629情報2年生:02/07/03 20:37
int array[] = {5, 7, 6, 1, 4} ;
このような配列があったとして
↓みたいに棒グラフ風に表示との宿題が出たのですがさっぱりわかりません

5 7 6 1 4
  ●      
  ● ●    
● ● ●    
● ● ●   ●
● ● ●   ●
● ● ●   ●
● ● ● ● ●
630情報2年生:02/07/03 20:40
age忘れました(鬱
>>629
大き目の2次元配列で作業領域を作り、必要なところに●
かスペースを代入しといてあとでまとめて表示とか
>>628
そこから出発してシェルを作らせるのか... すげぇ盛りだくさんな
先生だ。頑張れ。
>>629
おい・・・なもん小学生でも組めるぞ
>> 628
1.そこからシェルに到達するのは大変。
2.コンパイルしてくだせい
635デフォルトの名無しさん:02/07/03 20:47
>>632

いや、サンプルはまともなものがあるんですよ。
ただ今は実行ができないので、どうやって実行するのかな、と。
636デフォルトの名無しさん:02/07/03 20:59
>>634

VCでコンパイルしたら、色んなファイルがでてくるのですが、それらを全てunixサーバの方に転送するんですか?
637デフォルトの名無しさん:02/07/03 21:00
>>636
手前でコンパイルしてどうする。
>>636
動きません。unixで動かす実行プログラムは、unixでコンパイルする事。
クロスコンパイラでない限り。
639 :02/07/03 21:04
>>637-638

何かすごく初心者っぽいことを言ってしまったみたいです。すいません。
・・・それで、unixでコンパイルするにはどうすればいいんでしょうか?
>>639
UNIXマシンにインストールしてあるCコンパイラを使う。
>>629 適当に改造しなさい。

#include <stdio.h>

int main(void)
{
int array[] = {5, 7, 6, 1, 4} ;
int i, j;

for (i = 7; i >= 1; i--) {
for (j = 0; j < 5; j++)
printf((array[j] >= i) ? "● " : " ");
printf("\n");
}
return 0;
}
>>639
教師から説明を受けていないの?
>>641
"● "の次は半角スペース3つのつもりだから。2chに書き込む時に
スペース1つに削られちまった。
>>643
2chに削られたわけではない。
645通信工1年:02/07/03 21:09
>>629
1行1行処理するとして、
処理している行+配列の値>配列の中の最大値
の時に●を書く、とかは駄目ですか?
646 :02/07/03 21:11
>>640 and >>642

それが、コンパイルとかって言葉は全然授業ででてませんでした。
でもプリントを見た感じは、Emacsとviってのが使えるようなんですが、これを使ってコンパイルできるのでしょうか?
vi使えるとかこいいけど、コンパイルはできません。
Emacsからコンパイラを呼び出すことはできる
>>646
ぷよまんでも食べて落ち着きなさい。さすれば自ずと答えは出る
>>646
Emacsやviはテキストエディタ。
多分ccかgccが入っていると思うからそれでコンパイル。
>>648
理論的に考えて既に発酵しててもおかしくない時間だな。
>>645
どっちでもいいよ。書ければね。
>>650
この前ぷよまん売ってるの見たぞ。カーバンクル饅頭も
>>646
cc ファイル名 でコンパイルできる。
このままだと a.out という実行ファイルができるから、
cc ファイル名 -o 実行ファイル名 としてもよい。
あとから mv ファイルでリネームしてもよい。

こんなことも教えてくれない先生は失格。
もしかして、 >>648 は駄洒落なのか!?
>>654
なるほど・・・ぷよぷよを作った会社の名前か。
お前らぷよまん食ったことあんのかよ。
めちゃくちゃうまいんだぞ
(カーバンクルまんはさらにうまい)
一度食ったら他の饅頭なんか食えなくなるから試しに食ってみれ。
つーか、もみじまんじゅうだろ?
広島銘菓。
広島といえばぷよまんだろう
659646:02/07/03 21:42
>>653

とりあえず、コンパイルができて、a.outというファイルがつくれました。
元のa.cというファイルには
#include <stdio.h>

int main(void){
printf("Hello world!\n");
return(0);
}
と入力されてて、Hello world!、と出力したいんですが、できません。
a.outを使うときは、ただa.out入力するだけではできないのですが、どうやるのでしょうか?
すけどうたらこを忘れるな。と
>>659
./a.out

UNIXの基礎の基礎。
それも教えてくれない学校なんてやめてしまえ。
662646:02/07/03 21:47
>>661

やっとできました!
ありがとうございました。
前の課題でもそうだったんですけど、最初のやり方を教えてくれないから、これでつまづくと先に進めないのでホント困ってました。
>>661
それもそうだが、>>659 の理解力にも問題あると思うが
すごい学校だのう
>>661
> それも教えてくれない学校なんてやめてしまえ。

禿同、学校変えたほうがいいよ、マジで。
んな学校続けてるとダメになるよ。
>>662
大学?

教授によってはめちゃくちゃ不親切な奴もいる。
>>660
そうなん有ったのか。
668646:02/07/03 23:05
シェルの課題、どこから手をつければいいのかわからないのでアドバイスでいいので助けてください。
とりあえず、課題とサンプルを書きます。

付録ソースコードを参考にして簡単なシェルを作れ。コマンドラインの解析を行うparseは付録で与えられているので、それをそのまま使うか改造すること。
実際にコマンドの実行を行う部分はexecute関数である。ここを埋めよ。リダイレクトとパイプの機能はオプションとする。&によるバックグラウンド処理はできるようにすること。
また、自分なりの工夫を最低1つは組み込むこと。

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>


int parse(char *, char **);
int execute(char **, int);

int main(void){
char buf[1024]; /* buffer for input line */
char *args[64]; /* argument list */
int i, argnumber;

while(1){
/* show prompt */
printf("> ");

/* read line */
if(gets(buf) == NULL){
printf("\n");
exit(0);
}

/* parse line */
argnumber=parse(buf, args);

/* execute a command with its arguments */
execute(args, argnumber);
}
return(0);
}

669646:02/07/03 23:05
parse です。
int parse(char buf[], char *args[]){
int bufnum=0, argnum=0;

while(buf[bufnum] != '\0'){
/* skip white space and tab */
while((buf[bufnum] == ' ') || (buf[bufnum] == '\t')){
buf[bufnum] = '\0';
bufnum++;
}

/* set an argument to args */
args[argnum]=&buf[bufnum];
argnum++;

/* search for the next argument */
while ((buf[bufnum] != '\0') && (buf[bufnum] != ' ') && (buf[bufnum] != '\t\')){
bufnum++;
}
}
args[argnum]=NULL;
return(argnum);
}

これらがサンプルです。
>>668
system関数駆使。
execute()のサンプルは?
672646:02/07/03 23:24
>>671

executeのサンプルはありません。
たぶん自分で書くのだと思います。


C言語と同じように書くなら、parseなどの関数はincludeの後に書くのでしょうか?
その後に、int main(void)が来るのですよね?

後、最初のint parse(char *, char **)
int execute(char **, int)
の部分の意味がわからないのですが・・・
>>663
そう?でも教えてくれなければ./を頭につけることはしないんじゃないかな?

$ a.out
bash:command not found
674デフォルトの名無しさん:02/07/03 23:35
>>672
関数のプロトタイプ
>>672
./a.outがわからないシトにこの問題いきなりやらすのはどうだろう…
ポインタって知ってる?
676646:02/07/03 23:40
ネットで調べたら「関数のプロトタイプとは、関数の呼び出しに先立って、関数の型と引数の内容をコンパイラに教えるものです。」と。

つまりプログラムそのものには関係ないのですね。
>>676
関係有るぞ(笑)
処理をするわけではないが。
678646:02/07/03 23:44
>>675

ポインタ、構造体は習いました。そのへんはわかります。
>>678
そこまで習ってなんでコンパイルの仕方すら知らない・・・。

やっぱりやめた方が良いと思われ。それがあなたのため。
今なら人生修正聞くぞ?
680646:02/07/03 23:46
>>677

え・・・もしかして理解してないと解けませんか?
>>680
理解していなかったからあんな質問したんだろ。
>>646
教官名晒せ
というか参考書はいっさい使わない主義の人ですか?
>>680
まあ、「最初に関数の宣言(変数の宣言みたいに)が必要」と思ってればいいかも。
>>678
どんな授業だったのか非常に興味があるなぁ。
講義だったの?
>>685
俺も興味ある
一度もコンパイルせずに
変数や関数、ポインタや構造体までを机上で教えたのか・・・
ある意味すごいな・・・
687デフォルトの名無しさん:02/07/03 23:52
問題は

文字列中の a--z の各文字の個数を求める関数
void histogram(char str[], int h[])を作り、それを利用して
各文字の個数を一覧表で表示しなさい。

です。どなたかよろしくお願いします。
688デフォルトの名無しさん:02/07/03 23:53
VC++でやっていたんだろ?
689646:02/07/03 23:55
>>688

そうです。VC++でポインタや構造体はやりました。
もしかしてシェル→Windowsのヤシですか?
だったらレジストリを書き換えるんだったかExplorerを置き換えるんだったかどっちかだった気がしる
>>687
/* h[]の要素は0に初期化されているものとする */
for(;*str;str++){
switch(*str){
case 'a':
h[0]++; break;
case 'b':
h[1]++; break;
/* 中略 */
case 'z':
h[25]++; break;
}
}
うちの大学で講義のみのPascalの授業があった。
宿題として課題が出されるんだけど、初日に
「○○にPascalが入ってるからそこでやってきなさい」
まあ、使い方は教えてくれたけど、パソコンを自在に操れる奴限定でしか
理解できない説明だった。
他の授業ではUNIXしか使って無くて、DOSとかいわれて何のことかわからず苦労した記憶があるなぁ。
>>692
工学部?
だったらパソコン使えて当たり前、DOSくらい知ってて当たり前、の世界じゃないの?
694デフォルトの名無しさん:02/07/04 00:03
>>691

h[*str - 'a']++

でいいだろ。
695デフォルトの名無しさん:02/07/04 00:04
>>694
asciiじゃないとだめじゃん。
696695:02/07/04 00:04
というか、文字列が全てa-zで構成されているとは限らないぞ
>>693
んなこたーない
698デフォルトの名無しさん:02/07/04 00:05
なら、

if(*str >= 'a' && *str <= 'z')
  h[*str - 'a']++;
>>697
現実問題、出来ないと困ると思うが。
昔、UNIX 信者の数学教授の C プログラムを見たが、あまりの汚さに驚いた。
ちゃんと動いてるらしいのだが、便所の落書きにしか見えなかった。
>>697
3流国公立大工学部(非・情報)通ってるけど、
パソコン使えないやつなんて同じ学科では
数人しか居ない。まぁ MS-DOS となると
3分の1くらいになるかも知れないが。
>>700
そう言うのをハックと呼びます。
>>693
工学部だけど、情報系ではない。
今みたいに一般家庭にパソコンが普及してればそうかもしれないけど、
Win3.1が出たての頃の話なのでそうでもない。
実際ほとんどがパソコンをさわったことない人ばかりだった。
705デフォルトの名無しさん:02/07/04 00:16
>>703
つか、asciiだろ
706687:02/07/04 00:18
>>691、698

もしかしてポインタ使ってますか?
まだ習ってないんですけど。
707デフォルトの名無しさん:02/07/04 00:19
ポカーン
708デフォルトの名無しさん:02/07/04 00:20
>>706
あなたの示した関数のプロトタイプがポインタを使っているようなものです。
ポインタを使うのは素人
ポインタのある言語を使うのは素人
>>700
数学はプロでも、プログラムは素人。
素人プログラマなら、それで問題ない。
>>709-710

で、もしかして参照を認めるのか?

何も知らないか何かを知りすぎてるかどっちかだな。
そして宿題はできずに夜が更けていく・・・
ここのスレタイが「はうっ、宿題とはな。」に見えて仕方がないが、まあどうでもいいことだ。
715言いたいことも言えないこんな世の中じゃ:02/07/04 01:04
ぽいずん
>>715
2chで、

>言いたいことも言えないこんな世の中

とか言うか?
717デフォルトの名無しさん:02/07/04 01:06
>>714
ワラ イソウ
2chで宿題の答えを聞ける条件

・面白いギャグを持っている
・回答者の機嫌がいい
・その回答者の機嫌をさらにくすぐる
・運がいい

他に何かあるか?
>>718
・質問内容がちゃんと日本語になっていること。
・自分で頑張る意志、もしくは自分の力で頑張ってみたことを伝えられる人。
・その問題を解くための常識的な知識を持ち合わせていること。
>>718 簡単な質問であること
>>718
・自作自演で興味ありそうなレスをつけて、回答者が答えようと思う雰囲気をつくる
時間帯。
細かいことに文句つける奴が多い時間帯と、そうでない時間帯がある気がする。
・言語が何か書いてあること
言語がCだと回答率がいいような気がする
・変なコテハンを使わないこと
・自分がどの程度できるのか等の条件が書いてあること
レス付いた後で「forはまだ習ってないんです」とか言うヤシ多すぎ
・質問してからどこかに行かないで、ちゃんと待っていること。
たまに質問するだけして、レスしても1時間くらい無反応な奴がいる。
・転んでも暴れない
・転んでもキレない
>>718
>>719
>>723
>>725
次回テンプレに入れようぜ。
べつに2chに限ったことじゃなく常識レヴェルなんだが、
常識の無いやつが多すぎるからな
・あっちこっちにマルチポストしない
・授業をまじめに聞く
>>719
>・その問題を解くための常識的な知識を持ち合わせていること。

それがあったらこんなとこに質問しない。
>>731
それ重要
・提出日の前日とかに来て、勝手に切羽詰らない
735646:02/07/04 02:17
http://www.jaist.ac.jp/~n-sakai/i224/rp2/
ここで、http://www.jaist.ac.jp/~n-sakai/i224/rp2/sh3.c
こういうのを見つけました。
解析してみるつもりですが、これで何とかなりますよね?
ってか、やってることは同じですよね?
>>732
intって何ですか?とかほざくアフォに何か教えたいか?
>>687
void histogram(const char* str, int h[])
{
  static const char alphabet[] = "abcde...xyz";
  char *p;
  memset(h, 0, 26 * sizeof(*h));
  while (*str) {
    if ((p = strchr(alphabet, *str++)) != NULL) {
      h[p - alphabet]++;
    }
  }
}
から揚げ食べたい。
>>735
とりあえずgets()はfgets()に汁
>>737
ポインタは習ってないそうです。
>>719-732
今風呂から上がってきました。
こんなスゲー数のレスがついていて嬉しいです。
回答者冥利に尽きますね。
これからも面白い問題には答えて行きますのでヨロスク。
>>741
よろすく。
>>737
>>698 の方法を使わないのはなんで?
>>743
ASCIIでない場合のことを考えているんでしょ。
>>737
結構トリッキーですな。
EBCDICコード体系への対応もばっちりどす。
>>737
const char *alphabet = "abcde...xyz";にしろ。
なんで? >>746
>>747
static const・・・なんて阿呆みたいだから。
そうか?
関数内のローカル変数ならstatic charかconst charのどちらかでいいと思う。
static const charとすると、馬から落ちて落馬して・・・みたいな感じがする。
俺は
static char const alphabet[].
がいいと思うが
>>750
> 関数内のローカル変数ならstatic charかconst charのどちらかでいいと思う。
意味が全然違うじゃん。

>>751
その順序に拘りが?
>>752
C++なら大いにあり得る。
クソ言語たるゆえん。
>>753 順序の話だよね。
なんか違うんだっけ、ちと教えて。
>>754
ポインタ自体をconstにするかポインタのポイント先をconstにするか。
他の言語にはない優秀な機能だけど順番だけで意味が変わるのはどうかと。
>>752
static->変数につける->宣言中で高々1回→前につけてよし
const->型につける->宣言中で複数回登場→前につけるといろいろ困る

const が前のとき
const int a; // const な nit
const int* p; // const な int へのポインタ
const const int* p; // const な int への const なポインタにチャレンジしてみた→(゜д゜)マズー

const が後ろのとき
int const a;
int const* p;
int const* const p; //(゜д゜)ウマウマ
757756:02/07/04 07:06
あ、消えてる・・・

C++でのメンバ関数の const 指定も後ろから行わないとダメだよん

を補完して
>>755-757
>>737はポインタにはしてないんだが。
ひょっとして配列とポインタの区別がついてない?
759751=756:02/07/04 08:08
>>758
あんたの聞き方が悪いだけだろ

拘りが?と聞いたから
constは常に型の後ろから掛けるべきだという俺の拘りを書いたまで
振る舞いに違いが?と聞かれたら
同じ、と答えただろうけどね
単なる拘りということなら漏れは前からつける。
>>760
756を読んだ上でそう思うならそれでいいよ
>>760
あ、でも const なポインタをどう書くのかは興味あるな
俺は、
const C A::hoge(const B const * pb) const;
とか書くが。
>>763
pbがconstになってない
765お願いいたします。:02/07/04 08:38
JAVAの問題なのですが、
配列の問題になってから授業についていけなくなってしまいました。
どなたか教えていただけないでしょうか。

問題
class Reverse {
public static void main(String[] args){
int a[] = new int[10];
int i,j,x;
i=0;
System.out.println("0以上の数を最高10個打ち込め。終わりは-1で表わす");
System.out.print("> ");
x=IO.in.readInt();
while(x >= 0)
{
if(i>=10)System.out.println("10個を超えたので無視する。");
else{ a[i]=x; i++;}
System.out.print("> ");
x=IO.in.readInt();
}
System.out.println("数列を逆順に書くと以下のとおり。");
for(j=i-1;j>=0;j--)
System.out.println(a[j]);
}
}

このプログラム(10個までの数をよみこんで逆順に書き出す)
を書き直して、配列の中で入れ替えをして逆順にし、
かきだすようにせよ。
つまり、まず配列にデータを読み込み、続いて配列の中の要素を入れ替え、
逆順にし、最後にそれを順に書き出すようにせよ。



という問題です。上のプログラムと完成したプログラム、
結果は同じになる、ということはわかっているのですが、
配列の要素の交換をどうやってよいのかがわかりません。
よろしくお願いします。
>>765
交換にこだわるのなら、

a = b[0];
b[0] = b[1];
b[1] = a;


個人的には配列の要素をforループで全部なめて別に用意した配列に逆順に格納。
元の配列の参照に逆順にした配列のインスタンスを入れて返すけどね。
GCバンザイなテクニック。
>>764
const C A::hoge(const B* const pb) const;
だな。寝ぼけてたわ。
ポインタとメンバ関数は後ろから、それ以外は前からかけるの?
全部後ろからに統一したほうがわかりよくない?
769755:02/07/04 09:02
>>766
どうもありがとうございます。
しかし、その交換は変数ひとつに関してですよね?
配列の最初の数と最後の数、最初から2番目と最後から2番目、…
というふうに交換するにはどうしたらよろしいのでしょうか?
ご教授ください。
cの頃はあんまり気にせず前にconst書いてたけど、
c++になってconstを多用するようになったらなるべく後ろで統一させるようにしてる。
たまに癖で前に書いちゃうことがあるけどね。
771デフォルトの名無しさん:02/07/04 09:57
>>770
アフォ
const を正しく理解している人って少ないから、
const を多用すると可読性が低くなる気がする。
漏れは引数や一時変数がその後変更されないことを保障するために
プログラム中の変数はほとんどconstですが、なにか?
俺は最初const無しで書いて変更しないものだったら付け加えてる
>>762
const int *p;
int *const p;
どっちをいってる?

この手のqualifierで戸惑ったことなんてないぞ。
>>769
for(int i = 0; i < arr.length / 2; i++){
 int j = arr.length - 1 - i ; //最後からi番目にあたる添え字の計算
 int tmp = arr[i];
 arr[i] = arr[j];
 arr[j] = tmp;
}
>>769
いっしょだろ?
 最初 ( a[0] ) と最後 ( a[i-1] ) を交換
 2番目( a[1] ) と最後から2番目 ( a[i-2] ) を交換
これを繰り返していけばいいんだ。
ちなみに、index は 0 から i/2 の直前までな。
最後までやると楽しいことになるぞ。
778デフォルトの名無しさん:02/07/04 20:44
外部変数がいまいちよくわかりません。
779デフォルトの名無しさん:02/07/04 20:45
>>778
他のソースファイルで宣言したグローバル変数を参照(使用)する。
780779:02/07/04 20:46
あくまでもCの場合ね。PHPだとクライアントから送られてきたデータが入っている変数だったかな。
言語は何?
externalだがんがれ。
782デフォルトの名無しさん:02/07/04 21:09
2点間の距離を求める問題なのですが、うまくできません。訂正おねがいします。

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

float dist(float a0,float a1,float b0,float b1)
{

float dist ;
dist = (a0-b0)*(a0-b0)+(a1-b1)*(a1-b1);
dist = pow (dist,0.5);
return dist;
}

int main()
{
float a0,a1,b0,b1;
printf("a0=?");
scanf("%f",&a0);
printf("a1=?");
scanf("%f",&a1);
printf("b0=?");
scanf("%f",&b0);
printf("b1=?");
scanf("%f",&b1);

printf("%.2f\n",dist);
return 0;
}
>>782
何が上手くできないかかけ。
と何度も言われ続けてることなんだが、少しは過去ログを読め。
784デフォルトの名無しさん:02/07/04 21:12
こたえが0になる。
>>784
関数の使い方をもう一回勉強しろ
786デフォルトの名無しさん:02/07/04 21:15
よくわからんのれす
788デフォルトの名無しさん:02/07/04 21:20
>>786
そうか。よかったな
>>782
scanf()でうまく数字が読みとれないんだろ?

scanf()を、char buf[128]; gets(buf); sscanf(buf, "%f", &a0); とかに
書き直すと動く。

なぜ元のプログラムがおかしいかというと、最後の改行文字が読み
取られずにしつこくバッファに残ってしまうからだ。
>>782
まず、関数 dist() にどういう値が渡ってきているか、確認しろ。話は
それからだ。
791デフォルトの名無しさん:02/07/04 21:22
>>789
それもそうだけど、
もっと根本的なとこ指摘してやれよ!
>>789
そんな間違いじゃない。
数値だからscanfでもちゃんと読みとれる。
めちゃくちゃ基本的なことがわかってないだけだと思うが。
793791:02/07/04 21:23
>>792
ケコーン汁!
794792:02/07/04 21:24
>>793
ふとどき者ですが、よろしくおながいします。
795791:02/07/04 21:25
>>794
ふとどき者かよ(w
ワラタ
>>789
頼むから、知ったか厨は出てくんなよ。話がややこしくなるから。
797デフォルトの名無しさん:02/07/04 21:26
>>789を叩くすれはここですか?
>>789は前にscanf使うなボケ!と言われた質問者に一票
799デフォルトの名無しさん:02/07/04 21:43
わかんないよーん
800デフォルトの名無しさん:02/07/04 21:44
(´_ゝ`)フーン
関数名とローカル変数名が同じなのはまずダメ。
次に関数の呼び出しがなってない。
802デフォルトの名無しさん:02/07/04 21:54
>>801
>関数名とローカル変数名が同じなのはまずダメ。
(゚Д゚)ハァ?
ここにはこんな簡単な間違いがわからないやつらがそろってるのか・・・?
>>802>>803 ヲイヲイ・・・・・

↓こりゃやっぱダメだろ。。。。
float dist(float a0,float a1,float b0,float b1)
   ~~~~
{
float dist ;
   ~~~~
>>782
何が悪いのかわからないのならmain関数のみで作れ。
>>804
たしかに紛らわしくて勧められたもんではないが、問題はそんなところではない。
807デフォルトの名無しさん:02/07/04 22:03
えと、4日前学校ででた宿題なんですが
「正の数をキーボードから一つ読み込みおからその数までのすべての素数と
その素数の個数をディスプレイ画面に表示するフローチャートを描け」
なんですけれども、自分でやったんですけれども全然わからなくて(;´Д`)
房な質問ですみません・・・
808デフォルトの名無しさん:02/07/04 22:04
関数返しの方法でつくらなあかんのよ。
>>804
質問者の希望の動作をさせるだけなら問題はない。
>読み込みおからその数まで
漏れも全然わかんない。
>>808
で、教科書か紹介されたリンク先は読んだのか?
812デフォルトの名無しさん:02/07/04 22:05
>>804
だからもっと根本的な床指摘汁!

>>808
そうか。じゃあそういう仕様でつくれ。
813デフォルトの名無しさん:02/07/04 22:07
読んだけどわかんないっす。
教科書はほんま意味不明。
>>813
はっきり言おう。

あ・き・ら・め・ろ。
>>804
スコープって知ってる?
817デフォルトの名無しさん:02/07/04 22:16
>>804
ま た 知 っ た か か
818デフォルトの名無しさん:02/07/04 22:20
いや、それはわかる
>>782
printf("%.2f\n",dist);

printf("%.2f\n",dist(a0,a1,b0,b1));

よく確認しろ
>読み込みおからその数まで
ひょっとして、
読み込み0からその数まで
だったりシテ……
821デフォルトの名無しさん:02/07/04 22:31
>>819
うそつくな
822デフォルトの名無しさん:02/07/04 22:33
>>819
ほんとうそつきだなおまえは
>>820
だとしたら割れガキケテーイ。
>823
そういう発想が出るヤツの方が(略
825デフォルトの名無しさん:02/07/04 22:50
if ( ( fclose ( fp ) ) ) !=0 ) {
printf("Can't close");
exit(1);
}
↑を関数化したいんすけどできますか?
>>825
出来ない理由はないです。
827825:02/07/04 22:52

int FileClose (FILE *fp) {
:
:
}
とかにするんすか?
>>827
as you like
829825:02/07/04 22:54
>>828
えっ!?
827でいいんすか??
void kansu(void){
  if ( ( fclose ( fp ) ) ) !=0 ) {
    printf("Can't close");
    exit(1);
  }
}

できますた!
>>830
どう笑えばいいの?
>>807
関数返しってのがわからんが、いちおうサンプル

読み込む Nに代入
 ↓
C=0
P=2
 ↓
1:
PがNより大きい 真→ 2へ
 ↓偽
Cを1増やす
Pを書く
Pの次の素数を求める Pに代入
 ↓
1へ

2:
Cを書く
終了

:Pの次の素数を求める
3:
Pを1増やす
 ↓
Pが素数 偽→ 3へ
↓真
Pを返す

:Pが素数
Q=2
 ↓
4:
PがQ*Qより小さい 真→ 真を返す
 ↓偽
PがQで割れる 真→ 偽を返す
 ↓偽
Qの次の素数を求める Qに代入
 ↓
4へ
833825:02/07/04 22:58
ウーン
厨なもんで・・・
みなさんすごいっすねぇ
プログラミングって難しいっす
>>831
関数化できてるからいいんじゃないの ? fp は、多分グローバルなんだよ。

ヴァカは、放置するしかないよ。後は、そう言う奴が自分の周りにこないことを
祈るしかないね。
>>834
お前のそばに行きたくないってことは確かだろうな。
836807:02/07/04 23:18
>>832さん、どうもありがとうございます^^
これを元にしてやってみます〜
837デフォルトの名無しさん:02/07/04 23:25
#include<stdio.h>
#include<math.h>

float dist(float*,float*);
float abc;

float dist(float a[1],float b[1])
{
abc = (a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1]);
abc = pow(abc,0.5);
return abc;
}
main()
{
float a[1],b[1];
printf("a[0]=?");
scanf("%f",&a);
printf("a[1]=?");
scanf("%f",&a);
printf("b[0]=?");
scanf("%f",&b);
printf("b[1]=?");
scanf("%f",&b);

abc = dist(a[1],b[1]);

printf("%.2f\n",abc);
return 0;
}


今度はポインタつかったやつ。
 
abc = dist()
のところがわからないっす
>>837
最初の方がよかったな。
今度はつっこみどころが・・・
>>837
abc = dist(a,b);

その脳みそじゃ大変だな
>>837
えーと、ダメになったとこ。

> float dist(float*,float*);
> float dist(float a[1],float b[1])
これは意味が違う。

> float a[1],b[1];
[1]だと要素は一個だけ。

> printf("a[0]=?");
> scanf("%f",&a);
> printf("a[1]=?");
> scanf("%f",&a);
どこに書き込もうとしてる?

それと>>839

ふぅ。疲れる奴だな。
>>782は寝ぼけてるのかと思ったが、>>837を見て真性だと気づきました。
>>837ってコンパイルエラーでてるだろ。
842デフォルトの名無しさん:02/07/04 23:52
>>840
でけたwさんきゅう

>>841
昨日からはじめたんで、まだまだっすw
>>837
とりあえずコンパイラ通して、そのエラーメッセージを頼りに
自力で修正してみろ。
>>843
お前はログを読めるように日本語の勉強しろ。
845デフォルトの名無しさん:02/07/05 16:49
JAVA(サーブレットやJSPも含む)やXMLを使った
webアプリケーションで
何かいいアプリケーションってありませんか?
こんなのあったらいいなのでもいいので。
>>845
就職板に帰れ。
847デフォルトの名無しさん:02/07/05 17:05
なぜ就職板?
>>847
551 名前:就職戦線異状名無しさん 投稿日:2002/07/05(金) 10:18
誰か頭の切れる人教えて!!
XML JAVA データベース サーブレット などを使って新しいWebアプリケーション
を考えたいのですが何かないですかね?



552 名前:就職戦線異状名無しさん 投稿日:2002/07/05(金) 11:01
>>551
取りあえずお前はその技術達を理解しているのかと問いたい。
JavaとServletを敢えて別に離して書いた理由も聞きたい。
>>845
リアルタイムで人生相談してくれるアプリケーションがあったらいいなー。
>>849
シーマン。
851デフォルトの名無しさん:02/07/05 17:23
>>848
どのスレですか。
ちなみに就職板に書いたのは俺ではありません。
SE志望でまだ内定ない人●持ち駒ナッシン ver.4
http://school.2ch.net/test/read.cgi/recruit/1025182470/l50
853デフォルトの名無しさん:02/07/05 17:28
こんばんは!

WMIクラスを使って、CPUの温度とパケットの流れなどを監視したいのですが、
CIM、WIMをMSDNで探して見て実際にデータを取得したりしましたが
うまくできません。

クラスとプロパティ どなたか知っている方おられませんか?
854FORTRAN:02/07/05 18:12
なのですが、ファイルから数値データを取り出すときにどうしても始めの数字から
読み出してしまいますよね?それを、どうしても途中の数字から読み始めたいのですが
どのようにすればよいですか?
フォートランって、ファイルのシークできんの?
856FORTRAN:02/07/05 18:32
>>855
まだ始めたばかりなのでよく分かりません(シーク)
一番目から十番目のデータと十一番目から20番目のデータを
別々の配列に格納したいんですよ。
857デフォルトの名無しさん:02/07/05 23:22
10×10の配列Aの要素をキーボードから入力し、Aの4乗を計算し、結果を
表示するプログラムなんだけど、書いててもうわけわかんなくなっちゃいました。
間違えているのは確実なんでどこが間違えているのか教えてください。
お願いします。ちなみにPascalです。

begin
{10×10配列要素の読み込み}
for i:= 1 to 10 do begin
for j:= 1 to 10 do
read(A[i,j]);
readln;
end;

{配列の初期化(単位行列 C の作成)}
for i:= 1 to 10 do begin
for j:= 1 to 10 do
C[i,j] := 0.0;
C[i,i] := 1.0;
end;

{A の4乗の計算処理}
for k:= 1 to 4 do begin
for i:= 1 to 10 do begin
for j:= 1 to 10 do begin
B[i,j] := 0.0;
for m:= 1 to 10 do
B[i,j] := B[i,j] + C[i,m] * A[m,j];
end;
end;
for i:= 1 to 10 do
for j:= 1 to 10 do
C[i,j] := B[i,j];
end;

{計算結果の表示}
for i:= 1 to 10 do begin
for j:= 1 to 10 do
write(C[i,j]:10:3);
writeln;
end;

end.
>>857
単位行列をかけたら対角行列になっちゃうよ。
4乗を計算するのなら、2乗の2乗でいいでしょ。
859デフォルトの名無しさん:02/07/06 00:15
>>858
2乗の2乗は他のべき乗に対応させやすいように避けたいです。
空白を半角にしてしまい見づらくてすみません。
なんのこっちゃい。行列積ABの関数を作って
それを何回か呼び出すだけだろう
861デフォルトの名無しさん:02/07/06 00:25
>>856
いったん全部配列に読み込んで、それから処理すれば?
>>860
うむ。
B = A * A;
B = B * A;
B = B * A;
とやれば4乗になるのう。って当たり前か。
>>857
何も間違っていないような
>>858
単位行列をかけても対角行列にはならんだろ。
AE=EA=Aで、何も変わらない。
865857:02/07/06 01:19
みなさん、お手数おかけしました。
無事完成しました。
ありがとうございました。
866デフォルトの名無しさん:02/07/06 02:32
int* pointer = new int[10];
delete pointer;
は最初のポインタしか削除しないということを読んでのですが、
逆に
int* pointer = new int;
delete [] pointer;
は何か弊害があるのでしょうか?
>>866
もちろん。配列として削除しようとするわけだから、配列のサイズを
記憶しているであろうと思われる領域にアクセスし、読み出す。
次にそのサイズで削除する。

変な領域の読み出し、そこに何が書かれているかわからない事
(サイズがメチャクチャ)、もしかしてリードオンリー領域かもしれない
事など、危険がイパーイ。
868867:02/07/06 02:57
ありがとうございます。
うまく一緒に使いたかったのですが、
かなり危険がイパーイですね。

int* pointer = new int[1];
とか怪しい方法でやってみたいと思います
869デフォルトの名無しさん:02/07/06 12:05
この問題さっぱりわからないので教えてください。
言語はCです。

10進数1桁の4個の数A,B,C,Dを与えられたとする。
(1)op1,op2,op3は四則演算のどれかを表すものとする(2つ以上が同一でも可)
(2)A op1 B op2 C op3 D == 10 という式が成り立つかを調べる
(3)成り立つ場合は[1+2+3+4=10]のように成り立つ式を表示する
>>869
4の4乗で16通りが考えられる。
ループ回して工夫するのが吉。

こう言うときOOの多様使えば便利な気がした。

class op
{
virtual int operate(int,int)=0;
}

class plass:public op
{
int operate(int a,int b)
{
return a + b;
}
}
}



4の4乗が16か・・・
>>871
自分で読んで愕然となった(泣)。

256ですな・・・。
873hint>>869:02/07/06 12:21
static char tbl[]="+-*/" ;
int sub(a,b,c,d,op1,op2,op3)
{
/*ここになんかいれる*/
}
main()
{
int a,b,c,d,op1,op2,op3;
for(a=1;a<10;a++)for(b=1;b<10;b++)for(c=1;c<10;c++)for(d=1;d<10;d++)
for(op1=0;op1<4;op1++)for(op2=0;op2<4;op2++)for(op3=0;op3<4;op3++)
if(sub(a,b,c,d,op1,op2,op3))
printf("%d %c %d %c %d %c %d \n",a,tbl[op1],b,tbl[op2],c,tbl[op3],d) ;
return 0 ;
}

a,b,c,d が互いにちがう場合は、あそこをああ変える。
>>873
A B C Dは固定でないんかい?
875873:02/07/06 12:27
>>874
ごめん問題読み間違えた・・・

>>875
でも、これが完成するとかなりおもしろい物がコンソールを駆け抜けていくかと。
ちょっと見てみたいw
>>870-872
つーか3乗だろ
878デフォルトの名無しさん:02/07/06 12:34
>>873
ヒントどもです。
ですが実のところ /*ここになんかいれる*/ の部分が
わからず悩んでいたのが実情でして・・・
そこのところをもう少し教えてもらえないでしょうか?

>>874
固定ですね。
879873:02/07/06 12:36
3の4乗だと俺は思うが・・・
>>879
鯖食べたら気分悪くなった・・・。
881873:02/07/06 12:46
さらにこんなサブルーチンをつくる
int ope_たす(num0,num1)
int ope_ひく(num0,num1)
int ope_かける(num0,num1)
int ope_わる(num0,num1)

んでsubの中で op?を判定して*とか/とか優先的に処理させて
上の関数に与えていく。

おわり
>>881
いっそ関数ポインタで・・・具ハァ。
>>882
知恵は浅いぞ、しっかりしる!!
乗除算を優先する、とすると面倒だなぁ。
いっその事

 sprintf(ex, "set noglob; expr %d %c %d %c %d %c %d", a, op1, b, op2, c, op3, d);
 fp = popen(op, "r");
 fgets(result, sizeof(result), fp);
 fclose(fp);
 return (atoi(result) == 10);

とかしたいなぁ。
>>884
UNIX的には正解だけど宿題的にはアウトだね。
でも、アイデア賞として何かくれるかも知れない。
886884:02/07/06 13:24
あ、あれ??

× fp = popen(op, "r");
○ fp = popen(ex, "r");
887884:02/07/06 13:38
優先順位を考えなければ、
数値を int val[4]、演算子を char op[3] に突っ込んで

 int ret = val[0];
 for (i=0; i<3; i++)
  switch (op[i]) {
   case '+': ret += val[i+1]; break;
   case '-': ret -= val[i+1]; break;
   case '*': ret *= val[i+1]; break;
   case '/': ret /= val[i+1]; break;
  }
 return ret == 10;
力業でやってみました。

#!/bin/sh
cat <<EOF
#include <stdio.h>
try(a, b, c, d)
{
EOF
for o1 in + - '*' /; do for o2 in + - '*' /; do for o3 in + - '*' /; do
if [ "$o1" = "/" ]; then echo "if (b)"; fi
if [ "$o2" = "/" ]; then echo "if (c)"; fi
if [ "$o3" = "/" ]; then echo "if (d)"; fi
echo "if (a $o1 b $o2 c $o3 d == 10) pans(a,b,c,d,\"$o1$o2$o3\");"
done done done
cat <<EOF
}
pans(a, b, c, d, p)
char *p;
{
printf("[%d%c%d%c%d%c%d=10]\n", a, p[0], b, p[1], c, p[2], d);
}
main()
{
int a,b,c,d;
for (a=0; a<=9; a++) for (b=0; b<=9; b++)
for (c=0; c<=9; c++) for (d=0; d<=9; d++)
try(a, b, c, d);
}
EOF
889869:02/07/06 14:01
>>873,884
結局優先順位とか考えるとひたすら分岐させていくことに
なるんですかね?
とりあえず今それで挑戦してますが。

>>888
すみません。自分はヘタレなんでそのプログラムが
何をしているのかがわかりませぬ・・・
すげえ見づらいコードがあった
しね糞が
891スピード優先。:02/07/06 14:06
bool 判定(A,B,C,D)
{
if(A+B+C+D!=10) if(A+B+C-D!=10) if(A+B+C*D!=10) if(A+B+C/D!=10) if(A+B-C+D!=10)
if(A+B-C-D!=10) if(A+B-C*D!=10) if(A+B-C/D!=10) if(A+B*C+D!=10) if(A+B*C-D!=10)
if(A+B*C*D!=10) if(A+B*C/D!=10) if(A+B/C+D!=10) if(A+B/C-D!=10) if(A+B/C*D!=10)
if(A+B/C/D!=10) if(A-B+C+D!=10) if(A-B+C-D!=10) if(A-B+C*D!=10) if(A-B+C/D!=10)
if(A-B-C+D!=10) if(A-B-C-D!=10) if(A-B-C*D!=10) if(A-B-C/D!=10) if(A-B*C+D!=10)
if(A-B*C-D!=10) if(A-B*C*D!=10) if(A-B*C/D!=10) if(A-B/C+D!=10) if(A-B/C-D!=10)
if(A-B/C*D!=10) if(A-B/C/D!=10) if(A*B+C+D!=10) if(A*B+C-D!=10) if(A*B+C*D!=10)
if(A*B+C/D!=10) if(A*B-C+D!=10) if(A*B-C-D!=10) if(A*B-C*D!=10) if(A*B-C/D!=10)
if(A*B*C+D!=10) if(A*B*C-D!=10) if(A*B*C*D!=10) if(A*B*C/D!=10) if(A*B/C+D!=10)
if(A*B/C-D!=10) if(A*B/C*D!=10) if(A*B/C/D!=10) if(A/B+C+D!=10) if(A/B+C-D!=10)
if(A/B+C*D!=10) if(A/B+C/D!=10) if(A/B-C+D!=10) if(A/B-C-D!=10) if(A/B-C*D!=10)
if(A/B-C/D!=10) if(A/B*C+D!=10) if(A/B*C-D!=10) if(A/B*C*D!=10) if(A/B*C/D!=10)
if(A/B/C+D!=10) if(A/B/C-D!=10) if(A/B/C*D!=10) if(A/B/C/D!=10)
return false;
return true;
}
>>891
自動生成したのでないならあんたはアフォだw
893891:02/07/06 14:10
スピード優先はウソです、すみません。
可読優先です(?
894891:02/07/06 14:12
static const char 四則演算子[]="+-*/" ;
main()
{
intii,jj,kk ;
for(ii=0;ii<4;ii++)
for(jj=0;jj<4;jj++)
for(kk=0;kk<4;kk++)
printf("if(A%cB%cC%cD!=10) ",
四則演算子[ii],四則演算子[jj],四則演算子[kk] ) ;
}
こんな感じ。
>>893
それって可読なのか・・・・
済みません、全部Cで解くんですね。
Cで書き直しました。相変わらずエレガントさのかけらも
ありませんが。。。

#include <stdio.h>
main()
{
char *ops="+-*/", *op1, *op2, *op3;
printf("#include <stdio.h>\ntry(a, b, c, d)\n{\n");
for (op1=ops; *op1; *op1++)
for (op2=ops; *op2; *op2++)
for (op3=ops; *op3; *op3++)
{
if (*op1=='/') printf("if(b)");
if (*op2=='/') printf("if(c)");
if (*op3=='/') printf("if(d)");
printf("if(a%cb%cc%cd==10)", *op1, *op2, *op3);
printf("printf(\"[%%d%c%%d%c%%d%c%%d=10]\\n\", a, b, c, d);\n", *op1, *op2, *op3);
}
printf("\n}\nmain()\n{\n"
"int a, b, c, d;\n"
"for (a=0; a<=9; a++) for (b=0; b<=9; b++)\n"
"for (c=0; c<=9; c++) for (d=0; d<=9; d++)\n"
"try(a, b, c, d);\n"
"}\n");
}
897893:02/07/06 14:23
>>895
自分的には・・・
898デフォルトの名無しさん:02/07/06 15:35
今回のCマガの問題、難しいね
>>898
どんな問題よ?
900デフォルトの名無しさん:02/07/06 20:58
隔離スレはたまにはあげんとね。
単発質問禁止age
902デフォルトの名無しさん:02/07/07 21:49
>>869
発想の転換で10を4つの数に分解していったら
効率的なんじゃないの?
四則演算なんだから逆算は簡単だし。
括弧とかも許すやつなら、昔宿題で書いた記憶あるなぁ。
904DQN:02/07/08 02:20
先生にstrstrとstrtolを書いて来いって言われたんだけどどーすりゃいいかね
書くしかないだろな
>>906
やさしいのね。
>>906
strstr()の内部でstrncmp()とか使ってるから、こういう関数も使うなと
先生に言われるかもね。
909デフォルトの名無しさん:02/07/08 19:16
次スレは?
950くらいになってからでいいんじゃない?
911デフォルトの名無しさん:02/07/08 19:35
3×3行列A×行列Bを出力するプログラムを教えてください。
for文を使えばできるみたいなんですけどわかりませんので・・・。
よろしくお願いします。
>>911
行列の掛け算自体は知っているのかい?
そうだな。
914911:02/07/08 19:43
>>912
わかんないです・・・
>>914
先に数学の勉強した方がよろしいのでは?
>>914
線形代数やりなおせ
917911:02/07/08 19:47
ガウスジョルダン法でやるんですか?
プログラム技術以前のことは板違いですね。
>>917
ネタだと思うが、それは掃き出し法では?
920911:02/07/08 19:54
ネタじゃないです
>>911
学校で習わなかった?教科書持ってない?
922911:02/07/08 19:56
>>912
すいません、C言語で行列の計算ができないの間違いです。
行列の計算はできます。
>>922
じゃあ、式は書けるんだな。
それをmainの中に書いてみろ。
>>923
そう苛めてやるなよ。

> ガウスジョルダン法でやるんですか?

とか言ってる時点で分かってないことがバレバレなんだからさ。
今頃必死になって教科書を見直してるんだよ >>911 は。
925911:02/07/08 20:32
#include<stdio.h>
void main()
{
int mat[3][3],a,b,c,d;
for(a=0;a<3;a++)
{
for(b=0;b<3;b++)
{
printf("mat[%d][%d]=",a,b);
scanf("%d",&mat[a][b]);
}
}

for(c=0;c<3;c++)
{
for(d=0;d<3;d++)
{
printf("mat[%d][%d]=",c,d);
scanf("%d",&mat[c][d]);
}
}
}
ここまではあってます?
>>925
何があってるのかあってないのかがわからん。
>>925
多分間違ってはいないからつづけてください
925のやと、なぜforの二重ループが2つあるのかが不明ダナ……
929911:02/07/08 20:40
行列の掛け算てfor文でやるんですか?
3次元同士ならfor使わんでもやれるが、forを使えば次数を変えたとき
対応が楽。どちらでもお好きなほうで
931911:02/07/08 20:46
>>930
forを使わないとかなり大変じゃないですか?
>>931
そう思うなら、forを使いなされ。
933911:02/07/08 20:54
>>932
誰かヒントください。
>>933
2次正方行列同士の積を、for使わずに書いてみてよ
>934
一瞬テンプレートで生成できないか
考えてしまったではないか。
936911:02/07/08 21:25
>>934
できない・・・
937デフォルトの名無しさん:02/07/08 21:30
このファイル はCで書かれたプログラムの断片です.
これを理解しやすい形に書き改めなさい.
こういうのがありますが、全然わかりません。何をしたいプログラムか、どういう点が「理解しずらい」のか、「理解しやすい形にする」という観点で、
ヒントだけでも教えていただけませんか?
ソースは>>936に書きます。
>936

C = A x B (2次元)

としたとき

C[0][0] = A[0][0] x B[0][0] + A[0][1] x B[1][0]
C[0][1] = A[0][0] x B[0][1] + A[0][1] x B[1][1]
C[1][0] = A[1][0] x B[0][0] + A[1][1] x B[1][0]
C[1][1] = A[1][0] x B[0][1] + A[1][1] x B[1][1]


939デフォルトの名無しさん:02/07/08 21:31
while(A) {
if(B) continue;
C;
}

do {
if (!A) continue;
else B;
C;
} while(A);

if(A)
if(B)
if(C) D;
else ;
else ;
else
if(B)
if(C) E;
else F;
else;

while( (c=getchar()) != '\n') {
if( c==' ') continue;
if( c=='\t') continue;
if( c<'0') return (OTHER);
if( c<='9') return (DIGIT);
if( c<'a') return (OTHER);
if( c<='z') return (ALPHA);
return (OTHER);
} return (EOL);


done=i=0;
while( i<MAXI && !done) {
if( (x/=2)>1) {i++; continue;}
done++;
}

{
if(A) {B; return;}
if(C) {D; return;}
if(E) {F; return;}
G; return;
}

plusflg=zerolfg=engflag=0;
if(a>0) ++plusflg;
if(a==0) ++zeroflg;
else if(!plusflg) ++negflg;
941デフォルトの名無しさん:02/07/08 21:32
>>939の続きです。
i=0;
while( (c=getchar()) != EOF) {
if(c!='\n' && c!='\t') {s[i++]=c;continue;}
if(c=='\n')break;
if(c=='\t')c=' ';
s[i++]=c;}

if(x!=0)
if(j>k) y=j/x;
else y=k/x;
else
     if(j>k) y=j/NEARZERO;
else y=k/NEARZERO;
942937:02/07/08 21:33
ごめんなさい、>>939>>941です。
どうかよろしくお願いします。
|a b ||e f |  |ae+bg af+bh |
|c d ||g h| = |ce+cg cf+dh |

というか、コレを理解していれば
簡単に作れるのではなかろうか。
944938:02/07/08 21:35
なんかコメント欲しかった。
>>943
ちなみに行列式のように見えるが、行列の積ということにしておいてくれ
946911:02/07/08 21:39
>>938
ありがとうございます。
3次元の場合は長くなりますけどなんかいい方法ないですか?
>>946
まず、2次元の場合をforで書き直す。
(それから3次元に拡張すればよいので)
>946
A * B なら、Aの要素は縦に、Bの要素は横に見ていく
>948
ごめん、逆
950937:02/07/08 21:49
誰か、、、HELPぅー
>>911
ところでさ、 >>925 では 3*3 の正方行列同士の積しか
考えてないようだけど、やりたいのは 3*3 の正方行列A と、
ある行列B との積なんでしょ?
>>950
インデントすれば見やすくなるんじゃない?
>>952
そういう問題か (w
954911:02/07/08 22:00
>>951
そうだった・・・。
955デフォルトの名無しさん:02/07/08 22:02
>>765

for(i=0 ; i>(i+1)/2 ; p++)
j=a[p];a[p]=a[i-p];a[i-p]=j

でいいんじゃん?
956937:02/07/08 22:02
>>952
レスありがとうございます。
インデントはもともとされてるんです。
コピペした時に、ずれちゃったようで・・・
ソースはこちらです。
ttp://mitss5.mit-s.otaru-uc.ac.jp/ss/puzzle4.c

答えを教えてくれ、なんて都合のいいことはいいません。
ただ話の取っ掛かりだけ、「理解しやすい形」という方向性だけ教えていただけませんか?
(本当は答えも教えてくれると助かるけど、それじゃ力になりませんものね(苦笑))
>>954
A[3][3] * B[3][X] = C[3][X]
あんまり気にしなくても良いと思うがな
そろそろ新スレの時期?
前にでてきた>>719-732あたりはテンプレにいれるの?
登場人物の相関図って昔つくってなかったけか。
>>959
誤爆?
961937:02/07/08 22:09
すみません、今になって>>719-732のテンプレ読ませていただきました。
わかると思いますが、もう一度書きます。
>>956はCで書かれたプログラムです。
自分の実力は、、、全然ないんです(汗
大学の授業でCをやってるのですが、とにかく変な授業で、
履修している学生が全くプログラム関係をやるのが初めてなのに、
ろくに文法も説明せず、たんたんと演算式ばかりやっています。
そして出た宿題がこれで。。。
962957:02/07/08 22:10
分かっているとは思うが、意味を取り違える可能性のある
書き方だったので書き直しとく。

(3*3)の行列A × (3*X)の行列B = (3*X)の行列C
>>959これ?
http://pc.2ch.net/tech/kako/1007/10079/1007902384.htmlより
938 名前: デフォルトの名無しさん 投稿日: 02/01/22 21:48

登場人物&過去スレ

●お姉さん
あなたの宿題、お姉さんが答えます
http://piza.2ch.net/tech/kako/972/972032579.html
で登場。

●麻衣
お兄ちゃんの宿題、私が答えるよ
http://pc.2ch.net/tech/kako/982/982853418.html
で初登場。可愛い妹キャラ

●お兄ちゃん(名称不明)
宿題見てやるよ
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
で初登場。しかし、女性がいいという影の圧力により
1以外には登場せず。

●怜
宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
で初登場。お兄ちゃんの恋人。
結構親切に答えてくれる年上キャラ。

>>961
>>718を読め。
964911:02/07/08 22:18
あ〜〜いくらやってもエラーです。
誰か教えて下さいよ〜。
>>963
追記
●えれな
宿題、手伝おっか?
http://pc.2ch.net/tech/kako/1011/10117/1011722640.html
で登場。お兄ちゃんのおさななじみ

●美砂子
あらあら、宿題なのね
http://pc.2ch.net/test/read.cgi/tech/1020785918/
で登場。えれなの母。持病で急死

●恭祐
ほう、宿題とはな。
http://pc.2ch.net/test/read.cgi/tech/1024592344/l50
で登場。えれなの父。美砂子の旦那。
>>964
そのソースを書いてみ
女キャラがいいという意見が多いから、次はえれなの姉妹とか?
名前は香苗(個人的願望)
・質問内容がちゃんと日本語になっていること。
・自分で頑張る意志、もしくは自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
・できれば、自分の実力を書くこと

こんくらい?
>>968
・言語名を入れること
・マルチポストしない
ソースを書き込むとき、TABを全角空白数文字分と
置換するなどして見やすくして欲しい
誰かまとめてみませんか?(けっこう大変そう)
美砂子さんって恭祐さんが現れたあとに、他板でQAスレ作ってたね。
ホントは離婚なんだろう。えれなちゃんが「私って捨てられたんだ」
とかいじけないように死んだことになっているんだろうな。と、話を進めてみる。
973937:02/07/08 22:33
>>965
頑張ってみます。
教えてぽーんっ★








ダメジャン
>>973
氏ね
975デフォルトの名無しさん:02/07/08 22:37
>>939
なんとなく分かってきた・・・
空行で区切られている部分ごとが1つの問題になっている訳ね。

while(A) {
    if(B) continue;
    C;
}

だったら

while(A)
    if(!B) C;

に変換できるとか。

それにしても、こんな下らん問題ばっか考えてる講師の
授業受けてる学生は可哀相だな。

そんな事してたって、何の役にも立たんぞ。
そんな学校やめちまえ。
976デフォルトの名無しさん:02/07/08 22:40
美砂子さんの妹登場がうれしいな。

>>937
たとえば、こっちのほうがわかりやすいかな。
とかそんな感じなんじゃないの?
if (A) {
  if (B && C)
    D;
}
else if (B) {
  if (C)
    E;
  else
    F;
}
リファクタリングの講義であるとかごまかしてそうだ。
978911:02/07/08 22:57
>>975
俺はわかってこない
>>978
誰よ?オマエ
>>979
911じゃね?
>>980
誰よ?オマエ
>>978
すげー大雑把に言えば、「セミコロンを減らせ」って
問題だと考えていいと思うが。
>>982
行列の問題で? (w
984937:02/07/08 23:13
>>975
>空行で区切られている部分ごとが1つの問題になっている訳ね。
そうでしたか(汗
それすらもわからないという罠。
もうダメかなぁ。
とりあえず文法書買ってきて眺めてますが、全然理解できない。
演算子と演算練習しかやってないのに、どうしてこんな問題出すかなぁ。
>>984
いつ提出よ?
>>984
ダメダメなのは講師だという罠。

・・・いや、マジで。
        ☆ チン  〃  Λ_Λ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄| 
988かおる:02/07/08 23:21
次スレたてました。

宿題とか手伝えます
http://pc.2ch.net/test/read.cgi/tech/1026138039/l50
989937:02/07/08 23:22
>>985
提出は金曜日です。
今までの講義は、「Cパズルブック」という本で、
演算パズル系の問題しかやっていません。
今回の宿題のレベルがどれくらいかわからないですが、
今から文法を学んでも間に合わない!?
埋めるか。
1000取り合戦
マターリ
マターリ993
マターリ
マッタリ
マターリ996
人いない?
マターリ
マターリ
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。