08/12/03 23:19:16
>>1乙
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 08/12/04 正午
33行目からのint btree_find内で2分探索木にないデータを打ったとき早々にNo.で
探索を終了させるようにしたいのですがどう書いたらいいんでしょうか?
実行結果の例は
Input number: -20
*****No.
になっています
int btree_findの訂正をお願いします。
3:デフォルトの名無しさん
08/12/03 23:47:21
>>980
URLリンク(kansai2channeler.hp.infoseek.co.jp)
4:デフォルトの名無しさん
08/12/04 00:18:59
前スレ スレリンク(tech板)
>>988
問題文だけ読んだら
./cal 5 + 6 [Enter]
11
./cal 8*7 [Enter]
56
とかいう感じのプログラムを想像した
5:デフォルトの名無しさん
08/12/04 00:29:52
>>2
int btree_find(int root, int *data, int *left, int *right, int num)
{
printf("*");
if (root != -1) {
if (data[root] == num)
return 1;
if (data[root] < num){
if (btree_find(right[root], data, left, right, num) > 0)
return 1;
return 0;
} else {
if (btree_find(left[root], data, left, right, num) > 0)
return 1;
return 0;
}
}
return 0;
}
btree_print よくできたね
勉強になったわ
6:デフォルトの名無しさん
08/12/04 00:30:51
前スレの914の者です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
前半の部分はできたのですがbtree_find()の改良がうまくいかないので誰か助けてください。
お願いします。
7:デフォルトの名無しさん
08/12/04 00:33:12
前スレ>>988はテンプレ無視してるだけでなく、過去レスすら見てないな。
前スレ>>958-959に問題と答えある。全く同じ課題。H大学。
8:デフォルトの名無しさん
08/12/04 00:46:39
>>2,6
おまいら別人?
見た感じ同じ課題か
なんかこういうことでないかと思うが。
int btree_find(int root, int *data,int *left,int *right,int num)
{
int hoge = data[root];
printf("*");
if (root == -1)
return 0;
if(hoge == num)
return 1;
if (hoge > num)
return btree_find(left[root],data,left,right,num);
return btree_find(right[root],data,left,right,num);
}
9:8
08/12/04 00:48:28
あ、ごめん
解答済みだったか・・・
10:2
08/12/04 00:58:01
>>5
ありがとうございます。
>>8
どうみても同じ大学です。本当にありがとうございました。
11:デフォルトの名無しさん
08/12/04 02:01:43
>>926
881で質問した者です。解いていただいて本当にありがとうございます。
ただ、[5] のその他の制限の通りwhileのループを用いないといけないのですが、
教えていただけますでしょうか。(まだfor whileの導入が終わった段階なので)
重ね重ねもうしわけありません。
12:デフォルトの名無しさん
08/12/04 02:47:50
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・シーザー暗号を作成するプログラムを作る
・シーザー暗号
-アルファベットを一定文字数だけ順方向にずらして暗号を作成
・英小文字のみからなる単語と鍵(何文字ずらすか)を入力するとシーザー暗号を作成するプログラムを作成せよ
実行例
単語を入力してください
zoo ↓
鍵となる整数を入力してください
1 ↓
暗号は app です.
単語を入力してください
crypt ↓
鍵となる整数を入力してください
10 ↓
暗号は mbizd です.
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月8日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
お願いします。
13:デフォルトの名無しさん
08/12/04 02:51:25
Visual C++でコマンドライン入力ってできる?
14:デフォルトの名無しさん
08/12/04 03:21:24
>>12
当方の環境は cygwin/WindowsXP, 処理系は 3.4.4 です。
一行入力に fgets() を使いました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>13
コマンドラインアプリだと思うのですが。
>>スレリンク(tech板:944番)
こんどはどうですか?
15:前スレ975
08/12/04 03:37:38
>>984
ありがとうございました。
16:デフォルトの名無しさん
08/12/04 08:17:16
>>13
引数にしたいってこと?
それともビルドをDOSでやりたいの?
17:デフォルトの名無しさん
08/12/04 09:41:22
>>12
#include <stdio.h>
#define N 256
int main(void)
{
char str[N];
int key;
int i;
printf("単語を入力してください "); scanf("%s", str);
printf("鍵となる整数を入力してください "); scanf("%d", &key);
printf("暗号は ");
for (i = 0; (i < N) && (str[i] != '\0'); i++)
putchar('a' + (str[i] - 'a' + key) % 26);
printf(" です.\n");
return 0;
}
18:デフォルトの名無しさん
08/12/04 11:03:19
>>12
URLリンク(kansai2channeler.hp.infoseek.co.jp)