トップページ⇒tech
1001コメント301KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
私は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
0002デフォルトの名無しさんNGNG
>>1
乙
0003デフォルトの名無しさんNGNG
おぽんぽん
0004デフォルトの名無しさんNGNG

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

問題の一部なのですがここだけお願いします。
0005デフォルトの名無しさんNGNG
>>4
timeとかclockとか使えばできるよ。
00065NGNG
あ、2つの文は別の要件なのか。
でも、上の条件満たす方法すらわからないようなら、
プログラムなんてやめちゃえ!
0007デフォルトの名無しさんNGNG
>>4
そんまえにランダムになんて作れんべ
0008デフォルトの名無しさんNGNG
>>7
/dev/urandomから取り出せばOK
0009デフォルトの名無しさんNGNG
>>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
0010デフォルトの名無しさんNGNG
#include <time.h>
clock_t start,end;

start=clock();
/* しょりぃ */
end=clock();
printf("%.2f秒くらいじゃないかな。\n",(double)(end-start)/CLOCKS_PER_SEC);
0011デフォルトの名無しさんNGNG
ループ続行条件チェックの度ににatoiはねーだろ。
0012デフォルトの名無しさんNGNG
>>11
そう? atoiはconst char*とるし、ループ中でbufは全く扱ってないので、
ふつー最適化されちゃって一度しか評価されないんじゃない?
00135NGNG
>>12
そんなこと期待するのは勝手だが…
0014デフォルトの名無しさんNGNG
>>11
別に、マシンパワー余ってればいいんじゃない?
それよりも、buf[16]が引っかかった漏れは駄目人間ですか?
16桁だと環境によっては、あふれる予感が...

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

計算違うか?違ってたらごめん。
0015デフォルトの名無しさんNGNG
そんなことより
> void bubble
が引っかかってる奴はいませんか?
00165NGNG
>>15
確かに。
ソートにかかる時間がアルゴリズムによってどう変わるか計測
しよとしてるのかなって予想ついたから言わなかったけど…。
0017デフォルトの名無しさんNGNG
>>12
Cの関数呼び出しって、そういう最適化はできないんじゃねーの?
atoi()は標準関数だから、コンパイラが特別に対応すればできるかもしれないけど。
(VC6では最適化してない)
0018デフォルトの名無しさんNGNG
アセンブラコードに落として死ぬまで復唱しろ
0019デフォルトの名無しさんNGNG
誰かhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=78に
あるプログラムにコメントつけてください!
あとCtrl-dで終わるように条件をつけてほしいのですが…
おねがいします
0020デフォルトの名無しさんNGNG
>>19はブラクラ
0021デフォルトの名無しさんNGNG
アドレスにjunkroomって、バレバレだよね
0022デフォルトの名無しさんNGNG
>>19
あのさぁ....


あ、それって、提出したら教授が「excellent」をくれるレベルだと思うよ。
もう十分。
00235NGNG
>>20-21は思考停止馬鹿。
0024rNGNG
>>20-21
いや、>>1をみろ。長いソース用のうpローダですよ。
0025デフォルトの名無しさんNGNG
>>19
Ctrl-dの話なら前スレでアドバイスがあっただろ
0026デフォルトの名無しさんNGNG
Cで XMLのデータ抜き出す作業 について詳しい方いますか?
0027デフォルトの名無しさんNGNG
いますよ
0028デフォルトの名無しさんNGNG
ちょっと これみてくれませんか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055071590

考えたんですが、わからなくて^^;
0029デフォルトの名無しさんNGNG
>>19
ctrl+d でおわるじゃん。
コメントもついてるじゃん。
0030デフォルトの名無しさんNGNG
>>28
みたよ
0031デフォルトの名無しさんNGNG
どこがいけないんですかね?
0032デフォルトの名無しさんNGNG
>>29
もっと詳しいコメントがほしいのです
0033デフォルトの名無しさんNGNG
要するに
「俺でも分かるように説明しろ」
と
0034デフォルトの名無しさんNGNG
28ですが、
おしえてもらえませんか?
0035デフォルトの名無しさんNGNG
>>34
ここまで複雑なのになると…
フリーでCのXML処理ライブラリってあったと思ったからそれを探してみたほうが早いかも。
どうしても自分で作るというのなら、パーザと内容の解釈を分離したほうがいいと思うな。
0036デフォルトの名無しさんNGNG
そうですかぁ・・・
ありがとうございます
>>35さん
0037デフォルトの名無しさんNGNG
�@ 
行列の掛け算を行います、行列aとbは4行4列とします。行列aの要素の値は、
各自決めたください。行列bは単位行列とします。

計算はマトリクスの積を使うと便利。
003837NGNG
#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値を自由に決めるってのは、どういうふうに書くんですか
003937NGNG
訂正

ぎょうれつA値〜〜〜〜  
↓
aの値を好きに決めるってのはどういうふうに書くんですか?
0040デフォルトの名無しさんNGNG
a[0][0] = 1;
a[0][1] = 2;
0041デフォルトの名無しさんNGNG
行列の話が出たのでついでに聞きたい。ps2などのvuユニットって直接
行列の計算できるんでしょ?俺今行列を使った透視投影変換で悩んで
るんだが、回転や移動変換なら良く見るから知っているんだが透視投影
変換はどうも良く分からない。(x,y,z,w)があって4*4の何をすれば(x',y')
になるんですか?
0042デフォルトの名無しさんNGNG
スクリーン(例えば平面)に投影するんだから
オブジェクトと視点を結ぶ線分とスクリーン面の交点のスクリーン上での座標を求めれば
R^3→R^2の変換が得られるだろ。それを4x4のでも同じことだ。下に書いてあるとおりだ
http://www.sccs.chukyo-u.ac.jp/~miyazaki/classes/cg/perspective/perspective_lecture.html
0043デフォルトの名無しさんNGNG
http://www1.linkclub.or.jp/~aishin/Chorus/Mybara.html

これ聞いてもちつけ
漏れにとっては(・∀・)イイ
0044デフォルトの名無しさんNGNG
誰かhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=78に
あるプログラムにコメントつけてください!
あとCtrl-dで終わるように条件をつけてほしいのですが…
おねがいします
0045デフォルトの名無しさんNGNG
>>44 >>19によく似た質問が挙がっていますよ。
0046デフォルトの名無しさんNGNG
環境はUNIXのCで、日付に関する宿題がでています。助けてください。
日付+N日を求めるという処理が必要なんです。(うるう年、30日、31日等を考慮して)
こんな関数提供関数でありそうなものなんですけど、なさそうなんです。
調べたんですが分かりません。
やっぱり、自作するしかないですか?
0047デフォルトの名無しさんNGNG
自作してください。ちなみにN日を秒で表して、time_tと足し算すればいいよ。
0048無料動画直リンNGNG
http://homepage.mac.com/norika27/
0049デフォルトの名無しさんNGNG
C/C++の宿題やらせてくださいスレだろここは。
ソース書いてやれ。
>>1-1000
0050デフォルトの名無しさんNGNG
>>49
ここは隔離スレ。
まともに宿題やってやるやつのほうがアホ。
0051デフォルトの名無しさんNGNG
ファイルに含まれる文字列を照合(探索)するプログラムを以下の仕様にしたがって作成しなさい。

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

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

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

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

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

6.プログラムは任意のファイルをプログラム実行時に指定できること。
0052デフォルトの名無しさんNGNG
>>51の問題で力任せの方法ではなく「Boyer-Moore法」を用いる。

Cなんですがメインの探索する関数の部分をどうすればいいか
わかりません。わかる方いたらよろしくお願いします
0053デフォルトの名無しさんNGNG
何をもって「力まかせ」って言うのだろう?
「力まかせの方法」の定義キボヌ。
0054デフォルトの名無しさんNGNG
>>53
自分もよくわからないんですが何もひねらない
一番効率が悪いやり方ということだと思います。

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

abcdefghijdkhjakjshfkaj←検索対象文字列
↑
ここから検索
↓
agh←検索したい文字列

aは一致するので次の文字を検索
↓
bとgは一致しないので

abcdefghijdkhjakjshfkaj
↑
 bの部分から再び検索開始
↓
agh

こんな感じです。わかりますかね・・・?
そんなに難しくないといってたんですがわかりませんでした
0055デフォルトの名無しさんNGNG
標準関数使わないで?
0056デフォルトの名無しさんNGNG
>>54
strcharで先頭の文字だけ引っ掛けて、strncmpで比較でどうかな。
力技だと思うけど。
0057デフォルトの名無しさんNGNG
>>56
それだったら、strstr()のほうがいいよ。
0058デフォルトの名無しさんNGNG
>>51 BMじゃないバージョン。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=79
found_t型のオブジェクトは削除してない。自前で削除よろしく。
0059デフォルトの名無しさんNGNG
>>46
前スレのバイオリズムのお題でそういうことをやってたような気がする。
0060デフォルトの名無しさんNGNG
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
となるのですが、↑
        ここを表示させないで終了させたいのです。修正お願いします

0061デフォルトの名無しさんNGNG
> printf("No more data.\n");
これを消せば?
0062デフォルトの名無しさんNGNG
>>61実行例があってNo more dataを表示させないといけないので消せません
0063デフォルトの名無しさんNGNG
終了条件がCtrl+Dってどういうこと?
Ctrl+Dを押せばいつでも強制終了じゃないの?
0064デフォルトの名無しさんNGNG
環境にもよるけど、大抵強制終了はCtrl+Cでは。
0065デフォルトの名無しさんNGNG
fgetsの戻り値をチェックしろって前スレに書いてあったろ
0066デフォルトの名無しさんNGNG
コンパイルして実行させたのか?
そのプログラム最後にそんなメッセージ出るはず無いぞ。
そこ、入力行でしょ?
006766NGNG
ああ、そういうことか
Ctrl+Dするとそうなるってことね。
前言撤回
0068デフォルトの名無しさんNGNG
>>60
あれ?そのコード、ちょっと前までコメント付きだったじゃん。
何でコメント削除したの?
0069デフォルトの名無しさんNGNG
if (fgets( command,MAXLINE,stdin ) == NULL) {
 exit(EXIT_FAILURE);
}
0070デフォルトの名無しさんNGNG
>>69
うわー、絶対いっしょに仕事したくないタイプ。
0071デフォルトの名無しさんNGNG
>>70
…はやってんのか?
0072デフォルトの名無しさんNGNG
宿題お願いしますw
合計台数とタイヤの総本数を入力して、
自転車と三輪車のそれぞれの台数を表示させるプログラムを作りたいんです。
んで、合計台数とタイヤの数がありえない組み合わせのときは
「無理だ」って表示させるよーにって。
0073デフォルトの名無しさんNGNG
fgetsの戻り値をチェック??
0074デフォルトの名無しさんNGNG
てか、まったく持ってわからんのですわ。・゚・(ノД`)・゚・。
しかも、ほとんど初めてやる人にこんな宿題出されても
わからんちゅーねんヽ(`Д´)ノウワァァァン
0075デフォルトの名無しさんNGNG
>>73
日本語ですよ。文法的にもおかしくない。
0076デフォルトの名無しさんNGNG
http://bcl.sci.yamaguchi-u.ac.jp/C/faq-12.html
Q11.5
0077デフォルトの名無しさんNGNG
>>74
もう学期始まってから2ヶ月もたってますよ。
0078デフォルトの名無しさんNGNG
>>74
もし、それが本当ならクラスの誰もできてないから安心しろ
0079デフォルトの名無しさんNGNG
>>78
もしまかり間違って正解を持っていったら、
カンニングする要注意人物としてマークされたりしてなw
0080デフォルトの名無しさんNGNG
> 宿題お願いしますw
これでやる気失せた
0081デフォルトの名無しさんNGNG
つるかめ算のたぐいでは?
0082デフォルトの名無しさんNGNG
スレタイよく読んでください
0083デフォルトの名無しさんNGNG
宿題お願いしますウェーハッハッハ
0084デフォルトの名無しさんNGNG
>72
鶴亀ざーーーーーーーーーーーーーーーん
0085デフォルトの名無しさんNGNG
まぁ出題ミスだろうな。
stdioの制御をそこまで求められなければ成らない宿題とは思えない。
>q で終了とかにおするべき問題だな。
0086デフォルトの名無しさんNGNG
>>85
問題はこれ。まったくの初心者にいきなり出来るわけない。
http://pc2.2ch.net/test/read.cgi/tech/1053963794/653
0087デフォルトの名無しさんNGNG
>>86みれないよ。
0088デフォルトの名無しさんNGNG
DAT落ちしていますが
0089デフォルトの名無しさんNGNG
>>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;
}

コマンドラインの第一引数に台数、第二引数に車輪の数を与えてくれ。
0090お願いします!!!NGNG
π(円周率)を小数以下10000桁まで求めるプログラムをC言語で作成し、
9991桁から10000桁の10個の数字を表示しなさい。

だれかよろしくお願いします。
0091くりりんNGNG
鶴亀斬?
0092>>87-88NGNG
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を押すこと)でプログラムは終了する,このプログラムを作成せよ.
0093デフォルトの名無しさんNGNG
>>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;
}
0094くりりんNGNG
#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;
0095くりりんNGNG
続き
}
0096デフォルトの名無しさんNGNG
>>90
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=76

前スレでも2回同じ依頼があったけど同じ人じゃないよね?
同じ授業を受けてるなら、それを持っていったら目を付けられるかもね。
0097デフォルトの名無しさんNGNG
#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;
}
0098デフォルトの名無しさんNGNG
>>96
2回もあったんですか…
同じ授業の可能性大な気がします…
これって他のパターンとかってできないんですかね?
0099デフォルトの名無しさんNGNG
この回答ラッシュ...このスレのレベルがよく分かるな。
0100デフォルトの名無しさんNGNG
>>98
今まではマーチンの公式を使えとあったけど、今回ないから違うの使えば?
0101デフォルトの名無しさんNGNG
>>100
あ…。それ絶対同じ授業だ。
ヒントとしてπの求め方はマーチンの公式が与えられてます。
あと、桁数の多い数の演算の方法として配列使えっていうのも
0102デフォルトの名無しさんNGNG
>>101
ヒントなら別の使っても構わないのでは?
0103デフォルトの名無しさんNGNG
っていうか、2ちゃんに宿題聞きに来る愚奴がこんなにいるって、どんな学校だよ!!
0104デフォルトの名無しさんNGNG
電気通信大学



あ、言っちゃった!
0105デフォルトの名無しさんNGNG
大丈夫だ。東京か大阪か、特定されていない(にや
0106デフォルトの名無しさんNGNG
>>104
イタタタタタタ
0107デフォルトの名無しさんNGNG
2chで宿題をやってもらおうとする愚か者は大阪にはいない。
0108デフォルトの名無しさんNGNG
>>63
Unix なんでしょうな。
fgets では EOF とエラーの区別がつかないから、
エラー処理をするなら feof で検査するしかないね。
ttp://www-ccs.ucsd.edu/c/stdio.html#fgets
0109デフォルトの名無しさんNGNG
そもそもCtrl+DがEOFにバインドされてる保証は無い
0110デフォルトの名無しさんNGNG
宿題スレでそんなこと言ってもむなしく響くだけ。
0111デフォルトの名無しさんNGNG
ねむくなるスレだ
0112デフォルトの名無しさんNGNG
 
0113デフォルトの名無しさんNGNG
C/C++の宿題やらせてください
0114デフォルトの名無しさんNGNG
すみません、明日までの宿題です。
UNIXのCで
最大30桁(少数含む)の四則演算を
行う関数を作りたいのです。
long double や decimal型はダメです。
おそらくchar型やdouble型を使って作るのだと
思いますが、どなたか力添えをください。
お願いします。
0115デフォルトの名無しさんNGNG
明日の夜、手伝ってやろう。
0116デフォルトの名無しさんNGNG
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; }
0117デフォルトの名無しさんNGNG
Cじゃないし実装がないじゃん。
0118デフォルトの名無しさんNGNG
思いついたまでの力添えだ。答えじゃない。
0119デフォルトの名無しさんNGNG
前スレにあるのですが、配列を使わずにお願いします。
和が一定となるような自然数の列を列挙するプログラムを作成せよ。
重複はみとめる。
例えば、和が3の自然数の列は 1,1,1 1,2 2,1 3 となります。
 
0120rNGNG
>>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 );
}
01215NGNG
>>120
お前さ、いろいろレスつけてるけど、全然だめだからもうやめとけ。
そのプログラムで、3は1+1+1って答えが出せるか?
0122r/120NGNG
>>119
おっと!間違った。

