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

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

C/C++の宿題やらせてください。8代目。

1 :デフォルトの名無しさん:03/06/08 16:22
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m

7代目: (前スレ)http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50
6代目: http://pc2.2ch.net/test/read.cgi/tech/1053045530/l50
5代目: http://pc2.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc2.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc2.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

ラウンジ:質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

2 :デフォルトの名無しさん:03/06/08 16:24
>>1


3 :デフォルトの名無しさん:03/06/08 16:44
おぽんぽん

4 :デフォルトの名無しさん:03/06/08 18:21

「n個の自然数(3桁[100-999]をランダムで作る。nはプログラム実行時に入力する。」
「関数実行にかかった時間を計測する(void bubble等)」

問題の一部なのですがここだけお願いします。

5 :デフォルトの名無しさん:03/06/08 18:26
>>4
timeとかclockとか使えばできるよ。

6 :5:03/06/08 18:28
あ、2つの文は別の要件なのか。
でも、上の条件満たす方法すらわからないようなら、
プログラムなんてやめちゃえ!

7 :デフォルトの名無しさん:03/06/08 18:30
>>4
そんまえにランダムになんて作れんべ

8 :デフォルトの名無しさん:03/06/08 18:32
>>7
/dev/urandomから取り出せばOK

9 :デフォルトの名無しさん:03/06/08 18:42
>>4
乱数の品質が悪くてよければ
#include <stdio.h>
#include <stdlib.h>
int main(void) {
 int i;
 char buf[16];
 if (fgets(buf, sizeof(buf), stdin) == NULL)
  return 0;
 for (i = 0; i < atoi(buf); i++)
  printf("%d\n", rand() % 900 + 100);
 return 0;
}
時間を計測するのは、えーと、めんどくせ。だれか頼んだw

10 :デフォルトの名無しさん:03/06/08 18:46
#include <time.h>
clock_t start,end;

start=clock();
/* しょりぃ */
end=clock();
printf("%.2f秒くらいじゃないかな。\n",(double)(end-start)/CLOCKS_PER_SEC);

11 :デフォルトの名無しさん:03/06/08 19:02
ループ続行条件チェックの度ににatoiはねーだろ。

12 :デフォルトの名無しさん:03/06/08 19:18
>>11
そう? atoiはconst char*とるし、ループ中でbufは全く扱ってないので、
ふつー最適化されちゃって一度しか評価されないんじゃない?

13 :5:03/06/08 19:25
>>12
そんなこと期待するのは勝手だが…

14 :デフォルトの名無しさん:03/06/08 19:25
>>11
別に、マシンパワー余ってればいいんじゃない?
それよりも、buf[16]が引っかかった漏れは駄目人間ですか?
16桁だと環境によっては、あふれる予感が...

999,999,999,999,999 = 0x38D7EA4C67FFF

計算違うか?違ってたらごめん。


15 :デフォルトの名無しさん:03/06/08 19:51
そんなことより
> void bubble
が引っかかってる奴はいませんか?

16 :5:03/06/08 19:59
>>15
確かに。
ソートにかかる時間がアルゴリズムによってどう変わるか計測
しよとしてるのかなって予想ついたから言わなかったけど…。

17 :デフォルトの名無しさん:03/06/08 21:12
>>12
Cの関数呼び出しって、そういう最適化はできないんじゃねーの?
atoi()は標準関数だから、コンパイラが特別に対応すればできるかもしれないけど。
(VC6では最適化してない)


18 :デフォルトの名無しさん:03/06/08 22:25
アセンブラコードに落として死ぬまで復唱しろ

19 :デフォルトの名無しさん:03/06/08 22:26
誰かhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=78
あるプログラムにコメントつけてください!
あとCtrl-dで終わるように条件をつけてほしいのですが…
おねがいします

20 :デフォルトの名無しさん:03/06/08 22:36
>>19はブラクラ

21 :デフォルトの名無しさん:03/06/08 22:37
アドレスにjunkroomって、バレバレだよね

22 :デフォルトの名無しさん:03/06/08 22:38
>>19
あのさぁ....


あ、それって、提出したら教授が「excellent」をくれるレベルだと思うよ。
もう十分。

23 :5:03/06/08 22:38
>>20-21は思考停止馬鹿。

24 :r:03/06/08 22:39
>>20-21
いや、>>1をみろ。長いソース用のうpローダですよ。

25 :デフォルトの名無しさん:03/06/08 22:41
>>19
Ctrl-dの話なら前スレでアドバイスがあっただろ

26 :デフォルトの名無しさん:03/06/08 22:49
Cで XMLのデータ抜き出す作業 について詳しい方いますか?


27 :デフォルトの名無しさん:03/06/08 22:59
いますよ

28 :デフォルトの名無しさん:03/06/08 23:02
ちょっと これみてくれませんか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055071590

考えたんですが、わからなくて^^;

29 :デフォルトの名無しさん:03/06/08 23:04
>>19
ctrl+d でおわるじゃん。
コメントもついてるじゃん。

30 :デフォルトの名無しさん:03/06/08 23:04
>>28
みたよ

31 :デフォルトの名無しさん:03/06/08 23:06
どこがいけないんですかね?

32 :デフォルトの名無しさん:03/06/08 23:08
>>29
もっと詳しいコメントがほしいのです

33 :デフォルトの名無しさん:03/06/08 23:46
要するに
「俺でも分かるように説明しろ」


34 :デフォルトの名無しさん:03/06/09 01:21
28ですが、
おしえてもらえませんか?

35 :デフォルトの名無しさん:03/06/09 01:29
>>34
ここまで複雑なのになると…
フリーでCのXML処理ライブラリってあったと思ったからそれを探してみたほうが早いかも。
どうしても自分で作るというのなら、パーザと内容の解釈を分離したほうがいいと思うな。

36 :デフォルトの名無しさん:03/06/09 01:30
そうですかぁ・・・
ありがとうございます
>>35さん

37 :デフォルトの名無しさん:03/06/09 02:43
@ 
行列の掛け算を行います、行列aとbは4行4列とします。行列aの要素の値は、
各自決めたください。行列bは単位行列とします。

計算はマトリクスの積を使うと便利。


38 :37:03/06/09 02:43
#include <stdio.h>
int main()
{
int i,j;
int a[4][4],b[4][4];

/*ここで行列 a を好きなように作ってくれ*/

/*単位行列 b の作成*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(i-j)
b[i][j]=0;
else
b[i][j]=1;
}

for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][0]*b[0][j] + a[i][1]*b[1][j] + a[i][2]*b[2][j] + a[i][3]*b[3][j]);
}
printf("\n");
}
return 0;
}

全スレの問題と答えなんだけど、 実行すると4行4列の0行列になります・・

ぎょうれつA値を自由に決めるってのは、どういうふうに書くんですか

39 :37:03/06/09 02:45
訂正

ぎょうれつA値〜〜〜〜  

aの値を好きに決めるってのはどういうふうに書くんですか?

40 :デフォルトの名無しさん:03/06/09 02:47
a[0][0] = 1;
a[0][1] = 2;


41 :デフォルトの名無しさん:03/06/09 02:57
行列の話が出たのでついでに聞きたい。ps2などのvuユニットって直接
行列の計算できるんでしょ?俺今行列を使った透視投影変換で悩んで
るんだが、回転や移動変換なら良く見るから知っているんだが透視投影
変換はどうも良く分からない。(x,y,z,w)があって4*4の何をすれば(x',y')
になるんですか?

42 :デフォルトの名無しさん:03/06/09 03:52
スクリーン(例えば平面)に投影するんだから
オブジェクトと視点を結ぶ線分とスクリーン面の交点のスクリーン上での座標を求めれば
R^3→R^2の変換が得られるだろ。それを4x4のでも同じことだ。下に書いてあるとおりだ
http://www.sccs.chukyo-u.ac.jp/~miyazaki/classes/cg/perspective/perspective_lecture.html

43 :デフォルトの名無しさん:03/06/09 06:45
http://www1.linkclub.or.jp/~aishin/Chorus/Mybara.html

これ聞いてもちつけ
漏れにとっては(・∀・)イイ

44 :デフォルトの名無しさん:03/06/09 08:11
誰かhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=78
あるプログラムにコメントつけてください!
あとCtrl-dで終わるように条件をつけてほしいのですが…
おねがいします


45 :デフォルトの名無しさん:03/06/09 08:28
>>44 >>19によく似た質問が挙がっていますよ。

46 :デフォルトの名無しさん:03/06/09 08:56
環境はUNIXのCで、日付に関する宿題がでています。助けてください。
日付+N日を求めるという処理が必要なんです。(うるう年、30日、31日等を考慮して)
こんな関数提供関数でありそうなものなんですけど、なさそうなんです。
調べたんですが分かりません。
やっぱり、自作するしかないですか?

47 :デフォルトの名無しさん:03/06/09 09:08
自作してください。ちなみにN日を秒で表して、time_tと足し算すればいいよ。

48 :無料動画直リン:03/06/09 09:13
http://homepage.mac.com/norika27/

49 :デフォルトの名無しさん:03/06/09 09:15
C/C++の宿題やらせてくださいスレだろここは。
ソース書いてやれ。
>>1-1000

50 :デフォルトの名無しさん:03/06/09 09:34
>>49
ここは隔離スレ。
まともに宿題やってやるやつのほうがアホ。

51 :デフォルトの名無しさん:03/06/09 11:46
ファイルに含まれる文字列を照合(探索)するプログラムを以下の仕様にしたがって作成しなさい。

1.「力まかせの方法」を用いる。

2.探索を行う関数名は、search1とする。

3.関数search1は一致した文字列のすべての位置を返すものとする。(連結リストの先頭アドレスを返せばよい)関数の中で、一致した文字列をprintすることはしないこと。

4.プログラム(main文)では、一致する文字列を含めて前後10文字を表示するものとする。

5.プログラムは、一致するすべての文字列を表示しなければならない。

6.プログラムは任意のファイルをプログラム実行時に指定できること。


52 :デフォルトの名無しさん:03/06/09 11:48
>>51の問題で力任せの方法ではなく「Boyer-Moore法」を用いる。

Cなんですがメインの探索する関数の部分をどうすればいいか
わかりません。わかる方いたらよろしくお願いします

53 :デフォルトの名無しさん:03/06/09 11:57
何をもって「力まかせ」って言うのだろう?
「力まかせの方法」の定義キボヌ。


54 :デフォルトの名無しさん:03/06/09 12:14
>>53
自分もよくわからないんですが何もひねらない
一番効率が悪いやり方ということだと思います。

例えば
abcdefghijdkhjakjshfkajという感じで検索対象の文字列があるとすると

abcdefghijdkhjakjshfkaj←検索対象文字列

ここから検索

agh←検索したい文字列

aは一致するので次の文字を検索

bとgは一致しないので

abcdefghijdkhjakjshfkaj

 bの部分から再び検索開始

agh

こんな感じです。わかりますかね・・・?
そんなに難しくないといってたんですがわかりませんでした

55 :デフォルトの名無しさん:03/06/09 13:49
標準関数使わないで?

56 :デフォルトの名無しさん:03/06/09 14:06
>>54
strcharで先頭の文字だけ引っ掛けて、strncmpで比較でどうかな。
力技だと思うけど。

57 :デフォルトの名無しさん:03/06/09 14:07
>>56
それだったら、strstr()のほうがいいよ。

58 :デフォルトの名無しさん:03/06/09 14:16
>>51 BMじゃないバージョン。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=79
found_t型のオブジェクトは削除してない。自前で削除よろしく。


59 :デフォルトの名無しさん:03/06/09 14:32
>>46
前スレのバイオリズムのお題でそういうことをやってたような気がする。

60 :デフォルトの名無しさん:03/06/09 17:50
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=80&fi=no
↑にあるプログラムにコメントをつけてください!終了条件はCtrl-dです
上のプログラムを実行すると
Initialize a queue.
   > d
No more data.
   > e programming
Enqueue: [programming]
   > d
Dequeue: [programming]
   > e ALGORITHM
Enqueue: [ALGORITHM]
   > e practice
Enqueue: [practice]
   > d
Dequeue: [ALGORITHM]
   > c
Initialize a queue.
   > d
No more data
   > No more data
となるのですが、↑
        ここを表示させないで終了させたいのです。修正お願いします



61 :デフォルトの名無しさん:03/06/09 17:52
> printf("No more data.\n");
これを消せば?

62 :デフォルトの名無しさん:03/06/09 18:12
>>61実行例があってNo more dataを表示させないといけないので消せません

63 :デフォルトの名無しさん:03/06/09 18:17
終了条件がCtrl+Dってどういうこと?
Ctrl+Dを押せばいつでも強制終了じゃないの?

64 :デフォルトの名無しさん:03/06/09 18:18
環境にもよるけど、大抵強制終了はCtrl+Cでは。

65 :デフォルトの名無しさん:03/06/09 18:19
fgetsの戻り値をチェックしろって前スレに書いてあったろ

66 :デフォルトの名無しさん:03/06/09 18:24
コンパイルして実行させたのか?
そのプログラム最後にそんなメッセージ出るはず無いぞ。
そこ、入力行でしょ?

67 :66:03/06/09 18:28
ああ、そういうことか
Ctrl+Dするとそうなるってことね。
前言撤回

68 :デフォルトの名無しさん:03/06/09 19:02
>>60
あれ?そのコード、ちょっと前までコメント付きだったじゃん。
何でコメント削除したの?

69 :デフォルトの名無しさん:03/06/09 19:03
if (fgets( command,MAXLINE,stdin ) == NULL) {
 exit(EXIT_FAILURE);
}

70 :デフォルトの名無しさん:03/06/09 19:07
>>69
うわー、絶対いっしょに仕事したくないタイプ。

71 :デフォルトの名無しさん:03/06/09 19:11
>>70
…はやってんのか?

72 :デフォルトの名無しさん:03/06/09 19:29
宿題お願いしますw
合計台数とタイヤの総本数を入力して、
自転車と三輪車のそれぞれの台数を表示させるプログラムを作りたいんです。
んで、合計台数とタイヤの数がありえない組み合わせのときは
「無理だ」って表示させるよーにって。


73 :デフォルトの名無しさん:03/06/09 19:31
fgetsの戻り値をチェック??


74 :デフォルトの名無しさん:03/06/09 19:34
てか、まったく持ってわからんのですわ。・゚・(ノД`)・゚・。
しかも、ほとんど初めてやる人にこんな宿題出されても
わからんちゅーねんヽ(`Д´)ノウワァァァン

75 :デフォルトの名無しさん:03/06/09 19:35
>>73
日本語ですよ。文法的にもおかしくない。

76 :デフォルトの名無しさん:03/06/09 19:36
http://bcl.sci.yamaguchi-u.ac.jp/C/faq-12.html
Q11.5

77 :デフォルトの名無しさん:03/06/09 19:38
>>74
もう学期始まってから2ヶ月もたってますよ。

78 :デフォルトの名無しさん:03/06/09 19:38
>>74
もし、それが本当ならクラスの誰もできてないから安心しろ

79 :デフォルトの名無しさん:03/06/09 19:41
>>78
もしまかり間違って正解を持っていったら、
カンニングする要注意人物としてマークされたりしてなw

80 :デフォルトの名無しさん:03/06/09 19:41
> 宿題お願いしますw
これでやる気失せた

81 :デフォルトの名無しさん:03/06/09 19:42
つるかめ算のたぐいでは?

82 :デフォルトの名無しさん:03/06/09 19:43
スレタイよく読んでください

83 :デフォルトの名無しさん:03/06/09 19:43
宿題お願いしますウェーハッハッハ

84 :デフォルトの名無しさん:03/06/09 19:43
>72
鶴亀ざーーーーーーーーーーーーーーーん

85 :デフォルトの名無しさん:03/06/09 19:43
まぁ出題ミスだろうな。
stdioの制御をそこまで求められなければ成らない宿題とは思えない。
>q で終了とかにおするべき問題だな。

86 :デフォルトの名無しさん:03/06/09 19:46
>>85
問題はこれ。まったくの初心者にいきなり出来るわけない。
http://pc2.2ch.net/test/read.cgi/tech/1053963794/653

87 :デフォルトの名無しさん:03/06/09 19:50
>>86みれないよ。

88 :デフォルトの名無しさん:03/06/09 19:50
DAT落ちしていますが

89 :デフォルトの名無しさん:03/06/09 19:59
>>72
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv){
int daisuu,taiya;
int jitensya,sanrinsya;
if(argc<2) return 0;
daisuu = atoi(argv[1]);
taiya = atoi(argv[2]);
if(( daisuu * 3 < taiya) || (daisuu * 2 > taiya)){
printf("ありえねー\n");
}else{
jitensya = daisuu * 3 - taiya;
sanrinsya = daisuu - jitensya;
printf("自転車 %d 三輪車 %d\n",jitensya,sanrinsya);
}
return 0;
}

コマンドラインの第一引数に台数、第二引数に車輪の数を与えてくれ。

90 :お願いします!!!:03/06/09 19:59
π(円周率)を小数以下10000桁まで求めるプログラムをC言語で作成し、
9991桁から10000桁の10個の数字を表示しなさい。

だれかよろしくお願いします。

91 :くりりん:03/06/09 20:01
鶴亀斬?

92 :>>87-88:03/06/09 20:01
665 名前:デフォルトの名無しさん[] 投稿日:03/06/04 14:52
>>653です。訂正してもう一度書き込みます!!
ポインタを用いたリスト(リンクによるリスト)によるキュー(待ち行列)のプログラムである.キューの各要素は以下のような構造体となっている.
typedef struct node{char word[MAXWORDLEN] ;struct node *Next ;} node_t ;
ex4o を実行すると最初は次のようになる.
%ex4o
Initialize a queue.
>
ここで,”> “ は,キューの処理のためのコマンド入力を促すプロンプトで入力できるコマンドは以下の3つである.
c (キューを初期化する)
e #WORD(s) (キューの先頭に要素(単語(複数も可)WORD(s)をwordに格納した構造体node_t)を追加する)
d (キューの先頭の要素を取り出し,wordの中身を出力する.キューになにもデータがない時は,No more data.と出力する).
% ex4o
Initialize a queue.
   > d
No more data.
   > e programming
Enqueue: [programming]
   > e group 3
Enqueue: [group 3]
   > d
Dequeue: [programming]
   > d
Dequeue: [group 3]
   > e practice
Enqueue: [practice]
   > c
Initialize a queue.
   > d
No more data
  >
Ctrl-d (コントロールキーを押しながらdを押すこと)でプログラムは終了する,このプログラムを作成せよ.

93 :デフォルトの名無しさん:03/06/09 20:02
>>72
#include <stdio.h>
#include <stdlib.h>
void error(void)
{
    fprintf(stderr, "無理だ\n");
    exit(1);
}int DivWithCheck(const int a, const int b)
{
    if(a % b)
        error();
    return a / b;
}int prompt(const char *const msg)
{
    int tmp;
    printf("%s を入力してくれると有難い。\n", msg);
    scanf("%d", &tmp);
    return tmp;
}int main(void)
{
    int sum, wheel;
    int jit, san;
    sum = prompt("合計台数");
    wheel = prompt("タイヤの数");
    jit = DivWithCheck(wheel - 3 * sum, 2 - 3);
    san = DivWithCheck(2 * sum - wheel, 2 - 3);
    if(jit < 0 || san < 0)
        error();
    printf("自転車:%d\n三輪車:%d\n", jit, san);
    return 0;
}


94 :くりりん:03/06/09 20:03
#include <stdio.h>
int main() {
    int x, y, t;
    printf("input body >"); scanf( "%d", &x );
    printf("input tire >"); scanf( "%d", &y );
    t = y - 2 * x;
    if( t < 0 || x < t )
        printf("(-_-)\n");
    else
        printf("3rin:%d\t2rin:%d\n", t , x - t );
    return 0;

95 :くりりん:03/06/09 20:05
続き
}

96 :デフォルトの名無しさん:03/06/09 20:06
>>90
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=76

前スレでも2回同じ依頼があったけど同じ人じゃないよね?
同じ授業を受けてるなら、それを持っていったら目を付けられるかもね。

97 :デフォルトの名無しさん:03/06/09 20:10
#include <stdio.h>
int main(void)
{
  int bicycle, tricycle, tire, amount;

  puts("合計台数を入力すれ");
  scanf("%d", &amount);
  puts("タイヤの本数も入れやがれ");
  scanf("%d", &tire);
  bicycle = 3 * amount - tire;
  tricycle = tire - 2 * amount;
  if (bicycle < 0 || tricycle < 0)
    puts("無理だ、ボケ\n");
  else
    printf("自転車 %d台, 三輪車 %d台だ。これくらい自分で計算しろや\n", bicycle, tricycle);
  return 0;
}


98 :デフォルトの名無しさん:03/06/09 20:10
>>96
2回もあったんですか…
同じ授業の可能性大な気がします…
これって他のパターンとかってできないんですかね?

99 :デフォルトの名無しさん:03/06/09 20:17
この回答ラッシュ...このスレのレベルがよく分かるな。

100 :デフォルトの名無しさん:03/06/09 20:17
>>98
今まではマーチンの公式を使えとあったけど、今回ないから違うの使えば?

101 :デフォルトの名無しさん:03/06/09 20:25
>>100
あ…。それ絶対同じ授業だ。
ヒントとしてπの求め方はマーチンの公式が与えられてます。
あと、桁数の多い数の演算の方法として配列使えっていうのも


102 :デフォルトの名無しさん:03/06/09 20:26
>>101
ヒントなら別の使っても構わないのでは?

103 :デフォルトの名無しさん:03/06/09 20:28
っていうか、2ちゃんに宿題聞きに来る愚奴がこんなにいるって、どんな学校だよ!!


104 :デフォルトの名無しさん:03/06/09 20:29
電気通信大学



あ、言っちゃった!

105 :デフォルトの名無しさん:03/06/09 20:31
大丈夫だ。東京か大阪か、特定されていない(にや

106 :デフォルトの名無しさん:03/06/09 20:32
>>104
イタタタタタタ

107 :デフォルトの名無しさん:03/06/09 20:34
2chで宿題をやってもらおうとする愚か者は大阪にはいない。

108 :デフォルトの名無しさん:03/06/09 21:08
>>63
Unix なんでしょうな。
fgets では EOF とエラーの区別がつかないから、
エラー処理をするなら feof で検査するしかないね。
ttp://www-ccs.ucsd.edu/c/stdio.html#fgets

109 :デフォルトの名無しさん:03/06/09 21:16
そもそもCtrl+DがEOFにバインドされてる保証は無い

110 :デフォルトの名無しさん:03/06/09 21:18
宿題スレでそんなこと言ってもむなしく響くだけ。

111 :デフォルトの名無しさん:03/06/09 21:33
ねむくなるスレだ

112 :デフォルトの名無しさん:03/06/09 21:38
 


113 :デフォルトの名無しさん:03/06/09 21:41
C/C++の宿題やらせてください


114 :デフォルトの名無しさん:03/06/09 23:05
すみません、明日までの宿題です。
UNIXのCで
最大30桁(少数含む)の四則演算を
行う関数を作りたいのです。
long double や decimal型はダメです。
おそらくchar型やdouble型を使って作るのだと
思いますが、どなたか力添えをください。
お願いします。

115 :デフォルトの名無しさん:03/06/09 23:20
明日の夜、手伝ってやろう。

116 :デフォルトの名無しさん:03/06/09 23:22
class real
{
public:
 static const int precision = 30;
 real();
 real( double x );
 real& operator += ( real const& rhs );
 real& operator -= ( real const& rhs );
 real& operator *= ( real const& rhs );
 real& operator /= ( real const& rhs );
private:
 char mantissa[ precision ];
 int exponent;
};
real operator + ( real const& lhs , real const& rhs ){ return real( lhs ) += rhs; }
real operator - ( real const& lhs , real const& rhs ){ return real( lhs ) -= rhs; }
real operator * ( real const& lhs , real const& rhs ){ return real( lhs ) *= rhs; }
real operator / ( real const& lhs , real const& rhs ){ return real( lhs ) /= rhs; }


117 :デフォルトの名無しさん:03/06/09 23:25
Cじゃないし実装がないじゃん。

118 :デフォルトの名無しさん:03/06/09 23:31
思いついたまでの力添えだ。答えじゃない。

119 :デフォルトの名無しさん:03/06/10 00:09
前スレにあるのですが、配列を使わずにお願いします。
和が一定となるような自然数の列を列挙するプログラムを作成せよ。
重複はみとめる。
例えば、和が3の自然数の列は 1,1,1 1,2 2,1 3 となります。
 

120 :r:03/06/10 00:23
>>119
int main( int argc, const char** argv ) {
    int wa = atoi( argv[1] ), i;
    for( i = 1; i <= wa / 2; i++ )
        printf("%d = %d + %d\n", wa, i, wa - i );
}

121 :5:03/06/10 00:25
>>120
お前さ、いろいろレスつけてるけど、全然だめだからもうやめとけ。
そのプログラムで、3は1+1+1って答えが出せるか?

122 :r/120:03/06/10 00:25
>>119
おっと!間違った。

もし、その和の数が100のときは、
1,1,1,1,1,1,....,1
1,1,1,1,1,1,...,2
とか、ぜんぶ挙げるの?

123 :デフォルトの名無しさん:03/06/10 00:26
うっかり引数をつけないで実行しただけであぼーんか。

124 :r/120:03/06/10 00:30
>>121
>>全然だめだからもうやめとけ。
なんでさ?

125 :5:03/06/10 00:31
>>119
再帰関数使えよ。
「重複はみとめる」ってことは重複しなくても解として認めるって
ことだろ。なら簡単だ。

126 :5:03/06/10 00:32
>>124
「全然だめだから」っつってんだろ。
日本語読めてない時点で全然だめなんだよ。

127 :デフォルトの名無しさん:03/06/10 00:33
>>119
分割する数でループ回せばいいのかな。
2・・・1,1,1
1・・・1,2 2,1
0・・・3
って感じで。

128 :デフォルトの名無しさん:03/06/10 00:34
簡単ならやってやれよw
ちなみに俺には難しい。

129 :デフォルトの名無しさん:03/06/10 00:34
>>125
簡単だとか言うのはコードを出してからにしろ

130 :デフォルトの名無しさん:03/06/10 00:35
>>125
配列を使わないと結構、パフォーマンス悪くなる。

131 :r/120:03/06/10 00:36
>>126
全然だめだと、なんで駄目なんだよ。

「宿題やらせて」ってのに、
「相手のために、宿題をやってやる」ってニュアンスはねーだろ。
「自分のために、宿題をやらせてもらう」なんだよ。


132 :デフォルトの名無しさん:03/06/10 00:37
とりあえずコテハンはやめたら?

133 :デフォルトの名無しさん:03/06/10 00:40
>>127
・・・の左と右の関係はなに?コンマの数?

134 :5:03/06/10 00:40
>>128
n!の計算とかクイックソートとか勉強すれば思いつくよ。

>>129
この程度思いつかないやつはすっこんでろって。

>>130
え?パフォーマンスは要件に入ってないからかまわんだろ?

>>131
ああ、確かにな。すまん。

135 :デフォルトの名無しさん:03/06/10 00:42
>>134
だから>>119のためにやってあげなよ。
ここはそういうスレだよ。

136 :デフォルトの名無しさん:03/06/10 00:43
>>134
口だけ番長

137 :デフォルトの名無しさん:03/06/10 00:44
再帰関数を最初に呼び出す関数にも for 文があって、
再帰関数の中にも for 文がある?ややこしい。

138 :デフォルトの名無しさん:03/06/10 00:44
>>120
再帰関数を使ってです

139 :デフォルトの名無しさん:03/06/10 00:46
>>134
まだ出来ないの?

140 :デフォルトの名無しさん:03/06/10 00:48
>>119
LISP版ならこの前かいたんだがな。

141 :デフォルトの名無しさん:03/06/10 00:50
簡単だと思ってやってみたけど実は難しかったというパターンかな。

142 :デフォルトの名無しさん:03/06/10 00:53
LISP版でもいいから、もう一回作って書いて下さい。

143 :デフォルトの名無しさん:03/06/10 00:55
ひらめいた
配列の代わりにリスト使うっつーのはどうだ?

144 :デフォルトの名無しさん:03/06/10 01:01
mallocでいいじゃん。

145 :デフォルトの名無しさん:03/06/10 01:04
 :||::   \おい、ゴルァ 出て来い!!        ドッカン  ゴガギーン
 :||::      ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ _m ドッカン      ☆
 :||::   ___     ======) ))_____  /        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 :||  |      |      | ̄.ミ∧_∧ | | ────┐||::    ∧_∧ < おらっ!>>125 出てこい!!
 :||  |ぁゎゎ. |      |_..(   ) | | .___ │||::   (´Д` )  \___________
 :||  |Д`);  |      |_「 ⌒ ̄  ,|.. |_... 5 ..||||::  / 「    \
 :||  |⊂ノ;   |      |_|    ,/  ̄ .  ̄ ̄ ̄ │||::  | |    /\ \
 :||:   ̄ ̄ ̄         ̄|    .| :||│     ;,   │||; へ//|  |  | . |
 :||::   :;  ; ,,         :|    :.| ||│       (\/,.へ \|  |  (r )
 :||::   :;  冫、. .      |   .i  .|:||◎ニニニニ\/  \    |   ̄
 :||.:,,'';      ` ..  . ::  . |  ∧. |:||│::::/    │||::.:.   .Y ./
 :||:;;;:         :      |  | | |.||│ 冫、 ;;;,,│||:;;;.   | .|
 :||:;;;:             / /  / /::||│ `  .,;;;,,.│||:;;;.   | .|
 :||;::: #   ..:        ./ / ./ ./ ||│|三三三|. │||;;:..::   | .|
 :||;:::     #. ..:  :::::: (_) .(_).ミ||│        │||;;;k、,,,|,(_)
   ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;::三三三

146 :デフォルトの名無しさん:03/06/10 01:13
>>119
次のプログラムが参考としてあります。
これを参考に作れないでしょか
#include<stdio.h>

void abs_sum( int n, int w);

int main()
{
int w = 2, n =3;
abs_sum( n, w );
return 0;
}
/*
* 和がw以下となる長さnの非負整数の数列を全て列挙する
*/

void abs_sum( int n, int w )
{
void in_abs_sum( int total_length, int n, int w);

in_abs_sum( n, 0, w);
}


147 :デフォルトの名無しさん:03/06/10 01:13
>>146続き
/*
* 和がw以下となる長さnの非負整数の数列を全て表示するための内部関数
* 入力
* total_length : 数列の長さ
*   pos : 今考えてる数列の場所 ( 0〜 total_length - 1)
*
* w : 数列の重み
*/


void in_abs_sum( int total_length, int pos , int w)
{
int i, j, called = 0;

if ( pos >= total_length ){ /*数列はもうおしまい?*/
putchar( '\n');
return;
}
for( i = 0; i<=w; ++i){ /*数列がまだ続く場合*/
if ( called++){ /*この場所でもう呼ばれたのか?*/
for( j = 0; j < pos; ++j){
printf(" ");
}
}
printf("%2d",i);
in_abs_sum( total_length, pos + 1, w - i); /*再帰的に繰り返す*/
}
}


148 :デフォルトの名無しさん:03/06/10 01:15
abs_sumだけプロトタイプ宣言を書いてin_abs_sumのプロトタイプ宣言は書かないんだ。

149 :デフォルトの名無しさん:03/06/10 01:25
// 再帰でリスト作ればいけるね
#include <stdio.h>
#include <stdlib.h>
struct list { int n; struct list* next; };
void print_list( struct list* p )
{
  for( ; p != 0 ; p = p->next ) printf( " %d" , p->n );
  puts( "" );
}
void xxx( int n , struct list* p )
{
  if( n > 0 )
  {
    struct list node;
    node.next = p;
    for( node.n = 1 ; node.n <= n ; ++node.n ) xxx( n - node.n , &node );
  }
  else
  {
    print_list( p );
  }
}
int main( int argc , char* argv[] )
{
  if( argc > 1 ) xxx( atoi( argv[1] ) , 0 );
  return 0;
}

150 :149:03/06/10 01:33
print_listは関数に分ける必要なかったな。

151 :r/120:03/06/10 01:44
>>119
何度なくできましたが、char* とか使ってます。
つか、なんでこれでうまく動くのか、今ひとつ漏れにも判りません。
#include <stdio.h>
#include <stdlib.h>
void d( int wa, int n, char* hist ) {
    if( wa < n ) {
    } else if( n == 1 ) {
        printf( "%s,%d¥n", hist ,wa );
    } else {
        int i;
        for( i = 1; i <= n; i++ ) {
            char* buf = malloc( 100 );
            sprintf( buf, "%s,%d", hist, i );
            d( wa - i, n - 1, buf );
            free( buf );
        }
    }
}
int main( int argc, const char** argv ) {
    int wa = argc < 2 ? 5 : atoi( argv[1] ), i;
    for( i = 1; i <= wa; i++ ) {
        char* buf = malloc( 100 );
        sprintf( buf, "" );
        printf("---- sum:%d, count:%d -----¥n", wa, i );
        d( wa, i, buf );
        free( buf );
    }
}
>>125
たしかに、重複を取り除くと難しさupですね。

152 :r/120:03/06/10 01:46
>>149
先に出てた...しかも短くて綺麗...鬱。

153 :出来た予感:03/06/10 01:47

int nth_permutation( int sum, int n, int output ){
int current = 1, next_n = -1, i;
for( i = 0; i<=n; ++i ){
if ( current==sum ) break;
if ( nth_permutation( sum-current, ++next_n, 0 ) ) continue;
if ( i==n ) break;
++current; next_n = -1;
}
if ( output ){
printf( "%d,", current );
if ( current!=sum ) nth_permutation( sum-current, next_n, 1 );
}
return current!=sum; // 次があるなら true を返す
}

int main(void){
int n = -1, sum;
if ( scanf( "%d", &sum )!=1 || sum<=0 ) return 1;
while( nth_permutation( sum, ++n, 1 ) ) printf( "\n" );
printf( "\n" );
return 0;
}

154 :149:03/06/10 01:50
// 簡単に重複取り除けました
#include <stdio.h>
#include <stdlib.h>
struct list { int n; struct list* next; };
void xxx( int n , struct list* p )
{
  if( n > 0 )
  {
    struct list node;
    node.next = p;
    for( node.n = ( p != 0 ) ? p->n : 1 ; node.n <= n ; ++node.n ) xxx( n - node.n , &node );
  }
  else
  {
    for( ; p != 0 ; p = p->next ) printf( " %d" , p->n );
    printf( "\n" );
  }
}
int main( int argc , char* argv[] )
{
  if( argc > 1 ) xxx( atoi( argv[1] ) , 0 );
  return 0;
}

155 :デフォルトの名無しさん:03/06/10 02:01
前のスレでもいらっしゃいましたが、解決していないようなので質問させてください。
再帰を利用しないハノイの塔のプログラムをお願いします。

156 :デフォルトの名無しさん:03/06/10 02:10
#include <stdio.h>
void xxx( int n) {
int i,j, k;
for (i = 1 << (n-1); --i >= 0;) {
for (j = 1 << (n-2), k = 1; j > 0; j >>= 1)
if (i & j) { printf("%d,", k); k = 1;}
else k++;
printf("%d\n", k);
}
}
int main( int argc , char* argv[] )
{
if( argc > 1 ) xxx( atoi( argv[1] ) );
return 0;
}

157 :デフォルトの名無しさん:03/06/10 02:13
>>156


158 :デフォルトの名無しさん:03/06/10 02:21
>>156
許容範囲狭すぎ

159 :デフォルトの名無しさん:03/06/10 02:23
>>158
> for (i = 1 << (n-1); --i >= 0;) {
で 1<<(n-1)回のループをまわしてる
つまりこの個数分の出力があるってことだろ?
オーバーフローするほどの数だったらそもそも数が多すぎて出力しきれないんじゃないか?

160 :デフォルトの名無しさん:03/06/10 02:27
>>159
32が多すぎですか?

161 :デフォルトの名無しさん:03/06/10 02:30
>>160
多すぎだろ?

162 :デフォルトの名無しさん:03/06/10 02:35
>>161
154のやつだと32入れても数秒で完了するようですが。

163 :デフォルトの名無しさん:03/06/10 02:37
>>162
重複取り除いてるからね

164 :デフォルトの名無しさん:03/06/10 02:39
>>162
154は
1,1,1,1,1,1,1,1,2も
1,1,1,1,1,1,1,2,1も全部同じものとみなすから出力数が少ない
156は全てのパターンを出力するからその数は桁違いに多くなる

165 :デフォルトの名無しさん:03/06/10 02:50
ふむ。n!オーダーで増えるのですね。
重複を取り除いた場合のオーダーは・・・・
もぅねむいや。

166 :デフォルトの名無しさん:03/06/10 02:52
>>164
その都度プリン度して、データを溜め込んでるわけじゃないから、
パターン数の多さは関係ないんじゃないの?

167 :166:03/06/10 02:53
×プリン度
○プリント

168 :デフォルトの名無しさん:03/06/10 02:58
どうでもいいが重複を取り除いてもいいってのは125の勝手な解釈じゃないか?
「認める」ってのが、答えに対して認める(=答えに重複が含まれてもかまわない)のか、数列に対して認める(=組み合わせではなく順列)のかわからないが。

169 :デフォルトの名無しさん:03/06/10 03:07
まぁまぁ、でもリストつくってそれをスタックにしつつ列挙していくのが正攻法だな。

170 :デフォルトの名無しさん:03/06/10 03:10
正攻法かは知らんが(´-`;)かなり巧いテクだな
リストっつったらmallocすることしか考えてなかったよ
再帰してスタック使えばサイズも動的に変えられるもんな

171 :デフォルトの名無しさん:03/06/10 03:20
>>170
でも、スタック消費が多くなるね。
mallocしながらグローバルスコープにリストをつくっていったほうが
より大きな数まで処理できるかもしれない。

172 :デフォルトの名無しさん:03/06/10 07:45
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=80&fi=no
↑にあるプログラムにコメントをつけてください!終了条件はCtrl-dです
上のプログラムを実行すると
Initialize a queue.
   > d
No more data.
   > e programming
Enqueue: [programming]
   > d
Dequeue: [programming]
   > e ALGORITHM
Enqueue: [ALGORITHM]
   > e practice
Enqueue: [practice]
   > d
Dequeue: [ALGORITHM]
   > c
Initialize a queue.
   > d
No more data
   > No more data
となるのですが、↑
        ここを表示させないで終了させたいのです。修正お願いします

173 :デフォルトの名無しさん:03/06/10 08:27
すげえムカツク。あぼ〜んしよ

174 :デフォルトの名無しさん:03/06/10 08:56
そこまでできていれば十分だと思うんだが。
何も分からないくせに100点を取らないと気がすまないの?

175 :デフォルトの名無しさん:03/06/10 09:22
つか、もはやただのアラシだな。自分でmain修正してきたときは、
「がんばったな」って思ったりしたが。

176 :デフォルトの名無しさん:03/06/10 09:35
コメントアウトすればいいんじゃない?

177 :デフォルトの名無しさん:03/06/10 09:53
%s使え。

while( cur != 0 ) {
node_t* target = cur;
free(target);
cur = cur -> Next;
}

while( cur != 0 ) {
node_t* target = cur->Next;
free(cur);
cur = target;
}

178 :デフォルトの名無しさん:03/06/10 12:48
>>177
rは糞ってことか。

179 :デフォルトの名無しさん:03/06/10 13:07
他にも文句はあるな。e一文字だけ入力されたらどーなるんだ? とか。

180 :デフォルトの名無しさん:03/06/10 13:09
class CTest {
 float a;
public:
 CTest() {
  a = (float)1234.02;
 }
 CTest(int num) {
  CTest();
 }
 float GetA() {
  return a;
 }
};
こんな感じにfloat型のメンバ変数に初期値を代入しても、
返ってくる値はめちゃくちゃなのはなんでだろう。
ちと悩んでる。

181 :デフォルトの名無しさん:03/06/10 13:12
>>180
コンストラクタにvoidもしくはint以外の型のものを渡してないか?

182 :デフォルトの名無しさん:03/06/10 13:34
a = (float)1234.02;

a=1234.02F;と書け。

183 ::03/06/10 14:38
>>179
いや、ほら、main()は適当に書いただけだから...

184 ::03/06/10 14:41
CTest(int num) {
    CTest();
}
これは CTest( int )のなかで、
あたらしい CTestの一時オブジェクトを作るだけです。
その一時オブジェクトはすぐに潰えます。
呼び出し元---CTest( int )---の、this -> a には何の影響も与えません。

185 :デフォルトの名無しさん:03/06/10 15:47
えらい嘘教えてるな

186 :デフォルトの名無しさん:03/06/10 16:46
えーと、今Cの授業を受けているのですが、何やら「配列」と「ポインタ」っていう革命的な概念が登場しまつた。課題を見るとビックリ、もう何がなにやらです。

課題はこんなかんじ。

以下は,標準入力から入力した文字列を逆順にして表示するプログラムの一部である. 関数 reverse の定義を追加し,プログラムを完成させよ. なお,入力される文字列の長さ(文字数)は任意であるが, 99文字以内であることが保証されているものとする.

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

void reverse(char *s)
{
/* ここに追加せよ! */
}

int main(void)
{
char str[100];

scanf("%s", str);
reverse(str);
printf("%s\n", str);

return (0);
}

きー文字列を逆にする発送が思い浮かばない罠。

おねがいいたします。

187 :デフォルトの名無しさん:03/06/10 16:55
>>185
具体的に

188 :デフォルトの名無しさん:03/06/10 17:02
>>186
ちょと違うがわかるだろ
http://pc2.2ch.net/test/read.cgi/tech/1053963794/631

189 :186:03/06/10 17:03
ありがとう、でもDAT落ちしてる・・・

190 :デフォルトの名無しさん:03/06/10 17:09
void reverse(char *s) {
 size_t len = strlen(s), goal = len /2, i;
 char tmp;
 for (i = 0; i < goal; i++) {
  tmp = s[i];
  s[i] = s[len - 1 - i];
  s[len - 1 - i] = tmp;
 }
}

191 :デフォルトの名無しさん:03/06/10 17:35
>>184
まぢ?クラスのメンバ関数内でコンストラクタ呼び出すとそこで
自分自身の一時オブジェクト生成しちゃうの?
だとしたら、今までの俺の理解は激しく違ってたことになるな。

192 :デフォルトの名無しさん:03/06/10 17:38
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=81

上記のプログラムを配列処理をのこしつつ、ポインタを使用して書き換えよ。

ポインタが理解できないまま機嫌が切れそうなので、よろしくおねがいします。

193 :デフォルトの名無しさん:03/06/10 17:44
>>191
コンストラクタ内でthisポインタの値を表示してみればよく分かるよ。
デストラクタの中でも表示したほうがいいかな。

194 :デフォルトの名無しさん:03/06/10 17:45
>>192
*aってなんだ?

195 :デフォルトの名無しさん:03/06/10 17:49
>>192
おまいの機嫌なんかどうでもいいが、なにを書き換えればいいのかいまいちわからん

196 :192:03/06/10 17:59
>>194-195
*aはポインタをなんとか使おうとした名残ですね、すみません。
*aはjです。
何かしらの形でポインタが使用されていれば良いので、
どこかポインタを使って処理できるところを書き換えればよいそうです。


197 :デフォルトの名無しさん:03/06/10 18:05
じゃあ
void (*f)() = print_matrix;
(略)
f(m_C);
とかしてみれば?

198 :デフォルトの名無しさん:03/06/10 18:06
>>192
できたよー
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=82

どこをポインタに書き換えればいいかわかんなかったから、
適当にやっといたよー

199 :デフォルトの名無しさん:03/06/10 18:06
>>193
ほ、ほんとだ。 (゚Д゚;))ガタガタブルブル
知らんかったー。そっか、new CTest()とかでメモリ確保できるのも理解できる。
いや、ほんとサンクスコです。勉強になっただす。

200 :デフォルトの名無しさん:03/06/10 18:10
配列だからポインタをインクリメントさせて内容みるのがいいんじゃないかな。
それ狙った課題だと思ふ。

201 :192:03/06/10 18:10
>>198
ありがとうございます〜

202 :192:03/06/10 18:36
>>200
その場合はどうなるのでしょう?

203 :デフォルトの名無しさん:03/06/10 19:32
>>198
ふざけてるのか?

204 :デフォルトの名無しさん:03/06/10 19:39
(1)テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.
新しいデータを一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを
使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ見やすい形に表示するよう工夫すること.


205 :デフォルトの名無しさん:03/06/10 19:53
C言語でよろしくお願いします。

文字列を圧縮するプログラムを作成せよ
例 aaaabbbcccccdddd

4a3b5c4d

206 :デフォルトの名無しさん:03/06/10 20:08
>205
文字列はどうやって与えるのん?

207 :デフォルトの名無しさん:03/06/10 20:10
念力

208 :205:03/06/10 20:26
>>206
実行すると、まず文字列を入力してくださいと表示して、
aaaabbbcccccddddと入力したら、4a3b5c4dと表示しなおすようなプログラムです。
よろしくお願いしますm(__)m



209 :デフォルトの名無しさん:03/06/10 20:27
オーラ力

210 :デフォルトの名無しさん:03/06/10 20:28
TCPPort8081に文字列が送られてくる。

211 :念力で与えるバージョン:03/06/10 20:28
#include <stdio.h>

int main(void){
 int c, buf, count;
 count = 0;
 buf = EOF;
 
 while((c = getchar()) != EOF){
  if(buf != c){
   if(count != 0){
    printf("%c%d", buf, count);
   }
   buf = c;
   count = 1;
  }else{
   count++;
  }
 }
 return 0;
}


212 :デフォルトの名無しさん:03/06/10 20:29
main(){
char c;
printf("入力してください >");
scanf("%c,&);
printf("4a3b5c4d");
}

213 :デフォルトの名無しさん:03/06/10 20:31
>>210
サーバ作らなきゃ駄目じゃん。

214 :デフォルトの名無しさん:03/06/10 21:21
>>203
きかないとわかんないのか?

215 :sage:03/06/10 21:33
10個の数列を配列に格納し、これらの順序を入れ替えて、入れ替え前と
入れ替え後のの前配列要素の値を求めるプログラムを
教えて頂きたい。順序を入れ替えるのはd[0]とd[9]で
お願いしますm(__)m

216 :デフォルトの名無しさん:03/06/10 21:34
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉






     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉




217 :デフォルトの名無しさん:03/06/10 21:36
>>215
要求定義が意味不明

218 :215:03/06/10 21:40
>>217
要求定義ってどういうことをさすのですか?
初心者でスミマセン

219 :デフォルトの名無しさん:03/06/10 21:41
>>215の問題を提示されて解ける奴はこのスレには一人もいねーっつーことだ
エスパーでも呼んで来い

220 :デフォルトの名無しさん:03/06/10 21:41
その説明じゃあどんな天才プログラマでも
何をつくればいいのか分からない。

221 :5:03/06/10 21:43
簡単だ。
この程度思いつかないやつはすっこんでろって。

222 :215:03/06/10 21:49
>>5
プログラム作成をどうかお願いしますm(__)m
できる限りのことは頑張ります。

223 : :03/06/10 22:00
>>208

#include <stdio.h>

void main() {
char moji[100],kai[26];
int i;

for (i = 0 ; i < 100 ; ++i ) {
moji[i] = 0;
kai[i] = 0;
}

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

for ( i = 0 ; moji[i] != '\0' ; ++i)
++kai[ moji[i] - 'a' ];

for (i = 0 ; i < 26 ; ++i){

if (kai[i] != 0)
printf("%d%c ",kai[i],i + 'a');
}

}

 

224 : :03/06/10 22:04
>>215

>前配列要素の値を求める

'全'配列要素のことか?

というかどういう数列を入れるかが分からんけど、
枠組みだけなら作れると思うよ。

225 :デフォルトの名無しさん:03/06/10 22:07
エスパーが簡単だと言ってるから任せてみよう
どんなのが出てくるか楽しみだ

226 :224:03/06/10 22:07
これはもっと短くできるんだろうか・・
まだまだ初心者なんで、なんか改善すべき点があったら是非教えてくらはい。

227 :223:03/06/10 22:08

223の間違いです。

228 :デフォルトの名無しさん:03/06/10 22:11
>223
配列の初期化ってもっと簡た(ry

229 :デフォルトの名無しさん:03/06/10 22:17
C言語でプリンターポートにHEXファイルを出力したいのですが
どうしたらできるのでしょうか?


230 :215:03/06/10 22:18
>>224
>全'配列要素のことか?
そうです。字を間違えました。
数列は1とか10とか簡単な数字を格納すればいいと思います。





231 :デフォルトの名無しさん:03/06/10 22:19
前配列要素の値を求める
がどういうことかを教えてもらいたい。

232 :デフォルトの名無しさん:03/06/10 22:21
int d[10];
に数字が入っているとして
d[0]とd[9]を入れ替えて
配列の要素すべて表示すればいいのか?

233 :224:03/06/10 22:23
>>230
それは数列とは言わんよ。
数字だよ。


234 :デフォルトの名無しさん:03/06/10 22:23
>>229
スレ違い

235 :デフォルトの名無しさん:03/06/10 22:24
>>229
大まかに2通りあると思うけど。

1.プリンタを直接操作して書き込み <-面倒
2.テキストか何かに出力してプリントアウト <-簡単

236 :223:03/06/10 22:26
>>228
あんがちょ。
俺の持ってる初心者用の教科書では
配列を0にする初期化の方法はこれ以外載ってないんで、
違う本で調べてみます。

237 :デフォルトの名無しさん:03/06/10 22:28
>215の問題が面白いからage

238 :デフォルトの名無しさん:03/06/10 22:31
お願いします!!!!
(1)テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.
新しいデータを一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを
使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.
また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ見やすい形に
表示するよう工夫すること

239 :デフォルトの名無しさん:03/06/10 22:32
自分で出来るだろうに。

240 :デフォルトの名無しさん:03/06/10 22:34

for (i = 0 ; i < 100 ; ++i ) {
moji[i] = 0;
kai[i] = 0;
}

ほんとにこれを教わったのか?
どうしようもないな。

241 :デフォルトの名無しさん:03/06/10 22:34
void main() {
char moji[100],kai[26];
int i;

for (i = 0 ; i < 100 ; ++i ) {
moji[i] = 0;
kai[i] = 0;
}

バッファオーバーフロー(・∀・)イイ!

242 :デフォルトの名無しさん:03/06/10 22:35
>>223
これは多分出題の意図からすると間違ってると思われ。
問題も悪いんだけど、そのプログラムだと。
 aabbbbccccaaacccc



 a5b4c8

だよね。でもこれはデータ圧縮でつかうランレングス法を念頭に置いた出題のはずだから

 a2b4c4a3c4

と並びを保ってencodeしないとまずいよ、たぶん。

243 :デフォルトの名無しさん:03/06/10 22:35
>>172

printf("\t>");
command[0] = '\0';
fgets(command, MAXLINE, stdin );


244 :デフォルトの名無しさん:03/06/10 22:38
>>230

int k;
k = d[0];
d[0] = d[9];
d[9] = k;

d[0]とd[9]の入れ替えはこういうやり方でいいんでない?
kは適当に付けた名前だよ。
他のとこはできると思うよ。

245 :242:03/06/10 22:40
おっと、数字と文字の並びかたが逆だった。
でも、言いたいことには影響ないな。
察してくだされ。

246 :デフォルトの名無しさん:03/06/10 22:40
#define swap(a, b) (a ^= b ^= a ^= b)

247 :223:03/06/10 22:46
色々指摘してもらってありがたいです。

>>242
なるほど、そこまで問題の意図を考えてませんでした。
大学で出た宿題と似てたんで、つい同じ方法で書いてしまって・・
これからもういちど、プログラム作り直してみまふ。



248 :デフォルトの名無しさん:03/06/10 22:50
>247
これ参考にどぞー>211

int a[100] = { 0 }

( ̄ー ̄)ニヤリッ

249 :デフォルトの名無しさん:03/06/10 22:53
f(x)=exp(1.37*x)とする。
(1)x=0,0.1,0.2,0.3,0.4に対するf(x)の値を計算により求めて、
xとf(x)の表を作成せよ。
(2)
xを二つの領域(0<=x=<0.2 , 0,2<=x=<0.4)にわけ、それぞれの領域で
ラグランジュ補間を行い、0から0,4までの間で0.02きざみで、f(x) の値、
補間による近似値 g(x) 及び、 f(x)-g(x) の値を表にして示すとともに、
グラフとして図示せよ。表は線はいらず、計算結果をプリントアウトしたものとする。
図は手書きでもグラフソフト使用でも可。

ex)

x   f(x) g(x) f(x)-g(x)

0    〜〜  〜〜   〜〜
0.2 〜〜  〜〜   〜〜
・    〜〜  〜〜   〜〜 
・    〜〜  〜〜   〜〜




250 :249:03/06/10 22:54
(3)
(2)で得られた21個のxとf(x)のデーターに対し、最小二乗法による理論式
 y=A*x+B の最適のA,Bの値を推理せよ。
(4)
exp(1.37*x)テイラー展開して、第二項までを取った直線の式を
y=A'*x+B'とするとき、(3)で得られた y=A*x+Bに対する 

     N
E(A,B)= (yi-A*xi-B)^2
    i=1
と、y=A'*x+Bに対する

      N
E(A',B')= (yi-A'*xi-B')^2
     i=1

を求め、E(A,B)<=E(A',B')を示せ・・・。

提出物
@ (2),(3),(4)が一気に行えるプログラム
A 動作結果
B アルゴリズム
C フローチャート

もうだめですTT どなたかお願いします。


251 :デフォルトの名無しさん:03/06/10 22:55
>>249
前スレで出されてたのはダメなのか?

252 :249:03/06/10 22:56
前にこれを乗せたら、親切な方が@をやってくっれたので、
アルゴリズムとフローチャートを自分で作って提出したら、
その二つが不十分で再提出になりましたT0T

どなたかフローチャートとアルゴリズムお願いします。
とくにアルゴリズムお願いします。



253 :>96:03/06/10 23:00
参考文献から
http://www.pluto.ai.kyutech.ac.jp/plt/matumoto/pi_small/node22.html

ある観点から最良と思われるものを上げておぎます。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=76
の焼き直しです。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=83



254 :デフォルトの名無しさん:03/06/10 23:01
>>238
IDとはどういうデータだ?
姓名、読みの文字数は可変か?それとも最大文字数が決まっている?
木に追加するとき、どう追加すればいい?2分木って左の枝と右の枝が
あるわけだけど、どっちに追加すればいい?その条件を明確にしてくれ。
見やすい形とは?

255 :215:03/06/10 23:01
>>244
#include <stdio.h>
#define SIZE 10
main()
{
int dim[SIZE]={1,2,3,4,5,6,7,8,9,10};
int i,s,x;
x=i[0];
i[0]=i[9];
i[9]=x;
s=0;
for(i=0;i<SIZE;++i){
s=dim[i];
printf("%5d",dim[i]);
}

}
こんな感じにできたけど、大丈夫かな?

256 :223:03/06/10 23:03
>>248
ありがとう。

>int a[100] = { 0 }
こうやるのか!
こっちの方がスマートにかけていいですね。
自分はもっと勉強せんとあかんようです・・

257 :デフォルトの名無しさん:03/06/10 23:04
> こんな感じにできたけど、大丈夫かな?
知るか!!
エスパーはどこいった?

258 :249:03/06/10 23:04
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&rm=100


このスレッドの84番です タイプスクリプトは

259 :hide:03/06/10 23:07
この宿題解いてください。

#include<stdio.h> /* フィボナッチ数列について */
#define NUM 40 /* F(40)まで求める      */  
int fib(int n)
{
if(n > 1){
return fib(n-1) + fib(n-2);
}else{
return 1;
}
}

int main()
{
int i;
for(i=0; i<=NUM; i++){
printf("Fib(%d) = %d.\n", i, fib(i));
}
}

上のプログラムのfib()関数を再帰を使わずに
計算するように書き換えよ。すなわち、結果を
蓄える配列Fib[]とF(count-1)まで計算したこと
を表わす変数countを、静的変数(または大域変
数)として宣言せよ。二重に計算することのな
いよう工夫すること。



260 :デフォルトの名無しさん:03/06/10 23:08
>>259大学の宿題ですか?
ちなみに何年?

261 :244:03/06/10 23:09
>>255
いやまだ自分は教えられるほど偉くもないんだけど、
俺がアドバイスできることといえば、
変数sはいらないんじゃない?

for( i = 0 ; i < SIZE ; ++i ){
printf("%5d",dim[i]);
}
でどうだろう。


262 :デフォルトの名無しさん:03/06/10 23:11
>>259
なんか逆の気がするな。
まず再帰を使わないのから作って、次に再帰関数で
やってみましょーが普通の手順じゃないのかな。
それにグローバル使ってもいいってなんでだろー。

263 :hide:03/06/10 23:12
>>260
 大学2年です。
 計算機言語という授業の宿題です。


264 :直リン:03/06/10 23:13
http://homepage.mac.com/yuuka20/

265 :デフォルトの名無しさん:03/06/10 23:13
>>254
テキストファイルがあるのですがそれを読み込んで
ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納します
IDは、番号です!例えばaaa2241見たいな感じです。
姓名、読みの文字数はおそらく不変です。
枝の追加は左の枝と右の枝どっちでもいいと思います(左と右変えると違うのですか?)
見やすい形…おそらく表示させて木とわかればいいと思います!

266 :デフォルトの名無しさん:03/06/10 23:17
>>265
そのテキストファイルの内容が知りたいといっているのだよ

267 :デフォルトの名無しさん:03/06/10 23:18
>>265
だいたいどれをキーにするの?

268 :262:03/06/10 23:20
>>259を実行してみたら最後のほうすごい時間かかった…
(明日論XP1700+でコンパイラはBCC)
やっぱり再帰はあかんね。おらよ。やっぱりグローバル変数なんか
使わなくていいとおもうよ。
main()
{
   int Fib[NUM + 1];
   int count;

   for (count = 0; count <= NUM; count++) {
      if (count > 1) {
         Fib[count] = Fib[count - 1] + Fib[count - 2];
      }
      else {
         Fib[count] = 1;
      }
      printf("Fib(%d) = %d.\n", count, Fib[count]);
   }

   return 0;
}

269 :わからずや:03/06/10 23:23
あのー。質問です。
計算式を文字列として読み込みスタックを用いて計算するプログラムに
ついて質問です。
逆ポーランド記法でスタックに入れていこうと思うのですが
7*(((6+8)*(3*6))+2)
のように括弧がついた式になるとスタックに入れる順番が分からなくなって
しまいます。
誰か詳しく教えて頂けませんか?



270 :225:03/06/10 23:25
こんな感じで?
#include <stdio.h>
#define SIZE 10
main()
{
int dim[SIZE]={1,2,3,4,5,6,7,8,9,10};
int i,x;
x=i[0];
i[0]=i[9];
i[9]=x;
for( i = 0 ; i < SIZE ; ++i ){
printf("%5d",dim[i]);
}
}
とりあえず完成したのですが、僕のほうでは
動作を確認する環境がありません。どなたか
このプログラムを実際に動かしてはもらえないでしょうか。
出力結果が
1 2 3 4 5 6 7 8 9 10
10 2 3 4 5 6 7 8 9 1
になればいいのですが。お願いします。

271 :デフォルトの名無しさん:03/06/10 23:26
>>262
フィボナッチ数列は定義が再帰(帰納)になってるので、
再帰で実装するのが自然だと思う。

272 :262:03/06/10 23:30
>>271
んー…しかしたかだか40程度で10秒以上かかってたぞ。
この程度の簡単なものに再帰は効率悪すぎる気がするな。

273 :デフォルトの名無しさん:03/06/10 23:32
>>272
うんもちろん。実装が自然かというのといい実装かというのは別の問題。
再帰を使わずに実装できるのならそっちのほうがたいていいい実装だろう。

274 :262:03/06/10 23:33
なるほど。

275 :デフォルトの名無しさん:03/06/10 23:33
>>269
ネタか?
逆ポーランド記法のメリットに括弧を使わずに演算の優先順位を決めれると
いうものがあるのだが。

276 :デフォルトの名無しさん:03/06/10 23:35
式変形をするんだろ。

277 :275:03/06/10 23:35
あ、まだ変換してないのね・・・

逝ってきます・・・

278 :デフォルトの名無しさん:03/06/10 23:37
ループはこんなんだと思う。
int fib(int n)
{
int x = 1, y = 0;
for (; n > 0; n--) {
int z = x;
x += y;
y = z;
}
}

279 :デフォルトの名無しさん:03/06/10 23:39
>>266
aaa111,井川慶,igawa/kei(aaa111)
aaa112,伊良部秀輝,irabu/hideki(aaa112)
:
:
みたいな感じです!



280 :デフォルトの名無しさん:03/06/10 23:42
>>279
読み方の後ろについている括弧で括られたidは除去しなきゃいけないの?

281 :デフォルトの名無しさん:03/06/10 23:43
>>280
除去しなくていいです

282 :デフォルトの名無しさん:03/06/10 23:45
えっちなサンプルムービー多数有ります☆!
http://cg.iclub.to/link/ranran1/

283 :デフォルトの名無しさん:03/06/10 23:59
二分木を見やすく表示せよ(通りがけ順)

一例として、たとえば左の子はアルファベットの早いもの、右は遅いものが来る二分木なら、
       d
      / \
     c f
          \
           g

のように

284 :283訂正:03/06/11 00:00
       d
      / \
     c    f
          \
           g


285 :デフォルトの名無しさん:03/06/11 00:02
お願いします。
ファイルがあります。
そのファイルには、データがそれぞれ19行×2列あります。
そのファイルのデータを読み込んで、各行のデータの平均と、その平均をつかって共分散を
求めるプログラムをどなたかお願いします。
データの型はdoubleです。

286 :デフォルトの名無しさん:03/06/11 00:04
>>285
一行にはどういう形式で列が記録されているのか?

287 :デフォルトの名無しさん:03/06/11 00:05
>>114
思いつくままにコーディングしてみた。
検算のためにシュテルマーの公式でπを小数点以下100桁まで計算するプログラム。
とりあえず遅い。固定小数点で計算するやつの数千倍遅い。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=85

288 :あぼーん:03/06/11 00:06
http://homepage.mac.com/hiroyuki44/hankaku03.html

289 :まりお:03/06/11 00:07
>>283
なるほど!
後は自分で考えてみます

290 :283訂正:03/06/11 00:08
二分木を作る関数はわかっているので、それを表示する
void printtree(struct node *p) 
を教えてください

291 :デフォルトの名無しさん:03/06/11 00:15
>>286
0.XXXXXX 0.XXXXXXX
0.XXXXXX 0.XXXXXXX
.
.
.
0.xxxxxx 0.xxxxxxx
って感じです。


292 :デフォルトの名無しさん:03/06/11 00:15
本当に簡単な宿題です!・・・できない俺がおかしいんですけどね。

・名前を入力するとその人の特徴を外部ファイルから読み出して出力するプログラム。

えーとポインタ等使うんでしょうか?tokutyo.txtってファイルの中は
aoki
  ゴルフ大好き
akagi
  麻雀大好き
akebono
  抱擁大好き
(以下ふざけた名前と特徴が続く(3kb分))

となってるんですけど、これをどうやって読み出すんでしょうか。
多分、これのもっと高度なものを上でやってるんでしょうけど全然わからなかったもので・・・
せめて実現するために使う関数でも教えてもらえませんか(´Д`;)

293 :デフォルトの名無しさん:03/06/11 00:17
>>292
fopenでファイルを開きfgetsで読み出す。読み出したものはstrcmpで照合する。表示はprintfで。

294 :275:03/06/11 00:25
>>269

>ttp://weinberg.hoops.ne.jp/soft/

誤解したお詫び。
本当は漏れ自身が解こうかとおもたが、スタックの実装がめんどく感じたので却下。
(C++だとstackがあるんだが・・・Cにもある!?)
優先順位の判定をいじればそんなに難しいものじゃないかと。

295 : :03/06/11 00:26
ちょっと聞きたいんですけど,今あるファイルを開いて値を読み取っていくという
プログラムをC言語でやってます。そこで
# a a a
36 56

というファイルを読むときに#が現れたらその行は無視して
36と56を用意した変数に格納する。
もし#がないファイルでもきちんと36と56を用意した変数に格納する
というプログラムをCで書きたいのですがどうもうまくいきません。
どなたかちからかしてください

296 :デフォルトの名無しさん:03/06/11 00:27
どういう意味であるかどうか聞いているのか分からないけど、標準ライブラリにはない。
そういうものは自分で実装するかライブラリを入手する。

297 :デフォルトの名無しさん:03/06/11 00:28
>>295
aaa # bbbという行があった場合はどうするんだ?
aaa まで読んであとは無視するのか?それとも行全体を無視するのか?

298 :デフォルトの名無しさん:03/06/11 00:32
>>297
一般的に考えると前者だと思うが、
>>295の書き方だと後者にも思えるな。

299 :295:03/06/11 00:35
すいません説明不足でした。
#がある行は無視します。

300 :デフォルトの名無しさん:03/06/11 00:37
>>299
じゃあfgetsで読んだ後にstrchrで'#'を探して、NULLが返ってこなければ無視すればいいんじゃないの?

301 :わからずや:03/06/11 00:39
>>275
返事ありがとうございます。
http://weinberg.hoops.ne.jp/soft/ に行けませんでした。
Cにはstackはありません(たぶん)。stackは配列かポインタで表せます。
優先順位はだいたい分かるんですけど優先順位の判定はどうするんですか?
教えて下さい。

302 :デフォルトの名無しさん:03/06/11 00:39
>>299
つまり、「#」のある行は問答無用で無視する訳だな。
それなら、

 1.fgets()で一行読み込む
 2.strchr()で'#'を検索
 3.検索した結果、'#'が見つかれば次の行へ
   見つからなければ、データを変数に格納する

と言うステップを踏めばいい。

303 :295:03/06/11 00:39
ちなみに#は行の先頭に現れます。
>>300
strchrですか一度やってみます。。


304 :デフォルトの名無しさん:03/06/11 00:41
>>293
お早い回答ありがとうございます。これで友人の鼻を明かしてやれそうです。(´∀` )
この辺を集中して学ぶにはどうしたらいいのでしょう?これはポインタ、もしくは構造体なんでしょうか?
ホント馬鹿で申し訳ないです。持ってるビギナー向けの参考書に載ってなくて・・・(´Д⊂

305 :295:03/06/11 00:46
fscanf(fp,"%d %d %d",&a,&b,&c);
if(width=='#'){
fgets(damy,sizeof(damy),fp);
fscanf(fp,"%d %d %d ",&a,&b,&c);
}
これは掲示板書き込む前に自分でかいたやつなんですが
どこがまずいんでしょうか。うまくよみこめませんでした。
変数a,b,cはすべてintです。damyは文字配列です。
>>302
みなさんその方法を薦められてるようなのでそれでやってみます




306 :デフォルトの名無しさん:03/06/11 00:49
>>305
そのwidthってのはなによ?
とりあえず真っ先にfgetsで一行読むこと。
その後に>>300,>>302を行う。
#がなければfgetsで読んだものをsscanfで解析してa,b,cにいれる。

307 :275:03/06/11 00:56
>>301
実は漏れも同じ様な講義を受けたことあるんだが(w

他の演算子と同じように判定すればいいよ。
ただ、最終的にはスタックに残らないような処理にしなきゃいけないのを
忘れないように。

308 :わからずや:03/06/11 01:10
>>275
親切に有り難うございました。

309 :無料動画直リン:03/06/11 01:13
http://homepage.mac.com/norika27/

310 :244:03/06/11 01:13
>ナツメ社 入門ソフトフェアシリーズ1 C言語 河西 朝雄・著
はだめだめです。ANSI準拠といいつつ嘘があるし、

int data[N];
for (i = 0. i <= N; i++)
data[i] = 0;

みたいなやばいソースが平気でサンプルになってます。



俺が持ってる教科書これだ・・・・


311 :デフォルトの名無しさん:03/06/11 01:15
>>310
ピリオドは誤植として、<=はまずいな(笑)

312 :デフォルトの名無しさん:03/06/11 01:23
「void main()」なんてのを平気で載せてる本もあるくらいだしなぁ…。

313 :デフォルトの名無しさん:03/06/11 01:26
本ではないけど、MSDNライブラリはvoid main()

314 :デフォルトの名無しさん:03/06/11 01:41
>>301
昔、何代目かのスレで作った逆ポーランドへ変換するプログラムが残っていたので
貼っときます。再帰下降構文解析を使っています。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=86

315 :249:03/06/11 02:20
どなたかアルゴリズムお願いします。

ここなら必ずできる方がいると信じています。

進級できるかな・・・

316 :デフォルトの名無しさん:03/06/11 03:15
>>238
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=87

317 :デフォルトの名無しさん:03/06/11 03:38
素数関係のスレで見つけたのですが、どなたかこれの意味が分かる方が
いたら、Cのソースにしてみていただけないでしょうか?
integer n > 1
 1. if ( n is of the form a^b , b > 1 ) output COMPOSITE;
 2. r = 2;
 3. while(r < n) {
 4.   if ( gcd(n,r) != 1 ) output COMPOSITE;
 5.   if (r is prime)
 6.     let q be the largest prime factor of r - 1;
 7.     if ( q>= 4*sqrt(r)*log(n) and ( n^((r-1)/q) != 1(mod r) )
 8.        break;
 9.   r = r + 1;
 10. }
 11. for a=1 to 2*aqrt(r)*log(n)
 12.   if ( (x-a)^n != (x^n -a)*(mod x^n - 1,n) ) output COMPOSITE;
 13. output PRIME;


318 :デフォルトの名無しさん:03/06/11 07:15
文字型の2次元配列を用意し、いくつかの文字列を読み込み、
それらの文字数の少ない順にソートして表示するプログラムを作成しなさい。

レベル1:配列のままでmain関数だけで処理をする
レベル2:ポインタ変数を用いる
レベル3:ソートする部分を関数にする

319 :デフォルトの名無しさん:03/06/11 07:37
>>312
int main(void)で始めて、return 0;などで終わるのが正しいやり方なんですか?

320 :デフォルトの名無しさん:03/06/11 07:54
>>319
ttp://www-ccs.ucsd.edu/c/lib_over.html#C%20Program%20Startup%20and%20Termination

321 :デフォルトの名無しさん:03/06/11 08:43
>>318
こんな感じで

#include <algorithm>
#include <iostream>
#include <vector>
#include <string>

bool string_short( std::string const& lhs, std::string const& rhs ){ return lhs.size()<rhs.size(); }

int main()
{
char dummy[1][1];
std::vector< std::string > array;
std::copy( std::istream_iterator< std::string >( std::cin ), std::istream_iterator< std::string >(), std::back_inserter( array ) );
std::sort( array.begin(), array.end(), string_short );
std::copy( array.begin(), array.end(), std::ostream_iterator< std::string >( std::cout, " " ) );
return 0;
}

322 :デフォルトの名無しさん:03/06/11 08:58
このスレ伸びるの早いよ

323 :デフォルトの名無しさん:03/06/11 09:00
>>319
「void main( /* 中略 */ )」としても、
exit() 関数がある以上 void になり得ない。

324 :デフォルトの名無しさん:03/06/11 09:03
ところで、擦れ違いかもしれないけど、
int foo ();
みたいに、引数を省略した場合って(int)になるんだよね?
この挙動って最新のC99で変わってる?
調べても分からなかったんだが

325 :デフォルトの名無しさん:03/06/11 09:08
cなら、プロとタイプでの引数の省略は、「チェックしない」を意味する。

326 :デフォルトの名無しさん:03/06/11 09:15
>>324
>擦れ違いかもしれないけど

わかってるのなら書くなよ。

327 :デフォルトの名無しさん:03/06/11 09:18
(1)テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.
新しいデータを一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを
使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ見やすい形に表示するよう工夫すること.
テキストファイルがあるのですがそれを読み込んで
ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納します
テキストファイルの例は>>279です
枝の追加は左の枝と右の枝どっちでもいいと思います(左と右変えると違うのですか?)
見やすい形…>>284のように木を書いてください


328 :デフォルトの名無しさん:03/06/11 09:32
>>327
CUIでツリーを表示するのはかなり難易度が高いぞ?

329 :デフォルトの名無しさん:03/06/11 09:33
CUI??

330 :デフォルトの名無しさん:03/06/11 09:37
character user interface <--> graphical user interface

331 :_:03/06/11 09:45
http://homepage.mac.com/hiroyuki44/hankaku06.html

332 :デフォルトの名無しさん:03/06/11 09:53
CUIはいいとして、別に木の形に表示しろというわけじゃないでしょ。

333 :デフォルトの名無しさん:03/06/11 09:59
こんな感じの木でいいですよ
Larry -R- Emilio -R- Brent -R- Adolpho
-L- David
-L- Jeff -R- Francis
-L- null
-L- Stephen -R- Mike -R- null
-L- Roger
-L- Tom


334 :デフォルトの名無しさん:03/06/11 09:59
>>326
すれ違いというルールを厳格に主張する奴は目的を見失ってるね。
例えそれが純粋にC/C++の宿題に関することから始まり、最終的にはコンパイラや
Cの仕様の問題になったとしてもそこまで指摘することは自然なことだし
議論としては継続しているじゃないですか。
そのことがスレッドを読みにくくするんですか。

スレ違いなどというものを厳密に守った結果、助言としては誤解を与え得る
中途半端なものになっては本末転倒だが、妙なこだわりに取り付かれた人たちに言っても無駄か。

335 :デフォルトの名無しさん:03/06/11 10:00
>>333
それのどこが二分木?

336 :デフォルトの名無しさん:03/06/11 10:03
>>333うまく表示できませんでした。すいません

337 :デフォルトの名無しさん:03/06/11 10:08
>>327
これを応用しる!
http://www.belution.com/miwaki/ads/tree.shtml

338 :デフォルトの名無しさん:03/06/11 10:15
Larry -R- Emilio -R- Brent -R- Adolpho
-L- David
-L- Jeff -R- Francis
-L- null
-L- Stephen -R- Mike -R- null
-L- Roger
-L- Tom


339 :デフォルトの名無しさん:03/06/11 10:16
やっぱりうまく表示できません

340 :デフォルトの名無しさん:03/06/11 10:28
Larry 
    Emilio
        Brent
            Adolpho
            David
        Jeff
            Francis
            null
    Stephen
        Mike
            null
            Roger
        Tom

341 :デフォルトの名無しさん:03/06/11 10:28
Larry -R- Emilio -R- Brent -R- Adolpho
               -L- David
         -L- Jeff -R- Francis
              -L- null
   -L- Stephen -R- Mike -R- null
           -L- Roger
       -L- Tom

342 :249:03/06/11 10:53
どなたか助けてください。
アルゴリズムさえわかれば何とかなるんですTT



343 :デフォルトの名無しさん:03/06/11 10:55
ラウンジに二分木置いたYO

344 :デフォルトの名無しさん:03/06/11 10:59
本当にその「できるだけ見やすく」というのは木らしく表示するという意味なんだろうな?

345 :まりお:03/06/11 11:15
二分木マダー? (AA略

346 :デフォルトの名無しさん:03/06/11 11:22
>>342
提出して不十分と言われたレポートを晒せ

347 :316:03/06/11 11:35
無視されてるTT

348 :デフォルトの名無しさん:03/06/11 12:00
>>347
仕様が違うんじゃない?
どうもIDをキーにするのでは無いらしい。
(だから前もって聞いたのに)

349 :デフォルトの名無しさん:03/06/11 12:08
てか、ここがおかしい
>枝の追加は左の枝と右の枝どっちでもいいと思います

350 :デフォルトの名無しさん:03/06/11 12:09
>>347
なんだっての?
315にソースがあるけど、これがなんなの?

351 :350:03/06/11 12:12
ごめん間違い316ね。
でも347と315は別の人なの?
二分木のプログラムは316にあるけど。

352 :350:03/06/11 12:14
あ、同じひとだね。
何ができないのか良く分からないよ、どっちにしても。

353 :デフォルトの名無しさん:03/06/11 12:17
2つの文字列が等しいかどうか判定するアルゴリズムをフローチャートを用いて表現せよ。
そのフローチャートに基づいてプログラムを作成せよ。フローチャートは分かりやすさも評
価します。

Cでお願いします

354 :デフォルトの名無しさん:03/06/11 12:20
キレイな娘のヌード厳選してます☆
http://endou.kir.jp/moe/linkvp.html

355 :デフォルトの名無しさん:03/06/11 12:38
>>353

/* 二つの文字列が等しければ1を異なれば0を返す */

int strequal(const char *s1,const char *s2)
{
for(;*s1==*s2;s1++,s2++)
if(*s1=='\0')
return 1;
return 0;
}


356 :デフォルトの名無しさん:03/06/11 12:39
>>355
大変デンジャラスなコードでつね。

357 :デフォルトの名無しさん:03/06/11 12:43
>>356
どこが?

358 :デフォルトの名無しさん:03/06/11 12:45
>>353
int strcmp( const char *s1, const char *s2 )
{
  while( *s1==*s2 ) /* 比較が一致している間ループ */
  {
    if( *s1=='\0' ) /* s1、s2 共に文字列の終端か? */
    {
      return 0;
    }
    s1++,s2++;
  }
  return *s1 - *s2;
}

359 :デフォルトの名無しさん:03/06/11 12:46
>>358
大小比較はいらないと思う。

360 :デフォルトの名無しさん:03/06/11 12:47
s1とs2でs1の方が短い場合前方一致になっちゃうよ。

361 :デフォルトの名無しさん:03/06/11 12:48
>>359
libcのコードだろ

>>360
・・・・・

362 :デフォルトの名無しさん:03/06/11 12:49
>>360
終端文字('\0')が同じ場所にあればif(*s1=='\0') が真となり1がかえる。
s1の方が前にあればforの*s1==*s2が偽となりループを抜け0が返る。
s1の方が後にある場合は上と同じ。


363 :353:03/06/11 12:50
>>355 >>358
ありがとうございます!
しかしレポートはメールで提出なのでフローチャートを
文字で書かないといけないみたいです
なにかアドバイスをお願いします

364 :デフォルトの名無しさん:03/06/11 12:50
>>363
フローチャートはスレ違い

365 :デフォルトの名無しさん:03/06/11 12:56
フローチャートを文字でって…
罫線文字か何かで表現するのか?

366 :デフォルトの名無しさん:03/06/11 12:59
Visioで作ってメールに添付。

367 :デフォルトの名無しさん:03/06/11 13:03
Visioって何ですか?

368 :デフォルトの名無しさん:03/06/11 13:33
>>367
自分で調べもせず、すぐ人に聞く癖は直したほうがいいよ。


369 :デフォルトの名無しさん:03/06/11 13:55
いいかげんフローチャートみたいなものを学校で教えるのはよして欲しいなあ。
過去の遺物というだけならまだいいが、害悪垂れ流しだからなあ…。

370 :デフォルトの名無しさん:03/06/11 14:44
>>369
では何で記述しろというんだ?
過去の遺物でないアクティビティ図ならいいのか?
何も変わるところはないと思うが

371 :デフォルトの名無しさん:03/06/11 14:57
むしろ誰が誰になんの目的で見せるものかをはっきりさせればいいかと。
目標を明確にしないで書かせることが多いみたいだから実際あんまり意味ないと思われ。

372 :デフォルトの名無しさん:03/06/11 15:04
>>370
箇条書き

373 :デフォルトの名無しさん:03/06/11 15:43
果物の名前とその値段をメンバとして持つ構造体を定義し、
この構造体へのポインタをノードの値として持つ二分木のノードを定義せよ。
次に、果物の名前に対して二分探索木の構造を保つように、
アルファベット順に基づきデータを追加するadd_node()関数、および、
この関数により生成される二分探索木に対し、
果物の名前をキーとしてノード検索を行うsearch_node()関数を定義せよ。

add_node()はノードに格納する値を引数とし、生成されてノードへのポインタを戻り値とします。
search_node()は、ノードへのポインタと探索キーを引数にとり、
探索で見つかったノードへのポインタを戻り値とします。

お願いします。

374 :デフォルトの名無しさん:03/06/11 15:53
>>370
最も汎用的なフォーマットはテキスト。
ソースファイルに全て記入しる。

375 :デフォルトの名無しさん:03/06/11 15:55
フローチャートを文字だけにすればよかろう。
ifなら 〜ならこっち違うならこっちとか
switchなら条件はこういう場合はこうとか
日本語から学んでくるか?すこしは知恵使えよ。
おれは今知恵熱出たけどな

376 :デフォルトの名無しさん:03/06/11 15:58
|----------------|
|            |
|----------------|
     ↓       no
<           > →
     ↓yes


こんな感じで。

377 :デフォルトの名無しさん:03/06/11 16:00
>>376
あんまフローチャートと変わんない気がするんだが

378 :デフォルトの名無しさん:03/06/11 16:03
IIOSS落としてきてそれでアクティビティ図書いて印刷すればいいやん

379 :デフォルトの名無しさん:03/06/11 16:19
>>375
それはもはや「チャート」ではないのでは?

380 :デフォルトの名無しさん:03/06/11 16:28
結局の話ペイント使ってBMPで作っておくれや。
色使いも荒くして極端にファイル重くしろ。
そして送りつけろ

381 :デフォルトの名無しさん:03/06/11 16:29
「フローチャートは時代遅れ」と言いたかっただけと

382 :デフォルトの名無しさん:03/06/11 16:48
2分法のやり方教えてください
y=tan(x)-x^x
が0になる点を探したいのですが
二分法でなくても答えが出せるのがあったら
教えてください

383 :デフォルトの名無しさん:03/06/11 16:53
>>373
NODE* search_node(char *name, NODE *node) {
int result; NODE *next;
if (node==NULL) return node;
if ((result=strncmp(name, node->fruit->name, L))==0) return node;
next = result < 0 ? node->left : node->right;
return next ? search_node(name, next) : NULL;
}
int add_node(char *name, int price, NODE *node) {
int result; NODE **pnext;
if (node==NULL) return (tree = create_node(name, price, NULL, NULL), 1);
if ((result = strncmp(name, node->fruit->name, L))==0) return 0;
pnext = result < 0 ? &node->left : &node->right;
return *pnext == NULL ? (*pnext = create_node(name, price, NULL, NULL), 1) : add_node(name, price, *pnext);
}

384 :ジュウオウ:03/06/11 17:03
学生番号(3桁の整数)と氏名(アルファベットで姓のみ)を
メンバとする構造体を定義し,キーボードから学生番号と氏名を
5名分読み込むプログラムを作成しなさい.ただし,3桁以外の整数値を入力した場合は再入力するようにし,
最後に5名分のデータをすべて表示すること.

〔実行結果〕
学生番号(3桁の整数)> 444
氏名(アルファベットで姓のみ)> Takeda
      …………
学生番号(3桁の整数)> 1100
学生番号(3桁の整数)> 99
学生番号(3桁の整数)> 631
氏名(アルファベットで姓のみ)> Sato
学生番号(3桁の整数)> 107
氏名(アルファベットで姓のみ)> Furukawa

(5名分のデータ表示例〉
学生番号: 444 氏名: Takeda
学生番号: 221 氏名: Kato
学生番号: 859 氏名: Azuma
学生番号: 631 氏名: Sato
学生番号: 107 氏名: Furukawa



385 :デフォルトの名無しさん:03/06/11 17:12
これも前スレにあったなぁ

386 :デフォルトの名無しさん:03/06/11 17:21
#include <stdio.h>
#define N 5
#define BUF_SIZE 128
typedef struct _STUDENT {
int number; char name[BUF_SIZE];
} STUDENT;
STUDENT data[N];
int main(int argc, char *argv[])
{
int i,input; char buf[BUF_SIZE];
for(i=0;i<N;i++) {
INPUT_NUMBER:
printf("学生番号を入力してください(3桁整数)> "), fgets(buf, sizeof(buf), \
stdin);
if(!((sscanf(buf, "%d", &input) == 1) && (input > 99) && (input < 1000)))
goto INPUT_NUMBER;
data[i].number = input;
printf("名前を入力してください> "), fgets(buf, sizeof(buf), stdin), buf[str\
len(buf)-1]='\0';
strncpy(data[i].name, buf, sizeof(data[i].name));
}
for(i=0;i<N;i++) printf("番号: %d 名前: %s\n",data[i].number,data[i].name);
return 0;
}


387 :デフォルトの名無しさん:03/06/11 17:27
しかも前スレで出てた
「003や067のときはどうするのか」
が書いてないし

388 :デフォルトの名無しさん:03/06/11 17:28
>>387
同じ授業を取ってる別人でしょう

389 :デフォルトの名無しさん:03/06/11 17:36
gotoツカイ==DQNカクテイ

390 :デフォルトの名無しさん:03/06/11 17:38
>>382
Newton法もあるけど2分法で。
#include <stdio.h>
#include <math.h>

double func(double x)
{
return tan(x)-pow(x,x);
}

int main(int argc, char *argv[])
{
double x0,x1,x01;
double y0,y1,y01;

x0 = 0;
x1 = 1;
do{
y0 = func(x0);
y1 = func(x1);
if(y0*y1 > 0) break;
x01 = (x0+x1)/2;
y01 = func(x01);
if(y01*y1 < 0)
x0 = x01;
else
x1 = x01;
printf("f(%g)=%g\n",x01,y01);
}while(fabs(y01) > 1e-10);

return 0;
}

391 :デフォルトの名無しさん:03/06/11 17:39
C言語。2二次元配列でビンゴを作る。
3行3列の2次元配列に1から99までの数値を入力する。
そのあと1から99までの数値をランダムにキーボード入力し、予め入力した
3行3列の数値にあうものがあったらその数値を0に置き換える。
当たりが縦又は横に並んだら「ビンゴ」とと何回目の入力で「ビンゴ」となったか
を表示する。

392 :デフォルトの名無しさん:03/06/11 17:41
>370
PAD

393 :デフォルトの名無しさん:03/06/11 17:44
>>391
行列の要素はいつ入力するんだ?

394 :デフォルトの名無しさん:03/06/11 17:47
>>393
ゲーム開始前じゃねーの?

395 :C語初心者:03/06/11 18:40
誰か暇なC言語マスターの方プログラムを作ってくださいな。
再帰を利用して迷路を解く。
外部変数
int position [9][9]={
{1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,1},
{1,0,1,1,1,1,0,1,1},
{1,0,0,0,0,1,0,0,1},
{1,1,1,1,0,1,1,0,1},
{1,0,0,0,0,1,0,0,1},
{1,1,0,1,1,0,1,1,1},
{1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1}};
上の迷路で"1"が壁で、"0"が通路です。
Startは(y,x)=(1,1) Goalは(y,x)=(7,7)です。
関数 int visit(int y,int x) を使ってください。
一度通った道には2を、解の道には3を入れてください。
で、最短距離の座標と ,
壁を*、迷った所を?、解を0で表示する
プログラムをお願いします。表示にはprintfをお願いします。



396 :デフォルトの名無しさん:03/06/11 19:18
だからこのスレ流れるの速いよ

397 :デフォルトの名無しさん:03/06/11 19:28
>>395
> 最短距離の座標

ってなんじゃらほい。
それから最短経路を求めるのか分岐点のない経路を一つでも求めれば良いのか。

398 :デフォルトの名無しさん:03/06/11 19:31
>>395
しらみつぶしにやればいいんじゃない。

399 :デフォルトの名無しさん:03/06/11 19:49
しらみってどうやって潰すの?

400 :デフォルトの名無しさん:03/06/11 20:07
関数f(x)の微分の定義
df/dx=lim{f(x+h)-f(x)}/h
に従い、十分小さいhを与えて関数x^3の微分値数値計算する関数を作成。
また解析解dx^3/dx=3x^2と比較するプログラムを考える事。
*比較するxの値の個数は20程度
 小さい実数 h を実行時に与えるようにしてください. atof(argv[1]) あるいは scanf() どちらを用いてもいいです.
x の 範囲は実行時に与えるようにしなくとも結構です. プログラム内で適当に(例:0から10まで0.5刻み)固定してください.

・・・という問題なのですが、よろしかったらご教授ください(;´〜`)

401 :デフォルトの名無しさん:03/06/11 20:09
void print_answer(void) {
int i, j;
for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++)
printf("%c", " *?0"[position[i][j]]);
printf("\n");
}
}
int check(int y, int x) {
if (x < 0 || x > 8) return 0;
if (y < 0 || y > 8) return 0;
return position[y][x] % 2 == 0;
}
int visit(int y, int x) {
int r;
if (!check(y,x)) return -1;
position[y][x] = 3;
if (x == 7 && y == 7) return 0;
if ((r = visit(y,x+1)) != -1) return 1+r;
if ((r = visit(y,x-1)) != -1) return 1+r;
if ((r = visit(y+1,x)) != -1) return 1+r;
if ((r = visit(y-1,x)) != -1) return 1+r;
position[y][x] = 2;
return -1;
}
int main(void) { int n = visit(1,1);
if (n == -1) { printf("経路がみつかりません\n"); } else {
printf("最短距離は%d\n", n);
print_answer(); }
return 0;}

402 :C語初心者:03/06/11 20:09
皆様、ご返答ありがとうございます。
>>397
> 最短距離の座標
(y,x)座標で迷路のゴールまでの最短距離だと思います。

>それから最短経路を求めるのか分岐点のない経路を一つでも求めれば良いのか。
最終的に 壁を*、迷った所を?、解を0で表示するプログラムになればいいと思います。
様は、壁の座標を*で、最短距離をの座標を0で、残りを?で埋めればよいかと。
よろしくお願いします。

403 :デフォルトの名無しさん:03/06/11 20:10
>>400
前にあったかもしれんぞ。

404 :401:03/06/11 20:16
401のプログラムは最短経路を求めてないんだよな・・・。

405 :C語初心者:03/06/11 20:17
>>397
> 最短距離の座標
(y,x)座標で迷路のゴールまでの最短距離だと思います。

追加です
単純にこの時の(y,x)の値を表示するだけです。

>>401
ありがとうございます


406 :デフォルトの名無しさん:03/06/11 20:28
>>402
日本語が変なのはともかくとして、問題の意味が曖昧だ。
ゴールに到達する経路のうち、最短経路には分岐点はないが、
分岐点のない経路が最短であるとは限らんよ。
どっちを求めればいいんだ?
それとも分岐点のない経路が最短であるような迷路しか
扱わないことを仮定して良いのか?

407 :デフォルトの名無しさん:03/06/11 20:29
>>406
>最短経路には分岐点はない
意味がわからん。

408 :デフォルトの名無しさん:03/06/11 20:33
>>407
そうだな悪かった。

409 :C語初心者:03/06/11 20:35
>>402
とりあえず最初に示した、1と0の迷路では
ゴールへの道は一つしかないと思うんですが…。


410 :デフォルトの名無しさん:03/06/11 20:44
>>409
Windowsならスクリーンセーバーの迷路を見てみるといい。
片手を壁に当てて迷路をたどると(出口が壁にそってる場合は)必ず出口に出ることができる、という法則。
これだと必ず出口に出ることはできるが、歩く距離は必ずしも短いわけではない。

411 :C語初心者:03/06/11 20:59
>>410
そういうことですか。
勘違いしていました。
単純に、分岐点の無い経路を求めてください。

412 :デフォルトの名無しさん:03/06/11 21:03
C言語でとあるディレクトリの中にあるファイルの情報を取得させたいのですが
なにかイイ関数、いい方法でもないですか?

413 :デフォルトの名無しさん:03/06/11 21:06
>>412
「ファイルの情報」とは、サイズ?内容?ファイル名のみ?
OSによっても答えがかわってきそうなので、OSも追記したほうが。

414 :275:03/06/11 21:11
>>400
長いんでスマソ。
C++の文法になっているから必要に応じて書き換えてくれ。
////////////////////////////////////////////////////
#include <stdio.h>
#include <iostream>
using namespace std;
double func(double);
void bibun( double h )
{
for( double x = 0; x <= 10; x += 0.5 )
{
double out;
out = func( x + h ) - func( x );
out /= h;
printf( "x(%f) :3x~2 の値 ->%f 定義による計算結果 ->%f\r\n",x, 3 * ( x * x ), out );
}
}

415 :275:03/06/11 21:11
続き...
double func(double x)
{
return x * x * x;
}

void main()
{
double h;
cin >> h; // hを入力

bibun( h );
}

416 :412:03/06/11 21:19
>>413
とりあえず、ファイル名とファイルサイズが知りたいのです。
環境はUNIXです。

417 :382:03/06/11 21:23
390さん有難う御座います
ニュートン法というのもよろしかったら教えてください


2分法のやり方教えてください
y=tan(x)-x^x
が0になる点を探したいのですが
二分法でなくても答えが出せるのがあったら
教えてください




418 :デフォルトの名無しさん:03/06/11 21:25
>>416
readdir()

419 :デフォルトの名無しさん:03/06/11 21:28
>>416
stat

420 :デフォルトの名無しさん:03/06/11 21:29
http://jbbs.shitaraba.com/computer/6765/


421 :デフォルトの名無しさん:03/06/11 21:30
Cでチャットや掲示板を作るのは可能ですか?

422 :デフォルトの名無しさん:03/06/11 21:33
>>421
技術的には可能。

423 :デフォルトの名無しさん:03/06/11 21:35
では、Cで作ったそれらをWeb上にアップできるのですか?
Cはどのようにして・・・

424 :デフォルトの名無しさん:03/06/11 21:37
>>423
web上にアップって意味わからん。
ちなみに板違い

425 :デフォルトの名無しさん:03/06/11 21:38
>>423
WebProg板

426 :デフォルトの名無しさん:03/06/11 21:42
>>423
躍動感に乏しいが、WebProg板に「C言語のCGIを語りつつ普及するスレ」がある。
http://pc2.2ch.net/test/read.cgi/php/1048393217/l50

427 :デフォルトの名無しさん:03/06/11 21:43
>>424
会社のお姉ちゃんが言ってた「ネットワーク上に保存しました」
くらい微妙な言葉だな。

428 :デフォルトの名無しさん:03/06/11 21:44
>>423
サーバにソースをアップしてサーバ上でコンパイル。
同じ環境ならコンパイル後にアップしてもいいけど。

429 :デフォルトの名無しさん:03/06/11 21:45
下記の機能アルゴリズムを設計し,C言語により実装せよ.
「1.任意の個数のint型数値をコンソールより入力された順に保存する.
2.文字列"Sort"の入力により,入力された数値群を降順に並び替える.
3.最大値と最小値の平均値を計算し,2分探索法で検索する.」

設計指針
・ソート部,探索部は,別のアルゴリズムを採用しても利用できるように設計/実装せよ.
・コンソール入力は,scanf()を使い,文字列,記号,整数値以外は,それぞれ別のエラーコードを返し,
入力を継続するようにせよ.
・メモリ節約のため,数値保存のためのメモリは動的に確保せよ.


430 :デフォルトの名無しさん:03/06/11 21:55
>>429
マルチやめれ

431 :デフォルトの名無しさん:03/06/11 22:39
問題:
2次の正則行列Aの逆行列A^-1を求める関数を作成せよ。
また確認のために、任意の行列に対して逆行列を計算し、結果を返し、
行列の積A×A^-1を計算し、これが単位行列になることを確認せよ。
説明:
2次の行列A=(αij)の逆行列A^-1は
    |α22/D -α12/D|
A^-1=|           | 
    |-α21/D α11/D|
で与えられる。ここでDはAの行列式で

D=α11α22-α12α21
で与えられる。
まずαijに任煮の数値を読みこみ、Dを計算し、D=0の場合は
逆行列が存在しないと表示し、それ以上の計算はせずに終わる。
D!=0のとき逆行列を計算する。さらにこれが逆行列となっていることを
確認するために、積A×A^-1を計算し、これらの結果を印刷する。
印刷するときには行列であることがわかるように、各自工夫する。
配列の大きさはdefine文を用いてもよい。またA×Bは次の式で与えられる。
     |α11Β11+α12Β21   α11Β12+α12Β22|
A×B=|                             |
     |α21Β11+α22Β21   α21Β12+α22Β22|



以上が問題です。言語はCです。関数を3つ作ってこいと言われました。
よく分からないのでご教授お願い致します。

432 :デフォルトの名無しさん:03/06/11 22:41
>>413
system("/bin/ls /targetdir");
結果を利用したいなら
popen("/bin/ls /targetdir", "r");
して
fgets();

433 :デフォルトの名無しさん:03/06/11 22:48
>>431
なんというバカにした問題なんだ!!

434 :デフォルトの名無しさん:03/06/11 23:06
>>433
簡単ですか?ご教授お願い致します

435 :382:03/06/11 23:38
>>417
で書いたのですが
ニュートン法を使い下に書いたのできますか
教えてください


y=tan(x)-x^x
が0になる点を探したいのですが
二分法でなくても答えが出せるのがあったら
教えてください

436 :デフォルトの名無しさん:03/06/11 23:41
微分できるんだから大丈夫なんじゃないの?

437 :デフォルトの名無しさん:03/06/11 23:45
2*2の逆行列の公式をそのまま書くだけだろ?

438 :デフォルトの名無しさん:03/06/11 23:54
>>437
そうだと思います。
関数をあまりっ理解してないのでプログラムで書くと
どのように書いていいかわかりません。
ご教授お願い致します。

439 :デフォルトの名無しさん:03/06/11 23:57
Dを求めるのと逆行列を求めるのと行列を表示するのを
関数にすればいいんじゃない?

まずαijに任煮の数値を読みこみ、Dを計算し、D=0の場合は
逆行列が存在しないと表示し、それ以上の計算はせずに終わる。

あとは、これをどうするかぐらいで。

440 :デフォルトの名無しさん:03/06/12 00:18
逆行列求めるのに除算があるけど、
丸めとか問題にならない?
分数でやらなきゃならないのかしらん。

行列式なんて忘れたんで、変なこといってたらスマソ。

441 :デフォルトの名無しさん:03/06/12 00:24
>>431
これでどうよ?
#include <stdio.h>
#include <float.h>
#define ROW 2
#define COL 2
int readM(double M[][COL])
{ char buf[BUFSIZ];
printf("A00 A01 A10 A11>");
if(fgets(buf,sizeof(buf),stdin)==0) return -1;
if(sscanf(buf,"%lf%lf%lf%lf",&M[0][0],&M[0][1],&M[1][0],&M[1][1])!=4) return -2;
return 0; }
int revM(double A[][COL],double B[][COL])
{ double det=A[0][0]*A[1][1]-A[0][1]*A[1][0];
if(fabs(det) < DBL_EPSILON) return -1;
B[0][0]=A[1][1]/det;B[0][1]=-1*A[0][1]/det;B[1][0]=-1*A[1][0]/det;B[1][1]=A[0][0]/det;
return 0; }
void mulM(double A[][COL],double B[][COL],double C[][COL])
{ int i,j,k; for(i=0;i<ROW;i++) for(j=0;j<COL;j++) for(C[i][j]=0,k=0;k<COL;k++) C[i][j]+=A[i][k]*B[k][j]; }
void printM(double M[][COL])
{ int i,j; for(i=0;i<ROW;i++) { for(j=0;j<COL;j++) printf("%1.4f ",M[i][j]); printf("\n"); } }
int main(int argc, char *argv[])
{ double A[ROW][COL],B[ROW][COL],C[ROW][COL];
while(readM(A)==0){
if(revM(A,B)){ printf("逆行列は存在しません\n"); continue; }
mulM(A,B,C);
printf("[A]\n"); printM(A);printf("[A]^-1\n"); printM(B);printf("[A]*[A]^-1\n"); printM(C);
}
return 0;}

442 :デフォルトの名無しさん:03/06/12 00:28
>>435
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
double
newton(double (*f)(double), double (*df)(double), double x, double h, int imax)
{
  int c;
  while (fabs(f(x))>h && c<imax){x -= f(x)/df(x); c++;}
  return c>=imax ? 0.0/0.0 : x;
}
#define IMAX 1000
double f(double x){return tan(x)-pow(x,x);}
double df(double x){return tan(x)*tan(x)-pow(x,x)*(log(x)-1)+1;}
int
main(int argc, char **argv)
{
  double x,y,h;
  if (argc<3) {fprintf(stderr, "usage: %s x0 delta\n", argv[0]); return 1;}
  sscanf(argv[1], "%lf", &x); sscanf(argv[2], "%lf", &h);
  y = newton(f, df, x, h, IMAX);
  if (y == y) printf("%.10e\n", y); else printf("failed\n");
  return 0;
}


443 :デフォルトの名無しさん:03/06/12 00:31
>>441
一瞬荒しかと思いますたw
それコンパイルしたらエラーが出た・・

444 :デフォルトの名無しさん:03/06/12 00:35
>>441
少し直したら回りました!
ありがとうございました。

445 :デフォルトの名無しさん:03/06/12 00:45
このスレ面白い。
すごい勉強になる。

446 :デフォルトの名無しさん:03/06/12 01:09
>>442
>   int c;

これは int c=0; だな

447 :デフォルトの名無しさん:03/06/12 01:10
再帰を用いたプログラムと、再帰を用いないプログラムとでは、
読みやすさ、計算にかかる手間などは
どう違うのですか?

448 :デフォルトの名無しさん:03/06/12 01:11
>>447 C/C++の宿題なのか?

449 :デフォルトの名無しさん:03/06/12 01:21
再帰を使った方がたいてい読みやすい。
手間は、階乗なんかだと掛ける回数は同じでも
関数を呼び出すためにスタックに入れて、また返ってくる分再帰は無駄になる。
フィボナッチ数列だと二つに分岐して再帰してさらに分岐した時に
同じ計算をするからさらに手間がかかる。

450 :デフォルトの名無しさん:03/06/12 01:21
>447,8
c++の宿題です。

451 :デフォルトの名無しさん:03/06/12 01:23
C++ は C より優れたので、C を忘れましょう。
Javaも勉強しよう
Ruby もなかなか面白い
PHP もなかなかね

とにかくC は捨てましょう

452 :デフォルトの名無しさん:03/06/12 01:27
>>451
それは宿題か?

453 :デフォルトの名無しさん:03/06/12 01:29
>>451
Cが一番たのしくね?

454 :デフォルトの名無しさん:03/06/12 01:30
LinuxをC++で書き直してくれ。

455 :デフォルトの名無しさん:03/06/12 01:31
c2cpp

456 :デフォルトの名無しさん:03/06/12 01:32
>>ワラタ

457 :デフォルトの名無しさん:03/06/12 01:52
>>449
そーいや、tail recursionしてる再帰関数ってCではちゃんとループに展開してくれるのかな。
まとまった時間が取れたら追求してみようっと。

458 :デフォルトの名無しさん:03/06/12 01:59
>449
ありがとうございます

459 :デフォルトの名無しさん:03/06/12 03:01
宿題じゃないのですが、C++の勉強で平方根を求めるプログラムを作ったのですが
ある特定の数以上になるとそれ以上数字が変わらなくなります。
なぜなのでしょうか?BorlandC++とCPADです。

#include<stdio.h>
#include<math.h>
main()
{
double a,i;
double root=1;
double x=1;
int hiku;
a=root*root;
for(i=0;;i++){
if(a<2){root=root+x;}
else {root=root-x;
x=x/10;}
a=root*root;
printf("値は%1.30f ルートは%1.30f",a,root);
hiku=getchar();
}
}

460 :_:03/06/12 03:06
http://homepage.mac.com/hiroyuki44/hankaku02.html

461 :デフォルトの名無しさん:03/06/12 03:16
>>459
保持できる桁数には限界がある
float.h の DBL_DIG
正確にはl og10(DBL_MANT_DIG)

462 :デフォルトの名無しさん:03/06/12 03:25
間違えた log10(pow(2, DBL_MANT_DIG)-1)

463 :デフォルトの名無しさん:03/06/12 03:37
表示はできてもこれ以上は計算できないって事ですか?

464 :デフォルトの名無しさん:03/06/12 03:42
doubleの精度は十進でせいぜい16桁程度

465 :デフォルトの名無しさん:03/06/12 03:46
>>463
そういうこと。
仮数部53ビットの場合、完全に信用できるのは15桁。

466 :デフォルトの名無しさん:03/06/12 04:58
>>459 宿題じゃないのにそういうことやるような人は、
C FAQ にもあげられている "What every computer scientist should know
about floating-point arithmetic" みたいな概説は読んでおくのが良いと思うなあ。
日本語訳はbit別冊コンピュータ・サイエンス1993年9月号別冊にあったけど、
webにもあるようだ。 ttp://www.google.com/search?q=%22scientist+shoud%22

467 :デフォルトの名無しさん:03/06/12 05:12
http://www.google.com/search?q=%22scientist+shoud%22

468 :デフォルトの名無しさん:03/06/12 05:13
>>466
全言語のページから"scientist shoud"を検索しました。
1件中1 - 1件目
予想される検索キーワード: "scientist should"

469 :デフォルトの名無しさん:03/06/12 07:37
2度目の質問をさせてください。
このいたにいる方なら簡単に解けると思ったのですが、返事がないので書きます。

再帰を利用しないで、かわりにifやwhile?を使って
ハノイの塔のディスク移動の手順を表示するプログラムを作ってください。

棒は3本で、ディスクは任意で実行できるのをお願いします。

470 :デフォルトの名無しさん:03/06/12 07:44
>>469
過去スレにあったよ。
つーか、書いた記憶がある。

471 :デフォルトの名無しさん:03/06/12 08:06
>>469
ttp://web.archive.org/web/20010515151844/http://www.cs.latrobe.edu.au/~lu/xhanoi/hanoi.c
$ ./hanoi -h
* Usage: hanoi [-k#1] [-n#2] [-m]
  where #1 is the number of pegs, #2 the number of discs,
  and -m for printing details of every move.
  Example: hanoi -k6 -n25
* Thank you for running this program, written by Xue-Miao Lu.
* This is an implementation of Lu's nonrecursive solution, Algorithm H,
  International Journal of Computer Mathematics, Vol. 33, page 24, 1990.
  The algorithm works for any number of pegs and for any number of discs.
* Since the number of moves increases exponentially, however, only a very
  limited number of cases are presentable within reasonable time and space.
* The limited eligible choices: k in [3..99] and n in [1..u(k,30)].


472 :デフォルトの名無しさん:03/06/12 09:11
#include <stdio.h>
#include <stdlib.h>
#define NSTACK 100
#define NCOLUMN 20

int
main(int argc, char **argv)
{
  int na[NSTACK], sa[NSTACK], da[NSTACK], ta[NSTACK], n, c = 0, k = 0;
  char s,d,t;

  na[0] = argc>1 ? atoi(argv[1]) : 3;
  sa[0] = 'A'; da[0] = 'B'; ta[0] = 'C'; k++;
  while (k > 0) {
    k--; n = na[k]; s = sa[k]; d = da[k]; t = ta[k];
    if (n == 1)
      printf("%c>%c%c", s, d, (++c)%NCOLUMN ? ' ' : '\n');
    else {
      na[k] = n-1; sa[k] = t; da[k] = d; ta[k++] = s;
      na[k] = 1;   sa[k] = s; da[k] = d; ta[k++] = t;
      na[k] = n-1; sa[k] = s; da[k] = t; ta[k++] = d;
    }
  }
  printf("%s%d moves\n", c%NCOLUMN ? "\n" : "", c);
  return 0;
}

473 :デフォルトの名無しさん:03/06/12 12:48
>>442さんありがとうございます
あと割線法という方法をおしえてください
f(a)とf(b)の直線とx軸との交点を求めて
(交点)<0のとき xa=(交点)
(交点)>0のとき xb=(交点)
をくりかえす
というふうにやるんですがプログラムがわかりません
y=tan(x)-x^x
が0になる点を探したいのですが
教えてください


y=tan(x)-x^x


474 :デフォルトの名無しさん:03/06/12 13:55
f(a)<0、f(b)>0って決まってるの?

475 :デフォルトの名無しさん:03/06/12 14:02
ぐぐって調べて理解して自分でやってみよう。

476 :デフォルトの名無しさん:03/06/12 14:06
>>442の導関数間違ってる

477 :デフォルトの名無しさん:03/06/12 14:11
tan(x)*tan(x)-pow(x,x)*(log(x)-1)+1; 誤
tan(x)*tan(x)-pow(x,x)*(log(x)+1)+1; 正 かな

478 :デフォルトの名無しさん:03/06/12 14:15
数値解析について調べておいて”プログラムがわかりません”ておかしいだろ

479 :デフォルトの名無しさん:03/06/12 14:51
sqlのデーターはどうしたら表示されるのよ

480 :デフォルトの名無しさん:03/06/12 14:55
表示関数に取得した文字列を渡す

481 :デフォルトの名無しさん:03/06/12 15:05
(tan x)' = 1/cos^2 x

482 :デフォルトの名無しさん:03/06/12 15:06
=tan^2 x + 1

483 :デフォルトの名無しさん:03/06/12 15:07
この中に一人以上確実に
A大学のjinuの授業受けてる香具師がいるww

484 :デフォルトの名無しさん:03/06/12 15:12
アジア大学?

485 :デフォルトの名無しさん:03/06/12 15:14
外人?

486 :デフォルトの名無しさん:03/06/12 15:15
>>483
どの問題がそうなの?

487 :デフォルトの名無しさん:03/06/12 15:26
>>486
>>119ですw
ログ見ててワロタww

488 :デフォルトの名無しさん:03/06/12 17:42
>>483
犯人は喪前だ!

489 :デフォルトの名無しさん:03/06/12 19:07
void quicksort(keytype a[], int first, int last)
{
int i, j;
keytype x, t;

x = a[(first + last) / 2];
i = first; j = last;
for ( ; ; ) {
while (a[i] < x) i++;
while (x < a[j]) j--;
if (i >= j) break;
t = a[i]; a[i] = a[j]; a[j] = t;
i++; j--;
}
if (first < i - 1) quicksort(a, first , i - 1);
if (j + 1 < last) quicksort(a, j + 1, last);
}

要素同士の比較回数をpとするとき、上の{}内にp++などを付け加え比較回数を
カウントできるようにしてください。

490 :デフォルトの名無しさん:03/06/12 19:10
doubleの二次元配列を作っているのですがうまく動きません。
まったく同じ内容のintの二次元配列は動くのですがなぜか・・・

491 :デフォルトの名無しさん:03/06/12 19:18
コードをみせろ。

492 :111:03/06/12 19:31
まずfor(;;)をwhile(1)にする

493 :デフォルトの名無しさん:03/06/12 19:57
メモリ不足

>>492
釣れますか?

494 :デフォルトの名無しさん:03/06/12 20:09
C言語2二次元配列でビンゴを作るというものですけどどうすればいいか分かりませんどうか教えてください。
処理手順
3行3列の2次元配列に1から99までの数値を入力する。
そのあと1から99までの数値をランダムにキーボード入力し、予め入力した
3行3列の数値にあうものがあったらその数値を0に置き換える。
当たりが縦又は横に並んだら「ビンゴ」とと何回目の入力で「ビンゴ」となったかを表示する。

495 :デフォルトの名無しさん:03/06/12 20:10
>>494 昨日と同一人物?

496 :495:03/06/12 20:12
フィボナッチ数列のn項目の値(fn)を返す再帰関数long int fibo(int n)
を作成しなさい。ただし、フィボナッチ数列は次のように定義される。
fn=fn-1+fn-2
f1=f2=1
(n>=3)
お願いします

497 :デフォルトの名無しさん:03/06/12 20:12
ハイ
本当に分からないのです

498 :デフォルトの名無しさん:03/06/12 20:13
>>497
別スレで答もらってお礼を言ってたけど、あれは何だったんだ?

499 :デフォルトの名無しさん:03/06/12 20:15
今日やってもたら出来なかったもので

500 :デフォルトの名無しさん:03/06/12 20:16
1)テキストファイルは名簿である.各行のデータを,ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納する

   プログラムを書け.

(2)木とはなにか.また,2分木とはなにか.説明せよ.

(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.新しいデータを一行ずつ構造体に読み込んで,

   木に追加していくこと.必ずポインタを使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.

   また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ

   見やすい形に表示するよう工夫すること.



501 :デフォルトの名無しさん:03/06/12 20:21
>>500
>>316

502 :デフォルトの名無しさん :03/06/12 21:02
誰か出来る人いたら頼みます。
漏れじゃまったく解けないので・・。

「まず、正の整数を読み込みます、その入力値の分だけ整数値を
配列に読み込む。その後、しきい値(整数値)を読み込み、配列に
格納された値の中から、しきい値よりも大きな値だけを表示させる。

なお、配列に読み込む整数の値は最大で20個、プログラム中で
オブジェクト形式マクロを使用すること。
また、最初に0または負の値が入力された場合は正の整数値が
入力されるまで再入力を促す」

しきい値の入力のあとにどうやって配列からそれ以上の整数だけ
抽出すればいいのかがイマイチ・・・。HELP!

503 :デフォルトの名無しさん:03/06/12 21:06
for (i = 0; i < N; i++)
if (x[i] > y) printf("%d ", x[i]);

504 :382:03/06/12 22:04
474 :デフォルトの名無しさん :03/06/12 13:55
f(a)<0、f(b)>0って決まってるの?


はい決まってます!とりあえず
図形の概形を理解してf(a)<0,f(b)>0
となるa,bを入力して求めるということで
お願いします。

>割線法という方法をおしえてください
f(a)とf(b)の直線とx軸との交点を求めて
(交点)<0のとき xa=(交点)
(交点)>0のとき xb=(交点)
をくりかえす
というふうにやるんですがプログラムがわかりません
y=tan(x)-x^x
が0になる点を探したいのですが
教えてくださ

505 :382:03/06/12 22:11
割線法について  訂正です
>f(a)とf(b)の直線とx軸との交点を求めて

f(a) と f(b)を通る直線とx軸の交点を求めて

締め切り間近なのでお願いします
いままで教えてくれた方有難う御座います。
c言語の授業苦痛でしたが少しわかって楽しくなって
きました

506 :デフォルトの名無しさん:03/06/12 23:30
>>489
--- 489 Thu Jun 12 19:07:00 2003
+++ 506 Thu Jun 12 23:29:00 2003
@@ -1 +1 @@
-void quicksort(keytype a[], int first, int last)
+int quicksort(keytype a[], int first, int last)
@@ -3 +3 @@
-int i, j;
+int i, j, n = 0;
@@ -9,2 +9,2 @@
-while (a[i] < x) i++;
-while (x < a[j]) j--;
+while (a[i] < x) {i++, n++;}
+while (x < a[j]) {j--, n++;}
@@ -16,0 +17 @@
+return n;

507 :292:03/06/12 23:31
えー>>293様に教わったキーワードを検索したらやっと理解しかけてきたのですが
検索するファイルの中身が一致したら、その行だけを出力する場合、
どうしたらよいのでしょうか?
strcmp、strncmp使っても全然拾ってくれません・・・
strstr使うと検索文字列全て拾っちゃうし・・・(aokiと入れたらaokiiroまで拾う)(´Д⊂

具体的な記述方法ご教授いただけませんか?
愚案では検索する文字列の文字数で絞ればいいと思っているのですが・・・

508 :デフォルトの名無しさん:03/06/12 23:35
エスパー召喚だな

509 :デフォルトの名無しさん:03/06/12 23:44
コードを見せろ。

510 :495:03/06/12 23:45
フィボナッチ数列のn項目の値(fn)を返す再帰関数long int fibo(int n)
を作成しなさい。ただし、フィボナッチ数列は次のように定義される。
fn=fn-1+fn-2
f1=f2=1
(n>=3)
どなたかお願いします


511 :デフォルトの名無しさん:03/06/12 23:47
long int fibo(int n) {
return (n>=3)?fibo(n-1) + fibo(n-2):1}

512 :292:03/06/12 23:56
すいません。突込みどころ満載でしょうけど目を瞑ってくださいね。(/ω\)ハズカシーィ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
FILE *fp;
char buff[256];
char kword[256];
do{
printf("キーワード: ");
gets(kword);
if((fp = fopen("saitama.txt", "r")) == NULL){
printf("ファイルあぼーん\n");
exit(1);
}
while(fgets(buff,256, fp) != NULL)
if(!strcmp(buff,kword))
printf("%s",buff);
putchar('\n');
fclose(fp);
}while(1);
}

saitama.txtの中身は292を参照してください。でも今はまず一行出力しようと
aoki ゴルフ大好き
のように、一行でまとめてます。

513 :デフォルトの名無しさん:03/06/12 23:56
>>507
fgetsは改行(\n)まで読み込むので、
そのままstrcmpしたのでは一致しません。

読んだ文字列の最後に改行が付いていればそれを取る、
または、検索したい文字列に改行を付け加えるかすれば良いでしょう。

514 :デフォルトの名無しさん:03/06/12 23:57
>>512
キーワードもfgetsしろ

515 :292:03/06/12 23:58
>>508 >>509が抜けてました。誰に聞いとんだ俺は。(/ω\)ハズカシーィ
あと、愚作はまだ試してません。

516 :292:03/06/13 00:00
レス早っ!すいません、言われた事を理解&実践してきます。ありがとうございます(´∀` )

517 :デフォルトの名無しさん:03/06/13 00:04
>>512
1行にまとめるのとまとめないのでやることが違う。どっちかに決めろ。
>>513は1行に検索したい文字列が1つだと想定して書いた。

518 :デフォルトの名無しさん:03/06/13 00:15
>>512
こんなかんじ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
FILE *fp;
char buff[256];
char kword[256];
fp=fopen("saitama.txt", "r");
if(fp==NULL) {
printf("ファイルあぼーん\n");
exit(1);
}
do{
printf("キーワード: ");
fgets(kword,sizeof(kword),stdin);
rewind(fp);
while(fgets(buff,sizeof(buff), fp) != NULL)
if(!strcmp(buff,kword)){
fgets(buff,sizeof(buff),fp);
printf("%s",buff);
break;
}
}while(1);
fclose(fp);
}

519 :292:03/06/13 00:34
>>517
あわわわ、ごっごめんなさい。へたれなものでよく分かっていなかったんです。(というか今も)
>>292のテキストのままfgetsを使ったらばっちり拾ってくれました!!

>>518
My God・・・
「これからこうしたいんですけどどうすれば」と打つ前に回答が・・・
あぁ・・・3日悩んでた朕が救われていく・・・ほんとにありがとうございます。

520 :デフォルトの名無しさん:03/06/13 04:51
初めまして。初めてC++の授業取ってますが、全く分かりません(涙)。
宿題、誰か助けてください・・・。
人の名前と給料の額を入力すると、
厚生年金や車のローンなど、
あらかじめ給料の〇%と決めてある物をそれぞれ計算して出し、
最後にそれらを全部引いた、給料の手取りが出るというプログラムです。
よろしくお願いします m(_ _)m


521 :デフォルトの名無しさん:03/06/13 05:04
>>520
「など」ってのはプログラミングできないぞ。
あとC++なの?
Cは理解してる?
設計の方針みたいなものは何にもないの?
クラス構成から考えて来いっていう宿題?

522 :520:03/06/13 05:21
C++です。問題全部書いていいですか?しかも英語ですいません。

Write a program that calculates and prints the monthly paycheck.
The net pay is calculated after taking the following deductions:

Federal Income Tax: 15%
State Tax: 3.5%
Social Security Tax: 5.75%
Medicare/Medicaid Tax: 2.75%
Pension Plan: 5%
Health Insurance: $75.00

Cは全くやったことないです。
昨日いきなり宿題出されて(しかも締め切り明日)途方に暮れてます。


523 :デフォルトの名無しさん:03/06/13 05:23
>>522
そんなものは常識で考えてできるはず無いな。
どういう状況なんだ?

524 :デフォルトの名無しさん:03/06/13 05:28
>>522
とりあえずその情報だけだと人名を入れる意味がないね。
給料の額が同じなら誰がやっても同じ結果になるんじゃないの?

525 :520:03/06/13 05:31
人の名前と給料の額は、実行画面での入力です。
説明が悪くてほんとすいません。

526 :デフォルトの名無しさん:03/06/13 05:34
いや、そうじゃなくて。
税金とかって、誰がやっても同じなんでしょ?
個人個人で差異のある要素って、給料だけでしょ。

なんで名前入れるの?

527 :デフォルトの名無しさん:03/06/13 05:39
>>526
名前を出力するためなんじゃないの?
数値以外の入力処理をさせたいんでは

528 :デフォルトの名無しさん:03/06/13 05:45
そうなると、名前と給料入れると

○○さんの手取りは$■■です。

とでも表示すればいいだけのことか。

529 :520:03/06/13 05:47
仰る通りです。別に名前入れる意味ないですね。
でも、それが宿題の指示だからとしか言いようがないです。

530 :520:03/06/13 05:49
表示は、名前、給料の額、それぞれの税金の額、
そして手取り額全ての表示です。



531 :デフォルトの名無しさん:03/06/13 05:57
>>522
> C++です。問題全部書いていいですか?しかも英語ですいません。

というか問題と仕様は最初にすべて書かないとこうやってやりとりが必要になる。

532 :デフォルトの名無しさん:03/06/13 05:58
>>530
【最初は】 Hello World 【必ず】
http://pc2.2ch.net/test/read.cgi/tech/1033579539/

533 :520:03/06/13 06:20
>>531
申し訳ないです。以後気を付けます・・・。

534 :デフォルトの名無しさん:03/06/13 06:30
http://courses.wccnet.org/~bgoldber/course/CPS17108/homework/mp2.htm
CPS 171
Machine Problem 2
Formatting Input/Output
Skills Needed: cin, cout, constants, arithmetic expressions, rounding, int main,
meaningful variable names, spacing, indentation, documentation, output manipulators.


535 :デフォルトの名無しさん:03/06/13 06:39
#include <stdio.h>
#define Federal_Income_Tax 0.15
#define State_Tax 0.035
#define Social_Security_Tax 0.0575
#define Medicare_Medicaid_Tax 0.0275
#define Pension_Plan 0.05
#define Health_Insurance 75

void main(void)
{
char name[20];
double pay,fit,st,sst,mmt,pp;

printf("name :");
scanf("%s",name);
printf("pay :");
scanf("%lf",&pay);

fit = pay * Federal_Income_Tax;
st = pay * State_Tax;
sst = pay * Social_Security_Tax;
mmt = pay * Medicare_Medicaid_Tax;
pp = pay * Pension_Plan;

printf(" name:%s\n pay:%lf\n Federal Income Tax:%lf\n State Tax:%lf\n Social Security Tax:%lf\n Medicare/Medicaid Tax:%lf\n Pension Plan:%lf\n net pay:%lf\n"
,name,pay,fit,st,sst,mmt,pp,pay-fit-st-sst-mmt-pp);

return;

}

536 :デフォルトの名無しさん:03/06/13 06:41
printf(" name:%s\n pay:%lf\n Federal Income Tax:%lf\n State Tax:%lf\n Social Security Tax:%lf\n Medicare/Medicaid Tax:%lf\n Pension Plan:%lf\n net pay:%lf\n"
,name,pay,fit,st,sst,mmt,pp,pay-fit-st-sst-mmt-pp-Health_Insurance);

Health_Insuranceを引き忘れてた。

537 :520:03/06/13 06:50
>>534
教科書の宿題と全く一緒!

>>535,536
ありがとうございます。
でも初心者過ぎて見ても全く意味がわからないです・・・。
今からこんなんで単位落とさないかかなり心配。
じっくり本読んで勉強することにします。

538 :デフォルトの名無しさん:03/06/13 07:39
あれぇ、そんなんでいいの?
C++つうから、まじめにクラスとか作っちゃったよ。
折角だからはっとく。
>>520
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=89

539 :デフォルトの名無しさん:03/06/13 08:07
簡単なプログラムにしかレスしないのですね

540 :デフォルトの名無しさん:03/06/13 08:26
当たり前だろ。

541 :デフォルトの名無しさん:03/06/13 08:35
誰か>>500やってください

542 :デフォルトの名無しさん:03/06/13 09:31
2から数えて100万番目の素数を出来るだけ早く計算するプログラムを教えて下さい。

543 :542:03/06/13 10:05
Cでお願いします。

544 :デフォルトの名無しさん:03/06/13 11:05
>>542
まずはそれだけの計算に耐えられるコンピュータを用意してくれ。

545 :デフォルトの名無しさん:03/06/13 11:16
その辺のパソコンで十分。15485863

546 :542:03/06/13 11:54
>>545
おぉ!
プログラムを見せて貰えませんか?
お願いします(´Д⊂)

547 :デフォルトの名無しさん:03/06/13 12:08
>>541
>>501

548 :fe:03/06/13 14:19
#include<stdio.h>

int RSA(int tmp,int C,int d,int N){
while(d>1){
tmp=(tmp*C)%N;
tmp=RSA(tmp,C,d=d-1,N);
return tmp;
}
}

main(){
int C,d,N;
printf("plz input (C d N)>");
printf("%d\n",RSA(1,156,107,187));
}

このプログラム走らせると、出力が0になっちゃうんだけどなんで?

549 :デフォルトの名無しさん:03/06/13 14:42
>>548
コンパイラは警告を出さなかった?

550 :デフォルトの名無しさん:03/06/13 14:42
>>548
dが0のとき、何が返るでしょうか。

551 :デフォルトの名無しさん:03/06/13 14:45
>>548

54

552 :548:03/06/13 17:10
ああああ…
そうかそうか。
そんな簡単なミスが分からなかったなんて…

ありがとうございます!!

553 :デフォルトの名無しさん:03/06/13 17:22
>>546
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=90

554 :デフォルトの名無しさん:03/06/13 17:23
まずキーボードから30文字以内の文字列を入力する。
次に一文字をを入力し、最初に入力した文字列の先頭からその文字
を探して最初にみつかった位置から先の文字列を出力する。
例えば最初に abcdABCD 次に c と入力すると dABCD と出力される
ようなプログラムです。
C++でお願いします。

555 :デフォルトの名無しさん:03/06/13 17:42
>>554
#include <stdio.h>
#include <string.h>
int main(void) {
char buf[31], *p, c;
fgets(buf, sizeof(buf), stdin);
c = getchar();
if ((p = strchr(buf, c) != NULL)
puts(p);
return 0;
}

556 :デフォルトの名無しさん:03/06/13 17:48
>>554
#include <iostream>
#include <string>

int main(int argc, char *argv[])
{
string buf;
char c;
cin >> buf;
cin >> c;
cout << buf.substr(buf.find(c)+1) << endl;
return 0;
}

557 :542:03/06/13 17:49
>>553
ありがとうございました!

558 :デフォルトの名無しさん:03/06/13 18:18
>>555>>556
ありがとうございます。

559 :デフォルトの名無しさん:03/06/13 19:11
>>554のを
Cでおねがいできないでしょうか?
C以外は分からないんで、すみません

560 :デフォルトの名無しさん:03/06/13 19:13
きみはCも分かっていない

561 :デフォルトの名無しさん:03/06/13 19:14
C以外は全く分からないんで。
C++は関数名も何も分からないです

562 :555:03/06/13 19:17
>>559
555はCでもあるのだが。もちろんC++でも動くはずだ。
とはいえ、typoがあってそのままだとコンパイルとおらねえな。
Cがわかるのならどう直せばいいかもわかるだろう。わかんないかな…
あとエラーチェックはほとんどしてないのでその辺よろしく。

563 :デフォルトの名無しさん:03/06/13 19:17
誰か>>500やってください

564 :サンプルです:03/06/13 19:18
★おすすめ★オススメ★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
:・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*
・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*

565 :デフォルトの名無しさん:03/06/13 19:21
>>563
さんざん既出なんだよハゲ

566 :デフォルトの名無しさん:03/06/13 20:57
既出なのは知っておりますが、解決していないようなので質問します。

下記のプログラムを変更して、要素数がnである配列aの全要素の最大公約数を
求める int gcdary {int a[], int n}; を作成してください。


/*
ユークリッドの互除法によって最大公約数を求める
*/

#include <stdio.h>

int gcd(int x, int y)
{
if (y == 0)
return (x);
else
return (gcd(y, x % y));
}

int main(void)
{
int x, y;
printf("整数を入力せよ:");
scanf("%d", &x);
printf("整数を入力せよ:");
scanf("%d", &y);
printf("最大公約数は%dです。\n", gcd(x, y));
return (0);
}


567 :デフォルトの名無しさん:03/06/13 21:08
> 解決していないようなので
(゚Д゚)ハァ?

568 :int gcdary {int a[], int n};:03/06/13 21:16
int gcdary {int a[], int n};

569 :デフォルトの名無しさん:03/06/13 21:19

問題
自然数nを入力として与えたとき、

●もしnが偶数ならば、n/2を新たにnと置く。

●もしnが奇数ならば、3n+1を新たにnと置く。

という操作を繰り返す。自然数nを入力したとき、それが1に収束するまでのステップと
そのステップ数を表示するようなプログラムを作成せよ。

プログラムについて何もわかりません。
#include<stdio.h>で始まるプログラムお願いします。


570 :デフォルトの名無しさん:03/06/13 21:20
またかよ

571 :デフォルトの名無しさん:03/06/13 21:20
なぜこうも既出の問題ばかり……

572 :デフォルトの名無しさん:03/06/13 21:23
>>569
#include <stdio.h>
int main(void) {
int n;
scanf("%d", &n);
puts("ステップ数は、100回以上か100回以下かそれくらい?");
return 0;
}

573 :デフォルトの名無しさん:03/06/13 21:23
過去ログ検索スレになりそうだな

574 :デフォルトの名無しさん:03/06/13 21:24
>>569
何もわからんなら教えがいがない…

575 :デフォルトの名無しさん:03/06/13 21:26
検索なんて高度なテクニックを持ってるやつはそもそもこのスレには聞きに来ないからな

576 :デフォルトの名無しさん:03/06/13 21:28
結局>>569の正解は出てなかった気がするが

577 :デフォルトの名無しさん:03/06/13 21:29
まえ聞いたのですが、エラーがたくさん出たので…すみません。

578 :デフォルトの名無しさん:03/06/13 21:30
任意の自然数nだろ?
しかも数学の問題だろ?
ってことは巨大な数も扱えなきゃダメだろ?
まず多倍長整数演算からはじめなきゃだろ?

579 :デフォルトの名無しさん:03/06/13 21:30
>>577
それならそう書けよ。ちゃんとエラー内容付きでな。アフォ

580 :デフォルトの名無しさん:03/06/13 21:32
>>566
このスレでは初のようだから
int gcdary(int a[], int n)
{
  if (n == 1)
    return a[0];
  else
    return gcd(a[0], gcdary(a + 1, n - 1));
}

581 :デフォルトの名無しさん:03/06/13 21:48
>>580
elseはいらない。

582 :デフォルトの名無しさん:03/06/13 21:48
>>576
完全じゃないけど↓で解決してたんじゃないの?

262 名前:デフォルトの名無しさん 投稿日:03/05/29 22:26
>>260
#include <iostream>
main()
{
int step;
for(step = 0 ;n > 1;step++)
{
 n = n % 2 ? n/2 : 3*n+1;
 cout << n << endl;
}
cout << "ステップ数:" << step << endl;

}

583 :デフォルトの名無しさん:03/06/13 21:49
>>582
問題をよく読め

584 :デフォルトの名無しさん:03/06/13 21:51
>>569

#include <stdio.h>
int main(void)
{
 int n = 1000;
 int i = 0;
 printf("もとの数 %d \n",n);
  while(n != 1){
    if(n%2){
      n = n*3+1;
      i++;
      printf("step %4d, n*3+1 = %4d\n",i,n);
    }
    else{
      n /= 2;
      i++;
      printf("step %4d, n/2 = %4d\n",i,n);
    }
  }
  printf("step %5d で終了しました",i);
  return 0;
}


585 :デフォルトの名無しさん:03/06/13 21:57
>>583
ん?

586 :デフォルトの名無しさん:03/06/13 21:57
>>582
ほんと馬鹿みないな質問で恐縮なんですが、
#include <stdio.h>で始まるプログラムでお願いしたいのですが、
そもそも#include <stdio.h>と#include <iostream>は何が違うんですか?
本当にすみません、くだらないこと聞いてしまって…

587 :デフォルトの名無しさん:03/06/13 21:58
こんな奴に単位取らせて日本の未来は大丈夫ですか?

588 :デフォルトの名無しさん:03/06/13 21:59
>>585
偶数と奇数は知ってるか?

589 :デフォルトの名無しさん:03/06/13 22:05
>>588
あー逆になってるね。n%2も好きじゃないけど。

590 :デフォルトの名無しさん:03/06/13 22:10
そんなことよりC/C++を分かっていないのに
問題を出してくる>>586の考えが知りたい。

591 :591:03/06/13 22:23
標準出力関数fputcを用い、キーボードから入力した文字を1文字づつ
ファイルに書き込むプログラムを作成しなさい。
ただし、入力の終了は記号'/'の入力で判定を行うこと。

お願いします


592 :デフォルトの名無しさん:03/06/13 22:25
プログラムについて学校では4時間くらいしか教わっていないもので…すみません。
ありがとうございました。

593 :デフォルトの名無しさん:03/06/13 22:29
>>591

#include <stdio.h>
int main()
{
int c;
FILE *fp;

fp=fopen("ファイル","w"); // 失敗しない。絶対に失敗しない。しないったらしない。
while((c=getchar())!='/')
fputc(c,fp);
fclose(fp);
return 0;
}


594 :566:03/06/13 22:57
>580さま、お返事どうもです。

ですが、このままでは任意の数Nを入力することは出来ないので、
main関数も変更しないといけないと思います。
是非よろしくお願いします。

595 :デフォルトの名無しさん:03/06/13 23:15
誰かやってくれ・・・

596 :デフォルトの名無しさん:03/06/13 23:17
なにを

597 :デフォルトの名無しさん:03/06/13 23:18
あまりにもバカバカしいのとあまりにも難しいのはやらない罠

598 :デフォルトの名無しさん:03/06/13 23:18
>>594
それくらい自分で追加しろヴォケ

599 :デフォルトの名無しさん:03/06/13 23:21
問1

2分探索木は,単純で効率のよい動的な探索法で,コンピュータサイエンスにおける最も基本的なアルゴリズム
の一つである.2分探索木の一つの節点を表すのに構造体を用いたプログラムを作成せよ.節点の構造体は,1人の
学生のデータ(学籍番号,姓,名,性別)と2つの子節点へのポインタからなるものとする.名の入力により,該当
学生のデータを探索するようにせよ.データはプログラム中に書き込むのではなく,入力用ファイルを用意して,
これから読み込むようにする.ある節点の学生と同じ名の学生のデータを挿入する際,節点の右に入れるか左に入れるかは
各自で決めてください.なお,探索時には,同じ名の学生はすべて出力できるようにすること.



問2

問1では,2分探索木を用いたが,その他に蓄積したデータを探索するのに良く用いられる方法
としてハッシュ表をもちいたものがある.これらの利点・欠点を考察せよ(論述問題).



600 :デフォルトの名無しさん:03/06/13 23:21
>>594
#include <stdlib.h>
int main(int argc, char* argv[])
{
int k = 0;
while (--argc)
k = gcd(atoi(*++argv), k);
printf("%d\n", k);
return 0;
}

601 :580:03/06/13 23:25
>>594
やっぱmainも書かなきゃならんのね。
あの文章だとgcdaryだけでいいという解釈もできるんだが…
#include <stdio.h>
#include <stdlib.h>
int gcd(int x, int y)
{
  if (y == 0)
    return (x);
  else
    return (gcd(y, x % y));
}
int gcdary(int a[], int n)
{
  if (n == 1)
    return a[0];
  else
    return gcd(a[0], gcdary(a + 1, n - 1));
}
int main(void)
{
  int *a, n, i;
  printf("要素数を入力せよ:");
  scanf("%d", &n);
  a = malloc(sizeof(int) * n);
  for (i = 0; i < n; i++) {
    printf("整数を入力せよ:");
    scanf("%d", &a[i]);
  }
  printf("最大公約数は%dです。\n", gcdary(a, n));
  return (0);
}

602 :デフォルトの名無しさん:03/06/13 23:31
>>599
>>316を応用しろ、つってもできねえんだろうなあ・・・

603 :デフォルトの名無しさん:03/06/13 23:32
>>602
わかりません

604 :デフォルトの名無しさん:03/06/13 23:49
>>599
で、学生のデータは入力用ファイルにどのように書かれているの?
こっちで勝手に決めつけてもいい?

605 :デフォルトの名無しさん:03/06/13 23:51
学籍番号,姓,名,性別の様にカンマでくぎられていればいいです

606 :サンプルです:03/06/13 23:54
★おすすめ★オススメ★
http://endou.kir.jp/betu/linkvp2/linkvp.html
:・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*
・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*

607 :デフォルトの名無しさん:03/06/13 23:58
>>601
君、情報系学部?

608 :607:03/06/13 23:58
ごめん間違い、見なかったことにして。

609 :デフォルトの名無しさん:03/06/14 00:11
見ました

610 :見ました:03/06/14 00:11
見ました

611 :デフォルトの名無しさん:03/06/14 00:35
うん。みなっかったよ。

612 :599:03/06/14 00:36
お願いします。締め切りまであと2週間なんです!

613 :デフォルトの名無しさん:03/06/14 00:39
>>612
おい、たっぷり時間あるじゃねぇか!

614 :デフォルトの名無しさん:03/06/14 00:47
アルゴリズムの本一冊買えばそこに答えがあるよ

615 :デフォルトの名無しさん:03/06/14 01:11
配列を回転するプログラムを作成…cでお願いします
↑のまんま問われて、ほとほと困っていたところで…
脳内補完がかなりいるよなぁ…_| ̄|○

616 :デフォルトの名無しさん:03/06/14 01:27
相手が出来る奴なら高度な解を提出すべきだな。バカならそれなりに。
回転か・・・どう回転すればあっと言わせることができるだろうか・・・

617 :デフォルトの名無しさん:03/06/14 01:29
アフィン変換とか・・・
そいつの目の前にいって配列を表示しているディスプレイを力いっぱい回すとか

618 :デフォルトの名無しさん:03/06/14 01:32
「配列」と言う文字列を文字通り回転させろ!

619 :デフォルトの名無しさん:03/06/14 01:36
つまりGIFアニメでいいのか

620 :デフォルトの名無しさん:03/06/14 01:38
FLASHの方が楽

621 :デフォルトの名無しさん:03/06/14 01:44
C/C++で実現しないとスレ違いになるだろ!

622 :デフォルトの名無しさん:03/06/14 01:47
>>618
先にネタを言われてしまった。
エスケープシーケンスを使ってるんで環境依存だけど…
cygwin上で確認。
#include <stdio.h>
#include <time.h>
int hai[] = { 0, 1, 2, 5, 8, 7, 6, 3 };
int retsu[] = { 8, 7, 6, 3, 0, 1, 2, 5 };
int main()
{
int i, j, k;
time_t start, current;
start = time(NULL);
for (i = 0; i < 10; i++) {
for (j = 0; j < 8; j++) {
for (k = 0; k < 9; k++) {
if (hai[j] == k) printf("配");
else if (retsu[j] == k) printf("列");
else printf(" ");
if (k % 3 == 2) printf("\n");
}
do {
current = time(NULL);
} while (difftime(current, start) < i * 8 + j);
printf("\033[3A");
}
}
return 0;
}

623 :デフォルトの名無しさん:03/06/14 01:48
つまりC/C++でGIFアニメジェネレータを作ればいいのか

624 :デフォルトの名無しさん:03/06/14 01:48
>>621
既存のGIF、FLASHファイルをsystem()でプレイヤーに開かせるってのはどう?

625 :デフォルトの名無しさん:03/06/14 01:58
>>624
コードが短く出来ていいな。

626 :615:03/06/14 02:42
>616〜625さん、レスありがとうございます〜
…617さん…ワライマシタ(ヲ
問題はどーやってディスプレイに配列と表示させるか…(マテ
622さん、解答ありがとうございます…まだこっちで試してはいませんが

そして…ネタを提供してくれた教授、ありが…なんて言うか、カエレ!

627 :デフォルトの名無しさん:03/06/14 02:55
教授なのか!!一か八か勝負だな

628 : :03/06/14 02:56
>>601
なかなかいいコードかくね。
if文のなかを==0と書くところがいいな,わかりやすくて。

629 :デフォルトの名無しさん:03/06/14 05:42
ロジックは return y>0 ? gcd(y,x%y) : x; としないと負数が与えられたら

630 :デフォルトの名無しさん:03/06/14 05:51
abs付ければいいんだよ

631 :デフォルトの名無しさん:03/06/14 06:10
unsignedじゃだめなの?

632 :デフォルトの名無しさん:03/06/14 06:28
>>631
何が?

633 :デフォルトの名無しさん:03/06/14 06:43
>>632
負数が与えられたらまずいとか言っているから。

634 :デフォルトの名無しさん:03/06/14 08:37
>>502やってけろ
これって面倒な部類に入りまつかね・・?

635 :デフォルトの名無しさん:03/06/14 08:43
>>634
for(i=0;i<nyuryoku_sareta_kosu;i++)
if(hairetsu[i]>=shikiichi)
printf("%d ",hairetsu[i]);

636 :デフォルトの名無しさん:03/06/14 09:43
>>502
>>503 にあるじゃん

637 :デフォルトの名無しさん:03/06/14 12:31
>>632
与えられてもまずくはない

638 :デフォルトの名無しさん:03/06/14 15:28
(1)2つのfloat型変数を引用するとそれらの加算を返り値とする関数をadd()、
同様にして減算を行う関数をsub()、
乗算を行う関数をtimes()
除算を行う関数をdiv()
として、四則演算を行うプログラムを作成せよ。
(2)int型の数値を2進数にて表示するプログラム。
(3)自分の名前をローマ字で表し、アスキーコードを変数に代入して、
自分の名前をアルファベットで表示させるプログラム。


639 :デフォルトの名無しさん:03/06/14 15:56
ネタ?

640 :デフォルトの名無しさん:03/06/14 16:08
入力した値を昇順に並べるプログラムを反復挿入法で作りたいのですが、
下のプログラムでできないのでよろしくお願いします。
下のプログラムを変更して完成して下されば幸いです。
嫌なら自分流のプログラムで結構です。
なお、今回は6個の値を入力した場合でお願いします。

#include<stdio.h>
main()
{ int t[6],a,b,c,n;
for(a=0;a<6;a++)
scanf("%d",&n),
t[a]=n;
for(a=4;a>=0;a--)
for(b=0;b<=a;b++)
if(t[b]>t[b+1])
c=t[b],t[b]=t[b+1],t[b+1]=c;
for(a=0;a<6;a++)
printf("%d",t[a]);

}
全然違っていたらすみません。

641 :デフォルトの名無しさん:03/06/14 16:16
反復挿入法ってどんなの?

642 :デフォルトの名無しさん:03/06/14 16:17
for(a=4;a>=0;a--)
ここじゃないかな。

643 :デフォルトの名無しさん:03/06/14 16:17
反復挿入法に該当するページが見つかりませんでした。

644 :デフォルトの名無しさん:03/06/14 16:39
>>599
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=91
↑に問1のソースを置きました。
問2は他の人にやってもらってください。オーダーとかきちんと勉強したことないんで…

645 :デフォルトの名無しさん:03/06/14 16:41
>>640
どう動かんの?
ソートできてるように思うが。

646 :デフォルトの名無しさん:03/06/14 17:10
三つの整数を読み込み、それらが次のケースのいずれかに相当するかを出力プログラムを書け。

1.三つの値が全て異なる
2.二つの値は同じだが、もう一つは異なる
3.三つとも同じ値である
という問題なのですが、書いてみたのですが何故か三番の判定がされません(´・ω・`)
ソース書いてみます

647 :デフォルトの名無しさん:03/06/14 17:12
#include <stdio.h>
int main(void){
int w, x, y;
printf("x: ");scanf("%d", &x);
printf("w: ");scanf("%d", &w);
printf("y: ");scanf("%d", &y);
if (x!=y&&x!=w&&y!=w)
printf("3tu no atai ha subete kotonaru\n");
else if (x=y&&y!=w)
printf("futatuno ataiha onajidaga mou hitotuha kotonaru\n");
else if (x=w&&w!=y)
printf("futatuno ataiha onajidaga mou hitotuha kotonaru\n");
else if (y=w&&x!=y)
printf("futatuno ataiha onajidaga mou hitotuha kotonaru\n");
else if(x==y&&x==w&&w==y)
printf("3tu tomo subete onaji atai\n");
return(0);
}



648 :デフォルトの名無しさん:03/06/14 17:15
>>647
焦りすぎ

649 :デフォルトの名無しさん:03/06/14 17:22
>647
明解C言語と見た

650 :649:03/06/14 17:23
>647
先に1. 3.を判定して残ったのが2.

651 :デフォルトの名無しさん:03/06/14 17:23
>>648
どう間違ってるのかわからないのです(´・ω・`)

652 :デフォルトの名無しさん:03/06/14 17:24
if (a == b && b == c) {
 printf("3");
} else if (a != b && b != c && c != a) {
 printf("0");
} else {
 printf("2");
}

653 :デフォルトの名無しさん:03/06/14 17:26
>>649
ありがとうございます(ノд`)
お陰できちんと書けました

654 :デフォルトの名無しさん:03/06/14 17:26
>>651
とりあえず=と==は違うぞ

655 :デフォルトの名無しさん:03/06/14 17:31
>>654
== は等しければ真、等しくなければ偽

とテキストに書いてあります。頑張ります・・・

656 :デフォルトの名無しさん:03/06/14 17:31
>>650
そこはどうでもいいだろ

657 :646:03/06/14 17:33
だー今初期の間違いに気づいた・・・・
代入してどう汁んだ・・・

658 :デフォルトの名無しさん:03/06/14 17:35
int Count = (x==y) + (y==z) + (x==z);
switch(Count){
case 3: puts("3つとも同じ。");break;
case 1: puts("一組同じ。");break;
case 0: puts("全てことなる。");break;
}


659 :デフォルトの名無しさん:03/06/14 17:37
>>658
X

660 :デフォルトの名無しさん:03/06/14 17:37
>>657
凡ミスは誰にでもある。がんがれ

661 :デフォルトの名無しさん:03/06/14 17:39
>>659
何が?

662 :デフォルトの名無しさん:03/06/14 17:44
trueは1だと保証されないだろ。

663 :デフォルトの名無しさん:03/06/14 17:44
c 言語では、 偽は0、それ以外の数値は全て真

664 :デフォルトの名無しさん:03/06/14 17:46
関係演算子は真なら1、偽なら0を出す

665 :デフォルトの名無しさん:03/06/14 17:49
考え方の順序がおかしいのでは?
たとえば(5 == 5) は必ず1を返す
0 以外は 真であるので (5 == 5) =true
ということじゃないのか?

666 :デフォルトの名無しさん:03/06/14 17:50
話にならんな

667 :658:03/06/14 17:51
関係演算子の戻り値は 0 か 1 でしょうよ。
正式な仕様書とか読んだことないけどw

668 :デフォルトの名無しさん:03/06/14 17:51
ぬるぽ

669 :デフォルトの名無しさん:03/06/14 17:53
>>665
その知識は何処から得たの?

670 :658 != 665:03/06/14 17:58
 

671 :デフォルトの名無しさん:03/06/14 18:00
じゃぁ両方に答えて欲しいな。>>669

672 :デフォルトの名無しさん:03/06/14 18:31
http://www.catnet.ne.jp/kouno/c_faq/c9.html#2
↑を読む限りでは >>659 が間違っていると思うが

673 :デフォルトの名無しさん:03/06/14 18:43
コンパイラがANSI Cに準拠してさえいれば、x==yとかx!=yとした場合に返ってくる値は0か1だぞ。


674 :デフォルトの名無しさん:03/06/14 18:54
>>644をやってくれた方したの問題のご教授お願いします
テキストファイルはの名簿である.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
テキストファイルの内容例↓
aaa0101,井川慶,igawa/kei(aaa0101)


675 :デフォルトの名無しさん:03/06/14 18:55
>組み込みの演算子によってブー ル値が産み出されるときは、1か0であることが保証されている

φ(..)メモメモ


676 :デフォルトの名無しさん:03/06/14 18:57
>>674
そのフォーマットどっかで見たような…

677 :デフォルトの名無しさん:03/06/14 19:18
>Javaは死滅

φ(..)メモメモ

678 :デフォルトの名無しさん:03/06/14 19:21
井川遥ってだれ

679 :デフォルトの名無しさん:03/06/14 19:22
>井川遥ってだれ

φ(..)メモメモ

680 :デフォルトの名無しさん:03/06/14 19:23
パシャ パシャ  パシャ パシャ パシャ  パシャ パシャ パシャ パシャ パシャ
   パシャ パシャ パシャ パシャ パシャ  パシャ パシャ パシャ  パシャ  パシャ
 ∧_∧      ∧_∧     ∧_∧  ∧_∧    ∧_∧     ∧_∧
 (   )】      (   )】    (   )】 【(   )    【(   )    【(   )
 /  /┘ .   /  /┘.    /  /┘ └\ \   └\ \   └\ \
ノ ̄ゝ     ノ ̄ゝ      ノ ̄ゝ     ノ ̄ゝ    ノ ̄ゝ     ノ ̄ゝ

681 :デフォルトの名無しさん:03/06/14 19:25
>>674
どこがわからないの?
必要な処理は

・ファイルから読む
・構造体に格納する

の2つだが



682 :681:03/06/14 19:26
その間にもう一つ、
・読み込んだデータを要素に分ける
ってのがあるか

683 :デフォルトの名無しさん:03/06/14 19:31
>>674
>>238

684 :デフォルトの名無しさん:03/06/14 19:35
>>674
>>238に同じ問題が書かれてあって、
>>316にその解答ソースの在り処が書かれている。
>>500にも同じ問題が書かれてあって、
>>501>>316をみろと書かれてある。
>>541>>500をやってくださいと書かれてあって、
>>547>>501をみろと書かれてある。
>>563にも>>500をやってくださいと書かれてあって、
>>565にさんざん既出だと書かれてある。

どこまで同一人物かは知らんけど、
>>316のソースをみてから何かいってくれ。


685 :デフォルトの名無しさん:03/06/14 19:35
>>684
暇人だな

686 :デフォルトの名無しさん:03/06/14 19:44
>>685
必死だな

687 :デフォルトの名無しさん:03/06/14 19:58
>>316じゃ表示できないんですけど

688 :デフォルトの名無しさん:03/06/14 20:06
ハッシュ関数
(key[i]は,キーのi番目の文字がアルファベット順で何番目かを示すとする.)
int hash( int *key, int keysize)
{
int i;
int hashv;
hashv = *key ;
for( i = 1 ; i < keysize; i++) {
hashv = (( hashv*32)+key[i]) % TABLESIZE ;
}
return hashv ;
}
問1
TABLESIZEはどのような値が望ましいか.その理由を述べよ.(論述問題).
問2
どのような場合に異なるキーで同じアドレスが割り当てられる状況が生じるか? 
また,そのような場合の対処法を2つ説明せよ.(論述問題).
問3
上のハッシュ関数を利用して,人の姓(last name)をキーにして姓名(first nameも含む)を表に格納するプログラムを書け.
必要に応じて上の関数を書き直してよい.
ハッシュ値の計算が正しく行われて,正しい位置にデータが格納されていることが確認できるように表示させること.

689 :デフォルトの名無しさん:03/06/14 20:11
>>687
いまコンパイルして動かしてみたけど、ちゃんと動いたよ。
表示もした。

690 :デフォルトの名無しさん:03/06/14 20:25
>>689
どんな風に表示されましたか?
UNIXを使ってるのですがだめでした

691 :デフォルトの名無しさん:03/06/14 20:27
>>690
入力したか?

692 :デフォルトの名無しさん:03/06/14 20:33
>>690
aaa1101,井川遥,igawa/haruka
l:aaa0142,細川ふみえ,hosokawa/fumie
r:aaa2103,石川梨華,ishikawa/rika
r:aaa7394,戸川純,togawa/jun


693 :デフォルトの名無しさん:03/06/14 20:34
Segmentation Fault

694 :デフォルトの名無しさん:03/06/14 20:45
>>692の様になるんですけど、木と分かるように表示させたいのです
>>327>>341の様に

695 :デフォルトの名無しさん:03/06/14 20:46
C言語です
ファイルのバイト数、行数を数えるプログラムを作りなさい。
`\n' (文字コード 0x0a) の個数を行数と考えることにする。


696 :デフォルトの名無しさん:03/06/14 20:56
FILE* const file = ?????;
size_t file_size = 0;
size_t num_lines = 0;
int c;
while( c = fgetc( file ) , c != EOF )
{
 ++file_size;
 if( c == '\n' ) ++num_lines;
}


697 :デフォルトの名無しさん:03/06/14 21:00
>>694
これで>>341みたいになるが、見やすいとはいえねーな。
----------------------------------------------------------
void Display_r(int depth, Node *node) {
    printf("%s,%s,%s", node->id, node->name, node->ruby);
    if (node->left != NULL) {
        printf("%*c --L--", depth * 2, ' ');
        Display_r(depth + 1, node->left);
    }
    if (node->right != NULL) {
        printf("%*c --R--", depth * 2, ' ');
        Display_r(depth + 1, node->right);
    }
 putc('\n',stdout);
}

void Display(void) {
    if (root != NULL) {
        printf("%s,%s,%s", root->id, root->name, root->ruby);
        if (root->left != NULL) {
            printf(" --L--");
            Display_r(0, root->left);
        }
        if (root->right != NULL) {
            printf(" --R--");
            Display_r(0, root->right);
        }
    }
 putc('\n',stdout);
}


698 :697:03/06/14 21:04
あーだめか、いまいちうまくいかないな。

699 :デフォルトの名無しさん:03/06/14 21:18
>>697
そんな感じでOKです

700 :デフォルトの名無しさん:03/06/14 22:02
>>697もう少し!!!!!!!!!!

701 :デフォルトの名無しさん:03/06/14 22:03
http://jbbs.shitaraba.com/computer/6765
Cを勉強するならここしかない!
コピペ宣伝中

702 :デフォルトの名無しさん:03/06/14 22:47
>printf("%*c --L--", depth * 2, ' ');

こんな書き方できるんやね。
インデントあわせに便利やね。しらんかった。


703 :デフォルトの名無しさん:03/06/14 23:00
"textfile"という名前のファイルを読みとり標準出力に出力するプログラムを作成せよ。
ただし、連続する改行文字はひとつの改行文字にして出力すること。

704 :703:03/06/14 23:01
言語はCです。よろしくお願いします。

705 :デフォルトの名無しさん:03/06/14 23:02
>>679
どうすれば見やすくなりますか?
見やすいプログラム作ってください!

706 :デフォルトの名無しさん:03/06/14 23:31
>>703
#include <stdio.h>
#define FILENAME "textfile"
int
main(int argc, char **argv)
{
  FILE *fp;
  char a,b = 1,c;
  if(NULL == (fp = fopen(FILENAME,"r"))){perror(FILENAME); return 1;}
  while(EOF != (c = getc(fp))) if((a = (c != '\n'))||b) {b = a; putchar(c);}
  return 0;
}

707 :316:03/06/14 23:40
ちょっとバグ情報を…
× char name[ID_LEN];
○ char name[NAME_LEN];

× Display_r(0, root->left);
○ Display_r(1, root->left);

708 :デフォルトの名無しさん:03/06/14 23:43
>>706
だめぽですな

709 :デフォルトの名無しさん:03/06/14 23:51

#include <iostream>
#include <fstream>
#include <string>
int main()
{
    using namespace std;
    string buf;
    ifstream fin;
    fin.open("textfile");
    while(getline(fin, buf)){
        if(!buf.empty())cout << buf << endl;
    }
    return 0;
}

710 :デフォルトの名無しさん:03/06/14 23:52
>>703
system("sed -e '/^$/d' textfile");

711 :646:03/06/15 01:11
やべーわかんない・・・Cの宿題なんですが・・・
三つの最大を求めるプログラムを改造して、どの変数が最大だったかを
表示するようにせよ。ただし、二つ以上の変数が同時に(同じ値で)最大
だった場合は、それらの変数の名前をすべて出力しなければならない。

どなたかご指導お願いします(ノд`)

712 :646:03/06/15 01:16
>二つ以上の変数が同時に(同じ値で)最大
だった場合は、それらの変数の名前をすべて出力しなければならない。

この部分が出来ません(ノд`)
ありえないぐらい長い文書いてしまいます

713 :デフォルトの名無しさん:03/06/15 01:17
>>711
改造元になるソースキボヌ

714 :646:03/06/15 01:24
三つのプログラム(3種類のうちどれでもよい)
とあるのでとりあえず一つ
今必死に書いてます(写し間違えたのか正しく動いてない・・・
#include <stdio.h>
int main(void){
int x, y , z,max;
printf("x: ");scanf("%d", &x);
printf("y: ");scanf("%d", &y);
printf("z: ");scanf("%d", &z);
if (x >=y && x >= z){
printf("x is the largest\n");
max=x;}
else if (y >= z && y>= x)
{
printf("y is the largest\n");
max=y;
}
else{
printf("z is the largest\n");
max = z;
}
printf("maximum is %d\n",max);
return(0);
}


715 :デフォルトの名無しさん:03/06/15 01:49
int max( int x, int y, int z )
{
  int ret;

  if( x>=y && x>=z )
  {
    ret = x;
    puts( "x" );
  }
  if( y>=x && y>=z )
  {
    ret = y;
    puts( "y" );
  }
  if( z>=y && z>=x )
  {
    ret = z;
    puts( "z" );
  }
  return ret;
}

716 :デフォルトの名無しさん:03/06/15 01:49
>>714

#include <stdio.h>

int main(void)
{
int x, y, z, max;

printf("x: "), scanf("%d",&x);
printf("y: "), scanf("%d",&y);
printf("z: "), scanf("%d",&z);

max=x;
if(y>max) max=y;
if(z>max) max=z;

if(x==max) printf("x is the largest\n");
if(y==max) printf("y is the largest\n");
if(z==max) printf("z is the largest\n");

printf("maximum is %d\n",max);

return 0;
}

717 :646:03/06/15 01:58
>>715
>>716
ありがとうございまつ(ノд`)


718 :デフォルトの名無しさん:03/06/15 17:50
正の整数を読み込んで、素因数に分解するプログラムをお願いします。

[考え方]
 除数をkとすると、まず、kに素因数となり得る最小の数2を設定する。
kがnの約数かどうかを調べ、約数であれば、kの値を出力する。
このとき、n/kは、それまでに見つかっていない素因数の全ての積に
なるので、nの値をn/kの値で置き換える。
 同じ素因数がいくつもある場合があるので(上例の2および3)、kが
nの約数である限り、同じkの値で、この処理を繰り返す。
 nがkで割り切れなくなった時は、kの値を1増やし、以上に述べた処理を
繰り返す。このとき、3以上のkの値については奇数だけを相手にすればよい。
また、一つのnの値については、kが√nを越えない最大の整数になるまで
行えばよい(nの値は変わっていくことに注意しよう)。ただし、kが√nを越えた
ときには、nは1以外には√n以下の約数をもたないことになるので、そのときの
nの値は素数であるか、1であるかのいずれかである。

sqrt((double)n)か(int)sqrt((double)n)を使うらしいのですが・・・。

719 :デフォルトの名無しさん:03/06/15 18:36
>>718
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv) {
  int i,j,m,max,*sieve;
  m = sqrt(max = argc<2 ? 1000 : atoi(argv[1]));
  if (NULL == (sieve = (int *)malloc(max*sizeof(int)))) return 1;
  for (i=2; i<=max; i++) sieve[i] = i;
  for (i=2; i<=m; i++) if (sieve[i]) for (j=i*i; j<=max; j+=i) sieve[j] = 0;
  for (i=2; i<=max; i++) if (sieve[i]) printf("%d ", sieve[i]); puts("");
  return 0;
}