もし、その和の数が100のときは、
1,1,1,1,1,1,....,1
1,1,1,1,1,1,...,2
とか、ぜんぶ挙げるの?
0123デフォルトの名無しさんNGNG
うっかり引数をつけないで実行しただけであぼーんか。
0124r/120NGNG
>>121
>>全然だめだからもうやめとけ。
なんでさ?
01255NGNG
>>119
再帰関数使えよ。
「重複はみとめる」ってことは重複しなくても解として認めるって
ことだろ。なら簡単だ。
01265NGNG
>>124
「全然だめだから」っつってんだろ。
日本語読めてない時点で全然だめなんだよ。
0127デフォルトの名無しさんNGNG
>>119
分割する数でループ回せばいいのかな。
2・・・1,1,1
1・・・1,2 2,1
0・・・3
って感じで。
0128デフォルトの名無しさんNGNG
簡単ならやってやれよw
ちなみに俺には難しい。
0129デフォルトの名無しさんNGNG
>>125
簡単だとか言うのはコードを出してからにしろ
0130デフォルトの名無しさんNGNG
>>125
配列を使わないと結構、パフォーマンス悪くなる。
0131r/120NGNG
>>126
全然だめだと、なんで駄目なんだよ。

「宿題やらせて」ってのに、
「相手のために、宿題をやってやる」ってニュアンスはねーだろ。
「自分のために、宿題をやらせてもらう」なんだよ。
0132デフォルトの名無しさんNGNG
とりあえずコテハンはやめたら?
0133デフォルトの名無しさんNGNG
>>127
・・・の左と右の関係はなに?コンマの数?
01345NGNG
>>128
n!の計算とかクイックソートとか勉強すれば思いつくよ。

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

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

>>131
ああ、確かにな。すまん。
0135デフォルトの名無しさんNGNG
>>134
だから>>119のためにやってあげなよ。
ここはそういうスレだよ。
0136デフォルトの名無しさんNGNG
>>134
口だけ番長
0137デフォルトの名無しさんNGNG
再帰関数を最初に呼び出す関数にも for 文があって、
再帰関数の中にも for 文がある?ややこしい。
0138デフォルトの名無しさんNGNG
>>120
再帰関数を使ってです
0139デフォルトの名無しさんNGNG
>>134
まだ出来ないの?
0140デフォルトの名無しさんNGNG
>>119
LISP版ならこの前かいたんだがな。
0141デフォルトの名無しさんNGNG
簡単だと思ってやってみたけど実は難しかったというパターンかな。
0142デフォルトの名無しさんNGNG
LISP版でもいいから、もう一回作って書いて下さい。
0143デフォルトの名無しさんNGNG
ひらめいた
配列の代わりにリスト使うっつーのはどうだ?
0144デフォルトの名無しさんNGNG
mallocでいいじゃん。
0145デフォルトの名無しさんNGNG
 :||::   \おい、ゴルァ 出て来い!!        ドッカン  ゴガギーン
 :||::      ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ _m ドッカン      ☆
 :||::   ___     ======) ))_____  /        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 :||  |      |      | ̄.ミ∧_∧ | | ────┐||::    ∧_∧ < おらっ!>>125 出てこい!!
 :||  |ぁゎゎ. |      |_..(   ) | | .___ │||::   (´Д` )  \___________
 :||  |Д`);  |      |_「 ⌒ ̄  ,|.. |_... 5 ..||||::  / 「    \
 :||  |⊂ノ;   |      |_|    ,/  ̄ .  ̄ ̄ ̄ │||::  | |    /\ \
 :||:   ̄ ̄ ̄         ̄|    .| :||│     ;,   │||; へ//|  |  | . |
 :||::   :;  ; ,,         :|    :.| ||│       (\/,.へ \|  |  (r )
 :||::   :;  冫、. .      |   .i  .|:||◎ニニニニ\/  \    |   ̄
 :||.:,,'';      ` ..  . ::  . |  ∧. |:||│::::/    │||::.:.   .Y ./
 :||:;;;:         :      |  | | |.||│ 冫、 ;;;,,│||:;;;.   | .|
 :||:;;;:             / /  / /::||│ `  .,;;;,,.│||:;;;.   | .|
 :||;::: #   ..:        ./ / ./ ./ ||│|三三三|. │||;;:..::   | .|
 :||;:::     #. ..:  :::::: (_) .(_).ミ||│        │||;;;k、,,,|,(_)
   ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;::三三三
0146デフォルトの名無しさんNGNG
>>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);
}
0147デフォルトの名無しさんNGNG
>>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); /*再帰的に繰り返す*/
}
}
0148デフォルトの名無しさんNGNG
abs_sumだけプロトタイプ宣言を書いてin_abs_sumのプロトタイプ宣言は書かないんだ。
0149デフォルトの名無しさんNGNG
// 再帰でリスト作ればいけるね
#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;
}
0150149NGNG
print_listは関数に分ける必要なかったな。
0151r/120NGNG
>>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ですね。
0152r/120NGNG
>>149
先に出てた...しかも短くて綺麗...鬱。
0153出来た予感NGNG

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;
}
0154149NGNG
// 簡単に重複取り除けました
#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;
}
0155デフォルトの名無しさんNGNG
前のスレでもいらっしゃいましたが、解決していないようなので質問させてください。
再帰を利用しないハノイの塔のプログラムをお願いします。
0156デフォルトの名無しさんNGNG
#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;
}
0157デフォルトの名無しさんNGNG
>>156
神
0158デフォルトの名無しさんNGNG
>>156
許容範囲狭すぎ
0159デフォルトの名無しさんNGNG
>>158
> for (i = 1 << (n-1); --i >= 0;) {
で 1<<(n-1)回のループをまわしてる
つまりこの個数分の出力があるってことだろ?
オーバーフローするほどの数だったらそもそも数が多すぎて出力しきれないんじゃないか?
0160デフォルトの名無しさんNGNG
>>159
32が多すぎですか?
0161デフォルトの名無しさんNGNG
>>160
多すぎだろ?
0162デフォルトの名無しさんNGNG
>>161
154のやつだと32入れても数秒で完了するようですが。
0163デフォルトの名無しさんNGNG
>>162
重複取り除いてるからね
0164デフォルトの名無しさんNGNG
>>162
154は
1,1,1,1,1,1,1,1,2も
1,1,1,1,1,1,1,2,1も全部同じものとみなすから出力数が少ない
156は全てのパターンを出力するからその数は桁違いに多くなる
0165デフォルトの名無しさんNGNG
ふむ。n!オーダーで増えるのですね。
重複を取り除いた場合のオーダーは・・・・
もぅねむいや。
0166デフォルトの名無しさんNGNG
>>164
その都度プリン度して、データを溜め込んでるわけじゃないから、
パターン数の多さは関係ないんじゃないの?
0167166NGNG
×プリン度
○プリント
0168デフォルトの名無しさんNGNG
どうでもいいが重複を取り除いてもいいってのは125の勝手な解釈じゃないか?
「認める」ってのが、答えに対して認める(=答えに重複が含まれてもかまわない)のか、数列に対して認める(=組み合わせではなく順列)のかわからないが。
0169デフォルトの名無しさんNGNG
まぁまぁ、でもリストつくってそれをスタックにしつつ列挙していくのが正攻法だな。
0170デフォルトの名無しさんNGNG
正攻法かは知らんが(´-`;)かなり巧いテクだな
リストっつったらmallocすることしか考えてなかったよ
再帰してスタック使えばサイズも動的に変えられるもんな
0171デフォルトの名無しさんNGNG
>>170
でも、スタック消費が多くなるね。
mallocしながらグローバルスコープにリストをつくっていったほうが
より大きな数まで処理できるかもしれない。
0172デフォルトの名無しさんNGNG
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
となるのですが、↑
        ここを表示させないで終了させたいのです。修正お願いします
0173デフォルトの名無しさんNGNG
すげえムカツク。あぼ〜んしよ
0174デフォルトの名無しさんNGNG
そこまでできていれば十分だと思うんだが。
何も分からないくせに100点を取らないと気がすまないの?
0175デフォルトの名無しさんNGNG
つか、もはやただのアラシだな。自分でmain修正してきたときは、
「がんばったな」って思ったりしたが。
0176デフォルトの名無しさんNGNG
コメントアウトすればいいんじゃない?
0177デフォルトの名無しさんNGNG
%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;
}
0178デフォルトの名無しさんNGNG
>>177
rは糞ってことか。
0179デフォルトの名無しさんNGNG
他にも文句はあるな。e一文字だけ入力されたらどーなるんだ? とか。
0180デフォルトの名無しさんNGNG
class CTest {
 float a;
public:
 CTest() {
  a = (float)1234.02;
 }
 CTest(int num) {
  CTest();
 }
 float GetA() {
  return a;
 }
};
こんな感じにfloat型のメンバ変数に初期値を代入しても、
返ってくる値はめちゃくちゃなのはなんでだろう。
ちと悩んでる。
0181デフォルトの名無しさんNGNG
>>180
コンストラクタにvoidもしくはint以外の型のものを渡してないか?
0182デフォルトの名無しさんNGNG
a = (float)1234.02;

a=1234.02F;と書け。
0183rNGNG
>>179
いや、ほら、main()は適当に書いただけだから...
0184rNGNG
CTest(int num) {
    CTest();
}
これは CTest( int )のなかで、
あたらしい CTestの一時オブジェクトを作るだけです。
その一時オブジェクトはすぐに潰えます。
呼び出し元---CTest( int )---の、this -> a には何の影響も与えません。
0185デフォルトの名無しさんNGNG
えらい嘘教えてるな
0186デフォルトの名無しさんNGNG
えーと、今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);
}

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

おねがいいたします。
0187デフォルトの名無しさんNGNG
>>185
具体的に
0188デフォルトの名無しさんNGNG
>>186
ちょと違うがわかるだろ
http://pc2.2ch.net/test/read.cgi/tech/1053963794/631
0189186NGNG
ありがとう、でもDAT落ちしてる・・・
0190デフォルトの名無しさんNGNG
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;
 }
}
0191デフォルトの名無しさんNGNG
>>184
まぢ?クラスのメンバ関数内でコンストラクタ呼び出すとそこで
自分自身の一時オブジェクト生成しちゃうの?
だとしたら、今までの俺の理解は激しく違ってたことになるな。
0192デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=81

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

ポインタが理解できないまま機嫌が切れそうなので、よろしくおねがいします。
0193デフォルトの名無しさんNGNG
>>191
コンストラクタ内でthisポインタの値を表示してみればよく分かるよ。
デストラクタの中でも表示したほうがいいかな。
0194デフォルトの名無しさんNGNG
>>192
*aってなんだ?
0195デフォルトの名無しさんNGNG
>>192
おまいの機嫌なんかどうでもいいが、なにを書き換えればいいのかいまいちわからん
0196192NGNG
>>194-195
*aはポインタをなんとか使おうとした名残ですね、すみません。
*aはjです。
何かしらの形でポインタが使用されていれば良いので、
どこかポインタを使って処理できるところを書き換えればよいそうです。
0197デフォルトの名無しさんNGNG
じゃあ
void (*f)() = print_matrix;
(略)
f(m_C);
とかしてみれば?
0198デフォルトの名無しさんNGNG
>>192
できたよー
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=82

どこをポインタに書き換えればいいかわかんなかったから、
適当にやっといたよー
0199デフォルトの名無しさんNGNG
>>193
ほ、ほんとだ。 (゚Д゚;))ガタガタブルブル
知らんかったー。そっか、new CTest()とかでメモリ確保できるのも理解できる。
いや、ほんとサンクスコです。勉強になっただす。
0200デフォルトの名無しさんNGNG
配列だからポインタをインクリメントさせて内容みるのがいいんじゃないかな。
それ狙った課題だと思ふ。
0201192NGNG
>>198
ありがとうございます〜
0202192NGNG
>>200
その場合はどうなるのでしょう?
0203デフォルトの名無しさんNGNG
>>198
ふざけてるのか?
0204デフォルトの名無しさんNGNG
(1)テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.
新しいデータを一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを
使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ見やすい形に表示するよう工夫すること.
0205デフォルトの名無しさんNGNG
C言語でよろしくお願いします。

文字列を圧縮するプログラムを作成せよ
例 aaaabbbcccccdddd
↓
4a3b5c4d
0206デフォルトの名無しさんNGNG
>205
文字列はどうやって与えるのん?
0207デフォルトの名無しさんNGNG
念力
0208205NGNG
>>206
実行すると、まず文字列を入力してくださいと表示して、
aaaabbbcccccddddと入力したら、4a3b5c4dと表示しなおすようなプログラムです。
よろしくお願いしますm(__)m

0209デフォルトの名無しさんNGNG
オーラ力
0210デフォルトの名無しさんNGNG
TCPPort8081に文字列が送られてくる。
0211念力で与えるバージョンNGNG
#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;
}
0212デフォルトの名無しさんNGNG
main(){
char c;
printf("入力してください >");
scanf("%c,&);
printf("4a3b5c4d");
}
0213デフォルトの名無しさんNGNG
>>210
サーバ作らなきゃ駄目じゃん。
0214デフォルトの名無しさんNGNG
>>203
きかないとわかんないのか?
0215sageNGNG
10個の数列を配列に格納し、これらの順序を入れ替えて、入れ替え前と
入れ替え後のの前配列要素の値を求めるプログラムを
教えて頂きたい。順序を入れ替えるのはd[0]とd[9]で
お願いしますm(__)m
0216デフォルトの名無しさんNGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉






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


0217デフォルトの名無しさんNGNG
>>215
要求定義が意味不明
0218215NGNG
>>217
要求定義ってどういうことをさすのですか?
初心者でスミマセン
0219デフォルトの名無しさんNGNG
>>215の問題を提示されて解ける奴はこのスレには一人もいねーっつーことだ
エスパーでも呼んで来い
0220デフォルトの名無しさんNGNG
その説明じゃあどんな天才プログラマでも
何をつくればいいのか分からない。
02215NGNG
簡単だ。
この程度思いつかないやつはすっこんでろって。
0222215NGNG
>>5
プログラム作成をどうかお願いしますm(__)m
できる限りのことは頑張ります。
0223 NGNG
>>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');
}

}

 
0224 NGNG
>>215

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

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

というかどういう数列を入れるかが分からんけど、
枠組みだけなら作れると思うよ。
0225デフォルトの名無しさんNGNG
エスパーが簡単だと言ってるから任せてみよう
どんなのが出てくるか楽しみだ
0226224NGNG
これはもっと短くできるんだろうか・・
まだまだ初心者なんで、なんか改善すべき点があったら是非教えてくらはい。
0227223NGNG
↑
223の間違いです。
0228デフォルトの名無しさんNGNG
>223
配列の初期化ってもっと簡た(ry
0229デフォルトの名無しさんNGNG
C言語でプリンターポートにHEXファイルを出力したいのですが
どうしたらできるのでしょうか?
0230215NGNG
>>224
>全'配列要素のことか?
そうです。字を間違えました。
数列は1とか10とか簡単な数字を格納すればいいと思います。



0231デフォルトの名無しさんNGNG
前配列要素の値を求める
がどういうことかを教えてもらいたい。
0232デフォルトの名無しさんNGNG
int d[10];
に数字が入っているとして
d[0]とd[9]を入れ替えて
配列の要素すべて表示すればいいのか?
0233224NGNG
>>230
それは数列とは言わんよ。
数字だよ。
0234デフォルトの名無しさんNGNG
>>229
スレ違い
0235デフォルトの名無しさんNGNG
>>229
大まかに2通りあると思うけど。

1.プリンタを直接操作して書き込み <-面倒
2.テキストか何かに出力してプリントアウト <-簡単
0236223NGNG
>>228
あんがちょ。
俺の持ってる初心者用の教科書では
配列を0にする初期化の方法はこれ以外載ってないんで、
違う本で調べてみます。
0237デフォルトの名無しさんNGNG
>215の問題が面白いからage
0238デフォルトの名無しさんNGNG
お願いします!!!!
(1)テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.
新しいデータを一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを
使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.
また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ見やすい形に
表示するよう工夫すること
0239デフォルトの名無しさんNGNG
自分で出来るだろうに。
0240デフォルトの名無しさんNGNG

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

ほんとにこれを教わったのか?
どうしようもないな。
0241デフォルトの名無しさんNGNG
void main() {
char moji[100],kai[26];
int i;

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

バッファオーバーフロー(・∀・)イイ!
0242デフォルトの名無しさんNGNG
>>223
これは多分出題の意図からすると間違ってると思われ。
問題も悪いんだけど、そのプログラムだと。
 aabbbbccccaaacccc

は

 a5b4c8

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

 a2b4c4a3c4

と並びを保ってencodeしないとまずいよ、たぶん。
0243デフォルトの名無しさんNGNG
>>172

printf("\t>");
command[0] = '\0';
fgets(command, MAXLINE, stdin );
0244デフォルトの名無しさんNGNG
>>230

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

d[0]とd[9]の入れ替えはこういうやり方でいいんでない?
kは適当に付けた名前だよ。
他のとこはできると思うよ。
0245242NGNG
おっと、数字と文字の並びかたが逆だった。
でも、言いたいことには影響ないな。
察してくだされ。
0246デフォルトの名無しさんNGNG
#define swap(a, b) (a ^= b ^= a ^= b)
0247223NGNG
色々指摘してもらってありがたいです。

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

0248デフォルトの名無しさんNGNG
>247
これ参考にどぞー>211

int a[100] = { 0 }

( ̄ー ̄)ニヤリッ
0249デフォルトの名無しさんNGNG
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 〜〜  〜〜   〜〜
・    〜〜  〜〜   〜〜 
・    〜〜  〜〜   〜〜
・
・
0250249NGNG
(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 どなたかお願いします。
0251デフォルトの名無しさんNGNG
>>249
前スレで出されてたのはダメなのか?
0252249NGNG
前にこれを乗せたら、親切な方が�@をやってくっれたので、
アルゴリズムとフローチャートを自分で作って提出したら、
その二つが不十分で再提出になりましたT0T

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

0253>96NGNG
参考文献から
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

0254デフォルトの名無しさんNGNG
>>238
IDとはどういうデータだ?
姓名、読みの文字数は可変か?それとも最大文字数が決まっている?
木に追加するとき、どう追加すればいい?2分木って左の枝と右の枝が
あるわけだけど、どっちに追加すればいい?その条件を明確にしてくれ。
見やすい形とは?
0255215NGNG
>>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]);
}

}
こんな感じにできたけど、大丈夫かな?
0256223NGNG
>>248
ありがとう。

>int a[100] = { 0 }
こうやるのか!
こっちの方がスマートにかけていいですね。
自分はもっと勉強せんとあかんようです・・
0257デフォルトの名無しさんNGNG
> こんな感じにできたけど、大丈夫かな?
知るか!!
エスパーはどこいった?
0258249NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&rm=100


このスレッドの84番です タイプスクリプトは
0259hideNGNG
この宿題解いてください。

#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を、静的変数(または大域変
数)として宣言せよ。二重に計算することのな
いよう工夫すること。

0260デフォルトの名無しさんNGNG
>>259大学の宿題ですか?
ちなみに何年?
0261244NGNG
>>255
いやまだ自分は教えられるほど偉くもないんだけど、
俺がアドバイスできることといえば、
変数sはいらないんじゃない?

for( i = 0 ; i < SIZE ; ++i ){
printf("%5d",dim[i]);
}
でどうだろう。
0262デフォルトの名無しさんNGNG
>>259
なんか逆の気がするな。
まず再帰を使わないのから作って、次に再帰関数で
やってみましょーが普通の手順じゃないのかな。
それにグローバル使ってもいいってなんでだろー。
0263hideNGNG
>>260
 大学2年です。
 計算機言語という授業の宿題です。
0264直リンNGNG
http://homepage.mac.com/yuuka20/
0265デフォルトの名無しさんNGNG
>>254
テキストファイルがあるのですがそれを読み込んで
ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納します
IDは、番号です!例えばaaa2241見たいな感じです。
姓名、読みの文字数はおそらく不変です。
枝の追加は左の枝と右の枝どっちでもいいと思います(左と右変えると違うのですか?)
見やすい形…おそらく表示させて木とわかればいいと思います!
0266デフォルトの名無しさんNGNG
>>265
そのテキストファイルの内容が知りたいといっているのだよ
0267デフォルトの名無しさんNGNG
>>265
だいたいどれをキーにするの?
0268262NGNG
>>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;
}
0269わからずやNGNG
あのー。質問です。
計算式を文字列として読み込みスタックを用いて計算するプログラムに
ついて質問です。
逆ポーランド記法でスタックに入れていこうと思うのですが
7*(((6+8)*(3*6))+2)
のように括弧がついた式になるとスタックに入れる順番が分からなくなって
しまいます。
誰か詳しく教えて頂けませんか?

0270225NGNG
こんな感じで?
#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
になればいいのですが。お願いします。
0271デフォルトの名無しさんNGNG
>>262
フィボナッチ数列は定義が再帰(帰納)になってるので、
再帰で実装するのが自然だと思う。
0272262NGNG
>>271
んー…しかしたかだか40程度で10秒以上かかってたぞ。
この程度の簡単なものに再帰は効率悪すぎる気がするな。
0273デフォルトの名無しさんNGNG
>>272
うんもちろん。実装が自然かというのといい実装かというのは別の問題。
再帰を使わずに実装できるのならそっちのほうがたいていいい実装だろう。
0274262NGNG
なるほど。
0275デフォルトの名無しさんNGNG
>>269
ネタか?
逆ポーランド記法のメリットに括弧を使わずに演算の優先順位を決めれると
いうものがあるのだが。
0276デフォルトの名無しさんNGNG
式変形をするんだろ。
0277275NGNG
あ、まだ変換してないのね・・・

逝ってきます・・・
0278デフォルトの名無しさんNGNG
ループはこんなんだと思う。
int fib(int n)
{
int x = 1, y = 0;
for (; n > 0; n--) {
int z = x;
x += y;
y = z;
}
}
0279デフォルトの名無しさんNGNG
>>266
aaa111,井川慶,igawa/kei(aaa111)
aaa112,伊良部秀輝,irabu/hideki(aaa112)
:
:
みたいな感じです!

0280デフォルトの名無しさんNGNG
>>279
読み方の後ろについている括弧で括られたidは除去しなきゃいけないの?
0281デフォルトの名無しさんNGNG
>>280
除去しなくていいです
0282デフォルトの名無しさんNGNG
えっちなサンプルムービー多数有ります☆!
http://cg.iclub.to/link/ranran1/
0283デフォルトの名無しさんNGNG
二分木を見やすく表示せよ(通りがけ順)

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

のように
0284283訂正NGNG
       d
      / \
     c    f
          \
           g
0285デフォルトの名無しさんNGNG
お願いします。
ファイルがあります。
そのファイルには、データがそれぞれ19行×2列あります。
そのファイルのデータを読み込んで、各行のデータの平均と、その平均をつかって共分散を
求めるプログラムをどなたかお願いします。
データの型はdoubleです。
0286デフォルトの名無しさんNGNG
>>285
一行にはどういう形式で列が記録されているのか?
0287デフォルトの名無しさんNGNG
>>114
思いつくままにコーディングしてみた。
検算のためにシュテルマーの公式でπを小数点以下100桁まで計算するプログラム。
とりあえず遅い。固定小数点で計算するやつの数千倍遅い。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=85
0288あぼーんNGNG
http://homepage.mac.com/hiroyuki44/hankaku03.html
0289まりおNGNG
>>283
なるほど!
後は自分で考えてみます
0290283訂正NGNG
二分木を作る関数はわかっているので、それを表示する
void printtree(struct node *p) 
を教えてください
0291デフォルトの名無しさんNGNG
>>286
0.XXXXXX 0.XXXXXXX
0.XXXXXX 0.XXXXXXX
.
.
.
0.xxxxxx 0.xxxxxxx
って感じです。
0292デフォルトの名無しさんNGNG
本当に簡単な宿題です!・・・できない俺がおかしいんですけどね。

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

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

となってるんですけど、これをどうやって読み出すんでしょうか。
多分、これのもっと高度なものを上でやってるんでしょうけど全然わからなかったもので・・・
せめて実現するために使う関数でも教えてもらえませんか(´Д`;)
0293デフォルトの名無しさんNGNG
>>292
fopenでファイルを開きfgetsで読み出す。読み出したものはstrcmpで照合する。表示はprintfで。
0294275NGNG
>>269

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

誤解したお詫び。
本当は漏れ自身が解こうかとおもたが、スタックの実装がめんどく感じたので却下。
(C++だとstackがあるんだが・・・Cにもある!?)
優先順位の判定をいじればそんなに難しいものじゃないかと。
0295 NGNG
ちょっと聞きたいんですけど,今あるファイルを開いて値を読み取っていくという
プログラムをC言語でやってます。そこで
# a a a
36 56

というファイルを読むときに#が現れたらその行は無視して
36と56を用意した変数に格納する。
もし#がないファイルでもきちんと36と56を用意した変数に格納する
というプログラムをCで書きたいのですがどうもうまくいきません。
どなたかちからかしてください
0296デフォルトの名無しさんNGNG
どういう意味であるかどうか聞いているのか分からないけど、標準ライブラリにはない。
そういうものは自分で実装するかライブラリを入手する。
0297デフォルトの名無しさんNGNG
>>295
aaa # bbbという行があった場合はどうするんだ?
aaa まで読んであとは無視するのか?それとも行全体を無視するのか?
0298デフォルトの名無しさんNGNG
>>297
一般的に考えると前者だと思うが、
>>295の書き方だと後者にも思えるな。
0299295NGNG
すいません説明不足でした。
#がある行は無視します。
0300デフォルトの名無しさんNGNG
>>299
じゃあfgetsで読んだ後にstrchrで'#'を探して、NULLが返ってこなければ無視すればいいんじゃないの?
0301わからずやNGNG
>>275
返事ありがとうございます。
http://weinberg.hoops.ne.jp/soft/ に行けませんでした。
Cにはstackはありません(たぶん)。stackは配列かポインタで表せます。
優先順位はだいたい分かるんですけど優先順位の判定はどうするんですか?
教えて下さい。
0302デフォルトの名無しさんNGNG
>>299
つまり、「#」のある行は問答無用で無視する訳だな。
それなら、

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

と言うステップを踏めばいい。
0303295NGNG
ちなみに#は行の先頭に現れます。
>>300
strchrですか一度やってみます。。
0304デフォルトの名無しさんNGNG
>>293
お早い回答ありがとうございます。これで友人の鼻を明かしてやれそうです。(´∀` )
この辺を集中して学ぶにはどうしたらいいのでしょう?これはポインタ、もしくは構造体なんでしょうか?
ホント馬鹿で申し訳ないです。持ってるビギナー向けの参考書に載ってなくて・・・(´Д⊂
0305295NGNG
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
みなさんその方法を薦められてるようなのでそれでやってみます


0306デフォルトの名無しさんNGNG
>>305
そのwidthってのはなによ?
とりあえず真っ先にfgetsで一行読むこと。
その後に>>300,>>302を行う。
#がなければfgetsで読んだものをsscanfで解析してa,b,cにいれる。
0307275NGNG
>>301
実は漏れも同じ様な講義を受けたことあるんだが(w

他の演算子と同じように判定すればいいよ。
ただ、最終的にはスタックに残らないような処理にしなきゃいけないのを
忘れないように。
0308わからずやNGNG
>>275
親切に有り難うございました。
0309無料動画直リンNGNG
http://homepage.mac.com/norika27/
0310244NGNG
>ナツメ社 入門ソフトフェアシリーズ1 C言語 河西 朝雄・著
はだめだめです。ANSI準拠といいつつ嘘があるし、

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

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



俺が持ってる教科書これだ・・・・
0311デフォルトの名無しさんNGNG
>>310
ピリオドは誤植として、<=はまずいな(笑)
0312デフォルトの名無しさんNGNG
「void main()」なんてのを平気で載せてる本もあるくらいだしなぁ…。
0313デフォルトの名無しさんNGNG
本ではないけど、MSDNライブラリはvoid main()
0314デフォルトの名無しさんNGNG
>>301
昔、何代目かのスレで作った逆ポーランドへ変換するプログラムが残っていたので
貼っときます。再帰下降構文解析を使っています。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=86
0315249NGNG
どなたかアルゴリズムお願いします。

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

進級できるかな・・・
0316デフォルトの名無しさんNGNG
>>238
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=87
0317デフォルトの名無しさんNGNG
素数関係のスレで見つけたのですが、どなたかこれの意味が分かる方が
いたら、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;
0318デフォルトの名無しさんNGNG
文字型の2次元配列を用意し、いくつかの文字列を読み込み、
それらの文字数の少ない順にソートして表示するプログラムを作成しなさい。

レベル1:配列のままでmain関数だけで処理をする
レベル2:ポインタ変数を用いる
レベル3:ソートする部分を関数にする
0319デフォルトの名無しさんNGNG
>>312
int main(void)で始めて、return 0;などで終わるのが正しいやり方なんですか?
0320デフォルトの名無しさんNGNG
>>319
ttp://www-ccs.ucsd.edu/c/lib_over.html#C%20Program%20Startup%20and%20Termination
0321デフォルトの名無しさんNGNG
>>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;
}
0322デフォルトの名無しさんNGNG
このスレ伸びるの早いよ
0323デフォルトの名無しさんNGNG
>>319
「void main( /* 中略 */ )」としても、
exit() 関数がある以上 void になり得ない。
0324デフォルトの名無しさんNGNG
ところで、擦れ違いかもしれないけど、
int foo ();
みたいに、引数を省略した場合って(int)になるんだよね?
この挙動って最新のC99で変わってる?
調べても分からなかったんだが
0325デフォルトの名無しさんNGNG
cなら、プロとタイプでの引数の省略は、「チェックしない」を意味する。
0326デフォルトの名無しさんNGNG
>>324
>擦れ違いかもしれないけど

わかってるのなら書くなよ。
0327デフォルトの名無しさんNGNG
(1)テキストファイルがある.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
(2)木とはなにか.また,2分木とはなにか.説明せよ.
(3)(1)でデータを格納した構造体を節点とする2分木を作成するプログラムをかけ.
新しいデータを一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを
使って木を実現し(構造体に必要な修正を加えること),データが増えても対処できるようにすること.また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.その際できるだけ見やすい形に表示するよう工夫すること.
テキストファイルがあるのですがそれを読み込んで
ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納します
テキストファイルの例は>>279です
枝の追加は左の枝と右の枝どっちでもいいと思います(左と右変えると違うのですか?)
見やすい形…>>284のように木を書いてください
0328デフォルトの名無しさんNGNG
>>327
CUIでツリーを表示するのはかなり難易度が高いぞ?
0329デフォルトの名無しさんNGNG
CUI??
0330デフォルトの名無しさんNGNG
character user interface <--> graphical user interface
0331_NGNG
http://homepage.mac.com/hiroyuki44/hankaku06.html
0332デフォルトの名無しさんNGNG
CUIはいいとして、別に木の形に表示しろというわけじゃないでしょ。
0333デフォルトの名無しさんNGNG
こんな感じの木でいいですよ
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
0334デフォルトの名無しさんNGNG
>>326
すれ違いというルールを厳格に主張する奴は目的を見失ってるね。
例えそれが純粋にC/C++の宿題に関することから始まり、最終的にはコンパイラや
Cの仕様の問題になったとしてもそこまで指摘することは自然なことだし
議論としては継続しているじゃないですか。
そのことがスレッドを読みにくくするんですか。

スレ違いなどというものを厳密に守った結果、助言としては誤解を与え得る
中途半端なものになっては本末転倒だが、妙なこだわりに取り付かれた人たちに言っても無駄か。
0335デフォルトの名無しさんNGNG
>>333
それのどこが二分木?
0336デフォルトの名無しさんNGNG
>>333うまく表示できませんでした。すいません
0337デフォルトの名無しさんNGNG
>>327
これを応用しる!
http://www.belution.com/miwaki/ads/tree.shtml
0338デフォルトの名無しさんNGNG
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
0339デフォルトの名無しさんNGNG
やっぱりうまく表示できません
0340デフォルトの名無しさんNGNG
Larry 
    Emilio
        Brent
            Adolpho
            David
        Jeff
            Francis
            null
    Stephen
        Mike
            null
            Roger
        Tom
0341デフォルトの名無しさんNGNG
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
0342249NGNG
どなたか助けてください。
アルゴリズムさえわかれば何とかなるんですTT

0343デフォルトの名無しさんNGNG
ラウンジに二分木置いたYO
0344デフォルトの名無しさんNGNG
本当にその「できるだけ見やすく」というのは木らしく表示するという意味なんだろうな?
0345まりおNGNG
二分木マダー? (AA略
0346デフォルトの名無しさんNGNG
>>342
提出して不十分と言われたレポートを晒せ
0347316NGNG
無視されてるTT
0348デフォルトの名無しさんNGNG
>>347
仕様が違うんじゃない?
どうもIDをキーにするのでは無いらしい。
(だから前もって聞いたのに)
0349デフォルトの名無しさんNGNG
てか、ここがおかしい
>枝の追加は左の枝と右の枝どっちでもいいと思います
0350デフォルトの名無しさんNGNG
>>347
なんだっての?
315にソースがあるけど、これがなんなの?
0351350NGNG
ごめん間違い316ね。
でも347と315は別の人なの?
二分木のプログラムは316にあるけど。
0352350NGNG
あ、同じひとだね。
何ができないのか良く分からないよ、どっちにしても。
0353デフォルトの名無しさんNGNG
2つの文字列が等しいかどうか判定するアルゴリズムをフローチャートを用いて表現せよ。
そのフローチャートに基づいてプログラムを作成せよ。フローチャートは分かりやすさも評
価します。

Cでお願いします
0354デフォルトの名無しさんNGNG
キレイな娘のヌード厳選してます☆
http://endou.kir.jp/moe/linkvp.html
0355デフォルトの名無しさんNGNG
>>353

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

int strequal(const char *s1,const char *s2)
{
for(;*s1==*s2;s1++,s2++)
if(*s1=='\0')
return 1;
return 0;
}
0356デフォルトの名無しさんNGNG
>>355
大変デンジャラスなコードでつね。
0357デフォルトの名無しさんNGNG
>>356
どこが?
0358デフォルトの名無しさんNGNG
>>353
int strcmp( const char *s1, const char *s2 )
{
  while( *s1==*s2 ) /* 比較が一致している間ループ */
  {
    if( *s1=='\0' ) /* s1、s2 共に文字列の終端か? */
    {
      return 0;
    }
    s1++,s2++;
  }
  return *s1 - *s2;
}
0359デフォルトの名無しさんNGNG
>>358
大小比較はいらないと思う。
0360デフォルトの名無しさんNGNG
s1とs2でs1の方が短い場合前方一致になっちゃうよ。
0361デフォルトの名無しさんNGNG
>>359
libcのコードだろ

>>360
・・・・・
0362デフォルトの名無しさんNGNG
>>360
終端文字('\0')が同じ場所にあればif(*s1=='\0') が真となり1がかえる。
s1の方が前にあればforの*s1==*s2が偽となりループを抜け0が返る。
s1の方が後にある場合は上と同じ。
0363353NGNG
>>355 >>358
ありがとうございます!
しかしレポートはメールで提出なのでフローチャートを
文字で書かないといけないみたいです
なにかアドバイスをお願いします
0364デフォルトの名無しさんNGNG
>>363
フローチャートはスレ違い
0365デフォルトの名無しさんNGNG
フローチャートを文字でって…
罫線文字か何かで表現するのか?
0366デフォルトの名無しさんNGNG
Visioで作ってメールに添付。
0367デフォルトの名無しさんNGNG
Visioって何ですか?
0368デフォルトの名無しさんNGNG
>>367
自分で調べもせず、すぐ人に聞く癖は直したほうがいいよ。
0369デフォルトの名無しさんNGNG
いいかげんフローチャートみたいなものを学校で教えるのはよして欲しいなあ。
過去の遺物というだけならまだいいが、害悪垂れ流しだからなあ…。
0370デフォルトの名無しさんNGNG
>>369
では何で記述しろというんだ?
過去の遺物でないアクティビティ図ならいいのか?
何も変わるところはないと思うが
0371デフォルトの名無しさんNGNG
むしろ誰が誰になんの目的で見せるものかをはっきりさせればいいかと。
目標を明確にしないで書かせることが多いみたいだから実際あんまり意味ないと思われ。
0372デフォルトの名無しさんNGNG
>>370
箇条書き
0373デフォルトの名無しさんNGNG
果物の名前とその値段をメンバとして持つ構造体を定義し、
この構造体へのポインタをノードの値として持つ二分木のノードを定義せよ。
次に、果物の名前に対して二分探索木の構造を保つように、
アルファベット順に基づきデータを追加するadd_node()関数、および、
この関数により生成される二分探索木に対し、
果物の名前をキーとしてノード検索を行うsearch_node()関数を定義せよ。

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

お願いします。
0374デフォルトの名無しさんNGNG
>>370
最も汎用的なフォーマットはテキスト。
ソースファイルに全て記入しる。
0375デフォルトの名無しさんNGNG
フローチャートを文字だけにすればよかろう。
ifなら 〜ならこっち違うならこっちとか
switchなら条件はこういう場合はこうとか
日本語から学んでくるか?すこしは知恵使えよ。
おれは今知恵熱出たけどな
0376デフォルトの名無しさんNGNG
|----------------|
|            |
|----------------|
     ↓       no
<           > →
     ↓yes


こんな感じで。
0377デフォルトの名無しさんNGNG
>>376
あんまフローチャートと変わんない気がするんだが
0378デフォルトの名無しさんNGNG
IIOSS落としてきてそれでアクティビティ図書いて印刷すればいいやん
0379デフォルトの名無しさんNGNG
>>375
それはもはや「チャート」ではないのでは?
0380デフォルトの名無しさんNGNG
結局の話ペイント使ってBMPで作っておくれや。
色使いも荒くして極端にファイル重くしろ。
そして送りつけろ
0381デフォルトの名無しさんNGNG
「フローチャートは時代遅れ」と言いたかっただけと
0382デフォルトの名無しさんNGNG
2分法のやり方教えてください
y=tan(x)-x^x
が0になる点を探したいのですが
二分法でなくても答えが出せるのがあったら
教えてください
0383デフォルトの名無しさんNGNG
>>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);
}
0384ジュウオウNGNG
学生番号(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

0385デフォルトの名無しさんNGNG
これも前スレにあったなぁ
0386デフォルトの名無しさんNGNG
#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;
}
0387デフォルトの名無しさんNGNG
しかも前スレで出てた
「003や067のときはどうするのか」
が書いてないし
0388デフォルトの名無しさんNGNG
>>387
同じ授業を取ってる別人でしょう
0389デフォルトの名無しさんNGNG
gotoツカイ==DQNカクテイ
0390デフォルトの名無しさんNGNG
>>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;
}
0391デフォルトの名無しさんNGNG
C言語。2二次元配列でビンゴを作る。
3行3列の2次元配列に1から99までの数値を入力する。
そのあと1から99までの数値をランダムにキーボード入力し、予め入力した
3行3列の数値にあうものがあったらその数値を0に置き換える。
当たりが縦又は横に並んだら「ビンゴ」とと何回目の入力で「ビンゴ」となったか
を表示する。
0392デフォルトの名無しさんNGNG
>370
PAD
0393デフォルトの名無しさんNGNG
>>391
行列の要素はいつ入力するんだ?
0394デフォルトの名無しさんNGNG
>>393
ゲーム開始前じゃねーの?
0395C語初心者NGNG
誰か暇な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をお願いします。

0396デフォルトの名無しさんNGNG
だからこのスレ流れるの速いよ
0397デフォルトの名無しさんNGNG
>>395
> 最短距離の座標

ってなんじゃらほい。
それから最短経路を求めるのか分岐点のない経路を一つでも求めれば良いのか。
0398デフォルトの名無しさんNGNG
>>395
しらみつぶしにやればいいんじゃない。
0399デフォルトの名無しさんNGNG
しらみってどうやって潰すの?
0400デフォルトの名無しさんNGNG
関数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刻み)固定してください.

・・・という問題なのですが、よろしかったらご教授ください(;´〜`)
0401デフォルトの名無しさんNGNG
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;}
0402C語初心者NGNG
皆様、ご返答ありがとうございます。
>>397
> 最短距離の座標
(y,x)座標で迷路のゴールまでの最短距離だと思います。