720 :デフォルトの名無しさん:03/06/15 18:40
>>719
違う

721 :デフォルトの名無しさん:03/06/15 18:41
>>718

#include <stdio.h>
#include <math.h>
int main(void)
{
int n,a;
scanf("%d",&n);
if(n == 1)
printf("1 = 1\n");
else if(n <= 0)
printf("Error\n");
else{
printf("%d = ",n);
a=2;
while(a<=(int)sqrt((double)n)){
if(n%a==0){
printf("%d * ",a);
n/=a;
}
else if(a==2)
a=3;
else
a+=2;
}
printf("%d\n",n);
}
return 0;
}

適当につくったから、あとは煮るなり焼くなり...

722 :デフォルトの名無しさん:03/06/15 18:51
>>718
では、再帰版をば。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=92
余分に '*' が表示されるのは勘弁してくださいな。


723 :デフォルトの名無しさん:03/06/15 19:03
http://jbbs.shitaraba.com/computer/6765/
ひたすら宣伝

724 :デフォルトの名無しさん:03/06/16 02:10
最近おもしろい宿題がないね

725 :デフォルトの名無しさん:03/06/16 03:35
>>724
ほとんど読み飛ばし。問題の条件が曖昧なのとか、
以前答えが出てるのに同じ問題が何度も何度も書かれるとか(本人は1度目なのかもしらんが)。
あとちょっと仕事の片手間に答えるには難しすぎる問題とかw