>それから最短経路を求めるのか分岐点のない経路を一つでも求めれば良いのか。
最終的に 壁を*、迷った所を?、解を0で表示するプログラムになればいいと思います。
様は、壁の座標を*で、最短距離をの座標を0で、残りを?で埋めればよいかと。
よろしくお願いします。
0403デフォルトの名無しさんNGNG
>>400
前にあったかもしれんぞ。
0404401NGNG
401のプログラムは最短経路を求めてないんだよな・・・。
0405C語初心者NGNG
>>397
> 最短距離の座標
(y,x)座標で迷路のゴールまでの最短距離だと思います。

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

>>401様
ありがとうございます
0406デフォルトの名無しさんNGNG
>>402
日本語が変なのはともかくとして、問題の意味が曖昧だ。
ゴールに到達する経路のうち、最短経路には分岐点はないが、
分岐点のない経路が最短であるとは限らんよ。
どっちを求めればいいんだ?
それとも分岐点のない経路が最短であるような迷路しか
扱わないことを仮定して良いのか?
0407デフォルトの名無しさんNGNG
>>406
>最短経路には分岐点はない
意味がわからん。
0408デフォルトの名無しさんNGNG
>>407
そうだな悪かった。
0409C語初心者NGNG
>>402様
とりあえず最初に示した、1と0の迷路では
ゴールへの道は一つしかないと思うんですが…。
0410デフォルトの名無しさんNGNG
>>409
Windowsならスクリーンセーバーの迷路を見てみるといい。
片手を壁に当てて迷路をたどると(出口が壁にそってる場合は)必ず出口に出ることができる、という法則。
これだと必ず出口に出ることはできるが、歩く距離は必ずしも短いわけではない。
0411C語初心者NGNG
>>410
そういうことですか。
勘違いしていました。
単純に、分岐点の無い経路を求めてください。
0412デフォルトの名無しさんNGNG
C言語でとあるディレクトリの中にあるファイルの情報を取得させたいのですが
なにかイイ関数、いい方法でもないですか?
0413デフォルトの名無しさんNGNG
>>412
「ファイルの情報」とは、サイズ?内容?ファイル名のみ?
OSによっても答えがかわってきそうなので、OSも追記したほうが。
0414275NGNG
>>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 );
}
}
0415275NGNG
続き...
double func(double x)
{
return x * x * x;
}

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

bibun( h );
}
0416412NGNG
>>413
とりあえず、ファイル名とファイルサイズが知りたいのです。
環境はUNIXです。
0417382NGNG
390さん有難う御座います
ニュートン法というのもよろしかったら教えてください

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


0418デフォルトの名無しさんNGNG
>>416
readdir()
0419デフォルトの名無しさんNGNG
>>416
stat
0420デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/6765/
0421デフォルトの名無しさんNGNG
Cでチャットや掲示板を作るのは可能ですか?
0422デフォルトの名無しさんNGNG
>>421
技術的には可能。
0423デフォルトの名無しさんNGNG
では、Cで作ったそれらをWeb上にアップできるのですか?
Cはどのようにして・・・
0424デフォルトの名無しさんNGNG
>>423
web上にアップって意味わからん。
ちなみに板違い
0425デフォルトの名無しさんNGNG
>>423
WebProg板
0426デフォルトの名無しさんNGNG
>>423
躍動感に乏しいが、WebProg板に「C言語のCGIを語りつつ普及するスレ」がある。
http://pc2.2ch.net/test/read.cgi/php/1048393217/l50
0427デフォルトの名無しさんNGNG
>>424
会社のお姉ちゃんが言ってた「ネットワーク上に保存しました」
くらい微妙な言葉だな。
0428デフォルトの名無しさんNGNG
>>423
サーバにソースをアップしてサーバ上でコンパイル。
同じ環境ならコンパイル後にアップしてもいいけど。
0429デフォルトの名無しさんNGNG
下記の機能アルゴリズムを設計し,C言語により実装せよ.
「1.任意の個数のint型数値をコンソールより入力された順に保存する.
2.文字列"Sort"の入力により,入力された数値群を降順に並び替える.
3.最大値と最小値の平均値を計算し,2分探索法で検索する.」

設計指針
・ソート部,探索部は,別のアルゴリズムを採用しても利用できるように設計/実装せよ.
・コンソール入力は,scanf()を使い,文字列,記号,整数値以外は,それぞれ別のエラーコードを返し,
入力を継続するようにせよ.
・メモリ節約のため,数値保存のためのメモリは動的に確保せよ.
0430デフォルトの名無しさんNGNG
>>429
マルチやめれ
0431デフォルトの名無しさんNGNG
問題:
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つ作ってこいと言われました。
よく分からないのでご教授お願い致します。
0432デフォルトの名無しさんNGNG
>>413
system("/bin/ls /targetdir");
結果を利用したいなら
popen("/bin/ls /targetdir", "r");
して
fgets();
0433デフォルトの名無しさんNGNG
>>431
なんというバカにした問題なんだ!!
0434デフォルトの名無しさんNGNG
>>433
簡単ですか?ご教授お願い致します
0435382NGNG
>>417
で書いたのですが
ニュートン法を使い下に書いたのできますか
教えてください


y=tan(x)-x^x
が0になる点を探したいのですが
二分法でなくても答えが出せるのがあったら
教えてください
0436デフォルトの名無しさんNGNG
微分できるんだから大丈夫なんじゃないの?
0437デフォルトの名無しさんNGNG
2*2の逆行列の公式をそのまま書くだけだろ?
0438デフォルトの名無しさんNGNG
>>437
そうだと思います。
関数をあまりっ理解してないのでプログラムで書くと
どのように書いていいかわかりません。
ご教授お願い致します。
0439デフォルトの名無しさんNGNG
Dを求めるのと逆行列を求めるのと行列を表示するのを
関数にすればいいんじゃない?

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

あとは、これをどうするかぐらいで。
0440デフォルトの名無しさんNGNG
逆行列求めるのに除算があるけど、
丸めとか問題にならない?
分数でやらなきゃならないのかしらん。

行列式なんて忘れたんで、変なこといってたらスマソ。
0441デフォルトの名無しさんNGNG
>>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;}
0442デフォルトの名無しさんNGNG
>>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;
}
0443デフォルトの名無しさんNGNG
>>441
一瞬荒しかと思いますたw
それコンパイルしたらエラーが出た・・
0444デフォルトの名無しさんNGNG
>>441
少し直したら回りました!
ありがとうございました。
0445デフォルトの名無しさんNGNG
このスレ面白い。
すごい勉強になる。
0446デフォルトの名無しさんNGNG
>>442
>   int c;

これは int c=0; だな
0447デフォルトの名無しさんNGNG
再帰を用いたプログラムと、再帰を用いないプログラムとでは、
読みやすさ、計算にかかる手間などは
どう違うのですか?
0448デフォルトの名無しさんNGNG
>>447 C/C++の宿題なのか?
0449デフォルトの名無しさんNGNG
再帰を使った方がたいてい読みやすい。
手間は、階乗なんかだと掛ける回数は同じでも
関数を呼び出すためにスタックに入れて、また返ってくる分再帰は無駄になる。
フィボナッチ数列だと二つに分岐して再帰してさらに分岐した時に
同じ計算をするからさらに手間がかかる。
0450デフォルトの名無しさんNGNG
>447,8
c++の宿題です。
0451デフォルトの名無しさんNGNG
C++ は C より優れたので、C を忘れましょう。
Javaも勉強しよう
Ruby もなかなか面白い
PHP もなかなかね

とにかくC は捨てましょう
0452デフォルトの名無しさんNGNG
>>451
それは宿題か?
0453デフォルトの名無しさんNGNG
>>451
Cが一番たのしくね?
0454デフォルトの名無しさんNGNG
LinuxをC++で書き直してくれ。
0455デフォルトの名無しさんNGNG
c2cpp
0456デフォルトの名無しさんNGNG
>>ワラタ
0457デフォルトの名無しさんNGNG
>>449
そーいや、tail recursionしてる再帰関数ってCではちゃんとループに展開してくれるのかな。
まとまった時間が取れたら追求してみようっと。
0458デフォルトの名無しさんNGNG
>449
ありがとうございます
0459デフォルトの名無しさんNGNG
宿題じゃないのですが、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();
}
}
0460_NGNG
http://homepage.mac.com/hiroyuki44/hankaku02.html
0461デフォルトの名無しさんNGNG
>>459
保持できる桁数には限界がある
float.h の DBL_DIG
正確にはl og10(DBL_MANT_DIG)
0462デフォルトの名無しさんNGNG
間違えた log10(pow(2, DBL_MANT_DIG)-1)
0463デフォルトの名無しさんNGNG
表示はできてもこれ以上は計算できないって事ですか?
0464デフォルトの名無しさんNGNG
doubleの精度は十進でせいぜい16桁程度
0465デフォルトの名無しさんNGNG
>>463
そういうこと。
仮数部53ビットの場合、完全に信用できるのは15桁。
0466デフォルトの名無しさんNGNG
>>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
0467デフォルトの名無しさんNGNG
http://www.google.com/search?q=%22scientist+shoud%22
0468デフォルトの名無しさんNGNG
>>466
全言語のページから"scientist shoud"を検索しました。
1件中1 - 1件目
予想される検索キーワード: "scientist should"
0469デフォルトの名無しさんNGNG
2度目の質問をさせてください。
このいたにいる方なら簡単に解けると思ったのですが、返事がないので書きます。

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

棒は3本で、ディスクは任意で実行できるのをお願いします。
0470デフォルトの名無しさんNGNG
>>469
過去スレにあったよ。
つーか、書いた記憶がある。
0471デフォルトの名無しさんNGNG
>>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)].
0472デフォルトの名無しさんNGNG
#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;
}
0473デフォルトの名無しさんNGNG
>>442さんありがとうございます
あと割線法という方法をおしえてください
f(a)とf(b)の直線とx軸との交点を求めて
(交点)<0のとき xa=(交点)
(交点)>0のとき xb=(交点)
をくりかえす
というふうにやるんですがプログラムがわかりません
y=tan(x)-x^x
が0になる点を探したいのですが
教えてください


y=tan(x)-x^x
0474デフォルトの名無しさんNGNG
f(a)<0、f(b)>0って決まってるの?
0475デフォルトの名無しさんNGNG
ぐぐって調べて理解して自分でやってみよう。
0476デフォルトの名無しさんNGNG
>>442の導関数間違ってる
0477デフォルトの名無しさんNGNG
tan(x)*tan(x)-pow(x,x)*(log(x)-1)+1; 誤
tan(x)*tan(x)-pow(x,x)*(log(x)+1)+1; 正 かな
0478デフォルトの名無しさんNGNG
数値解析について調べておいて”プログラムがわかりません”ておかしいだろ
0479デフォルトの名無しさんNGNG
sqlのデーターはどうしたら表示されるのよ
0480デフォルトの名無しさんNGNG
表示関数に取得した文字列を渡す
0481デフォルトの名無しさんNGNG
(tan x)' = 1/cos^2 x
0482デフォルトの名無しさんNGNG
=tan^2 x + 1
0483デフォルトの名無しさんNGNG
この中に一人以上確実に
A大学のjinuの授業受けてる香具師がいるww
0484デフォルトの名無しさんNGNG
アジア大学?
0485デフォルトの名無しさんNGNG
外人?
0486デフォルトの名無しさんNGNG
>>483
どの問題がそうなの?
0487デフォルトの名無しさんNGNG
>>486
>>119ですw
ログ見ててワロタww
0488デフォルトの名無しさんNGNG
>>483
犯人は喪前だ!
0489デフォルトの名無しさんNGNG
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++などを付け加え比較回数を
カウントできるようにしてください。
0490デフォルトの名無しさんNGNG
doubleの二次元配列を作っているのですがうまく動きません。
まったく同じ内容のintの二次元配列は動くのですがなぜか・・・
0491デフォルトの名無しさんNGNG
コードをみせろ。
0492111NGNG
まずfor(;;)をwhile(1)にする
0493デフォルトの名無しさんNGNG
メモリ不足

>>492
釣れますか?
0494デフォルトの名無しさんNGNG
C言語2二次元配列でビンゴを作るというものですけどどうすればいいか分かりませんどうか教えてください。
処理手順
3行3列の2次元配列に1から99までの数値を入力する。
そのあと1から99までの数値をランダムにキーボード入力し、予め入力した
3行3列の数値にあうものがあったらその数値を0に置き換える。
当たりが縦又は横に並んだら「ビンゴ」とと何回目の入力で「ビンゴ」となったかを表示する。
0495デフォルトの名無しさんNGNG
>>494 昨日と同一人物?
0496495NGNG
フィボナッチ数列のn項目の値(fn)を返す再帰関数long int fibo(int n)
を作成しなさい。ただし、フィボナッチ数列は次のように定義される。
fn=fn-1+fn-2
f1=f2=1
(n>=3)
お願いします
0497デフォルトの名無しさんNGNG
ハイ
本当に分からないのです
0498デフォルトの名無しさんNGNG
>>497
別スレで答もらってお礼を言ってたけど、あれは何だったんだ?
0499デフォルトの名無しさんNGNG
今日やってもたら出来なかったもので
0500デフォルトの名無しさんNGNG
1)テキストファイルは名簿である.各行のデータを,ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納する

   プログラムを書け.

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

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

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

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

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

0501デフォルトの名無しさんNGNG
>>500
>>316
0502デフォルトの名無しさん NGNG
誰か出来る人いたら頼みます。
漏れじゃまったく解けないので・・。

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

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

しきい値の入力のあとにどうやって配列からそれ以上の整数だけ
抽出すればいいのかがイマイチ・・・。HELP!
0503デフォルトの名無しさんNGNG
for (i = 0; i < N; i++)
if (x[i] > y) printf("%d ", x[i]);
0504382NGNG
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になる点を探したいのですが
教えてくださ
0505382NGNG
割線法について  訂正です
>f(a)とf(b)の直線とx軸との交点を求めて
↓
f(a) と f(b)を通る直線とx軸の交点を求めて

締め切り間近なのでお願いします
いままで教えてくれた方有難う御座います。
c言語の授業苦痛でしたが少しわかって楽しくなって
きました
0506デフォルトの名無しさんNGNG
>>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;
0507292NGNG
えー>>293様に教わったキーワードを検索したらやっと理解しかけてきたのですが
検索するファイルの中身が一致したら、その行だけを出力する場合、
どうしたらよいのでしょうか?
strcmp、strncmp使っても全然拾ってくれません・・・
strstr使うと検索文字列全て拾っちゃうし・・・(aokiと入れたらaokiiroまで拾う)(´Д⊂

具体的な記述方法ご教授いただけませんか?
愚案では検索する文字列の文字数で絞ればいいと思っているのですが・・・
0508デフォルトの名無しさんNGNG
エスパー召喚だな
0509デフォルトの名無しさんNGNG
コードを見せろ。
0510495NGNG
フィボナッチ数列のn項目の値(fn)を返す再帰関数long int fibo(int n)
を作成しなさい。ただし、フィボナッチ数列は次のように定義される。
fn=fn-1+fn-2
f1=f2=1
(n>=3)
どなたかお願いします
0511デフォルトの名無しさんNGNG
long int fibo(int n) {
return (n>=3)?fibo(n-1) + fibo(n-2):1}
0512292NGNG
すいません。突込みどころ満載でしょうけど目を瞑ってくださいね。(/ω\)ハズカシーィ
#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 ゴルフ大好き
のように、一行でまとめてます。
0513デフォルトの名無しさんNGNG
>>507
fgetsは改行(\n)まで読み込むので、
そのままstrcmpしたのでは一致しません。

読んだ文字列の最後に改行が付いていればそれを取る、
または、検索したい文字列に改行を付け加えるかすれば良いでしょう。
0514デフォルトの名無しさんNGNG
>>512
キーワードもfgetsしろ
0515292NGNG
>>508 >>509が抜けてました。誰に聞いとんだ俺は。(/ω\)ハズカシーィ
あと、愚作はまだ試してません。
0516292NGNG
レス早っ!すいません、言われた事を理解&実践してきます。ありがとうございます(´∀` )
0517デフォルトの名無しさんNGNG
>>512
1行にまとめるのとまとめないのでやることが違う。どっちかに決めろ。
>>513は1行に検索したい文字列が1つだと想定して書いた。
0518デフォルトの名無しさんNGNG
>>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);
}
0519292NGNG
>>517
あわわわ、ごっごめんなさい。へたれなものでよく分かっていなかったんです。(というか今も)
>>292のテキストのままfgetsを使ったらばっちり拾ってくれました!!

>>518
My God・・・
「これからこうしたいんですけどどうすれば」と打つ前に回答が・・・
あぁ・・・3日悩んでた朕が救われていく・・・ほんとにありがとうございます。
0520デフォルトの名無しさんNGNG
初めまして。初めてC++の授業取ってますが、全く分かりません(涙)。
宿題、誰か助けてください・・・。
人の名前と給料の額を入力すると、
厚生年金や車のローンなど、
あらかじめ給料の〇%と決めてある物をそれぞれ計算して出し、
最後にそれらを全部引いた、給料の手取りが出るというプログラムです。
よろしくお願いします m(_ _)m
0521デフォルトの名無しさんNGNG
>>520
「など」ってのはプログラミングできないぞ。
あとC++なの?
Cは理解してる?
設計の方針みたいなものは何にもないの?
クラス構成から考えて来いっていう宿題?
0522520NGNG
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は全くやったことないです。
昨日いきなり宿題出されて(しかも締め切り明日)途方に暮れてます。
0523デフォルトの名無しさんNGNG
>>522
そんなものは常識で考えてできるはず無いな。
どういう状況なんだ?
0524デフォルトの名無しさんNGNG
>>522
とりあえずその情報だけだと人名を入れる意味がないね。
給料の額が同じなら誰がやっても同じ結果になるんじゃないの?
0525520NGNG
人の名前と給料の額は、実行画面での入力です。
説明が悪くてほんとすいません。
0526デフォルトの名無しさんNGNG
いや、そうじゃなくて。
税金とかって、誰がやっても同じなんでしょ?
個人個人で差異のある要素って、給料だけでしょ。

なんで名前入れるの?
0527デフォルトの名無しさんNGNG
>>526
名前を出力するためなんじゃないの?
数値以外の入力処理をさせたいんでは
0528デフォルトの名無しさんNGNG
そうなると、名前と給料入れると

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

とでも表示すればいいだけのことか。
0529520NGNG
仰る通りです。別に名前入れる意味ないですね。
でも、それが宿題の指示だからとしか言いようがないです。
0530520NGNG
表示は、名前、給料の額、それぞれの税金の額、
そして手取り額全ての表示です。

0531デフォルトの名無しさんNGNG
>>522
> C++です。問題全部書いていいですか?しかも英語ですいません。

というか問題と仕様は最初にすべて書かないとこうやってやりとりが必要になる。
0532デフォルトの名無しさんNGNG
>>530
【最初は】 Hello World 【必ず】
http://pc2.2ch.net/test/read.cgi/tech/1033579539/
0533520NGNG
>>531
申し訳ないです。以後気を付けます・・・。
0534デフォルトの名無しさんNGNG
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.
0535デフォルトの名無しさんNGNG
#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;

}
0536デフォルトの名無しさんNGNG
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を引き忘れてた。
0537520NGNG
>>534
教科書の宿題と全く一緒!

>>535,536
ありがとうございます。
でも初心者過ぎて見ても全く意味がわからないです・・・。
今からこんなんで単位落とさないかかなり心配。
じっくり本読んで勉強することにします。
0538デフォルトの名無しさんNGNG
あれぇ、そんなんでいいの?
C++つうから、まじめにクラスとか作っちゃったよ。
折角だからはっとく。
>>520
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=89
0539デフォルトの名無しさんNGNG
簡単なプログラムにしかレスしないのですね
0540デフォルトの名無しさんNGNG
当たり前だろ。
0541デフォルトの名無しさんNGNG
誰か>>500やってください
0542デフォルトの名無しさんNGNG
2から数えて100万番目の素数を出来るだけ早く計算するプログラムを教えて下さい。
0543542NGNG
Cでお願いします。
0544デフォルトの名無しさんNGNG
>>542
まずはそれだけの計算に耐えられるコンピュータを用意してくれ。
0545デフォルトの名無しさんNGNG
その辺のパソコンで十分。15485863
0546542NGNG
>>545
おぉ!
プログラムを見せて貰えませんか?
お願いします(´Д⊂)
0547デフォルトの名無しさんNGNG
>>541
>>501
0548feNGNG
#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になっちゃうんだけどなんで?
0549デフォルトの名無しさんNGNG
>>548
コンパイラは警告を出さなかった?
0550デフォルトの名無しさんNGNG
>>548
dが0のとき、何が返るでしょうか。
0551デフォルトの名無しさんNGNG
>>548

54
0552548NGNG
ああああ…
そうかそうか。
そんな簡単なミスが分からなかったなんて…

ありがとうございます!!
0553デフォルトの名無しさんNGNG
>>546
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=90
0554デフォルトの名無しさんNGNG
まずキーボードから30文字以内の文字列を入力する。
次に一文字をを入力し、最初に入力した文字列の先頭からその文字
を探して最初にみつかった位置から先の文字列を出力する。
例えば最初に abcdABCD 次に c と入力すると dABCD と出力される
ようなプログラムです。
C++でお願いします。
0555デフォルトの名無しさんNGNG
>>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;
}
0556デフォルトの名無しさんNGNG
>>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;
}
0557542NGNG
>>553
ありがとうございました!
0558デフォルトの名無しさんNGNG
>>555>>556
ありがとうございます。
0559デフォルトの名無しさんNGNG
>>554のを
Cでおねがいできないでしょうか?
C以外は分からないんで、すみません
0560デフォルトの名無しさんNGNG
きみはCも分かっていない
0561デフォルトの名無しさんNGNG
C以外は全く分からないんで。
C++は関数名も何も分からないです
0562555NGNG
>>559
555はCでもあるのだが。もちろんC++でも動くはずだ。
とはいえ、typoがあってそのままだとコンパイルとおらねえな。
Cがわかるのならどう直せばいいかもわかるだろう。わかんないかな…
あとエラーチェックはほとんどしてないのでその辺よろしく。
0563デフォルトの名無しさんNGNG
誰か>>500やってください
0564サンプルですNGNG
★おすすめ★オススメ★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
:・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*
・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*
0565デフォルトの名無しさんNGNG
>>563
さんざん既出なんだよハゲ
0566デフォルトの名無しさんNGNG
既出なのは知っておりますが、解決していないようなので質問します。

下記のプログラムを変更して、要素数が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);
}
0567デフォルトの名無しさんNGNG
> 解決していないようなので
(゚Д゚)ハァ?
0568int gcdary {int a[], int n};NGNG
int gcdary {int a[], int n};
0569デフォルトの名無しさんNGNG

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

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

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

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

プログラムについて何もわかりません。
#include<stdio.h>で始まるプログラムお願いします。
0570デフォルトの名無しさんNGNG
またかよ
0571デフォルトの名無しさんNGNG
なぜこうも既出の問題ばかり……
0572デフォルトの名無しさんNGNG
>>569
#include <stdio.h>
int main(void) {
int n;
scanf("%d", &n);
puts("ステップ数は、100回以上か100回以下かそれくらい?");
return 0;
}
0573デフォルトの名無しさんNGNG
過去ログ検索スレになりそうだな
0574デフォルトの名無しさんNGNG
>>569
何もわからんなら教えがいがない…
0575デフォルトの名無しさんNGNG
検索なんて高度なテクニックを持ってるやつはそもそもこのスレには聞きに来ないからな
0576デフォルトの名無しさんNGNG
結局>>569の正解は出てなかった気がするが
0577デフォルトの名無しさんNGNG
まえ聞いたのですが、エラーがたくさん出たので…すみません。
0578デフォルトの名無しさんNGNG
任意の自然数nだろ?
しかも数学の問題だろ?
ってことは巨大な数も扱えなきゃダメだろ?
まず多倍長整数演算からはじめなきゃだろ?
0579デフォルトの名無しさんNGNG
>>577
それならそう書けよ。ちゃんとエラー内容付きでな。アフォ
0580デフォルトの名無しさんNGNG
>>566
このスレでは初のようだから
int gcdary(int a[], int n)
{
  if (n == 1)
    return a[0];
  else
    return gcd(a[0], gcdary(a + 1, n - 1));
}
0581デフォルトの名無しさんNGNG
>>580
elseはいらない。
0582デフォルトの名無しさんNGNG
>>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;

}
0583デフォルトの名無しさんNGNG
>>582
問題をよく読め
0584デフォルトの名無しさんNGNG
>>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;
}
0585デフォルトの名無しさんNGNG
>>583
ん?
0586デフォルトの名無しさんNGNG
>>582
ほんと馬鹿みないな質問で恐縮なんですが、
#include <stdio.h>で始まるプログラムでお願いしたいのですが、
そもそも#include <stdio.h>と#include <iostream>は何が違うんですか?
本当にすみません、くだらないこと聞いてしまって…
0587デフォルトの名無しさんNGNG
こんな奴に単位取らせて日本の未来は大丈夫ですか?
0588デフォルトの名無しさんNGNG
>>585
偶数と奇数は知ってるか?
0589デフォルトの名無しさんNGNG
>>588
あー逆になってるね。n%2も好きじゃないけど。
0590デフォルトの名無しさんNGNG
そんなことよりC/C++を分かっていないのに
問題を出してくる>>586の考えが知りたい。
0591591NGNG
標準出力関数fputcを用い、キーボードから入力した文字を1文字づつ
ファイルに書き込むプログラムを作成しなさい。
ただし、入力の終了は記号'/'の入力で判定を行うこと。

お願いします
0592デフォルトの名無しさんNGNG
プログラムについて学校では4時間くらいしか教わっていないもので…すみません。
ありがとうございました。
0593デフォルトの名無しさんNGNG
>>591

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

fp=fopen("ファイル","w"); // 失敗しない。絶対に失敗しない。しないったらしない。
while((c=getchar())!='/')
fputc(c,fp);
fclose(fp);
return 0;
}
0594566NGNG
>580さま、お返事どうもです。

ですが、このままでは任意の数Nを入力することは出来ないので、
main関数も変更しないといけないと思います。
是非よろしくお願いします。
0595デフォルトの名無しさんNGNG
誰かやってくれ・・・
0596デフォルトの名無しさんNGNG
なにを
0597デフォルトの名無しさんNGNG
あまりにもバカバカしいのとあまりにも難しいのはやらない罠
0598デフォルトの名無しさんNGNG
>>594
それくらい自分で追加しろヴォケ
0599デフォルトの名無しさんNGNG
問1

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



問2

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

0600デフォルトの名無しさんNGNG
>>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;
}
0601580NGNG
>>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);
}
0602デフォルトの名無しさんNGNG
>>599
>>316を応用しろ、つってもできねえんだろうなあ・・・
0603デフォルトの名無しさんNGNG
>>602
わかりません
0604デフォルトの名無しさんNGNG
>>599
で、学生のデータは入力用ファイルにどのように書かれているの?
こっちで勝手に決めつけてもいい?
0605デフォルトの名無しさんNGNG
学籍番号,姓,名,性別の様にカンマでくぎられていればいいです
0606サンプルですNGNG
★おすすめ★オススメ★
http://endou.kir.jp/betu/linkvp2/linkvp.html
:・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*
・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*
0607デフォルトの名無しさんNGNG
>>601
君、情報系学部?
0608607NGNG
ごめん間違い、見なかったことにして。
0609デフォルトの名無しさんNGNG
見ました
0610見ましたNGNG
見ました
0611デフォルトの名無しさんNGNG
うん。みなっかったよ。
0612599NGNG
お願いします。締め切りまであと2週間なんです!
0613デフォルトの名無しさんNGNG
>>612
おい、たっぷり時間あるじゃねぇか!
0614デフォルトの名無しさんNGNG
アルゴリズムの本一冊買えばそこに答えがあるよ
0615デフォルトの名無しさんNGNG
配列を回転するプログラムを作成…cでお願いします
↑のまんま問われて、ほとほと困っていたところで…
脳内補完がかなりいるよなぁ…_| ̄|○
0616デフォルトの名無しさんNGNG
相手が出来る奴なら高度な解を提出すべきだな。バカならそれなりに。
回転か・・・どう回転すればあっと言わせることができるだろうか・・・
0617デフォルトの名無しさんNGNG
アフィン変換とか・・・
そいつの目の前にいって配列を表示しているディスプレイを力いっぱい回すとか
0618デフォルトの名無しさんNGNG
「配列」と言う文字列を文字通り回転させろ!
0619デフォルトの名無しさんNGNG
つまりGIFアニメでいいのか
0620デフォルトの名無しさんNGNG
FLASHの方が楽
0621デフォルトの名無しさんNGNG
C/C++で実現しないとスレ違いになるだろ!
0622デフォルトの名無しさんNGNG
>>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;
}
0623デフォルトの名無しさんNGNG
つまりC/C++でGIFアニメジェネレータを作ればいいのか
0624デフォルトの名無しさんNGNG
>>621
既存のGIF、FLASHファイルをsystem()でプレイヤーに開かせるってのはどう?
0625デフォルトの名無しさんNGNG
>>624
コードが短く出来ていいな。
0626615NGNG
>616〜625さん、レスありがとうございます〜
…617さん…ワライマシタ(ヲ
問題はどーやってディスプレイに配列と表示させるか…(マテ
622さん、解答ありがとうございます…まだこっちで試してはいませんが

そして…ネタを提供してくれた教授、ありが…なんて言うか、カエレ!
0627デフォルトの名無しさんNGNG
教授なのか!!一か八か勝負だな
0628 NGNG
>>601
なかなかいいコードかくね。
if文のなかを==0と書くところがいいな,わかりやすくて。
0629デフォルトの名無しさんNGNG
ロジックは return y>0 ? gcd(y,x%y) : x; としないと負数が与えられたら
0630デフォルトの名無しさんNGNG
abs付ければいいんだよ
0631デフォルトの名無しさんNGNG
unsignedじゃだめなの?
0632デフォルトの名無しさんNGNG
>>631
何が?
0633デフォルトの名無しさんNGNG
>>632
負数が与えられたらまずいとか言っているから。
0634デフォルトの名無しさんNGNG
>>502やってけろ
これって面倒な部類に入りまつかね・・?
0635デフォルトの名無しさんNGNG
>>634
for(i=0;i<nyuryoku_sareta_kosu;i++)
if(hairetsu[i]>=shikiichi)
printf("%d ",hairetsu[i]);
0636デフォルトの名無しさんNGNG
>>502
>>503 にあるじゃん
0637デフォルトの名無しさんNGNG
>>632
与えられてもまずくはない
0638デフォルトの名無しさんNGNG
(1)2つのfloat型変数を引用するとそれらの加算を返り値とする関数をadd()、
同様にして減算を行う関数をsub()、
乗算を行う関数をtimes()
除算を行う関数をdiv()
として、四則演算を行うプログラムを作成せよ。
(2)int型の数値を2進数にて表示するプログラム。
(3)自分の名前をローマ字で表し、アスキーコードを変数に代入して、
自分の名前をアルファベットで表示させるプログラム。
0639デフォルトの名無しさんNGNG
ネタ?
0640デフォルトの名無しさんNGNG
入力した値を昇順に並べるプログラムを反復挿入法で作りたいのですが、
下のプログラムでできないのでよろしくお願いします。
下のプログラムを変更して完成して下されば幸いです。
嫌なら自分流のプログラムで結構です。
なお、今回は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]);

}
全然違っていたらすみません。
0641デフォルトの名無しさんNGNG
反復挿入法ってどんなの?
0642デフォルトの名無しさんNGNG
for(a=4;a>=0;a--)
ここじゃないかな。
0643デフォルトの名無しさんNGNG
反復挿入法に該当するページが見つかりませんでした。
0644デフォルトの名無しさんNGNG
>>599
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=91
↑に問1のソースを置きました。
問2は他の人にやってもらってください。オーダーとかきちんと勉強したことないんで…
0645デフォルトの名無しさんNGNG
>>640
どう動かんの?
ソートできてるように思うが。
0646デフォルトの名無しさんNGNG
三つの整数を読み込み、それらが次のケースのいずれかに相当するかを出力プログラムを書け。

1.三つの値が全て異なる
2.二つの値は同じだが、もう一つは異なる
3.三つとも同じ値である
という問題なのですが、書いてみたのですが何故か三番の判定がされません(´・ω・`)
ソース書いてみます
0647デフォルトの名無しさんNGNG
#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);
}