最後のは興味深く読んで頭のなかでコードを浮かべたりするんだけど、
結局時間がなくてできないw

726 :デフォルトの名無しさん:03/06/16 05:33
俺は能力不足でできないw

727 :arc:03/06/16 14:26
下の反復構造を再帰関数に書き換えるのですが誰か教えてくださいませんか?
これは2分サーチ用なのですがこの関数は引数として整数型配列、
探索範囲の開始添字と終了添字、探索キーを受け取り探索キーが見つかった時は
その配列要素の添字を返してそれ以外はー1を返すのが条件です。
よろしくお願いします。

int binarySearch(int b[], int searchKey, int low, int high)
{
int middle;

while(low <= high){
middle = (low + high)/2;

printRow(b, low, middle ,high);

if(searchKey == b [middle])
return middle;
else if( searchKey < b [middle])
high = middle - 1;
else
low = middle + 1;
}
return -1;
}

プログラムの前文は↓です
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055741073
よろしくお願いします。

728 :デフォルトの名無しさん:03/06/16 14:47
>>727
至極単純置換

- while(low <= high){
+ if(low<=high){
- high = middle - 1;
+ return binarySearch(b,searchKey,low,middle-1);
- low = middle + 1;
+ return binarySearch(b,searchKey,middle+1,high);

729 :デフォルトの名無しさん:03/06/16 15:53
int型の数値を2進数にて表示するプログラム。を教えてください。

730 :デフォルトの名無しさん:03/06/16 16:14
>>729
#include <limits.h>
void f(int n)
{
int i;
for(i=CHAR_BIT*sizeof(int)-1;i>=0;i--)
putchar('0'+((n>>i)&1));
}

731 :デフォルトの名無しさん:03/06/16 16:14
longやfloat、doubleの違いを教えてもらえませんか?
倍精度実数型など、意味が分かりません。
お願いします

732 :デフォルトの名無しさん:03/06/16 16:15
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=6765&KEY=1055062160&START=26&END=26&NOFIRST=TRUE
この問題が分かりません

733 :デフォルトの名無しさん:03/06/16 16:15
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=6765&KEY=1055062160&START=26&END=26&NOFIRST=TRUE
この問題が分かりません


734 :732:03/06/16 16:16
2重で書き込んでスマソ

735 :デフォルトの名無しさん:03/06/16 16:17
>>731
longやintは整数型で小数点以下が無い。そして小さな値しか扱えない
float,doubleは小数点の概念がある。そして桁数が大幅にアップ。
精度はそれぐらいえらいぜって意味

736 :646:03/06/16 16:18
三つの変数をx、y、zに読み込む。
これらを大きさの順に並べ替えて、その順に出力するプログラムを書け。
出力の1行目に最小値、2行目に2番目の値、三行目に最大値を入力すればよい。
二つが等しくて、残る一つがそれらより大きい場合、1行目と2行目は同じ値になる

という問題なのですが、同じ値になった場合どうやって表示させればよいのかわかりません。
どなたかご指導お願いします(´・ω・`)

737 :デフォルトの名無しさん:03/06/16 16:21
自分の名前をローマ字で表し、アスキーコードを変数に代入して、
自分の名前をアルファベットで表示させるプログラム。はどう造ればいいですか?


738 :デフォルトの名無しさん:03/06/16 16:23
>>737
意味が分からん

739 :デフォルトの名無しさん:03/06/16 16:23
>>736
できてるプログラムを見せなさい。
おなじ値じゃなければわかるんでしょ?

740 :732:03/06/16 16:28
素数を求めるアルゴリズムをみんなに説明してください。
そして、1〜10までの間の素数を求めるのと、素数を10個求める
ソースを記述してください。
「答案です。」とでも書いてたら添削してあげませう。
んじゃね


741 :デフォルトの名無しさん:03/06/16 16:29
>>737
#include <stdio.h>
#include <string.h>
main(){
char name[1024];
int code,i;
printf("名前をローマ字で入れてください >> ");
scanf("%s",name);
for(i=0;i<strlen(name);i++) code = name[i];
printf("ローマ字 => %s\n",name);
printf("アルファベット => %s\n",name);
}


742 :デフォルトの名無しさん:03/06/16 16:31
2つのfloat型変数を引用するとそれらの加算を返り値とする関数をadd()、
同様にして減算を行う関数をsub()、
乗算を行う関数をtimes()
除算を行う関数をdiv()
として、四則演算を行うプログラムをどなたかお願いします。


743 :デフォルトの名無しさん:03/06/16 16:31
scanfの時&が必要なんじゃ?

744 :デフォルトの名無しさん:03/06/16 16:32
void compare_sort(int *a,int *b){
int tmp;
if(*a > *b){
tmp = *a;
*a = *b;
*b = tmp;
}
}

int main(){
int x,y,z;
scanf("%d",&x);
scanf("%d",&y);
scanf("%d",&z);

compare_sort(&x,&y);
compare_sort(&y,&z);
compare_sort(&x,&y);

printf("%d %d %d",x,y,z);
}

745 :デフォルトの名無しさん:03/06/16 16:32
>>742
演算を行うための数値はどうやって入れるの?
出力はどういうイメージで出すの?

746 :デフォルトの名無しさん:03/06/16 16:32
>>742
「変数を引用する」とはどういう操作なのか。

747 :デフォルトの名無しさん:03/06/16 16:32
>>732

748 :646:03/06/16 16:33
>>739
(;´д`)同じ値という条件でなくてもわからないです・・・

749 :デフォルトの名無しさん:03/06/16 16:33
>>743
char[]


750 :646:03/06/16 16:37
>>744
すごい・・・
でもまだ一年生なので学校では
while,for,if,else,and,or,printf,scanf,intしか習ってません(;´д`)
この範囲で組むにはどうしたらよいでしょうか?

すいませんわがままばっかりで・・・

751 :デフォルトの名無しさん:03/06/16 16:38
>>750
その範囲で組んでるジャン。

752 :デフォルトの名無しさん:03/06/16 16:39
関数習ってない?

753 :デフォルトの名無しさん:03/06/16 16:41
ほなら
int main(){
int x,y,z,tmp;
scanf("%d",&x);
scanf("%d",&y);
scanf("%d",&z);

if(x>y){ tmp = x; x = y ; y = tmp;}
if(y>z){ tmp = y; y = z ; z = tmp;}
if(x>y){ tmp = x; x = y ; y = tmp;}

printf("%d %d %d",x,y,z);
}


754 :753:03/06/16 16:44
return してないな... 減点10だな

x,y,zがそれぞれ大きさが解ってないとき、

x>y なら、xとyを交換する(必ず、x<yになる)
y>z なら、yとzを交換する(必ず、y<zになる)

ただ、これだけだと新しいxとyの関係については解らないので、
x>y なら、xとyを交換する(必ず、x<yになる)
をもう一度する必要がある。

755 :732:03/06/16 16:46
お願いします。
あの問題が気になって仕方がないです。

756 :デフォルトの名無しさん:03/06/16 16:48
>>755
ソクラテスの篩を検索してくれ。


757 :デフォルトの名無しさん:03/06/16 16:48
>>755
じゃあ、少しは調べろよ

758 :デフォルトの名無しさん:03/06/16 16:49
>>755
よくわからんが、答えを書いたらおまえが添削するってことか?
ヤナコッタ

759 :デフォルトの名無しさん:03/06/16 16:49
エラトステネスのふるい だ、ごめん

760 :756=759:03/06/16 16:50
横文字の名前はわからん...

761 :デフォルトの名無しさん:03/06/16 16:50
>>759
ネタじゃなかったのか……

>>755
これ最強
http://wwwhomes.uni-bielefeld.de/achim/prime_sieve.html

762 :646:03/06/16 16:52
>>754
ありがとうございます

763 :arc:03/06/16 17:08
>>728
入れてみてもなんか出来ませんでした。
誰か分かる人727の問題を教えてください。

764 :デフォルトの名無しさん:03/06/16 17:11
>>741 にはだれもつっこまないの?

765 :デフォルトの名無しさん:03/06/16 20:01
int quux(int x, int y) {
if (x==1) {
return y;
} else {
return quux(x-1, (x+y)%65536);
}
}

を再帰を使わず繰り返し(と代入文)を使う C言語の関数に書き換えよ。

766 :デフォルトの名無しさん:03/06/16 20:09
http://esenden.com/rank/ninki/ranklink.cgi?id=mercury

767 :デフォルトの名無しさん:03/06/16 20:31
>>765
int quux(int x, int y) {
 while (x != 1) {
  y = (x + y) % 65536;
  x--;
 }
 return y;
}


768 :デフォルトの名無しさん:03/06/16 22:17
N個の数の平均値と標準偏差を求めるにはどうしたらいいのでしょうか?

769 :デフォルトの名無しさん:03/06/16 22:18
計算する

770 :デフォルトの名無しさん:03/06/16 22:20
ちょっとした調べものに・・・
http://mypage.odn.ne.jp/home/dongrico


771 :デフォルトの名無しさん:03/06/16 22:25
double sum,ave,var,std;
double data[]={1,2,3,4,5,6,7,8,9};
int n = (int)(sizeof(data) / sizeof(data[0]));
int i;

sum=0.0;
for(i=0;i<n;i++){
sum+=data[i];
}
ave = sum / n;

var=0.0;
for(i=0;i<n;i++){
var += pow( (data[i] - ave) , 2 );
}
var / = (n-1);

std = sqrt(var);

772 :デフォルトの名無しさん:03/06/16 22:35
>>771
ありがとうございます!!
レスむちゃくちゃ早くて驚きましたw
瞬殺なんですね。

773 :デフォルトの名無しさん:03/06/16 22:38
ループは一回で充分。
sum=0.0;
sum2=0.0;
for(i=0;i<n;i++){
sum+=data[i];
sum2+=data[i]*data[i];
}
ave = sum / n;
var = (sum2 - sum * sum) / n;
std = sqrt(var);


774 :デフォルトの名無しさん:03/06/16 22:41
>>771>>773
一箇所ずつ間違えるのはわざとかい?


775 :771:03/06/16 22:45
わり、適当にやってたから

>> var / = (n-1);
var /= (n-1);

でいいのか?

776 :デフォルトの名無しさん:03/06/16 22:58
C言語で、関数atofと関数strtodの作り方がわかりません。
atoiは作れたのですが・・・どなたかよろしくお願いします。

777 :デフォルトの名無しさん:03/06/16 23:02
ただちに777をゲットせよ

778 :デフォルトの名無しさん:03/06/16 23:05
それは実は結構難しい話を含んでいる。
以下参照。

http://citeseer.nj.nec.com/goldberg91what.html
http://urr3.cs.uec.ac.jp/ohkubo-k/papers/index.html
http://cm.bell-labs.com/netlib/fp/index.html

http://www.cwi.nl/~cilibrar/floatingpointconv.pdf
http://ftp.ccs.neu.edu/pub/people/will/howtoread.ps


779 :デフォルトの名無しさん :03/06/17 00:04
すみません、以下のサイトに書いてある問題がわかりません。

http://www.fun.ac.jp/icpc/problems/C/C.html

アルゴリズムだけでもいいのでお願いします。

780 :デフォルトの名無しさん:03/06/17 00:07
総当り、またはGAで。

781 :サンプルです:03/06/17 00:08
☆皆さんの応援が頼りです。頑張ってまーす!!☆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html


782 :デフォルトの名無しさん:03/06/17 00:12
>>776
double my_atof(const char *s){
char buf[256];
double a,b,sig=1;
int i,x;
char *dot = strchr(s,'.');
if(dot == NULL) return (double)my_atoi(s);
x = dot - s;
strncpy(buf,s,x);
a = (double)atoi(buf);
if(a>0) sig = 1; else sig = -1;
strcpy(buf,s+x+1);
b = (double)my_atoi(buf);
for(i=0;i<strlen(buf);i++) b/=10;
return a + b;
}


783 :デフォルトの名無しさん:03/06/17 00:14
>>779の問題を誰か日本語に訳してちょ

784 :デフォルトの名無しさん:03/06/17 00:15
#include <stdio.h>

main( ) {
char k[100]={0};//入力した文字を入れる配列
int n[26]={0};//n[0]〜n[25]はa〜zの出現回数に相当する配列
int i,j;
scanf("%s",k);

for(i=0 ; k[i] != '\0' ; ++i) {

if( n[ k[i] - 'a' ] == 0) {
++n[k[i]-'a'];
if(i >= 1 && k[i] != k[i-1]) {
printf("%d%c",n[k[i-1]-'a'],k[i-1]);
n[k[i-1]-'a'] =0;
}
if(k[i+1]=='\0')
printf("%d%c",n[k[i]-'a'],k[i]);
}else {
if(k[i] == k[i-1]) {
++n[k[i]-'a'];
if(k[i+1] == '\0')
printf("%d%c",n[k[i]-'a'],k[i]);
}
}
}
}

785 :782:03/06/17 00:17
ごめん、負の数のときの処理忘れてた。

double my_atof(const char *s){
char buf[256];
double a,b,sig=1;
int i,x;
char *dot = strchr(s,'.');
if(dot == NULL) return (double)my_atoi(s);
x = dot - s;
strncpy(buf,s,x);
a = (double)atoi(buf);
if(a<0){ sig = -1; a *= (-1);}
strcpy(buf,s+x+1);
b = (double)my_atoi(buf);
for(i=0;i<strlen(buf);i++) b/=10;
return (a + b) * sig;
}


786 :782:03/06/17 00:26
あー、よく考えたら全然ダメだ。すまそ

787 :デフォルトの名無しさん:03/06/17 00:27
In a completed puzzle,
the nine pieces are arranged in a 3 x 3 grid,
and each of the 12 pairs of edges
facing each other must be labeled with
one of the following four combinations of symbols:
"R" with "r", "G" with "g", "B" with "b", and "W" with "w".

要するに、9枚のパネルを3x3に組み合わせる。
そのパネルには12の接合面があり、
それぞれ下に示す4種類の記号同士で組み合わせなさい。

ですな。

788 :デフォルトの名無しさん:03/06/17 00:29
9つのピースを持つパズルを完成させます。入力は
WwRR wwrg RRGb rGBG RGrb RrRg RGrg rgBB Wrgr
のように与えられアルファベットは(上)(右)(下)(左)の辺の記号を
表しています。
サイトの図を見てもらえれば分かりますがwとW,gとG,rとR,bとBがくっつく
条件となります。与えられた9つのピースが3*3で完成するパターン数
を求めよ、というものです。ピースはそれぞれ自由に
回転、移動させることができます。

789 :デフォルトの名無しさん:03/06/17 00:33
For example, an edge labeled "R" can only face an edge with "r".
Figure 2 is an example of a completed state of a puzzle.
In the figure, edges under this restriction are indicated
by shadowing their labels.

例を示すなら、"R"には"r"だけが接することが出来ます。
Figure 2はパズルが完成した状態を示しています。
この条件下にある接合面のラベルに網がけをしてあります。

The player can freely move and rotate the pieces,
but cannot turn them over.
There are no symbols on the reverse side of a piece !

プレイヤーは、ピースを動かし、回転させることができますが
ひっくり返すことはできません。
このピースの裏側には記号はありません。

790 :デフォルトの名無しさん:03/06/17 00:37
Each piece is represented by a sequence of the four symbols
on the piece, starting with the symbol of the top edge,
followed by the symbols of the right edge, the bottom edge,
and the left edge.
それぞれのピースは、4つのシンボルを持っています。
このシンボルは、上、右、下、左の順序を持っています。

For example, gwgW represents the leftmost piece in Figure 1.
Note that the same piece can be represented as wgWg,
gWgw or Wgwg since you can rotate it in 90, 180 or 270 degrees.
例えば、Figure1において、もっとも左のgwgWに注目してください。
90度、180度、270度回転させれば、wgWgもgwgwもWgwgも同じ物です。

791 :デフォルトの名無しさん:03/06/17 00:40
The mission for you is to create a program which counts
the number of solutions.
問題は、いくつの回答があるかを求めるプログラムを作成することである。

It is needless to say that these numbers must
be multiples of four, because,
as shown in Figure 3, a configuration created by rotating
a solution in 90, 180 or 270 degrees is also a solution.
その数は、4の倍数にならなければならない。
なぜなら、Figure 3によると同じ状態から、
解答が90度,180度,270度回転させていたものがあるからだ。

792 :デフォルトの名無しさん:03/06/17 00:52
ICPCか
おれも出たことあるぞ

793 :デフォルトの名無しさん:03/06/17 01:03
電卓の課題が出ました。C言語で作るらしいのですが1回だけの計算で簡単
なものを作らなければならないみたいです。
void
printf
scanf
case
if
switch
などは習いました。
割り算だけは実数型にするということです。
割り算以外は整数型で表示という事です。
よろしくお願いします。

794 :デフォルトの名無しさん:03/06/17 01:04
結構簡単そうだけど、多分、何処かに落とし穴があるんだろうな…

795 :デフォルトの名無しさん:03/06/17 01:06
/* 画像の濃度ヒストグラムの画像を作るプログラム histgram.c */
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#include"mypgm.h"
#define IMAGESIZE 256 /* = GRAYLEVEL */

void make_histogram_image( )
/* 原画像 image1 のヒストグラムを作り画像としてimage2 に代入 */
{
long int histogram[GRAYLEVEL]; /* ヒストグラム用配列 */
long int max_frequency; /* 頻度の最大値 */
int i, j, x, y; /* 制御変数 */
int data; /* 頻度を表すグラフの長さ */


796 :デフォルトの名無しさん:03/06/17 01:06

/* 原画像のヒストグラムを求める */
for ( i = 0; i < GRAYLEVEL; i ++ )
histogram[ i ] = 0;
printf("今,原画像のヒストグラムを求めています.\n");
for ( y = 0; y < y_size1; y ++ )
for ( x = 0; x < x_size1; x ++ )
histogram[ image1[x][y] ] ++;
/* 頻度の最大値を求める */
max_frequency = INT_MIN;
for ( i = 0; i < GRAYLEVEL; i ++ )
if ( histogram[i] > max_frequency )
max_frequency = histogram[i];
printf("頻度の最大値 = %d\n", max_frequency);
/* ヒストグラム画像を image2 に代入 */
x_size2 = IMAGESIZE; y_size2 = IMAGESIZE;
for ( y = 0; y < y_size2; y ++ )
for ( x = 0; x < x_size2; x ++ )
image2[y][x] = 0;
for ( i = 0; i < GRAYLEVEL; i ++ ){
data = (int)( MAX_BRIGHTNESS /
(double)max_frequency * (double)histogram[i] );
for ( j = 0; j < data; j ++ )
image2[IMAGESIZE-1-j][i] = MAX_BRIGHTNESS;
}
}



797 :デフォルトの名無しさん:03/06/17 01:07
main( )
{
load_image_data( ); /* 原画像を image1 に読み込む */
make_histogram_image( ); /* ヒストグラムの画像を image2 へ */
save_image_data( ); /* image2 を保存する */
return 0;
}

このプログラムをグラフの上限値をじゆうに設定できるようにするには
どうすればいいですか

798 :デフォルトの名無しさん:03/06/17 01:09
>>793
数値1: 123
数値2: 456
演算子: +
答え:578

とかこんな感じ?

799 :デフォルトの名無しさん:03/06/17 01:10
579だ。。。ウツダ

800 :( ○ ´ ー ` ○ ):03/06/17 01:13
>>798-799


801 :デフォルトの名無しさん:03/06/17 02:19
>>793 こんな感じ?
#include <stdio.h>
#include <string.h>
int
main(void)
{
char op,buf[BUFSIZ]; int x,y;
fprintf(stderr, "try: 2*3\n");
while(!feof(stdin)) {
fprintf(stderr, "> ");
fgets(buf,BUFSIZ,stdin);
if (3 == sscanf(buf, "%d %[-+*/] %d", &x, &op, &y)) {
switch(op) {
case '+': fprintf(stderr, "= %d\n", x+y); break;
case '-': fprintf(stderr, "= %d\n", x-y); break;
case '*': fprintf(stderr, "= %d\n", x*y); break;
case '/': fprintf(stderr, "= %f\n", ((double)x)/y); break;
}
}
}
return 0;
}


802 :デフォルトの名無しさん:03/06/17 03:02
>>779
#include <stdio.h>
#include <ctype.h>
struct cell { char up, down, left, right; };
struct cell table[3][3]; int count = 0, flags = 0;
char q[9][4]={"RrGb","WWGR","rGgb","Wbrg","wgBb","GgBg","WbBG","Wwwg","WWGG"};
struct cell rotate(struct cell x) { struct cell y;
y.up = x.right; y.right = x.down; y.down = x.left; y.left = x.up; return y; }
struct cell create(char s[4]) { struct cell x;
x.up = *s++; x.right = *s++; x.down = *s++; x.left = *s; return x; }
int check(char x, char y) { return x != y && tolower(x) == tolower(y); }
void loop(int x, int y) { int i, j; struct cell *p = &table[x][y];
for (i = 0; i < 9; i++) {
if (flags & (1 << i)) continue;
flags |= 1 << i;
for (*p = create(q[i]), j = 0; j < 4; *p = rotate(*p), j++) {
if (x != 0 && !check(table[x-1][y].down, p->up)) continue;
if (y != 0 && !check(table[x][y-1].right, p->left)) continue;
if (x == 2 && y == 2) count++; else if (y == 2) loop(x+1, 0); else loop(x, y+1); }
flags &= ~(1 << i); } }
int main(void) { loop(0, 0); printf("%d\n", count); return 0; }

803 :デフォルトの名無しさん:03/06/17 03:12
>>771>>773の間違いって何?

804 :デフォルトの名無しさん:03/06/17 03:41
>>793
これでいいのかな?
double waru(double f,double s){
   double a;
   a=f/s;
   return a;
}
main(){
   int first,second,third;
   printf("最初の数値を入力してENTERを押してください");
   scanf("%d",&first);
   printf("1,2,3,4の演算を選んでENTERを押してください 1:+ 2:- 3:* 4:/\n");
   scanf("%d",&second);
   printf("最後の数値を入力してENTERを押してください");
   scanf("%d",&third);
   if(second==1)printf("%d",first+third);
   if(second==2)printf("%d",first-third);
   if(second==3)printf("%d",first*third);
   if(second==4)printf("%lf",waru(first,third));
   return 0;
}

805 :デフォルトの名無しさん:03/06/17 03:48
(double)first/third

806 :デフォルトの名無しさん:03/06/17 04:02
>>805
でできるんだねスマソ

807 :デフォルトの名無しさん:03/06/17 04:08
>>803
少しは頭使え

808 :デフォルトの名無しさん:03/06/17 07:49
>>807
少しは気をつかえ

809 :デフォルトの名無しさん:03/06/17 08:25
Cでアナログ時計作れと言われて作っているのですが
アニメーションさせるあたりが全く分からなくて困っています
どんな命令を使うのか教えてください
お願いしますm(__)m


810 :デフォルトの名無しさん:03/06/17 09:02
>>795
>このプログラムをグラフの上限値をじゆうに設定できるようにするには
意味不明。
それから、ソースを載せるなら省略せずに全部載せろ。
#できれば私が出勤するまでにv

811 :デフォルトの名無しさん:03/06/17 10:22
>>809
標準Cでは無理。ウインドウズアプリケーションなら、Win32APIと言うのがあって、
ドットを打てる関数があるので、その点で時計を表示する。SetPixelとか、速度に
こだわるなら、BitBltとか。
アニメーションはまず止まっている時計を書けるようにする。
次に引数によって針の角度が変えられる止まっている時計をかけるようにする。
後は、時間を得られる関数を引数にして、時計の表示→消す→表示を繰り返す。

812 :デフォルトの名無しさん:03/06/17 10:26
>>809
ディスプレイに表示する限りどうがんばってもアナログにはならない
出題者にお前は脳みそが腐っているから病院へ逝けと言っておけ
Cで組み込み制御すると言うのなら話は別だが

813 :デフォルトの名無しさん:03/06/17 10:40
>>812
うわー、頭いいねー、すごーい

814 :デフォルトの名無しさん:03/06/17 10:52
チゴイネ

815 :811:03/06/17 11:16
>>812
その手があったか。

816 :デフォルトの名無しさん:03/06/17 11:18
>>812
ディスプレイだとある意味アナログかもしれないよ

817 :デフォルトの名無しさん:03/06/17 11:28
それを言い出すと、針を使っていてもクォーツを使っている限りアナログ時計にならない罠。

818 :デフォルトの名無しさん:03/06/17 11:30
この世界は、不連続な物質と、不連続な時間から成るデジタル名世界ですよ?

819 :デフォルトの名無しさん:03/06/17 12:11
>>817
針の動きは一定でこそないがアナログさ(w
(n秒の位置からn+1秒の位置へ瞬間移動するわけじゃないから)

820 :デフォルトの名無しさん:03/06/17 12:19
>>801
何ゆえに標準エラー出力?

821 :デフォルトの名無しさん:03/06/17 12:25
助けてください、全然わからなくて困ってます。

要素数が no である int 型の配列 vc の要素の最大値と最小値の差を
返す関数 diamarray(int vc[], int no) を作成せよ。
動作確認をするために、main 関数も作成しなさい。


822 :デフォルトの名無しさん:03/06/17 12:28
宿題じゃないのですが、クラスの外の関数から、
そのクラスのコンストラクタ・デストラクタを
オブジェクトを作成せずに呼び出す方法ありませんか?
class test{public:test(){return;};};
int main(int c,char**v)
{   BYTE*pby=new BYTE [sizeof(test)];
   test*pclT=pby;
   pclT->test();//この処理がしたいが「test」の関数でないとエラーになる
}
コンストラクタと同じ処理をするものを作っても、いいんですが
できれば、一つの定義で収めたいです。方法ありませんか?

823 :デフォルトの名無しさん:03/06/17 12:36
>>821
動作確認は自分でどうぞ。テストもしてません。
int daimarray(int vc[],int no)
{  int max=vc[0],min=vc[0],i;
  for(i=1;i<no;i++)
  { if(vc[i]<min)min=vc[i];
     if(vc[i]>max)max=vc[i];
  }return max-min;
}
全角スペースに気をつけてください

824 :823:03/06/17 12:38
>>823
ifがネストしているみたいに
なってますがネストしてません。
全角スペースでずれました。すいません

825 :821:03/06/17 12:49
>>823>>824
あ、ありがとうございます!!
これから講義なんで終わったらやって見ます!
本当にありがとうございました〜

826 :デフォルトの名無しさん:03/06/17 12:53
>>822
class test{
public:
  void foo();
  test(){foo();}
};
同じ処理をするものを作っておいて、
コンストラクタはそれを呼ぶようにする。

宿題ではないのなからスレ違いだな。

827 :826:03/06/17 12:54
ないのなから…

828 :デフォルトの名無しさん:03/06/17 12:56
>>826
822の目的とは多少違うだろ
スレ違いにマジレスしてやる義理は無いが

829 :デフォルトの名無しさん:03/06/17 13:03
根本的にクラスとして初期化された実体がないのに、通常のメンバ関数を呼ぶ時点で謝り
newが領域の確保しかしていないと思っているのだろうか?
呼ぶのなら関数にstaticを付けるべき

830 :デフォルトの名無しさん:03/06/17 13:04
>>822
クラス内にコンストラクタと同じ処理の関数をPublicで作り、
コンストラクタはそれを呼ぶ。
>>826と同じことを言っているようだが「コンストラクタと同じ処理」を
外部に公開しないですむ。

831 :デフォルトの名無しさん:03/06/17 13:04
謝りー>誤り

832 :826:03/06/17 13:06
>>828
>>829
そうですね。言われて気がつきました。もう引っ込みます。

833 :デフォルトの名無しさん:03/06/17 13:07
>>830
こういうことかな?
class test{
public:
test(){likeConstractor();}
 static void likeConstractor()
 {
  return;
 }
};


834 :デフォルトの名無しさん:03/06/17 13:12
コンストラクタもインラインアセンブラで強制的に呼べないこともないが、
そんな馬鹿なプログラムは作りたくない

835 :デフォルトの名無しさん:03/06/17 13:35
友達の宿題をやらせてもらった。
ぜひともほかの人にもやってほしい。

問題:
2次元配列に"abc", "def", ... "vwx", "yx"を入れる。
ループなどを使わずにこの配列を使い、「abcdef...vwxyz」を表示せよ。



836 :デフォルトの名無しさん:03/06/17 13:39
int main(void)
{
char const array[][3] = {
"abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz",
};
printf("%s\n", &array);
return 0;
}


837 :835:03/06/17 13:45
>>836
はやっ

後日に友達から教えてもらった先生の解答は
printf( "%s\n", array ) だった。

...ちなみに折れは思いつかなかった。


838 :836:03/06/17 13:50
ループを使わない→各要素を羅列する→つまらん
  →各要素を連結する→最初から切れ目を作らない
以上v

839 :835:03/06/17 14:06
最後が"yz"だからうまくいくんだよねぇ。
アルファベットが27文字だったら4文字ずつ区切ったのだろうか。

840 :画像処理か:03/06/17 14:10
>>795
ピンク色の本に洗脳されすぎ。
それから,INT_MINってなに?どこで定義されてる?


841 :デフォルトの名無しさん:03/06/17 14:12
>>840 ttp://www-ccs.ucsd.edu/c/limits.html

842 :836:03/06/17 14:13
>>839
例えば12文字。
char const array[][3] = {
"abc", "def", "ghi", "jkl", "",
};


843 :デフォルトの名無しさん:03/06/17 14:14
INT_MINも知らないくせに偉そうな口が叩けるんですね(^^;

844 :835:03/06/17 14:16
>>842
なる。考えればあたりまえかも ;;

845 :デフォルトの名無しさん:03/06/17 16:37
アラインメントは大丈夫か

846 :デフォルトの名無しさん:03/06/17 16:53
>>845
何の話だ?

847 :デフォルトの名無しさん:03/06/17 17:08
この日本語だけでつたわるかどうか不安なのですが、こんなんでました。

コマンドプロンプトからファイル名を一つだけ読み込み、 そのファイルを開いて数字列を読み込み、 平均値を求め、標準出力に表示するプログラムを作成せよ。

というのがUNIX Cの授業で出ました。
がくがく。
どなたかおねがいいたしますー。

848 :デフォルトの名無しさん:03/06/17 17:09
ファイルの中身を見せろ

849 :デフォルトの名無しさん:03/06/17 17:13
>>846
sizeof (*array) == 3 でない可能性があるという事だろう。

850 :847:03/06/17 17:14
失礼しました。
ファイルの中身は、
たとえばclass1.datというファイルが、

83
54
59
80
94
・・・
といった具合です。

851 :デフォルトの名無しさん:03/06/17 17:23
>>849
ありうるのか?
sizeof( array )/sizeof( array[0] ) は array の要素数を返すんじゃないのか?
array = char[3] とすると
sizeof( char[3] )/sizeof( char ) = sizeof( char[3] ) = 3 でないと困るんじゃ?

852 :デフォルトの名無しさん:03/06/17 17:31
>>847
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFSIZE 1024
main(){
FILE *fp;
int sum=0,count=0;
char buf[BUFSIZE];
printf("input file name >> ");
scanf("%s",buf);
fp = fopen(buf,"r");
if(fp==NULL){
printf("ERROR FILE OPEN [%s]\n",buf);
return;
}
while(fgets(buf,BUFSIZE,fp)){
sum += atoi(buf);
count++;
}
printf("平均 : \n",sum/count);
fclose(fp);
}


853 :852:03/06/17 17:33
間違えた
×printf("平均 : \n",sum/count);
○printf("平均 : %d\n",sum/count);

あと#include <string.h>はいらないや。


854 :デフォルトの名無しさん:03/06/17 17:37
c++ version
#include <iostream>
#include <iterator>
#include <fstream>
#include <vector>
double foo(const char* s)
{
    std::ifstream f(s);
    std::vector<int> v((std::istream_iterator<int>(f)),
                        std::istream_iterator<int>() );
    std::vector<int>::iterator st , en;
    st  = v.begin();
    en = v.end();
    int cnt;
    double temp;
    cnt = temp = 0;
    while(st != en){
        ++cnt;
        temp += *st++;
    }
    return temp/cnt;
}


int main(int,char **s){
    std::cout<<foo(s[1]);
    return 0;
}


855 :デフォルトの名無しさん:03/06/17 18:58
みなさんはC言語をどのくらいかけて一通りマスターしましたか?
目安は初心者の参考書は見ないで済むくらいのスキルになるまで。


856 :デフォルトの名無しさん:03/06/17 19:10
sage

857 :デフォルトの名無しさん:03/06/17 19:20
よく使う関数 → 参考書見ない、動かなかったら見る。
たまーに使う関数 → google で manpage
めったに使わない関数 → 参考書とかgoogleでサンプル探す


858 :デフォルトの名無しさん:03/06/17 19:34
プロのプログラマーがよく使う関数ってありますか?
あと、scanfなどはプロは滅多に使わないと聞いたのですが・・。
他にもそんな関数ありますか?

859 :デフォルトの名無しさん:03/06/17 19:37
スレ違い

860 :デフォルトの名無しさん:03/06/17 19:37
すみません。
調子に乗りすぎました

861 :デフォルトの名無しさん:03/06/17 19:39
わけわかんねぇよ。
よく使うとかさ。
目的に最もあったの使えよ。
大体聞いてどうすんだ?
おれがmallocつったらお前これからmalloc使いまくる気か?スタックで十分なときでも。

てかなんでこんな連続でスレ違いばっかり・・・

862 :デフォルトの名無しさん:03/06/17 19:43
組み込み系だとそもそも標準ライブラリ使えなかったりする。
処理系用の専用ライブラリつかうからmallocもstrcpyもprintfもない。

863 :デフォルトの名無しさん:03/06/17 19:51
★を1個ずつ増やし改行ながら10まで表示し、
10になったらまたカウントダウンして1までってな感じのプログラムを
作りたいのですが。C初めて3日ですが、何も分からないまま
やってみました。ぐちゃぐちゃで申し訳ないんですが、どうか
添削してください。意味不明なら流すか、ネタだと思って
酒のつまみにでもしてください。
#include <stdio.h>
int main(void)
{
char star='★';
int a;
for(a=1;a<=10;a++){
printf("%c\n",star);
star++;
if(a==10){
for(;a>=1;a--){
printf("%c\n",star);
star--;
}
}
}
}



864 :デフォルトの名無しさん:03/06/17 19:54
>>863
平仮名や漢字や★見たいな記号はワイド文字といって2byte使う。
char は1byeしか格納できないから、それじゃだめ

865 :864:03/06/17 19:54
じゃぁどうするかというと、文字ではなく文字列として扱う。

866 :デフォルトの名無しさん:03/06/17 19:56
star++;
で星が増えていくわけじゃないぞ。

867 :863:03/06/17 20:02
根本的に間違ってました。
自分は寝惚けてたんでしょうか

868 :863:03/06/17 20:02


869 :デフォルトの名無しさん:03/06/17 20:03
>>866
warata

870 :863:03/06/17 20:16
>>866
恥を忍んで聞かせていただきます。
では、どのようにしたらいいですか?

871 :デフォルトの名無しさん:03/06/17 20:21
>>870
ループで出力したい個数だけ改行を打たずに★をプリントし、
その後一個改行を出力。

それを行数分繰り返す。

872 :デフォルトの名無しさん:03/06/17 20:21
>>870
printfで★一つ表示。
printfをn回実行。

873 :863:03/06/17 20:23
★はどのように宣言すればよいでしょうか。

874 :デフォルトの名無しさん:03/06/17 20:25
>>870
やるとしたらこんな感じ。

void print_n_star(int n) {
int i;
for (i = 0; i < n; i++) {
printf("★");
}
printf("\n");
}

int main(void) {
const int MAX = 10;
int i;

for (i = 1; i <= MAX; i++) {
print_n_star(i);
}
for (i = MAX; i > 0; i--) {
print_n_star(i);
}
return 0;
}

875 :デフォルトの名無しさん:03/06/17 20:26
>>873
文字列。
char *s = "★";

876 :デフォルトの名無しさん:03/06/17 20:29
>>874
main()の2度目のループは課題が1までなので
i > 0
より
i >= 1
の方がよくない?

877 :デフォルトの名無しさん:03/06/17 20:30
>>873
ここいってみては?
http://jbbs.shitaraba.com/computer/6765/
あんたみたいな人が盛り上げられるかもしれん


878 :デフォルトの名無しさん:03/06/17 20:31
/*踏まえて*/
#include <cstdio>
void show(char *s,int c)
{
    while(c-- > 0)
      std::printf("%s",s);
    std::putc('\n',stdout);
}

void foo()
{
    char *star = "★";
    int i;
    for(i=0; i<10; ++i){
        show(star,i);
    }
    for(; i>0; i--){
        show(star,i);
    }
}


879 :デフォルトの名無しさん:03/06/17 20:33
>>878
ネームスペースとxstdioとかいらぬ混乱を招こうとしてまつね

880 :デフォルトの名無しさん:03/06/17 20:45
横レス失礼します。
ひとつ質問があります。
★をprintfで10回表示しながら前より1個★の数を増やすには
char *s = "★"; を使うのでしょうか?
要するに1〜10の和の数だけ星を表示すると言うことです。
お願いします。


881 :デフォルトの名無しさん:03/06/17 20:48
>>880
おまえは874とか878を見て何も感じないのか…

882 :デフォルトの名無しさん:03/06/17 20:51
>>880
10個表示させるなら10回、11個なら11回ループすればいい。

883 :880:03/06/17 20:52
ん〜、難しすぎて分かりません。
僕も超初心者ですから

884 :デフォルトの名無しさん:03/06/17 20:56
>>883
char *s = "★"; //sに星マークをセット

printf("%s",s); //★ を表示

printf("%s",s);を2回実行 //★★ を表示

printf("%s",s);を10回実行 //★★★★★★★★★★ を表示

885 :880:03/06/17 21:02
forを使ってprintfを1回、2回、3回と表示するにはどうしたら・・・。
この場合、★は6個表示

886 :デフォルトの名無しさん:03/06/17 21:04
できたー
#include <stdio.h>

main(){
int i,j;
for(i=1;i<=10;i++){
for(j=1;j<=i;j++){
printf("★");
}
printf("\n");
}
for(i=1;i<=9;i++){
for(j=9;j>=i;j--){
printf("★");
}
printf("\n");
}
return 0;
}

887 :デフォルトの名無しさん:03/06/17 21:04
for (i = 6; i > 0; i--)
printf("hoge");

888 :デフォルトの名無しさん:03/06/17 21:07
for(j=1;j<=i;j++){
printf("★");
}
関数でくくれ。

889 :デフォルトの名無しさん:03/06/17 21:08
>>885
forの使い方理解してる?

890 :デフォルトの名無しさん:03/06/17 21:09
>>888
関数でもないし、このばあい括らなくてもいいし。

891 :デフォルトの名無しさん:03/06/17 21:09
int i,j;
for(i=1;i<=10;i++){
for(j=1;j<=i;j++){
printf("★");
}
printf("\n");
}

この部分、Cやったことない漏れには分からない。
どういう動きなのか説明してもらえんかの

892 :890:03/06/17 21:10
あ、ごめん、勘違いした。

893 :デフォルトの名無しさん:03/06/17 21:12
1回から10回★を印字する

894 :デフォルトの名無しさん:03/06/17 21:13
>>886分かりやすい!!!!

895 :デフォルトの名無しさん:03/06/17 21:14
>>891
そんなのCでなくてもたいがいのプログラミング言語である話だが・・

896 :デフォルトの名無しさん:03/06/17 21:15
for(i=1;i<=10;i++){
printf("\n");
for(j=1;j<=i;j++){
printf("★");
}
}
こう書き換えたらダメ?

897 :デフォルトの名無しさん:03/06/17 21:15
なにこれオマンコ?

898 :デフォルトの名無しさん:03/06/17 21:19
うん、オマソコ

899 :デフォルトの名無しさん:03/06/17 21:21
>>896
しょっぱなから改行かませるの

900 :デフォルトの名無しさん:03/06/17 21:28
900げと

901 :デフォルトの名無しさん:03/06/17 21:35
#include <stdio.h>
#define MAX 10
int main(void)
{
int i,j;
for(i=1;i<=MAX;i++){
for(j=1;j<=i;j++){
printf("★");
}
printf("\n");
}
}

902 :デフォルトの名無しさん:03/06/17 21:37
課題が低レベルだと食いつきがいいな

903 :デフォルトの名無しさん:03/06/17 21:38
このスレのさっきの問題を見て、
どんなプログラムにするかアルゴリズムが思いつきませんでした。
forを2重に使うとあんな風になるなんて。
理解力のない漏れにもわかるようなアルゴリズムの解説サイト
ありましぇんか?

904 :デフォルトの名無しさん:03/06/17 21:39
>>891
int i,j;//整数i,jを宣言
for(i=1;i<=10;i++){//i=1をi<=10になるまでiを1ずつ足す
for(j=1;j<=i;j++){//@i=1★を一個表示
printf("★");//Bi=2★をニ個表示
}//Di=3★を三個表示i=10まで繰り返し
printf("\n");//A改行C改行E改行
@から見てく

905 :デフォルトの名無しさん:03/06/17 21:40
アルゴリズム以前のような気がするがな。

906 :デフォルトの名無しさん:03/06/17 21:44
簡単な問題にはレス付くの早いわな。


907 :デフォルトの名無しさん:03/06/17 21:47
難しい問題は労力に見合わん。やってもできない時もあるけど。
やっても「こういう動作じゃないんですよ」とか言われるし
相手するのは面倒。

908 :デフォルトの名無しさん:03/06/17 21:51
>>905
おながいします

909 :デフォルトの名無しさん:03/06/17 21:53
906です。902とかぶってた。鬱々…
>>907
相手しなきゃ良いじゃん。(「あ、そう」で良いじゃん)
そもそも労力に見合うって何よ。
ここは自己満足の為に書き込むスレざんしょ。


910 :デフォルトの名無しさん:03/06/17 21:56
だから簡単な問題で自己満足するんだな。

911 :デフォルトの名無しさん:03/06/17 21:59
>>908

912 :。。。:03/06/17 22:00
 三種類の括弧(),{},[]が並んだ文字列を読みこみ、括弧のつじつまがあっているか
を検査するプログラムを作りたいのですが。

913 :デフォルトの名無しさん:03/06/17 22:02
そんな君達にささげるスレ
http://pc2.2ch.net/test/read.cgi/tech/1055749538/l50


914 :649:03/06/17 22:04
>912
フラグを立ていろいろする

915 :デフォルトの名無しさん:03/06/17 22:04
>>903
Cの本持ってんなら、
制御文のところをよ〜く読んで、
あとは自分で考えろ。

916 :デフォルトの名無しさん:03/06/17 22:05
>>912
宿題なら宿題らしく。
カウンタの加減算で良いのでは?

917 :デフォルトの名無しさん:03/06/17 22:09
>>912
作ればいーじょん。

918 :912:03/06/17 22:09
・開き括弧ならとにかくpush
・閉じ括弧ならpopして、同じ種類の括弧かどうか調べ、異なっていればエラー
・すべての文字を見終わって、スタックも空であれば正解

すいません書き忘れてました

919 :デフォルトの名無しさん:03/06/17 22:10
カウンタだと
( [ )] こういうエラー見つけにくいんじゃないかな?
スタックに開きカッコをつんでいって、閉じカッコがきたら、取り出してチャックしてみるのがいいんじゃないか?

920 :デフォルトの名無しさん:03/06/17 22:13
再帰。

921 :デフォルトの名無しさん:03/06/17 22:52
#include  <stdio.h>
#include  <string.h>
int     nSt;
char    aSt[1024];
int   KakkoCheck( char*  pIn )
{
  char*  sB = "[{(";
  char*  sE = "]})";
  nSt = 0;
  while( *pIn ) {
    if( strchr( sB, *pIn ) ) {aSt[nSt] = *pIn; nSt++;}
    if( strchr( sE, *pIn ) ) {
      if( strchr( sB, aSt[ nSt - 1 ] ) - sB != strchr( sE, *pIn ) - sE )
        return -1; // Error
      nSt--;
    }
    pIn++;
  }
  if( nSt ) return -1; // Error;
  return 0;    // OK;
}
int   main(  void )
{
  char  sBuf[1024];
  while( 1 ) {
    fgets( sBuf, 1024, stdin );
    printf( "%d\n", KakkoCheck( sBuf ) );
  }
  return 0;
}


922 :デフォルトの名無しさん:03/06/17 22:55
漏れ921だけんど、汚くて済まんな。
一度に書き込める行数の制限あるんでこんななった。
正式な動作確認もしてないし main() も雑だけど変かな?
突っ込み希望。

923 :デフォルトの名無しさん:03/06/17 23:10
好きな数字Xをキーボードから入力させて
1〜Xまでの数字全部を足した数を表示させるプログラムを『できるだけ簡潔に』
作ろうとするとどうなりますかね?
お話にならないレベルで申し訳ないデス。知恵を授けたまえー。

924 :デフォルトの名無しさん:03/06/17 23:17
簡単すぎてやる気にならない

925 :デフォルトの名無しさん:03/06/17 23:19
int i;
int sum = 0;
int c = getc();
if(isdigit(c)){
for(i='1';i <= c;i++){
sum += i - '0';
}
printf("sum %d",sum);
}


926 :デフォルトの名無しさん:03/06/17 23:20
#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
printf("%d\n",n*(n+1)/2);
return 0;
}

濡れはここまでしかでけん・・・

927 :デフォルトの名無しさん:03/06/17 23:20
>>924
はぅぁっ。
そういうものですか…。
PCもレポート書くぐらいにしか使ったこと無いもので。

928 :デフォルトの名無しさん:03/06/17 23:21
int x;
scanf("%d",&x);
printf("%d\n",x*(x+1)/2);

929 :デフォルトの名無しさん:03/06/17 23:23
>>925
>>926
ご両人に感謝ですw
なんかintは2つまでが好ましい、みたいな事言ってたんですけど、
へっぽこの私では3個が限界でw

930 :デフォルトの名無しさん:03/06/17 23:24
>>928
おー、短いw
ありがとうございます〜。
って感謝レス多発ですいません。


931 :デフォルトの名無しさん:03/06/17 23:43
テキストファイルは名簿である.各行のデータを,ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納する
プログラムを書け.


932 :デフォルトの名無しさん:03/06/17 23:45
>>316

933 :デフォルトの名無しさん:03/06/17 23:47
なんでこういう式になるの?
n*(n+1)/2

934 :デフォルトの名無しさん:03/06/17 23:47
C++の宿題ってあるんだろうか?
「循環参照をおこさないスマートポインタのテンプレートを書け」
とかだされたら俺できないよ

935 :デフォルトの名無しさん:03/06/17 23:48
>>933
高校の数学でやったろ

936 :デフォルトの名無しさん:03/06/17 23:48
>>934
再帰使うと書けるよ

937 :デフォルトの名無しさん:03/06/17 23:50
>>935
厨房に言っても・・・

938 :デフォルトの名無しさん:03/06/17 23:52
>>937
ガーソ。
ズボシジャン

939 :デフォルトの名無しさん:03/06/17 23:58
>>935
高校なのか?
漏れは小学校でやったが

940 :デフォルトの名無しさん:03/06/18 00:00
スーパー生姜臭い

941 :デフォルトの名無しさん:03/06/18 00:01
n〜1まで
1234・・n-2n-1n
1234・・n-2n-1
1234・・n-2
  :
1234
123
12
1
これを合計したのが知りたい。これをひっくりかえした
1
12
123
1234
  :
1234・・n-2
1234・・n-2n-1
1234・・n-2n-1n

をあわせると

1 nn-1n-2・・4321
12 n-1n-2・・4321
123 n-2・・4321
1234      :
   :      :
1234・・n-2 321
1234・・n-2n-1 21
1234・・n-2n-1n 1
これは高さがnで幅がn+1の長方形。n(n+1) これを半分にして n(n+1)/2

942 :デフォルトの名無しさん:03/06/18 00:02
なんかの公式?

943 :デフォルトの名無しさん:03/06/18 00:03
ガウスの公式だったかな。
奴はいろんな公式持ってるが。

944 :デフォルトの名無しさん:03/06/18 00:05
くそ〜、ガウスのやろ〜

945 :デフォルトの名無しさん:03/06/18 00:06
ガキの頃に一発でこれを導いたという伝説がなかったっけ?

946 :デフォルトの名無しさん:03/06/18 00:07
確率か?

947 :デフォルトの名無しさん:03/06/18 00:09
>>945
いたいた。小学校の先生に「1〜9まで足したら何になる?」とか
聞かれて考え出したんでしょ。

948 :デフォルトの名無しさん:03/06/18 00:10
ん?明日の降水確率か?
明日は100%だよ。
分かったか?傘持ってけよ

949 :デフォルトの名無しさん:03/06/18 00:11
>>941
そんな風に習った?

Sn=1+2+・・・+(n-1)+n
として、並びを逆にしたもの
Sn=n+(n-1)+・・・+2+1
と足し合わせると、全ての項が(n+1)になる。つまり、
2*Sn=(n+1)+(n+1)+・・・+(n+1)+(n+1)
全部で項はn個あるから、
2*Sn=n*(n+1)
両辺を2で割って、
Sn=n*(n+1)/2

俺はこう習った。

950 :デフォルトの名無しさん:03/06/18 00:11
>>947
1〜100までだったと思うが

951 :デフォルトの名無しさん:03/06/18 00:13
中学生の時に理科年表か何かで見て知った。

952 :デフォルトの名無しさん:03/06/18 00:15
>>949
おなじだべ

953 :デフォルトの名無しさん:03/06/18 00:46
>>947
1から100まで足せ、とクラスに問題を出して
その空き時間で内職しようとした教師が
一瞬で正解を答えたガウスに驚いたという伝説だったかと。

954 :デフォルトの名無しさん:03/06/18 01:17
まず、25文字以下の文字列を入力。
次に、一文字を入力、最初に入力した文字列の先頭からその文字を探し
最初に見つかった位置より後ろの文字列を出力する。

AIUEOkakikukeko
a

kikukeko

となるプログラム

955 :デフォルトの名無しさん:03/06/18 01:21
>>954
#include <stdio.h>
#include <string.h>

int main()
{
char str[1234],*p;
int c;

printf("25文字以下の文字列を入力 : ");
fgets(str,sizeof str,stdin);
if(strlen(str)>25){
fprintf(stderr,"死ね\n");
return 1;
}
c=getchar();
p=strchr(str,c);
if(p)
printf("%s\n",p+1);
else
printf("ねーよ\n");

return 0;
}


956 :955:03/06/18 01:23
getcharの前に入力を促すメッセージを入れるのを忘れた

957 :デフォルトの名無しさん:03/06/18 01:24
char str[25+1];
int c;

ゲッツ!25文字

c = ゲッシ!1文字

printf("%s\n"strchr(str,c));


958 :デフォルトの名無しさん:03/06/18 01:26
%sにNULLを渡していいのだろうか。

959 :デフォルトの名無しさん:03/06/18 04:54
>>958
NULL! とか印字する処理系があったが、規格はどうかな。
多分だめなような気がする(根拠なし)。

ちなみに印字する処理系は昔のMS-C。6.0あたりかな。
VC++の1.0がMS-Cの8.0に相当するからはるか太古の話だ。

960 :デフォルトの名無しさん:03/06/18 07:42
じゃあ、ルートをCでどう使うか教えてください。
例えば 36の平方根は6ですよね。
今まで使ったことなくって いまふと使わないといけないんですけど
わからなくて困ってます。

961 :デフォルトの名無しさん:03/06/18 07:54
>>960
そのじゃあってのはなんだ。じゃあってのは。

平方根ならmath.hをインクルードしてsqrtを使えばいい。
#include <math.h>
double sqrt(double x);

962 :デフォルトの名無しさん:03/06/18 12:05
>>960
ほんとだ。ワロタ。

963 :will:03/06/18 19:51
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055933323

これは2個のサイコロの目を足して出た数をカウントするというものなのですが
カウントしてヒストグラムの表示がうまくいきません。
分かる人、誰か教えてください。

964 :デフォルトの名無しさん:03/06/18 19:57
AT, BV, CX, DY, EZ とかの文字列から
((((AT BV) CX) DY) EZ) とか (((AT BV) CX)(DY EZ))
とかの木を全て書き出したいのですが、うまい書き方が分かりません。
大まかな方針だけでも教えていただけませんか?

965 :デフォルトの名無しさん:03/06/18 20:02
>>964
AT, BV, CX, DY, EZ
この順番は保ったまま?

966 :デフォルトの名無しさん:03/06/18 20:44
右と左にわけて再帰すればいいのかな。
((((AT BV) CX) DY) EZ)だったらAT, BV, CX, DYとEZに。
(((AT BV) CX)(DY EZ))だったらAT, BV, CXとDY, EZに。

967 :デフォルトの名無しさん:03/06/18 20:46
これと同じ人ならば、配列の要素の順序は移動する。
http://pc2.2ch.net/test/read.cgi/tech/1055864305/49-



968 :デフォルトの名無しさん:03/06/18 21:09
死にてーな。どうしたらいいかな。

969 :デフォルトの名無しさん:03/06/18 21:24
>>968
Kill();

970 :デフォルトの名無しさん:03/06/18 21:24
>>963

void mode(int freq[], int answer[])
{

    int rating, j , h, largest = 0, modeValue = 0;


    for(rating = 1; rating <= 12; rating++)
        ++freq[answer[j]];

これを

void mode(int freq[], int answer[])
{

    int rating, j , h, largest = 0, modeValue = 0;


    for(j = 0; j < SIZE; j++)
        ++freq[answer[j]];

こうすればいいんでない?

あと、5,10,15,…てのがずれてる気がするけどそこは自分でなおしてね


971 :デフォルトの名無しさん:03/06/18 21:43
>>964
すぐに思いつくのはこれの前後を組にしていく方法。
http://pc2.2ch.net/test/read.cgi/tech/1055864305/49
それ以外だとこれ。
http://pc2.2ch.net/test/read.cgi/tech/1055864305/56
並びに関しては、できる組合せ全てに対して上記の操作を行えばよい。

でも、2個目の方法だと同じものが重複して出てくるのを
どうやってさければよいかが思いつかないな。

例えば4つの時、
abcd
境界は012
これの組合せは6通り、
012 (((ab)c)d)
021 ((ab)(cd))
102 ((a(bc))d)
120 (a((bc)d))
201 ((ab)(cd))
210 (a(b(cd)))
021と201が同じだということをどうやって判別するか。

972 :デフォルトの名無しさん:03/06/18 21:51
Cのコンソールで、あるところをクリックしたら
〇〇を表示するって可能ですか?


973 :デフォルトの名無しさん:03/06/18 21:53
Cのコンソールときたか

974 :972:03/06/18 22:07
やっぱ不可能ですか?

975 :デフォルトの名無しさん:03/06/18 22:08
>>972
ブラウザでアクセスすれば?

976 :972:03/06/18 22:10
ブラウザでアクセスっすか。
う〜ん・・

977 :デフォルトの名無しさん:03/06/18 22:13
メンソーレ

978 :デフォルトの名無しさん:03/06/18 22:23
>>972
>クリック〜
マウスを使う時点で環境依存。無理。

979 :デフォルトの名無しさん:03/06/18 22:27
いま、20030618と出力されているのを、
2003年06月18日と出力せよ。

980 :964:03/06/18 22:29
>>965
場所は入れ替わりOKです。
ただ、(ad) と (da) は同じとみなします。
>>967
http://pc2.2ch.net/test/read.cgi/tech/1055864305
は私です。
>>971
これも私です。
たとえば 012 と 021 は最後の3つが一緒なので、
それを判別するだけです。
なんですけど、うまい方法が分からないのです。

981 :デフォルトの名無しさん:03/06/18 22:30
>>979
printf("2003年06月18日");

982 :デフォルトの名無しさん:03/06/18 22:34
>>981
strncpyとかstrcatとか 使うらしいんですが・・・

983 :デフォルトの名無しさん:03/06/18 22:34
char m1[20];
m2[4][3];
m3[7][5][4];

という風にあって、それぞれの先頭アドレスが同じ時

m1[6] のとき m2[?][?] , m3[?][?][?]

という計算は、どのようにすればいいんでしょうか?

984 :デフォルトの名無しさん:03/06/18 22:37
char a[256] = {0};
char *b = "2003年06月18日";
strcat(a,b);
strcpy(a,b);
printf("%s",a);

985 :デフォルトの名無しさん:03/06/18 22:37
> たとえば 012 と 021 は最後の3つが一緒なので、
> それを判別するだけです。

どういう意味でしょうか?
私が言ってるのは021と201の話なんですが…

986 :デフォルトの名無しさん:03/06/18 22:38
あのー、高校生なんですが、よくわからない宿題なんで、
聞いてください

身の回りでデジタル化されたものを1つあげ、その際に生じた
メリット・デメリットをあげよ。です。

CDとか、カメラは出てしまいました。なんかわからない・・・・
こーゆーのって、ここは場所が違いますかね・・(汗


987 :デフォルトの名無しさん:03/06/18 22:39
>>983
どういう計算だ、そりゃ?

>>986
正解。


988 :デフォルトの名無しさん:03/06/18 22:40
>>986
板違いも甚だしい

989 :デフォルトの名無しさん:03/06/18 22:40
俺達はデジタル化されているがまだ誰も気が付いていないのだ

990 :デフォルトの名無しさん:03/06/18 22:41
住基ネット?

991 :デフォルトの名無しさん:03/06/18 22:41
微視的に見れば全て離散的

992 :964:03/06/18 22:42
>>985
すいません。勘違いしました。
021 と 201 でしたね。


993 :デフォルトの名無しさん:03/06/18 22:44
エッ!!そんなこと言わないでくださいヨー・・・

じゃあどこへ行けばいいですかね?あ、986です。

994 :デフォルトの名無しさん:03/06/18 22:46
>>980
> ただ、(ad) と (da) は同じとみなします。
こんな条件があるなら、これしかないような気がする。
http://pc2.2ch.net/test/read.cgi/tech/1055864305/49

995 :デフォルトの名無しさん:03/06/18 22:47
んじゃ、地上波デジタル放送でどうよ

996 :デフォルトの名無しさん:03/06/18 22:47
意表をついてデジタル時計で行ってみろ

997 :デフォルトの名無しさん:03/06/18 22:47
>>980
これは別物?
((ab)c) (c(ab))

998 :デフォルトの名無しさん:03/06/18 22:49
http://pc2.2ch.net/test/read.cgi/tech/1055944101/

次すれ

999 :デフォルトの名無しさん:03/06/18 22:50
1000

1000 :デフォルトの名無しさん:03/06/18 22:51
@`

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

246 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)