0648デフォルトの名無しさんNGNG
>>647
焦りすぎ
0649デフォルトの名無しさんNGNG
>647
明解C言語と見た
0650649NGNG
>647
先に1. 3.を判定して残ったのが2.
0651デフォルトの名無しさんNGNG
>>648
どう間違ってるのかわからないのです(´・ω・`)
0652デフォルトの名無しさんNGNG
if (a == b && b == c) {
 printf("3");
} else if (a != b && b != c && c != a) {
 printf("0");
} else {
 printf("2");
}
0653デフォルトの名無しさんNGNG
>>649
ありがとうございます(ノд`)
お陰できちんと書けました
0654デフォルトの名無しさんNGNG
>>651
とりあえず=と==は違うぞ
0655デフォルトの名無しさんNGNG
>>654
== は等しければ真、等しくなければ偽

とテキストに書いてあります。頑張ります・・・
0656デフォルトの名無しさんNGNG
>>650
そこはどうでもいいだろ
0657646NGNG
だー今初期の間違いに気づいた・・・・
代入してどう汁んだ・・・
0658デフォルトの名無しさんNGNG
int Count = (x==y) + (y==z) + (x==z);
switch(Count){
case 3: puts("3つとも同じ。");break;
case 1: puts("一組同じ。");break;
case 0: puts("全てことなる。");break;
}
0659デフォルトの名無しさんNGNG
>>658
X
0660デフォルトの名無しさんNGNG
>>657
凡ミスは誰にでもある。がんがれ
0661デフォルトの名無しさんNGNG
>>659
何が?
0662デフォルトの名無しさんNGNG
trueは1だと保証されないだろ。
0663デフォルトの名無しさんNGNG
c 言語では、 偽は0、それ以外の数値は全て真
0664デフォルトの名無しさんNGNG
関係演算子は真なら1、偽なら0を出す
0665デフォルトの名無しさんNGNG
考え方の順序がおかしいのでは?
たとえば(5 == 5) は必ず1を返す
0 以外は 真であるので (5 == 5) =true
ということじゃないのか?
0666デフォルトの名無しさんNGNG
話にならんな
0667658NGNG
関係演算子の戻り値は 0 か 1 でしょうよ。
正式な仕様書とか読んだことないけどw
0668デフォルトの名無しさんNGNG
ぬるぽ
0669デフォルトの名無しさんNGNG
>>665
その知識は何処から得たの?
0670658 != 665NGNG
 
0671デフォルトの名無しさんNGNG
じゃぁ両方に答えて欲しいな。>>669
0672デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c9.html#2
↑を読む限りでは >>659 が間違っていると思うが
0673デフォルトの名無しさんNGNG
コンパイラがANSI Cに準拠してさえいれば、x==yとかx!=yとした場合に返ってくる値は0か1だぞ。
0674デフォルトの名無しさんNGNG
>>644をやってくれた方したの問題のご教授お願いします
テキストファイルはの名簿である.各行のデータを,ID,姓名,読み(ローマ字)の
三つの要素をもつ構造体に格納するプログラムを書け.
テキストファイルの内容例↓
aaa0101,井川慶,igawa/kei(aaa0101)
0675デフォルトの名無しさんNGNG
>組み込みの演算子によってブー ル値が産み出されるときは、1か0であることが保証されている

φ(..)メモメモ
0676デフォルトの名無しさんNGNG
>>674
そのフォーマットどっかで見たような…
0677デフォルトの名無しさんNGNG
>Javaは死滅

φ(..)メモメモ
0678デフォルトの名無しさんNGNG
井川遥ってだれ
0679デフォルトの名無しさんNGNG
>井川遥ってだれ

φ(..)メモメモ
0680デフォルトの名無しさんNGNG
パシャ パシャ  パシャ パシャ パシャ  パシャ パシャ パシャ パシャ パシャ
   パシャ パシャ パシャ パシャ パシャ  パシャ パシャ パシャ  パシャ  パシャ
 ∧_∧      ∧_∧     ∧_∧  ∧_∧    ∧_∧     ∧_∧
 (   )】      (   )】    (   )】 【(   )    【(   )    【(   )
 /  /┘ .   /  /┘.    /  /┘ └\ \   └\ \   └\ \
ノ ̄ゝ     ノ ̄ゝ      ノ ̄ゝ     ノ ̄ゝ    ノ ̄ゝ     ノ ̄ゝ
0681デフォルトの名無しさんNGNG
>>674
どこがわからないの?
必要な処理は

・ファイルから読む
・構造体に格納する

の2つだが

0682681NGNG
その間にもう一つ、
・読み込んだデータを要素に分ける
ってのがあるか
0683デフォルトの名無しさんNGNG
>>674
>>238
0684デフォルトの名無しさんNGNG
>>674
>>238に同じ問題が書かれてあって、
>>316にその解答ソースの在り処が書かれている。
>>500にも同じ問題が書かれてあって、
>>501に>>316をみろと書かれてある。
>>541に>>500をやってくださいと書かれてあって、
>>547に>>501をみろと書かれてある。
>>563にも>>500をやってくださいと書かれてあって、
>>565にさんざん既出だと書かれてある。

どこまで同一人物かは知らんけど、
>>316のソースをみてから何かいってくれ。
0685デフォルトの名無しさんNGNG
>>684
暇人だな
0686デフォルトの名無しさんNGNG
>>685
必死だな
0687デフォルトの名無しさんNGNG
>>316じゃ表示できないんですけど
0688デフォルトの名無しさんNGNG
ハッシュ関数
(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も含む)を表に格納するプログラムを書け.
必要に応じて上の関数を書き直してよい.
ハッシュ値の計算が正しく行われて,正しい位置にデータが格納されていることが確認できるように表示させること.
0689デフォルトの名無しさんNGNG
>>687
いまコンパイルして動かしてみたけど、ちゃんと動いたよ。
表示もした。
0690デフォルトの名無しさんNGNG
>>689
どんな風に表示されましたか?
UNIXを使ってるのですがだめでした
0691デフォルトの名無しさんNGNG
>>690
入力したか?
0692デフォルトの名無しさんNGNG
>>690
aaa1101,井川遥,igawa/haruka
l:aaa0142,細川ふみえ,hosokawa/fumie
r:aaa2103,石川梨華,ishikawa/rika
r:aaa7394,戸川純,togawa/jun
0693デフォルトの名無しさんNGNG
Segmentation Fault
0694デフォルトの名無しさんNGNG
>>692の様になるんですけど、木と分かるように表示させたいのです
>>327か>>341の様に
0695デフォルトの名無しさんNGNG
C言語です
ファイルのバイト数、行数を数えるプログラムを作りなさい。
`\n' (文字コード 0x0a) の個数を行数と考えることにする。
0696デフォルトの名無しさんNGNG
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;
}
0697デフォルトの名無しさんNGNG
>>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);
}
0698697NGNG
あーだめか、いまいちうまくいかないな。
0699デフォルトの名無しさんNGNG
>>697
そんな感じでOKです
0700デフォルトの名無しさんNGNG
>>697もう少し!!!!!!!!!!
0701デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/6765
Cを勉強するならここしかない!
コピペ宣伝中
0702デフォルトの名無しさんNGNG
>printf("%*c --L--", depth * 2, ' ');

こんな書き方できるんやね。
インデントあわせに便利やね。しらんかった。
0703デフォルトの名無しさんNGNG
"textfile"という名前のファイルを読みとり標準出力に出力するプログラムを作成せよ。
ただし、連続する改行文字はひとつの改行文字にして出力すること。
0704703NGNG
言語はCです。よろしくお願いします。
0705デフォルトの名無しさんNGNG
>>679
どうすれば見やすくなりますか?
見やすいプログラム作ってください!
0706デフォルトの名無しさんNGNG
>>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;
}
0707316NGNG
ちょっとバグ情報を…
× char name[ID_LEN];
○ char name[NAME_LEN];

× Display_r(0, root->left);
○ Display_r(1, root->left);
0708デフォルトの名無しさんNGNG
>>706
だめぽですな
0709デフォルトの名無しさんNGNG

#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;
}
0710デフォルトの名無しさんNGNG
>>703
system("sed -e '/^$/d' textfile");
0711646NGNG
やべーわかんない・・・Cの宿題なんですが・・・
三つの最大を求めるプログラムを改造して、どの変数が最大だったかを
表示するようにせよ。ただし、二つ以上の変数が同時に(同じ値で)最大
だった場合は、それらの変数の名前をすべて出力しなければならない。

どなたかご指導お願いします(ノд`)
0712646NGNG
>二つ以上の変数が同時に(同じ値で)最大
だった場合は、それらの変数の名前をすべて出力しなければならない。

この部分が出来ません(ノд`)
ありえないぐらい長い文書いてしまいます
0713デフォルトの名無しさんNGNG
>>711
改造元になるソースキボヌ
0714646NGNG
三つのプログラム(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);
}
0715デフォルトの名無しさんNGNG
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;
}
0716デフォルトの名無しさんNGNG
>>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;
}
0717646NGNG
>>715
>>716
ありがとうございまつ(ノд`)
0718デフォルトの名無しさんNGNG
正の整数を読み込んで、素因数に分解するプログラムをお願いします。

[考え方]
 除数を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)を使うらしいのですが・・・。
0719デフォルトの名無しさんNGNG
>>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;
}
0720デフォルトの名無しさんNGNG
>>719
違う
0721デフォルトの名無しさんNGNG
>>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;
}

適当につくったから、あとは煮るなり焼くなり...
0722デフォルトの名無しさんNGNG
>>718
では、再帰版をば。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=92
余分に '*' が表示されるのは勘弁してくださいな。
0723デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/6765/
ひたすら宣伝
0724デフォルトの名無しさんNGNG
最近おもしろい宿題がないね
0725デフォルトの名無しさんNGNG
>>724
ほとんど読み飛ばし。問題の条件が曖昧なのとか、
以前答えが出てるのに同じ問題が何度も何度も書かれるとか(本人は1度目なのかもしらんが)。
あとちょっと仕事の片手間に答えるには難しすぎる問題とかw

最後のは興味深く読んで頭のなかでコードを浮かべたりするんだけど、
結局時間がなくてできないw
0726デフォルトの名無しさんNGNG
俺は能力不足でできないw
0727arcNGNG
下の反復構造を再帰関数に書き換えるのですが誰か教えてくださいませんか?
これは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
よろしくお願いします。
0728デフォルトの名無しさんNGNG
>>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);
0729デフォルトの名無しさんNGNG
int型の数値を2進数にて表示するプログラム。を教えてください。
0730デフォルトの名無しさんNGNG
>>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));
}
0731デフォルトの名無しさんNGNG
longやfloat、doubleの違いを教えてもらえませんか?
倍精度実数型など、意味が分かりません。
お願いします
0732デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=6765&KEY=1055062160&START=26&END=26&NOFIRST=TRUE
この問題が分かりません
0733デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=6765&KEY=1055062160&START=26&END=26&NOFIRST=TRUE
この問題が分かりません
0734732NGNG
2重で書き込んでスマソ
0735デフォルトの名無しさんNGNG
>>731
longやintは整数型で小数点以下が無い。そして小さな値しか扱えない
float,doubleは小数点の概念がある。そして桁数が大幅にアップ。
精度はそれぐらいえらいぜって意味
0736646NGNG
三つの変数をx、y、zに読み込む。
これらを大きさの順に並べ替えて、その順に出力するプログラムを書け。
出力の1行目に最小値、2行目に2番目の値、三行目に最大値を入力すればよい。
二つが等しくて、残る一つがそれらより大きい場合、1行目と2行目は同じ値になる

という問題なのですが、同じ値になった場合どうやって表示させればよいのかわかりません。
どなたかご指導お願いします(´・ω・`)
0737デフォルトの名無しさんNGNG
自分の名前をローマ字で表し、アスキーコードを変数に代入して、
自分の名前をアルファベットで表示させるプログラム。はどう造ればいいですか?
0738デフォルトの名無しさんNGNG
>>737
意味が分からん
0739デフォルトの名無しさんNGNG
>>736
できてるプログラムを見せなさい。
おなじ値じゃなければわかるんでしょ?
0740732NGNG
素数を求めるアルゴリズムをみんなに説明してください。
そして、1〜10までの間の素数を求めるのと、素数を10個求める
ソースを記述してください。
「答案です。」とでも書いてたら添削してあげませう。
んじゃね
0741デフォルトの名無しさんNGNG
>>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);
}
0742デフォルトの名無しさんNGNG
2つのfloat型変数を引用するとそれらの加算を返り値とする関数をadd()、
同様にして減算を行う関数をsub()、
乗算を行う関数をtimes()
除算を行う関数をdiv()
として、四則演算を行うプログラムをどなたかお願いします。
0743デフォルトの名無しさんNGNG
scanfの時&が必要なんじゃ?
0744デフォルトの名無しさんNGNG
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);
}
0745デフォルトの名無しさんNGNG
>>742
演算を行うための数値はどうやって入れるの?
出力はどういうイメージで出すの?
0746デフォルトの名無しさんNGNG
>>742
「変数を引用する」とはどういう操作なのか。
0747デフォルトの名無しさんNGNG
>>732
0748646NGNG
>>739
(;´д`)同じ値という条件でなくてもわからないです・・・
0749デフォルトの名無しさんNGNG
>>743
char[]
0750646NGNG
>>744
すごい・・・
でもまだ一年生なので学校では
while,for,if,else,and,or,printf,scanf,intしか習ってません(;´д`)
この範囲で組むにはどうしたらよいでしょうか?

すいませんわがままばっかりで・・・
0751デフォルトの名無しさんNGNG
>>750
その範囲で組んでるジャン。
0752デフォルトの名無しさんNGNG
関数習ってない?
0753デフォルトの名無しさんNGNG
ほなら
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);
}
0754753NGNG
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になる)
をもう一度する必要がある。
0755732NGNG
お願いします。
あの問題が気になって仕方がないです。
0756デフォルトの名無しさんNGNG
>>755
ソクラテスの篩を検索してくれ。
0757デフォルトの名無しさんNGNG
>>755
じゃあ、少しは調べろよ
0758デフォルトの名無しさんNGNG
>>755
よくわからんが、答えを書いたらおまえが添削するってことか?
ヤナコッタ
0759デフォルトの名無しさんNGNG
エラトステネスのふるい だ、ごめん
0760756=759NGNG
横文字の名前はわからん...
0761デフォルトの名無しさんNGNG
>>759
ネタじゃなかったのか……

>>755
これ最強
http://wwwhomes.uni-bielefeld.de/achim/prime_sieve.html
0762646NGNG
>>754
ありがとうございます
0763arcNGNG
>>728
入れてみてもなんか出来ませんでした。
誰か分かる人727の問題を教えてください。
0764デフォルトの名無しさんNGNG
>>741 にはだれもつっこまないの?
0765デフォルトの名無しさんNGNG
int quux(int x, int y) {
if (x==1) {
return y;
} else {
return quux(x-1, (x+y)%65536);
}
}

を再帰を使わず繰り返し(と代入文)を使う C言語の関数に書き換えよ。
0766デフォルトの名無しさんNGNG
http://esenden.com/rank/ninki/ranklink.cgi?id=mercury
0767デフォルトの名無しさんNGNG
>>765
int quux(int x, int y) {
 while (x != 1) {
  y = (x + y) % 65536;
  x--;
 }
 return y;
}
0768デフォルトの名無しさんNGNG
N個の数の平均値と標準偏差を求めるにはどうしたらいいのでしょうか?
0769デフォルトの名無しさんNGNG
計算する
0770デフォルトの名無しさんNGNG
ちょっとした調べものに・・・
http://mypage.odn.ne.jp/home/dongrico
0771デフォルトの名無しさんNGNG
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);
0772デフォルトの名無しさんNGNG
>>771
ありがとうございます!!
レスむちゃくちゃ早くて驚きましたw
瞬殺なんですね。
0773デフォルトの名無しさんNGNG
ループは一回で充分。
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);
0774デフォルトの名無しさんNGNG
>>771>>773
一箇所ずつ間違えるのはわざとかい?
0775771NGNG
わり、適当にやってたから

>> var / = (n-1);
var /= (n-1);

でいいのか?
0776デフォルトの名無しさんNGNG
C言語で、関数atofと関数strtodの作り方がわかりません。
atoiは作れたのですが・・・どなたかよろしくお願いします。
0777デフォルトの名無しさんNGNG
ただちに777をゲットせよ
0778デフォルトの名無しさんNGNG
それは実は結構難しい話を含んでいる。
以下参照。

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
0779デフォルトの名無しさん NGNG
すみません、以下のサイトに書いてある問題がわかりません。

http://www.fun.ac.jp/icpc/problems/C/C.html

アルゴリズムだけでもいいのでお願いします。
0780デフォルトの名無しさんNGNG
総当り、またはGAで。
0781サンプルですNGNG
☆皆さんの応援が頼りです。頑張ってまーす!!☆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0782デフォルトの名無しさんNGNG
>>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;
}
0783デフォルトの名無しさんNGNG
>>779の問題を誰か日本語に訳してちょ
0784デフォルトの名無しさんNGNG
#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]);
}
}
}
}
0785782NGNG
ごめん、負の数のときの処理忘れてた。

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;
}
0786782NGNG
あー、よく考えたら全然ダメだ。すまそ
0787デフォルトの名無しさんNGNG
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種類の記号同士で組み合わせなさい。

ですな。
0788デフォルトの名無しさんNGNG
9つのピースを持つパズルを完成させます。入力は
WwRR wwrg RRGb rGBG RGrb RrRg RGrg rgBB Wrgr
のように与えられアルファベットは(上)(右)(下)(左)の辺の記号を
表しています。
サイトの図を見てもらえれば分かりますがwとW,gとG,rとR,bとBがくっつく
条件となります。与えられた9つのピースが3*3で完成するパターン数
を求めよ、というものです。ピースはそれぞれ自由に
回転、移動させることができます。
0789デフォルトの名無しさんNGNG
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 !

プレイヤーは、ピースを動かし、回転させることができますが
ひっくり返すことはできません。
このピースの裏側には記号はありません。
0790デフォルトの名無しさんNGNG
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も同じ物です。
0791デフォルトの名無しさんNGNG
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度回転させていたものがあるからだ。
0792デフォルトの名無しさんNGNG
ICPCか
おれも出たことあるぞ
0793デフォルトの名無しさんNGNG
電卓の課題が出ました。C言語で作るらしいのですが1回だけの計算で簡単
なものを作らなければならないみたいです。
void
printf
scanf
case
if
switch
などは習いました。
割り算だけは実数型にするということです。
割り算以外は整数型で表示という事です。
よろしくお願いします。
0794デフォルトの名無しさんNGNG
結構簡単そうだけど、多分、何処かに落とし穴があるんだろうな…
0795デフォルトの名無しさんNGNG
/* 画像の濃度ヒストグラムの画像を作るプログラム 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; /* 頻度を表すグラフの長さ */
0796デフォルトの名無しさんNGNG

/* 原画像のヒストグラムを求める */
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;
}
}

0797デフォルトの名無しさんNGNG
main( )
{
load_image_data( ); /* 原画像を image1 に読み込む */
make_histogram_image( ); /* ヒストグラムの画像を image2 へ */
save_image_data( ); /* image2 を保存する */
return 0;
}

このプログラムをグラフの上限値をじゆうに設定できるようにするには
どうすればいいですか
0798デフォルトの名無しさんNGNG
>>793
数値1: 123
数値2: 456
演算子: +
答え:578

とかこんな感じ?
0799デフォルトの名無しさんNGNG
579だ。。。ウツダ
0800( ○ ´ ー ` ○ )NGNG
>>798-799
ぷ
0801デフォルトの名無しさんNGNG
>>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;
}
0802デフォルトの名無しさんNGNG
>>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; }
0803デフォルトの名無しさんNGNG
>>771>>773の間違いって何?
0804デフォルトの名無しさんNGNG
>>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;
}
0805デフォルトの名無しさんNGNG
(double)first/third
0806デフォルトの名無しさんNGNG
>>805
でできるんだねスマソ
0807デフォルトの名無しさんNGNG
>>803
少しは頭使え
0808デフォルトの名無しさんNGNG
>>807
少しは気をつかえ
0809デフォルトの名無しさんNGNG
Cでアナログ時計作れと言われて作っているのですが
アニメーションさせるあたりが全く分からなくて困っています
どんな命令を使うのか教えてください
お願いしますm(__)m
0810デフォルトの名無しさんNGNG
>>795
>このプログラムをグラフの上限値をじゆうに設定できるようにするには
意味不明。
それから、ソースを載せるなら省略せずに全部載せろ。
#できれば私が出勤するまでにv
0811デフォルトの名無しさんNGNG
>>809
標準Cでは無理。ウインドウズアプリケーションなら、Win32APIと言うのがあって、
ドットを打てる関数があるので、その点で時計を表示する。SetPixelとか、速度に
こだわるなら、BitBltとか。
アニメーションはまず止まっている時計を書けるようにする。
次に引数によって針の角度が変えられる止まっている時計をかけるようにする。
後は、時間を得られる関数を引数にして、時計の表示→消す→表示を繰り返す。
0812デフォルトの名無しさんNGNG
>>809
ディスプレイに表示する限りどうがんばってもアナログにはならない
出題者にお前は脳みそが腐っているから病院へ逝けと言っておけ
Cで組み込み制御すると言うのなら話は別だが
0813デフォルトの名無しさんNGNG
>>812
うわー、頭いいねー、すごーい
0814デフォルトの名無しさんNGNG
チゴイネ
0815811NGNG
>>812
その手があったか。
0816デフォルトの名無しさんNGNG
>>812
ディスプレイだとある意味アナログかもしれないよ
0817デフォルトの名無しさんNGNG
それを言い出すと、針を使っていてもクォーツを使っている限りアナログ時計にならない罠。
0818デフォルトの名無しさんNGNG
この世界は、不連続な物質と、不連続な時間から成るデジタル名世界ですよ?
0819デフォルトの名無しさんNGNG
>>817
針の動きは一定でこそないがアナログさ(w
(n秒の位置からn+1秒の位置へ瞬間移動するわけじゃないから)
0820デフォルトの名無しさんNGNG
>>801
何ゆえに標準エラー出力?
0821デフォルトの名無しさんNGNG
助けてください、全然わからなくて困ってます。

要素数が no である int 型の配列 vc の要素の最大値と最小値の差を
返す関数 diamarray(int vc[], int no) を作成せよ。
動作確認をするために、main 関数も作成しなさい。
0822デフォルトの名無しさんNGNG
宿題じゃないのですが、クラスの外の関数から、
そのクラスのコンストラクタ・デストラクタを
オブジェクトを作成せずに呼び出す方法ありませんか?
class test{public:test(){return;};};
int main(int c,char**v)
{   BYTE*pby=new BYTE [sizeof(test)];
   test*pclT=pby;
   pclT->test();//この処理がしたいが「test」の関数でないとエラーになる
}
コンストラクタと同じ処理をするものを作っても、いいんですが
できれば、一つの定義で収めたいです。方法ありませんか?
0823デフォルトの名無しさんNGNG
>>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;
}
全角スペースに気をつけてください
0824823NGNG
>>823
ifがネストしているみたいに
なってますがネストしてません。
全角スペースでずれました。すいません
0825821NGNG
>>823>>824
あ、ありがとうございます!!
これから講義なんで終わったらやって見ます!
本当にありがとうございました〜
0826デフォルトの名無しさんNGNG
>>822
class test{
public:
  void foo();
  test(){foo();}
};
同じ処理をするものを作っておいて、
コンストラクタはそれを呼ぶようにする。

宿題ではないのなからスレ違いだな。
0827826NGNG
ないのなから…
0828デフォルトの名無しさんNGNG
>>826
822の目的とは多少違うだろ
スレ違いにマジレスしてやる義理は無いが
0829デフォルトの名無しさんNGNG
根本的にクラスとして初期化された実体がないのに、通常のメンバ関数を呼ぶ時点で謝り
newが領域の確保しかしていないと思っているのだろうか?
呼ぶのなら関数にstaticを付けるべき
0830デフォルトの名無しさんNGNG
>>822
クラス内にコンストラクタと同じ処理の関数をPublicで作り、
コンストラクタはそれを呼ぶ。
>>826と同じことを言っているようだが「コンストラクタと同じ処理」を
外部に公開しないですむ。
0831デフォルトの名無しさんNGNG
謝りー>誤り
0832826NGNG
>>828
>>829
そうですね。言われて気がつきました。もう引っ込みます。
0833デフォルトの名無しさんNGNG
>>830
こういうことかな?
class test{
public:
test(){likeConstractor();}
 static void likeConstractor()
 {
  return;
 }
};
0834デフォルトの名無しさんNGNG
コンストラクタもインラインアセンブラで強制的に呼べないこともないが、
そんな馬鹿なプログラムは作りたくない
0835デフォルトの名無しさんNGNG
友達の宿題をやらせてもらった。
ぜひともほかの人にもやってほしい。

問題:
2次元配列に"abc", "def", ... "vwx", "yx"を入れる。
ループなどを使わずにこの配列を使い、「abcdef...vwxyz」を表示せよ。

0836デフォルトの名無しさんNGNG
int main(void)
{
char const array[][3] = {
"abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz",
};
printf("%s\n", &array);
return 0;
}
0837835NGNG
>>836
はやっ

後日に友達から教えてもらった先生の解答は
printf( "%s\n", array ) だった。

...ちなみに折れは思いつかなかった。
0838836NGNG
ループを使わない→各要素を羅列する→つまらん
  →各要素を連結する→最初から切れ目を作らない
以上v
0839835NGNG
最後が"yz"だからうまくいくんだよねぇ。
アルファベットが27文字だったら4文字ずつ区切ったのだろうか。
0840画像処理かNGNG
>>795
ピンク色の本に洗脳されすぎ。
それから,INT_MINってなに?どこで定義されてる?
0841デフォルトの名無しさんNGNG
>>840 ttp://www-ccs.ucsd.edu/c/limits.html
0842836NGNG
>>839
例えば12文字。
char const array[][3] = {
"abc", "def", "ghi", "jkl", "",
};
0843デフォルトの名無しさんNGNG
INT_MINも知らないくせに偉そうな口が叩けるんですね(^^;
0844835NGNG
>>842
なる。考えればあたりまえかも ;;
0845デフォルトの名無しさんNGNG
アラインメントは大丈夫か
0846デフォルトの名無しさんNGNG
>>845
何の話だ?
0847デフォルトの名無しさんNGNG
この日本語だけでつたわるかどうか不安なのですが、こんなんでました。

コマンドプロンプトからファイル名を一つだけ読み込み、 そのファイルを開いて数字列を読み込み、 平均値を求め、標準出力に表示するプログラムを作成せよ。

というのがUNIX Cの授業で出ました。
がくがく。
どなたかおねがいいたしますー。
0848デフォルトの名無しさんNGNG
ファイルの中身を見せろ
0849デフォルトの名無しさんNGNG
>>846
sizeof (*array) == 3 でない可能性があるという事だろう。
0850847NGNG
失礼しました。
ファイルの中身は、
たとえばclass1.datというファイルが、

83
54
59
80
94
・・・
といった具合です。
0851デフォルトの名無しさんNGNG
>>849
ありうるのか?
sizeof( array )/sizeof( array[0] ) は array の要素数を返すんじゃないのか?
array = char[3] とすると
sizeof( char[3] )/sizeof( char ) = sizeof( char[3] ) = 3 でないと困るんじゃ?
0852デフォルトの名無しさんNGNG
>>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);
}
0853852NGNG
間違えた
×printf("平均 : \n",sum/count);
○printf("平均 : %d\n",sum/count);

あと#include <string.h>はいらないや。
0854デフォルトの名無しさんNGNG
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;
}
0855デフォルトの名無しさんNGNG
みなさんはC言語をどのくらいかけて一通りマスターしましたか?
目安は初心者の参考書は見ないで済むくらいのスキルになるまで。
0856デフォルトの名無しさんNGNG
sage
0857デフォルトの名無しさんNGNG
よく使う関数 → 参考書見ない、動かなかったら見る。
たまーに使う関数 → google で manpage
めったに使わない関数 → 参考書とかgoogleでサンプル探す
0858デフォルトの名無しさんNGNG
プロのプログラマーがよく使う関数ってありますか?
あと、scanfなどはプロは滅多に使わないと聞いたのですが・・。
他にもそんな関数ありますか?
0859デフォルトの名無しさんNGNG
スレ違い
0860デフォルトの名無しさんNGNG
すみません。
調子に乗りすぎました
0861デフォルトの名無しさんNGNG
わけわかんねぇよ。
よく使うとかさ。
目的に最もあったの使えよ。
大体聞いてどうすんだ?
おれがmallocつったらお前これからmalloc使いまくる気か?スタックで十分なときでも。

てかなんでこんな連続でスレ違いばっかり・・・
0862デフォルトの名無しさんNGNG
組み込み系だとそもそも標準ライブラリ使えなかったりする。
処理系用の専用ライブラリつかうからmallocもstrcpyもprintfもない。
0863デフォルトの名無しさんNGNG
★を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--;
}
}
}
}

0864デフォルトの名無しさんNGNG
>>863
平仮名や漢字や★見たいな記号はワイド文字といって2byte使う。
char は1byeしか格納できないから、それじゃだめ
0865864NGNG
じゃぁどうするかというと、文字ではなく文字列として扱う。
0866デフォルトの名無しさんNGNG
star++;
で星が増えていくわけじゃないぞ。
0867863NGNG
根本的に間違ってました。
自分は寝惚けてたんでしょうか
0868863NGNG
恥
0869デフォルトの名無しさんNGNG
>>866
warata
0870863NGNG
>>866
恥を忍んで聞かせていただきます。
では、どのようにしたらいいですか?
0871デフォルトの名無しさんNGNG
>>870
ループで出力したい個数だけ改行を打たずに★をプリントし、
その後一個改行を出力。

それを行数分繰り返す。
0872デフォルトの名無しさんNGNG
>>870
printfで★一つ表示。
printfをn回実行。
0873863NGNG
★はどのように宣言すればよいでしょうか。
0874デフォルトの名無しさんNGNG
>>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;
}
0875デフォルトの名無しさんNGNG
>>873
文字列。
char *s = "★";
0876デフォルトの名無しさんNGNG
>>874
main()の2度目のループは課題が1までなので
i > 0
より
i >= 1
の方がよくない?
0877デフォルトの名無しさんNGNG
>>873
ここいってみては?
http://jbbs.shitaraba.com/computer/6765/
あんたみたいな人が盛り上げられるかもしれん
0878デフォルトの名無しさんNGNG
/*踏まえて*/
#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);
    }
}
0879デフォルトの名無しさんNGNG
>>878
ネームスペースとxstdioとかいらぬ混乱を招こうとしてまつね
0880デフォルトの名無しさんNGNG
横レス失礼します。
ひとつ質問があります。
★をprintfで10回表示しながら前より1個★の数を増やすには
char *s = "★"; を使うのでしょうか?
要するに1〜10の和の数だけ星を表示すると言うことです。
お願いします。
0881デフォルトの名無しさんNGNG
>>880
おまえは874とか878を見て何も感じないのか…
0882デフォルトの名無しさんNGNG
>>880
10個表示させるなら10回、11個なら11回ループすればいい。
0883880NGNG
ん〜、難しすぎて分かりません。
僕も超初心者ですから
0884デフォルトの名無しさんNGNG
>>883
char *s = "★"; //sに星マークをセット

printf("%s",s); //★ を表示

printf("%s",s);を2回実行 //★★ を表示

printf("%s",s);を10回実行 //★★★★★★★★★★ を表示
0885880NGNG
forを使ってprintfを1回、2回、3回と表示するにはどうしたら・・・。
この場合、★は6個表示
0886デフォルトの名無しさんNGNG
できたー
#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;
}
0887デフォルトの名無しさんNGNG
for (i = 6; i > 0; i--)
printf("hoge");
0888デフォルトの名無しさんNGNG
for(j=1;j<=i;j++){
printf("★");
}
関数でくくれ。
0889デフォルトの名無しさんNGNG
>>885
forの使い方理解してる?
0890デフォルトの名無しさんNGNG
>>888
関数でもないし、このばあい括らなくてもいいし。
0891デフォルトの名無しさんNGNG
int i,j;
for(i=1;i<=10;i++){
for(j=1;j<=i;j++){
printf("★");
}
printf("\n");
}

この部分、Cやったことない漏れには分からない。
どういう動きなのか説明してもらえんかの
0892890NGNG
あ、ごめん、勘違いした。
0893デフォルトの名無しさんNGNG
1回から10回★を印字する
0894デフォルトの名無しさんNGNG
>>886分かりやすい!!!!
0895デフォルトの名無しさんNGNG
>>891
そんなのCでなくてもたいがいのプログラミング言語である話だが・・
0896デフォルトの名無しさんNGNG
for(i=1;i<=10;i++){
printf("\n");
for(j=1;j<=i;j++){
printf("★");
}
}
こう書き換えたらダメ?
0897デフォルトの名無しさんNGNG
なにこれオマンコ?
0898デフォルトの名無しさんNGNG
うん、オマソコ
0899デフォルトの名無しさんNGNG
>>896
しょっぱなから改行かませるの
0900デフォルトの名無しさんNGNG
900げと
0901デフォルトの名無しさんNGNG
#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");
}
}
0902デフォルトの名無しさんNGNG
課題が低レベルだと食いつきがいいな
0903デフォルトの名無しさんNGNG
このスレのさっきの問題を見て、
どんなプログラムにするかアルゴリズムが思いつきませんでした。
forを2重に使うとあんな風になるなんて。
理解力のない漏れにもわかるようなアルゴリズムの解説サイト
ありましぇんか?
0904デフォルトの名無しさんNGNG
>>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改行
�@から見てく
0905デフォルトの名無しさんNGNG
アルゴリズム以前のような気がするがな。
0906デフォルトの名無しさんNGNG
簡単な問題にはレス付くの早いわな。
0907デフォルトの名無しさんNGNG
難しい問題は労力に見合わん。やってもできない時もあるけど。
やっても「こういう動作じゃないんですよ」とか言われるし
相手するのは面倒。
0908デフォルトの名無しさんNGNG
>>905
おながいします
0909デフォルトの名無しさんNGNG
906です。902とかぶってた。鬱々…
>>907
相手しなきゃ良いじゃん。(「あ、そう」で良いじゃん)
そもそも労力に見合うって何よ。
ここは自己満足の為に書き込むスレざんしょ。
0910デフォルトの名無しさんNGNG
だから簡単な問題で自己満足するんだな。
0911デフォルトの名無しさんNGNG
>>908
0912。。。NGNG
 三種類の括弧(),{},[]が並んだ文字列を読みこみ、括弧のつじつまがあっているか
を検査するプログラムを作りたいのですが。
0913デフォルトの名無しさんNGNG
そんな君達にささげるスレ
http://pc2.2ch.net/test/read.cgi/tech/1055749538/l50
0914649NGNG
>912
フラグを立ていろいろする
0915デフォルトの名無しさんNGNG
>>903
Cの本持ってんなら、
制御文のところをよ〜く読んで、
あとは自分で考えろ。
0916デフォルトの名無しさんNGNG
>>912
宿題なら宿題らしく。
カウンタの加減算で良いのでは?
0917デフォルトの名無しさんNGNG
>>912
作ればいーじょん。
0918912NGNG
・開き括弧ならとにかくpush
・閉じ括弧ならpopして、同じ種類の括弧かどうか調べ、異なっていればエラー
・すべての文字を見終わって、スタックも空であれば正解

すいません書き忘れてました
0919デフォルトの名無しさんNGNG
カウンタだと
( [ )] こういうエラー見つけにくいんじゃないかな?
スタックに開きカッコをつんでいって、閉じカッコがきたら、取り出してチャックしてみるのがいいんじゃないか?
0920デフォルトの名無しさんNGNG
再帰。
0921デフォルトの名無しさんNGNG
#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;
}
0922デフォルトの名無しさんNGNG
漏れ921だけんど、汚くて済まんな。
一度に書き込める行数の制限あるんでこんななった。
正式な動作確認もしてないし main() も雑だけど変かな?
突っ込み希望。
0923デフォルトの名無しさんNGNG
好きな数字Xをキーボードから入力させて
1〜Xまでの数字全部を足した数を表示させるプログラムを『できるだけ簡潔に』
作ろうとするとどうなりますかね?
お話にならないレベルで申し訳ないデス。知恵を授けたまえー。
0924デフォルトの名無しさんNGNG
簡単すぎてやる気にならない
0925デフォルトの名無しさんNGNG
int i;
int sum = 0;
int c = getc();
if(isdigit(c)){
for(i='1';i <= c;i++){
sum += i - '0';
}
printf("sum %d",sum);
}
0926デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
printf("%d\n",n*(n+1)/2);
return 0;
}

濡れはここまでしかでけん・・・
0927デフォルトの名無しさんNGNG
>>924
はぅぁっ。
そういうものですか…。
PCもレポート書くぐらいにしか使ったこと無いもので。
0928デフォルトの名無しさんNGNG
int x;
scanf("%d",&x);
printf("%d\n",x*(x+1)/2);
0929デフォルトの名無しさんNGNG
>>925
>>926
ご両人に感謝ですw
なんかintは2つまでが好ましい、みたいな事言ってたんですけど、
へっぽこの私では3個が限界でw
0930デフォルトの名無しさんNGNG
>>928
おー、短いw
ありがとうございます〜。
って感謝レス多発ですいません。
0931デフォルトの名無しさんNGNG
テキストファイルは名簿である.各行のデータを,ID,姓名,読み(ローマ字)の三つの要素をもつ構造体に格納する
プログラムを書け.
0932デフォルトの名無しさんNGNG
>>316
0933デフォルトの名無しさんNGNG
なんでこういう式になるの?
n*(n+1)/2
0934デフォルトの名無しさんNGNG
C++の宿題ってあるんだろうか?
「循環参照をおこさないスマートポインタのテンプレートを書け」
とかだされたら俺できないよ
0935デフォルトの名無しさんNGNG
>>933
高校の数学でやったろ
0936デフォルトの名無しさんNGNG
>>934
再帰使うと書けるよ
0937デフォルトの名無しさんNGNG
>>935
厨房に言っても・・・
0938デフォルトの名無しさんNGNG
>>937
ガーソ。
ズボシジャン
0939デフォルトの名無しさんNGNG
>>935
高校なのか?
漏れは小学校でやったが
0940デフォルトの名無しさんNGNG
スーパー生姜臭い
0941デフォルトの名無しさんNGNG
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
0942デフォルトの名無しさんNGNG
なんかの公式?
0943デフォルトの名無しさんNGNG
ガウスの公式だったかな。
奴はいろんな公式持ってるが。
0944デフォルトの名無しさんNGNG
くそ〜、ガウスのやろ〜
0945デフォルトの名無しさんNGNG
ガキの頃に一発でこれを導いたという伝説がなかったっけ?
0946デフォルトの名無しさんNGNG
確率か?
0947デフォルトの名無しさんNGNG
>>945
いたいた。小学校の先生に「1〜9まで足したら何になる?」とか
聞かれて考え出したんでしょ。
0948デフォルトの名無しさんNGNG
ん?明日の降水確率か?
明日は100%だよ。
分かったか?傘持ってけよ
0949デフォルトの名無しさんNGNG
>>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

俺はこう習った。
0950デフォルトの名無しさんNGNG
>>947
1〜100までだったと思うが
0951デフォルトの名無しさんNGNG
中学生の時に理科年表か何かで見て知った。
0952デフォルトの名無しさんNGNG
>>949
おなじだべ
0953デフォルトの名無しさんNGNG
>>947
1から100まで足せ、とクラスに問題を出して
その空き時間で内職しようとした教師が
一瞬で正解を答えたガウスに驚いたという伝説だったかと。
0954デフォルトの名無しさんNGNG
まず、25文字以下の文字列を入力。
次に、一文字を入力、最初に入力した文字列の先頭からその文字を探し
最初に見つかった位置より後ろの文字列を出力する。

AIUEOkakikukeko
a

kikukeko

となるプログラム
0955デフォルトの名無しさんNGNG
>>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;
}
0956955NGNG
getcharの前に入力を促すメッセージを入れるのを忘れた
0957デフォルトの名無しさんNGNG
char str[25+1];
int c;

ゲッツ!25文字

c = ゲッシ!1文字

printf("%s\n"strchr(str,c));
0958デフォルトの名無しさんNGNG
%sにNULLを渡していいのだろうか。
0959デフォルトの名無しさんNGNG
>>958
NULL! とか印字する処理系があったが、規格はどうかな。
多分だめなような気がする(根拠なし)。

ちなみに印字する処理系は昔のMS-C。6.0あたりかな。
VC++の1.0がMS-Cの8.0に相当するからはるか太古の話だ。
0960デフォルトの名無しさんNGNG
じゃあ、ルートをCでどう使うか教えてください。
例えば 36の平方根は6ですよね。
今まで使ったことなくって いまふと使わないといけないんですけど
わからなくて困ってます。
0961デフォルトの名無しさんNGNG
>>960
そのじゃあってのはなんだ。じゃあってのは。

平方根ならmath.hをインクルードしてsqrtを使えばいい。
#include <math.h>
double sqrt(double x);
0962デフォルトの名無しさんNGNG
>>960
ほんとだ。ワロタ。
0963willNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055933323

これは2個のサイコロの目を足して出た数をカウントするというものなのですが
カウントしてヒストグラムの表示がうまくいきません。
分かる人、誰か教えてください。
0964デフォルトの名無しさんNGNG
AT, BV, CX, DY, EZ とかの文字列から
((((AT BV) CX) DY) EZ) とか (((AT BV) CX)(DY EZ))
とかの木を全て書き出したいのですが、うまい書き方が分かりません。
大まかな方針だけでも教えていただけませんか?
0965デフォルトの名無しさんNGNG
>>964
AT, BV, CX, DY, EZ
この順番は保ったまま?
0966デフォルトの名無しさんNGNG
右と左にわけて再帰すればいいのかな。
((((AT BV) CX) DY) EZ)だったらAT, BV, CX, DYとEZに。
(((AT BV) CX)(DY EZ))だったらAT, BV, CXとDY, EZに。
0967デフォルトの名無しさんNGNG
これと同じ人ならば、配列の要素の順序は移動する。
http://pc2.2ch.net/test/read.cgi/tech/1055864305/49-

0968デフォルトの名無しさんNGNG
死にてーな。どうしたらいいかな。
0969デフォルトの名無しさんNGNG
>>968
Kill();
0970デフォルトの名無しさんNGNG
>>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,…てのがずれてる気がするけどそこは自分でなおしてね
0971デフォルトの名無しさんNGNG
>>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が同じだということをどうやって判別するか。
0972デフォルトの名無しさんNGNG
Cのコンソールで、あるところをクリックしたら
〇〇を表示するって可能ですか?
0973デフォルトの名無しさんNGNG
Cのコンソールときたか
0974972NGNG
やっぱ不可能ですか?
0975デフォルトの名無しさんNGNG
>>972
ブラウザでアクセスすれば?
0976972NGNG
ブラウザでアクセスっすか。
う〜ん・・
0977デフォルトの名無しさんNGNG
メンソーレ
0978デフォルトの名無しさんNGNG
>>972
>クリック〜
マウスを使う時点で環境依存。無理。
0979デフォルトの名無しさんNGNG
いま、20030618と出力されているのを、
2003年06月18日と出力せよ。
0980964NGNG
>>965
場所は入れ替わりOKです。
ただ、(ad) と (da) は同じとみなします。
>>967
http://pc2.2ch.net/test/read.cgi/tech/1055864305
は私です。
>>971
これも私です。
たとえば 012 と 021 は最後の3つが一緒なので、
それを判別するだけです。
なんですけど、うまい方法が分からないのです。
0981デフォルトの名無しさんNGNG
>>979
printf("2003年06月18日");
0982デフォルトの名無しさんNGNG
>>981
strncpyとかstrcatとか 使うらしいんですが・・・
0983デフォルトの名無しさんNGNG
char m1[20];
m2[4][3];
m3[7][5][4];

という風にあって、それぞれの先頭アドレスが同じ時

m1[6] のとき m2[?][?] , m3[?][?][?]

という計算は、どのようにすればいいんでしょうか?
0984デフォルトの名無しさんNGNG
char a[256] = {0};
char *b = "2003年06月18日";
strcat(a,b);
strcpy(a,b);
printf("%s",a);
0985デフォルトの名無しさんNGNG
> たとえば 012 と 021 は最後の3つが一緒なので、
> それを判別するだけです。

どういう意味でしょうか?
私が言ってるのは021と201の話なんですが…
0986デフォルトの名無しさんNGNG
あのー、高校生なんですが、よくわからない宿題なんで、
聞いてください

身の回りでデジタル化されたものを1つあげ、その際に生じた
メリット・デメリットをあげよ。です。

CDとか、カメラは出てしまいました。なんかわからない・・・・
こーゆーのって、ここは場所が違いますかね・・(汗
0987デフォルトの名無しさんNGNG
>>983
どういう計算だ、そりゃ?

>>986
正解。
0988デフォルトの名無しさんNGNG
>>986
板違いも甚だしい
0989デフォルトの名無しさんNGNG
俺達はデジタル化されているがまだ誰も気が付いていないのだ
0990デフォルトの名無しさんNGNG
住基ネット?
0991デフォルトの名無しさんNGNG
微視的に見れば全て離散的
0992964NGNG
>>985
すいません。勘違いしました。
021 と 201 でしたね。
0993デフォルトの名無しさんNGNG
エッ!!そんなこと言わないでくださいヨー・・・

じゃあどこへ行けばいいですかね?あ、986です。
0994デフォルトの名無しさんNGNG
>>980
> ただ、(ad) と (da) は同じとみなします。
こんな条件があるなら、これしかないような気がする。
http://pc2.2ch.net/test/read.cgi/tech/1055864305/49
0995デフォルトの名無しさんNGNG
んじゃ、地上波デジタル放送でどうよ
0996デフォルトの名無しさんNGNG
意表をついてデジタル時計で行ってみろ
0997デフォルトの名無しさんNGNG
>>980
これは別物?
((ab)c) (c(ab))
0998デフォルトの名無しさんNGNG
http://pc2.2ch.net/test/read.cgi/tech/1055944101/

次すれ
0999デフォルトの名無しさんNGNG
1000
1000デフォルトの名無しさんNGNG
@`
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。