ぼるじょあがC/C++の宿題を片づけますYO! 31代目

このエントリーをはてなブックマークに追加
1ぼるじょあ ◆yBEncckFOU
(・3・)エェー 久しぶりに戻ってきたC++房のぼるじょあですYO!
わからない宿題を片づけますYO!

【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-13
2デフォルトの名無しさん:04/09/13 20:42:39
3デフォルトの名無しさん:04/09/13 20:43:12
4デフォルトの名無しさん:04/09/13 20:52:27
5デフォルトの名無しさん:04/09/13 22:02:16
>>1
ぼるじょあイラネ
6デフォルトの名無しさん:04/09/13 22:05:11
>>5
お前がイラネ
7デフォルトの名無しさん:04/09/13 22:10:13
>>1
ぼるじょあイラネ
8ぼるじょあ ◆yBEncckFOU :04/09/13 22:12:24
(;3;)エェー
9デフォルトの名無しさん:04/09/13 23:53:21
10ぼるじょあ ◆yBEncckFOU :04/09/14 01:41:28
>>1 よくやったYO!
11デフォルトの名無しさん:04/09/14 02:13:50
>>1
本当に解いてもらえるんでしょうか?
12デフォルトの名無しさん:04/09/14 02:16:25
>>11
歴代スレを見ろ
13デフォルトの名無しさん:04/09/14 04:58:46
ああんもうぼるじょあさんかわいい
14デフォルトの名無しさん:04/09/14 19:53:19
15デフォルトの名無しさん:04/09/15 00:12:33
とっとと宿題もってこいや
16デフォルトの名無しさん:04/09/15 00:16:30
ネタスレだしな
17デフォルトの名無しさん:04/09/15 00:28:40
ここは静かなインターネッツですね。
18デフォルトの名無しさん:04/09/15 00:37:39
あーもう前スレで1000とりそこねたー
19デフォルトの名無しさん:04/09/15 00:47:14
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int OPPAI_ERO(int b)
{

int SEX 11072;

srad(time(NULL));

while(1){
b=rand()%20000+1;
if(SEX==b){
printf("めっちゃエロス\n");
break;
}
}
return 0;
}
20デフォルトの名無しさん:04/09/15 00:49:37
・・・ここはネタスレという事に決定?
21デフォルトの名無しさん:04/09/15 00:51:38
本スレにしようよ。
ネタはお控え。
22デフォルトの名無しさん:04/09/15 01:32:24
・クイックソートを高速化する場合、部分数列の長さが10から20程度以下のときは挿入方を併用するとよいことが指摘されている(テキストP205)。
そこで下のデータ系列を100個程度の乱数とし、部分数列の長さが10以下になったときに挿入方を併用するプログラムをかきなさい

なにをいってるのかサパーリ
23デフォルトの名無しさん:04/09/15 01:34:04
>>22
何故ネタスレにしたがるかな
スレタイ気に入らなかったら自分で立てろよ
24デフォルトの名無しさん:04/09/15 01:35:15
>>23
誤爆? >>20にレスしたんだよな?
25デフォルトの名無しさん:04/09/15 01:36:50
>>24
ちゃんと22にレスアンカー付けただろ
26デフォルトの名無しさん:04/09/15 01:38:26
>>22
クイックソートは配列を並べ替えてから分割し、その分割された配列を並べ替えて分割し・・・と再帰的に繰り返してソートする。
で、その分割された配列の大きさがある程度小さくなったら(ここでは10以下)クイックソートではなく挿入ソートを使う。

ということ。
27デフォルトの名無しさん:04/09/15 01:39:33
>>25
だから誤爆か?と聞いたんだよ。
誤爆じゃないみたいだな。
>>22のどこがネタだよ。
28デフォルトの名無しさん:04/09/15 01:43:07
ネタだな
29デフォルトの名無しさん:04/09/15 01:44:02
>>27
オレのテキストP205にはそんな事書いてない
大体何のテキストだよ。どこがC/C++だ?無意味に上げまくるお前もネタか
30デフォルトの名無しさん:04/09/15 01:45:42
>>29
> どこがC/C++だ?

あ、なるほど。
でもスレ違いなだけでネタかどうかわからないよ。
ちなみにsageは嫌いなんで。
3122:04/09/15 01:54:24
みなさん冷たい・・・
32デフォルトの名無しさん:04/09/15 01:59:39
>>31
おいコラ
レスあるのに冷たいだと?この野郎
50回ほど氏んでこい
33デフォルトの名無しさん:04/09/15 02:02:06
・・・ダメだこりゃ
34デフォルトの名無しさん:04/09/15 02:04:46
>>22
ちょいと待ちな
35デフォルトの名無しさん:04/09/15 02:09:10
すんませ〜ん。ちょっとお願いなんですが、
http://www1.kcn.ne.jp/~robe/cpphtml/index.html
ココのサイトのソースを読んでもらえませんか?
KMP法についてなんですけど、ちゃんと動作しなんですよ。
エラーはでなくて、問題なく動くことは動くんですけど、配列[1]目以降を検索対象にすると、
検索が出来なくなるんですよ。
で、間違っているのなら、その正しいソースを教えて頂きのです。
それが無理なら、KMPについてわかりやすく解説しているサイトを教えて頂きたいです。

ちなみに、他のスレに行ったら、宿題は取り扱っていないと言われ、ココにきました。
よろしくお願いします
36デフォルトの名無しさん:04/09/15 02:11:28
>>35
ここのサイトの著者にメールしろ
37デフォルトの名無しさん:04/09/15 02:14:13
C++教室とやらの尻拭いまでするのもいかがなものかと思うよな
38デフォルトの名無しさん:04/09/15 02:16:57
>>36
それもしようかと、思ったんですが、
前にメールしたら返ってこなかったんですよね。
なので、お願いできませんか??
39デフォルトの名無しさん:04/09/15 02:20:29
>>38
著者も相手にしたくない人を誰が相手にするの?wwww
40デフォルトの名無しさん:04/09/15 02:22:48
<<39
プゲラ
41デフォルトの名無しさん:04/09/15 02:22:58
宿題で無く申し訳ないですが、
良ければ教えていただけないでしょうか?

'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。

というようなメッセージがビルドを行うとデバックメッセージに表示されます。
このシンボルが読み込まれていません。という表記がいまいち掴めません。

メッセージは無視すればよいのでしょうか?
解決する方法がありましたら教えて頂ければ幸いです。

失礼します。
42デフォルトの名無しさん:04/09/15 02:25:59
>>41
スレくらい選べ
4341:04/09/15 02:26:54
すみません。
44デフォルトの名無しさん:04/09/15 02:26:55
>>39
あなたには人に教える事が好きでココに来てるんじゃないんですね。
なら、あなたはココにいる必要はないと思います。
それとも、あなたにはわからない事がない天才さんですか?
45デフォルトの名無しさん:04/09/15 02:30:22
>>44
あなたにはわからない事がない天才さんですか?
46デフォルトの名無しさん:04/09/15 02:32:14
>>44
いくら宿題スレでも開き直りの馬鹿は要りません。出て行け(゚∀゚)アヒャヒャヒャヒャ
47デフォルトの名無しさん:04/09/15 02:44:59
>>44
ここはぼるじょあが宿題を片付けるスレだからな
ぼるじょあ以外は回答する権利無いんだよ
48デフォルトの名無しさん:04/09/15 02:54:34
基本式
Y=((x/5)+f*x)*U/x
Uを0から10まで0.1ずつ変化させて
さらにfを0〜100000まで変化させてYの値が最高値になるfであるfmaxを見つける
結果は
U    Zの最高値   Zが最高値になったときのf
0 ********* *********
0.1 ********* *********
0.2 ********* *********
みたいなかんじで出力します


この問題をどなたかよろしくお願いします。
49デフォルトの名無しさん:04/09/15 02:56:39
>結果は
>U    Zの最高値   Zが最高値になったときのf
>0     *********    *********
>0.1     *********    *********
>0.2     *********    *********

訂正です
半角スペースは2つならべるときえるのか。
50デフォルトの名無しさん:04/09/15 02:59:54
>>48
手始めに、Zの計算式を教えてもらおうか。
51デフォルトの名無しさん:04/09/15 03:00:28
ぐお

>結果は
>U    Yの最高値   Yが最高値になったときのf
>0     *********    *********
>0.1     *********    *********
>0.2     *********    *********

こうでした・・・すみません。
52デフォルトの名無しさん:04/09/15 03:02:47
>>51
次に、xは何者か教えてもらおうか。
5334:04/09/15 03:04:35
>>22
/* 挿入法 */
void insertion_sort(int* first, int* last)
{
    ptrdiff_t length = last - first;
    for(ptrdiff_t i = 1; i < length; ++i)
    {
        int temp = *(first + i);
        int j = i - 1;
        for(; j >= 0 && temp < *(first + j); --j)
            *(first + j + 1) = *(first + j);
        *(first + j + 1) = temp;
    }
}
(続)
54デフォルトの名無しさん:04/09/15 03:04:39
こんだけ書き間違いがあるってことは2chに投稿してるのをばれたくないのかな?
55デフォルトの名無しさん:04/09/15 03:05:45
ぐおお
すみません。
x=2*fです。
5634:04/09/15 03:05:46
(>>53の続き)
次にinsertion_sortを使って
static const int insertion_switch = 10;
/* クイックソート */
void quick_sort(int* first, int* last)
{
    ptrdiff_t length = last - first;
    int m = *(first + length / 2);
    int* left = first, * right = last - 1;
    for (; ; )
    {
        if (length <= 1)
            return;
        if (length <= insertion_switch)
        {
            insertion_sort(first, last);
            return;
        }
        while (*left < m) ++left;
        while (*right > m) --right;
        if (right <= left) break;
        int temp = *left; *left = *right; *right = temp;
    }
    quick_sort(first, left);
    quick_sort(right, last);
}

あとはint a[100];に対してquick_sort(a, a + 100);とすればいい。
5748:04/09/15 03:07:45
最高値をだすプログラムが課題なんですが
基本式とかは自分で考えたのでちょっとまちがいおおかったです。ごめんなさい。
58デフォルトの名無しさん:04/09/15 03:07:55
>>55
全部まとめて書き直せ馬鹿
59デフォルトの名無しさん:04/09/15 03:08:27
>>48
あとはぼるじょあが出てくるまで待つといい
さすがにこの程度ならできるだろう
60デフォルトの名無しさん:04/09/15 03:10:48
もうネタばっかだな
61デフォルトの名無しさん:04/09/15 03:12:27
間違いが多かったのでので書き直しました。

基本式

x=2*f
Y=((x/5)+f*x)*U/x

Uを0から10まで0.1ずつ変化させて
さらにfを0〜100000まで変化させてYの値が最高値になるfであるfmaxを見つけます
結果は
U    Yの最高値   Yが最高値になったときのf
0     *********    *********
0.1     *********    *********
0.2     *********    *********

みたいなかんじで出力します


この問題をよろしくお願いします。

62デフォルトの名無しさん:04/09/15 03:14:43
基本式がY = (f + 0.2) * Uとなるけれどもそれでいいのか?
63デフォルトの名無しさん:04/09/15 03:15:55
はいよろしくお願いします。
64デフォルトの名無しさん:04/09/15 03:16:22
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int main(void)
{
double U,f;
double Y_max=0,tmp,Y;
double f_max;

printf("U\tYの最高値\tYが最高値になったときのf\n");
for(U=0;U<=10;U=U+0.1){
for(f=0;f<=100000;f++){
Y=(1/5+f)*U;
if(Y_max<Y){
tmp=Y;Y=Y_max;Y_max=tmp;
f_max=f;
}
}
printf("%lf\t%lf\t%lf\n",U,Y_max,f_max);
Y_max=0;f_max=0;
}
return 0;
}
65デフォルトの名無しさん:04/09/15 03:18:41
ありがとうございました
助かりました。
6664:04/09/15 03:19:52
#include<math.h>
#include<stdlib.h>
はけずっていいよ
流用したのがばればれだなw
67デフォルトの名無しさん:04/09/15 03:21:28
この問題は式が
Y=(1/5+f)*U;
になってるから結果がつまらなすぎ
68デフォルトの名無しさん:04/09/15 03:21:35
了解です〜
どうもありがとう。
69デフォルトの名無しさん:04/09/15 03:31:26
>>53>>56
同じ値が配列中にあるとハングするなこれ
70デフォルトの名無しさん:04/09/15 03:41:53
電気回路の問題なんですが
i=虚数 i*i=-1
R=1,L=0.001,C=0.0001
PI=円周率

基本式
w=2*PI*f
s=i*w
Z1=R+s*L
Z2=1/(s*C)
Z=(Z1*Z2)/(Z1+Z2)

で周波数を0〜100000まで変化させてZの絶対値を求める。
結果は周波数(一列目)Zの絶対値(2列目)というふうに出力する。

この仕様をみたしたプログラムをCで書くという問題です。
よろしくお願いします。

7122:04/09/15 04:23:49
やっと宿題おわりました。

いろいろありがとうございました。
72デフォルトの名無しさん:04/09/15 04:40:45
#include <iostream>
#include <complex>
#include <iomanip>

const double PI = 3.141592653589793238462643;
typedef std::complex<double> Cd;

int main()
{
 double R = 1.;
 double L = 0.001;
 double C = 0.0001;

 for (int fi = 1; fi <= 100000; fi++) {
  double f = fi;
  double w = 2. * PI * f;
  Cd s = Cd(0, 1) * w;
  Cd Z1 = R + s * L;
  Cd Z2 = 1. / (s * C);
  Cd Z = (Z1 * Z2) / (Z1 + Z2);
  std::cout << std::setw(10) << fi << " " << std::setw(16) << std::scientific << std::setprecision(10) << std::abs(Z) << std::endl;
 }
}
73デフォルトの名無しさん:04/09/15 04:41:40
>>70
面倒くさいからC++で書いちゃった。ゴメソ。
要するに複素数の四則演算をCで書けばいいんだ罠。
74デフォルトの名無しさん:04/09/15 04:45:58
struct Complex {
 double re, im;
};
struct Complex cmpadd(const struct Complex a, const struct Complex b);
struct Complex cmpsub(const struct Complex a, const struct Complex b);
struct Complex cmpmul(const struct Complex a, const struct Complex b);
struct Complex cmpdiv(const struct Complex a, const struct Complex b);

struct Complex cmpadd(const struct Complex a, const struct Complex b)
{
 struct Complex t;
 t.re = a.re + b.re;
 t.im = a.im + b.im;
 return t;
}

struct Complex cmpsub(const struct Complex a, const struct Complex b)
{
 struct Complex t;
 t.re = a.re - b.re;
 t.im = a.im - b.im;
 return t;
}
75デフォルトの名無しさん:04/09/15 04:47:31
struct Complex cmpmul(const struct Complex a, const struct Complex b)
{
 struct Complex t;
 t.re = a.re * b.re - a.im * b.im;
 t.im = a.re * b.im + a.im * b.re;
 return t;
}

struct Complex cmpdiv(const struct Complex a, const struct Complex b)
{
 struct Complex t;
 t.re = (a.re * b.re + a.im * b.im) / (b.re * b.re + b.im * b.im);
 t.im = -(a.re * b.im - b.re * a.im) / (b.re * b.re + b.im * b.im);
 return t;
}

これで勘弁してくれ。後は>>72の四則演算をこれで置き換えればよいはず。
ところでf==0の時はエラーが出るので>72はf==1からにしてあるよ。
76デフォルトの名無しさん:04/09/15 05:03:30
ありがとうございました。
とても助かりました。
77デフォルトの名無しさん:04/09/15 06:07:06
すみません、ここで質問するべきものなのかどうかもわからずに
書き込みをしてるのですが、お相手お願いします。

今日いろいろなサイト回って調べたのですがどうしてもわからなかったので
ここで質問させてもらいます。

dllファイルの内容を変えたい(編集したい)のですが、
可能な事なのでしょうか?

知っている方にはくだらない質問だと思うのですが、
回答のほうよろしくおねがいします。
78デフォルトの名無しさん:04/09/15 06:17:52
>>77
無理に近い。
逆アセンブラを使えば確かに中身を編集できなくもないが。

リソースだけならWin32APIの中にそんなのがあった気もする。
7977:04/09/15 06:27:43
どこぞのサイトからDLしてきたdllで、
元のファイル(dllになる前の何か?)もありません。
で、そのdllの中からいらないソース(?)を削り
他のソースをまた使用したいのです。

>>78様のおっしゃってる事がなんとなくでしか理解できてないのですが、
がんばって探してきます。

詳しいやり方がわかる方がいましたらお教えください。
よろしくお願いします。
80デフォルトの名無しさん:04/09/15 06:59:30
78の言ってる事が分からないようじゃまず無理
ソースが公開されてないのなら、位置から互換dllを作る方が楽だと思うよ
もちろん規模によるけど
81デフォルトの名無しさん:04/09/15 07:55:22
そもそもどんな宿題だか。

サイトで配布しているものなら配布元に問い合わせればいいじゃん。
82デフォルトの名無しさん:04/09/15 09:40:16
なんだよ31代目は麻衣子かお姉さま復活じゃなかったのかよ!
くそうぼるじょあめ!
83デフォルトの名無しさん:04/09/15 10:59:02
>>70
Cのバージョンほすぃ?
84デフォルトの名無しさん:04/09/15 12:24:09
Cトランスレータ通すんだ!
85リツコ:04/09/15 16:15:29
虚数空間にシンジくんが入ってしまったんですけどどうすればいいですか?
86デフォルトの名無しさん:04/09/15 16:38:39
愛をかければ実空間に現れますよ
87デフォルトの名無しさん:04/09/15 16:38:50
本スレ汚すナヨ
88デフォルトの名無しさん:04/09/15 16:42:23
本スレと認めない人が多いから仕方が無い
まあ>>1は氏ねという事だ
89デフォルトの名無しさん:04/09/15 16:45:18
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |       >>88
/     ∩ノ ⊃  ヽ  
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
90デフォルトの名無しさん:04/09/15 16:45:24
↑本スレってどこにあるの?
91デフォルトの名無しさん:04/09/15 16:45:59
この!くまめ邪魔しおって!
92デフォルトの名無しさん:04/09/15 17:27:48
たまにはこんな状態の本すれがあってもいいんじゃねー
93デフォルトの名無しさん:04/09/15 17:29:09
>>92
しね池沼
94デフォルトの名無しさん:04/09/15 17:31:36
こんなネタと煽りの多いスレがいいのかよ
馬鹿じゃないの?
95デフォルトの名無しさん:04/09/15 17:44:56
>>83
ほしいです。
教えていただけませんか?
96デフォルトの名無しさん:04/09/15 18:19:51
>>93-94
二匹も釣れるとは大漁大漁
97リツコ:04/09/15 18:49:02
シンジくんの服しか見つからなかったんですけど、どうしたらいいのでしょうか?
98デフォルトの名無しさん:04/09/15 18:51:45
>>97
シンジくんは露出狂ですか?
99デフォルトの名無しさん:04/09/15 18:55:30
>>94
歴代スレでも大概50〜150位までは荒れぎみになる。でその後何事もないように事が進む。
このスレもいつもどーりな感じ。

>>35
- while(pat[i] != 0 && src[i] != 0)
+ while(pat[j] != 0 && src[i] != 0)
100デフォルトの名無しさん:04/09/15 19:32:25
質問です。
「入力端子が10個あって、それぞれの入力値(任意)に全て異なる
重みを掛けたものの総和を出力するプログラム」
をVisualC++6.0を使って作りたいのですが、うまくいかなくて困って
ます。配列を使って作りたいのですがうまくいきません。

#include <stdio.h>

void main(void)
{
static int x[10] = {2, 4, 3, 7, 9, 6, 1, 8, 5, 2};
static float w[10] = {0.2, 0.5, 0.8, 0.1, 0.6, 0.9, 0.7, 0.3, 0.4, 0.2};
int i,sum;
sum = 0;
for(i=0; i<10; i++)
sum = x[i] * w[i];
printf("合計=%d\n",sum);
}

自分で考えたプログラムですが、合計=0となって出力されてしまい
ます。訂正箇所を教えていただけないでしょうか。お願いします。
101デフォルトの名無しさん:04/09/15 19:33:55
>>100
sum += x[i] * w[i];
sumはもっと大きい変数のほうがいいぞ
102デフォルトの名無しさん:04/09/15 19:35:13
というか小数点から切れるので誤差なんてもんじゃなくなるよな
103デフォルトの名無しさん:04/09/15 19:37:31
>>100
sum = sum + x[i] * w[i];
にしないと加算されないよ。
NNの勉強につながる課題かな?
104デフォルトの名無しさん:04/09/15 19:44:27
op=と書けるときはop=と書きましょう
105デフォルトの名無しさん:04/09/15 19:46:55
sumがint型だからってことじゃないの?
106デフォルトの名無しさん:04/09/15 19:47:25
>>100
sum を float型にでもしないと小数部が計算されない。
また、型を変更した場合は %d ではなく %f ね。
107デフォルトの名無しさん:04/09/15 19:54:47
>>104
何故?
108デフォルトの名無しさん:04/09/15 20:21:42
FFTをCで書けって脅されました。
書けないと明日には頃されるかもしれません。
109デフォルトの名無しさん:04/09/15 20:22:23
>>108
そうですか。がんばって下さい。
110デフォルトの名無しさん:04/09/15 20:24:29
111デフォルトの名無しさん:04/09/15 20:58:05
Aドライブのファイル名を読み取って、拡張子が.txtの
ファイルのファイル名だけ表示するプログラムお願いします。
112デフォルトの名無しさん:04/09/15 21:06:47
>>111
system("dir A:\*.txt");
113デフォルトの名無しさん:04/09/15 21:12:34
>>112
ダメじゃん
114デフォルトの名無しさん:04/09/15 21:22:16
>>111
関数
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
int main()
{
  WIN32_FIND_DATA fd;
  HANDLE hFind = FindFirstFile("A:\\*.TXT", &fd);
  do
    if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
      _putts("%s\n", fd.cFileName);
  while(FindNextFile(hFind, &fd));

  FindClose(hFind);
  return 0;
}
115デフォルトの名無しさん:04/09/15 21:26:26
テキストファイル(a.txtとします)が以下のようになっています。

アドレス:データ
200 = 23,
201 = 24,
202 = 25,
203 = 26,
以下同じような感じで続く。

このテキストファイルを読み取って、使いやすいように
配列なりに格納したいんですがどういうやり方がいいでしょうか。
116デフォルトの名無しさん:04/09/15 21:30:40
>>115
アドレスは200〜というのは決まっているのか
アドレスは絶対に1づつ増えてゆくのか
アドレスの飛び、抜け、重複は無いのか
117デフォルトの名無しさん:04/09/15 21:32:14
fscanf
118デフォルトの名無しさん:04/09/15 21:32:57
>>114
書き忘れてましたが残念ながら
#include <windows.h> とか#include <tchar.h> が使えない環境です。
言語はCです
119デフォルトの名無しさん:04/09/15 21:34:04
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
120デフォルトの名無しさん:04/09/15 21:35:33
環境を言え、それが嫌なら総当たりでファイルが存在するか試せ
121デフォルトの名無しさん:04/09/15 21:36:01
>>116
手元にファイルがないんで確認できませんが、
200からじゃないにしてもある固定値から始まり、
アドレスは1づつえ、とびや抜け、重複はありません。
言語はCです。
122デフォルトの名無しさん:04/09/15 21:37:38
つえ
123デフォルトの名無しさん:04/09/15 21:48:01
アドレスは1づつえ
アドレスは1つづつふえ
訂正します。
124デフォルトの名無しさん:04/09/15 22:41:55
>>118
標準Cでファイル列挙はできない。
125デフォルトの名無しさん:04/09/15 23:06:08
>>124
POSIXのこと?
126デフォルトの名無しさん:04/09/15 23:10:32
次のプログラムを使って、test.datに書かれた
浮動小数点データを読み込もうとしたのですが、
run time errorが出てしまいます。
どこが間違いか分かりません。教えてください。。

#include <stdio.h>
#include <stdlib.h>

main()
{
int j;
double u[10], t[10];
FILE *fp=fopen("test.dat","r");

for(j=0;j<10;j++)
fscanf(fp,"%le%le",&t[j],&u[j]);

fclose(fp);
}

test.datの中身
0.0 0.2
0.5 0.5
1.0 0.8
... と10個並んでいます。
127デフォルトの名無しさん:04/09/15 23:16:55
>>126
test.dat がないから。
128デフォルトの名無しさん:04/09/15 23:19:46
>>127
データ読み込み部分をはずして、
ファイルを開いて閉じるだけの作業は
実行できます。
129デフォルトの名無しさん:04/09/15 23:20:57
ちなみにエラー内容は
runtime error R6002
- floating point not loaded

です。
130デフォルトの名無しさん:04/09/15 23:21:41
>>128
だったら fp の戻り値を確かめたら?
131デフォルトの名無しさん:04/09/15 23:27:20
>>128
ちゃんと出来てますよー。。

んで、検索してたら自己解決しました。
ttp://dokudamin.dyndns.org/diary/2003/2003_06.html
ここによれば、浮動小数点であることを明示しないと、
動作しない場合があるそうです。
私の場合はちゃんと宣言してるんですが、動かない。。
そんな馬鹿な?と思い、データを読み込みを
for(j=0;j<1;j++){
u[j] = 0.0; t[j] = 0.0;
fscanf(fp,"%le%le",&t[j],&u[j]);
}
のように書いてあげたら、動きました。
学校のパソコンではちゃんと動いてたのに。。
132デフォルトの名無しさん:04/09/16 00:11:03
はぁ
133デフォルトの名無しさん:04/09/16 00:52:44
>>131
どうでもいいけど、そのページの日記に書かれている
>マイクロソフトのバカに教えてやらなければならないそうです
というのは単なる管理者の思い込み。
DWORDがどんな型であろうとそれがfloatやdoubleでない限り明示的に
キャストしなければならないのは自明。
134デフォルトの名無しさん:04/09/16 01:03:13
>>133
じゃあ>>131がうまくいった理由は?
135デフォルトの名無しさん:04/09/16 01:09:43
>>134
情報不足。
136デフォルトの名無しさん:04/09/16 01:10:45
>>135
何の?
137デフォルトの名無しさん:04/09/16 01:24:29
>>134
偶然かと。
ソースかコンパイラに重大で厄介なメモリ・コード系のバグでもあるんじゃないの?
138デフォルトの名無しさん:04/09/16 01:30:22
>>137
なんだ。あんたも思い込みか。
139デフォルトの名無しさん:04/09/16 01:35:40
>>138
よくわからんが、float に対してなんで le なんだろ?
140デフォルトの名無しさん:04/09/16 01:39:38
>>139
そのfloatは、どれの事を指しているのか、おしえてくれませんか?
141デフォルトの名無しさん:04/09/16 02:01:16
142デフォルトの名無しさん:04/09/16 02:05:47
>>140
すまん、まちごたです
143デフォルトの名無しさん:04/09/16 02:30:03
>>138
思い込みって?
144100:04/09/16 03:12:43
皆さんのお力で解決しました。ありがとう!
145デフォルトの名無しさん:04/09/16 08:17:26
       /::^'´::::::::::::i、::::::::::::::::::::::::::::\
     ‐'7::::::::::::::::::::::::ハ:ハ::|ヽ:::;、::::::::::::丶
     /::::::::::::::/!i::/|/  ! ヾ リハ:|;!、:::::::l
    /´7::::::::::〃|!/_,,、   ''"゛_^`''`‐ly:::ト
      /|;ィ:::::N,、‐'゛_,,.\   ´''""'ヽ  !;K
        ! |ハト〈  ,r''"゛  ,       リイ)|
          `y't     ヽ'         //
         ! ぃ、     、;:==ヲ   〃  そんなのどうでもいいよ
         `'' へ、   ` ‐ '゜   .イ
              `i;、     / l
                〉 ` ‐ ´   l`ヽ
14670:04/09/16 11:32:18
こんにちわ、この前はお世話になりました。
あのあと応用問題がでてまた詰まってしまいました。
よろしければお助けください。

電気回路の問題で
i=虚数 i*i=-1
R=1,L=0.001,C=0.0001
PI=円周率

基本式
w=2*PI*f
s=i*w
Z1=R+s*L
Z2=1/(s*C)
Z=(Z1*Z2)/(Z1+Z2)

で周波数を0〜100000まで変化させてそれぞれのZの絶対値を求める。
そしてその中でZの絶対値が一番大きいfを求める。
結果はZの絶対値、そのときのfという風に出力する。

という問題です。よろしくお願いします。
147デフォルトの名無しさん:04/09/16 12:05:48
詰まったというのなら詰まる前までのソースを提示して見てくださいね
14870:04/09/16 12:23:03
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=308&fi=no

こんなかんじで作ってみたんですが詰まりました。
インピーダンスを求めるやつは上で教えてもらったのでコピペして
その上のレスに最大値を求めるやつがあったので組み合わせてみたんですが
うまくいきません。根本的に間違っているのでしょうかそれとも
なにかミスがあるのでしょうか・・・?
エラーは
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
aaaa.cpp:
エラー E2277 aaaa.cpp 31: 左辺値が必要(関数 main() )
*** 1 errors in Compile ***
149デフォルトの名無しさん:04/09/16 12:24:03
150デフォルトの名無しさん:04/09/16 12:24:48
502.145とでました。
151デフォルトの名無しさん:04/09/16 12:29:11
ごめんなさい途中で切れてました
上に
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include <complex>
ってつけたんですが2つにわければよかった
152デフォルトの名無しさん:04/09/16 12:59:13
>>70
あのね、どうして周波数が1500刻みでしかピックアップしないの?
それだと、fが0,1500,3000,…,99000のときの|Z|しか比較できないじゃないか。
もし、0〜1500の間に最大値があったらどうする?
(まぁ実際計算したらf=502.145のところに最大値があるのだけど。)
最大値を求めるアルゴリズムをもう一度考え直して見たら?
153デフォルトの名無しさん:04/09/16 13:07:37
>あのね、どうして周波数が1500刻みでしかピックアップしないの?
>それだと、fが0,1500,3000,…,99000のときの|Z|しか比較できないじゃないか。
>もし、0〜1500の間に最大値があったらどうする?
>(まぁ実際計算したらf=502.145のところに最大値があるのだけど。)

プログラミングの課題で最大値を求めるアルゴリズムが問題なので
正しい答えが目的ではないのでとりあえず1500きざみで最大になるのを
さがそうとしました。
でももっとこまかいほうがいいっすね・・・

>最大値を求めるアルゴリズムをもう一度考え直して見たら?
やっぱ最大値をのアルゴリズムがちがうっすか・・・
どうすればいいんでしょうか・・・?
154デフォルトの名無しさん:04/09/16 13:25:47
>>153
|Z|の極大は0<f<100000において一つだから、
アルゴリズムの一例を挙げると、
g(f):=|Z|として、
ランダムに2つのf1,f2を用意し、その2点の中間点f3の値g(f3)を求め、
もしg(f3)がg(f3),g(f1),g(f2)の中で最大であれば、
 g(f1),g(f2),g(f3)で最も大きい2点のfで同様の操作をする。
もし、g(f3)が最大でなければ、一つのランダムなfを新たに用意し、
g(f1),g(f2),g(f3)の中で最大の値であるfと、ランダムに用意したfで同様の
操作をする。
これらを十分な回数行えば最大値が求まる。
155デフォルトの名無しさん:04/09/16 13:51:38
むずかしいっすねがんばって理解します。
156デフォルトの名無しさん:04/09/16 14:57:53
>>154
マジか!
だとすると俺の組んだ姿勢制御プログラムを積んだロケットが危ない!
157デフォルトの名無しさん:04/09/16 15:08:49
またH2Aが落ちるのかw
158デフォルトの名無しさん:04/09/16 15:10:57
159154:04/09/16 15:21:14
申し訳ないね。
ボケたこといってしまった。
別のアルゴリズムで実装しといたよ。(>>158)
160デフォルトの名無しさん:04/09/16 16:43:19
おおどうもです。
なんかエラーがでてしまいました。
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
kadai3333.cpp:
エラー E2268 kadai3333.cpp 40: 未定義の関数 'exit' を呼び出した(関数 main(int,char * *) )
*** 1 errors in Compile ***

161デフォルトの名無しさん:04/09/16 16:47:00
>>160
#include <stdlib.h>
も呼び出さないと。
162デフォルトの名無しさん:04/09/16 17:01:27
なんかコンパイルもできてコマンドプロンプトもひらいたんですが

rerere.exe アプリケーションエラー

例外unknown software exxeption(0xc000008e)がアプリケーションの 0x0040125e で発生しました。

プログラムを終了するには[OK]をクリックしてください
プログラムをデバッグするには[キャンセル]をクリックしてください
             
                   OK           キャンセル




というエラーがでてしまいました。(rerereはファイルにつけた名前です)
163デフォルトの名無しさん:04/09/16 17:28:28
なんでだろう。
164デフォルトの名無しさん:04/09/16 19:00:46
問題1
nの階乗を求めるプログラムを再帰関数を利用して作りなさい。

問題2
2つの整数のべき乗を求めるプログラムを作成しなさい。ただし、べき乗を求める部分を自作関数で作成しなさい。


この問題、お願いします。
165デフォルトの名無しさん:04/09/16 19:12:10
階乗はやっぱコンパイルタイムでしょ

template <int N> struct Factorial{ enum{ value = N * Factorial<N-1>::value }; };
template <> struct Factorial<0>{ enum{ value = 1 }; };

int
main()
{
    std::cout << Factorial<6>::value << std::endl;
    return 0;
}
166デフォルトの名無しさん:04/09/16 19:42:16
じゃ、べき乗もコンパイルタイムで。
template <int N>
struct Power {
int value;
Power(int m) : value(m * Power<N - 1>(m).value) {}
};
template <>
struct Power<0> {
int value;
Power(int m) : value(1) {}
};

int main()
{
std::cout << Power<6>(5).value << std::endl;
return 0;
}
167デフォルトの名無しさん:04/09/16 19:42:43
No2 高速化は考慮してないから

int bekijou(int a, int x)
{
  int n, i = 1;
  n = a;
  while(i<=x){
    a = a * n;
    i++;
  }
  return a;
}
168デフォルトの名無しさん:04/09/16 19:54:05
べき乗も再帰関数で。
unsigned Power(unsigned m, unsigned n)
{
return n ? m * Power(m, n - 1) : 1;
}

int main()
{
std::cout << Power(5, 6) << std::endl;
return 0;
}
169デフォルトの名無しさん:04/09/16 20:30:27
べき乗忘れてた
template <int N, int POW> struct Power{ enum{ value = N * Power<N, POW - 1>::value }; };
template <int N> struct Power<N, 0>{ enum{ value = 1 }; };

int
main()
{
    std::cout << Power<2, 10>::value << std::endl;
    return 0;
}
170デフォルトの名無しさん:04/09/16 21:58:38
すいません、お願いします。

データを入力してください(100で終了)
001=80
002=30
003=20
004=50
005=100

件数5件
最高は001で80
最低は003で20
平均は45
171デフォルトの名無しさん:04/09/16 22:09:44
>>170
入力・出力の形式を明確に。
172デフォルトの名無しさん:04/09/16 22:27:39
C言語です。
エラストテネスのふるいを使って1000要素の配列を使って1から999までの間にある素数を見つけて表示するプログラムを作成せよ、とのことです。

#include <stdio.h>
int main(void)
{  int i , n ;
  int kazu[1000] ;
  for ( i=1 ; i <= 1000 ; i++ ){
     kazu[i] == 1 ;
     }


この後がわかりません。教えてエロい人。
173170:04/09/16 22:29:50
>>170のだと件数は4件ですね。

001...005ってのはでprintfの出力
=80がscanfで入力

こういう説明で宜しいでしょうか。
174デフォルトの名無しさん:04/09/16 22:32:00
#include <stdio.h>
#include <stdlib.h>
int main() {
    int *pData = NULL, i = 0, LargePos = -1, SmallPos = 0, Sum = 0;
    puts("データを入力してください(100以上で終了)");
    for (;;) {
        char Buf[64];
        pData = realloc(pData, sizeof (int) * (i + 1));
        if (!pData)
            return 1;
        printf("%d=", i);
        fgets(Buf, sizeof Buf, stdin);
        pData[i] = atoi(Buf);

        if (pData[i] >= 100)
            break;
        if (LargePos == -1)
            LargePos = i;
        else if (pData[i] > pData[LargePos])
            LargePos = i;
        if (SmallPos == -1)
            SmallPos = i;
        else if (pData[i] < pData[SmallPos])
            SmallPos = i;
        Sum += pData[i];
        i++;
    }
(続く)
175デフォルトの名無しさん:04/09/16 22:32:44
//改行制限ではみ出た部分。
    printf("件数%d件\n", i);
    printf("最高は%dで%d\n", LargePos, pData[LargePos]);
    printf("最低は%dで%d\n", SmallPos, pData[SmallPos]);
    printf("平均は%d\n", Sum / i);
//    printf("平均は%f\n", (double)Sum / i); 小数点以下も表示したいならこっち。
    free(pData);
    return 0;
}
176170:04/09/16 22:49:57
>>174-175
stdio.h以外の宣言は初めてです。

このまま出すと、明らかにバレそうなので
このプログラムの流れを見て勉強しなおします。

本当に有難うございます、精進します。
177デフォルトの名無しさん:04/09/16 22:50:06
>>170 回その2
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(){
int i,indata;
int total = 0;
int min,mini,max,maxi;
max = INT_MIN;min = INT_MAX;
maxi = mini = 0;
for(i = 1; indata != 100; i++)
{printf("%03d=",i);
scanf("%d",&indata);
if(indata != 100)
{total += indata;
if(max < indata)
{max = indata;maxi = i;}
if(min > indata)
{min = indata;mini = i;}}}
i--;
printf("%s%d%s\n","件数",i,"件");
printf("%s%03d%s%d\n","最高は",maxi,"で",max);
printf("%s%03d%s%d\n","最低は",mini,"で",min);
printf("%s%.0f\n","平均は",(double)total/(i-1));
return 0;}
178デフォルトの名無しさん:04/09/16 23:21:21
>> 172
#include <stdio.h>
#include <math.h>

#define SIZE 1000

int main(void)
{
int i, j;
int kazu[SIZE];

for (i = 2; i < SIZE; i++) { kazu[i] = 1; }
for (i = 2; i < SIZE; i++) {
if (kazu[i]) {
for (j = 2; i * j < SIZE; j++) { kazu[i * j] = 0; }
}
}
for (i = 2; i < SIZE; i++) { if (kazu[i]) { printf("%d ", i); } }
printf("\n");
return 0;
}
179デフォルトの名無しさん:04/09/16 23:26:04
>>178
#include <math.h>
は要りません.削ってください.
180デフォルトの名無しさん:04/09/16 23:30:25
>>178
13行目と17行目の
 if ( kazu[i] )
は if ( kazu[i] = 1 ) にしなくて良いのですか?
181デフォルトの名無しさん:04/09/16 23:33:10
>>180
ハァ?
182デフォルトの名無しさん:04/09/16 23:33:37
>>180
代入しちゃいやん
183180:04/09/16 23:37:45
失礼
if ( kazu[i] = 1 ) ではなくて if ( kazu[i] == 1 ) です。
184デフォルトの名無しさん:04/09/16 23:42:13
>>183
if(kazu[i])はif(kazu[i]!=0)と同じ。
kazu[i]の値は0か1しかないからif(kazu[i])でいい。
185デフォルトの名無しさん:04/09/16 23:42:56
>>184
ありがとうございました
解決です
186デフォルトの名無しさん:04/09/16 23:46:17
>>184
はあ?
187デフォルトの名無しさん:04/09/17 00:01:50
Cを知らない>>186
188デフォルトの名無しさん:04/09/17 00:06:23
>>185
C/C++ を修めるなら、このような記法は読めて当然でないといけない。
でも自分で書くときは(bool を除いて)比較の省略はオススメできない。
ちゃんと != 0まで書いたほうがわかりやすい。
189デフォルトの名無しさん:04/09/17 00:11:30
つーか、そもそもbool(Cならbool的記法)で書くべきところだろ。
190デフォルトの名無しさん:04/09/17 00:11:41
>>188
そりゃあお前のレベルが低いだけだ
191デフォルトの名無しさん:04/09/17 00:16:16
if(kazu[i])とif(kazu[i]!=0)では
判断の数が違います。
192デフォルトの名無しさん:04/09/17 00:17:42
>>191
しかし、多くのコンパイラでは最適化されて変わらないかもしれない
193デフォルトの名無しさん:04/09/17 00:18:00
i=9+2とi=5+4+2では計算の回数が違います。
と言っているようなものだな。
くだらない。
194デフォルトの名無しさん:04/09/17 00:29:21
if( x )

if( x != 0 )
と書くのは逆に見にくくて鬱陶しいと個人的に思うのですが、そんな漏れは少数派でしょうか?
195デフォルトの名無しさん:04/09/17 00:30:49
whileの中とかな。
196デフォルトの名無しさん:04/09/17 00:30:54
>>194
ノシ
197デフォルトの名無しさん:04/09/17 00:33:50
>>194
そりゃおめぇ、括弧の内側空けるから鬱陶しいんだよ。
つーか、ifの後こそ空けろや。
198デフォルトの名無しさん:04/09/17 00:34:56
>>197
オレはお前が鬱陶しい。
199デフォルトの名無しさん:04/09/17 01:44:15
遅レスだけど >>126-134
こんな記事見つけてきた。
ttp://www.coara.or.jp/~tkuri/D/040.htm#D2003-08-17
結局よく分かってないんだけど、VC++かWindowsの仕様って事かね?
>>131 の学校ではどのOSでどのコンパイラを使ってたのか、興味あるな。
200デフォルトの名無しさん:04/09/17 13:09:00
マシンAでa=4, b=5 a+bの計算をさせ、その答えをマシンBで受けc+9を計算せよ。
ここでc=1とする。また各2台のマシンは固定IPである。

よろしくおねがいします。ネットワークプログラミング分かりません。
201デフォルトの名無しさん:04/09/17 13:10:59
ネットワークは環境依存だからOSは?
202デフォルトの名無しさん:04/09/17 14:11:04
すいません、べき乗ですけどPower(double x,double y)です
再帰じゃ答えが違ってしまうようです
x=Power(5.0,1/2);
でxに2.2360679774997896964091736687313…が入るようにしたいんです
203デフォルトの名無しさん:04/09/17 16:01:29
>>202=164
>問題2
>2つの整数のべき乗を求めるプログラムを作成しなさい。ただし、べき乗を求める部分を自作関数で作成しなさい。
問題の意味をちゃんと書いてくれ。「2つの整数のべき乗を求める」と書いているからこそ2整数n, mが入力されたら
nのm乗 を出力すればいい、と思うんじゃないのか?
204デフォルトの名無しさん:04/09/17 19:54:52
質問です。
#include <stdio.h>

void main(void)
{
static float x[5][5] = {{2, 4, 3, 7, 9},
{4, 3, 7, 9, 6},
{6, 5, 9, 4, 1},
{8, 2, 6, 3, 7},
{7, 1, 3, 5, 9}};

static float w[5][5] = {{0.2, 0.5, 0.8, 0.1, 0.6},
{0.3, 0.7, 0.8, 0.1, 0.2},
{0.9, 0.3, 0.5, 0.7, 0.4},
{0.7, 0.1, 0.3, 0.5, 0.9},
{0.4, 0.2, 0.5, 0.1, 0.7}};

int i,j;
float sum;
for(i=0; i<5; i++){
sum = 0;
for(j=0; j<5; j++){
sum = sum + x[i][j] * w[i][j];
}
printf("合計=%f\n",sum);
}
printf("合計=%f\n",sum);
}

このプログラムだと、各行の計算結果のみ出力され、5行全て加算した結果
が出力されません。5行とも加算させるにはどこを訂正すればよいのか
教えてください。お願いします。
205デフォルトの名無しさん:04/09/17 19:57:20
>>204
sumをわけろ・・・
206デフォルトの名無しさん:04/09/17 20:05:28
>>204
float sumsum;
を宣言して、
for(sumsum=0,j=0; j<5; j++){
の部分ていうふうにして、
はじめの
sumsum+=sum;
printf("合計=%f\n",sum);
にして、
最後の
printf("合計=%f\n",sumsum);
にする。
207204:04/09/18 01:51:23
#include <stdio.h>

void main(void)
{
static float x[5][5] = {{2, 4, 3, 7, 9},
{4, 3, 7, 9, 6},
{6, 5, 9, 4, 1},
{8, 2, 6, 3, 7},
{7, 1, 3, 5, 9}};

static float w[5][5] = {{0.2, 0.5, 0.8, 0.1, 0.6},
{0.3, 0.7, 0.8, 0.1, 0.2},
{0.9, 0.3, 0.5, 0.7, 0.4},
{0.7, 0.1, 0.3, 0.5, 0.9},
{0.4, 0.2, 0.5, 0.1, 0.7}};

int i,j;
float sum,sumsum;
for(i=0; i<5; i++){
sum = 0;
sumsum = 0;
for(j=0; j<5; j++){
sum = sum + x[i][j] * w[i][j];
sumsum += sum;
}
printf("合計=%f\n",sum);
}
printf("合計=%f\n",sumsum);
}

すいません、こういうことでしょうか?まだ不具合が…。
208デフォルトの名無しさん:04/09/18 01:54:13
>>207
一行づつ順に追ってみろよ
209デフォルトの名無しさん:04/09/18 02:32:41
何故 sum が j ループの外で初期化されているのか分かるか?
そしたら sumsum の初期化(と +=sum の処理)をどこで行えばいいか分かるはずだ。
210204:04/09/18 02:58:20
>>208-209
なるほど、解決しました。ありがとう。
211デフォルトの名無しさん:04/09/18 13:32:19
久しぶりにきたけど
まだ空白厨いるんだね。
212デフォルトの名無しさん:04/09/18 14:28:36
昨日からVC++勉強し始めたんですが、
>>207
の出力がどうなればいいのか正解を教えていただけないでしょうか。
よろしくお願いします。
213デフォルトの名無しさん:04/09/18 15:00:09
sumsumが毎行初期化されるのでsumsumが最初だけ初期化されるようにする
214デフォルトの名無しさん:04/09/18 15:00:59
コピペして実行した結果が答えだよ
215デフォルトの名無しさん:04/09/18 15:04:03
結果書くのめんどくさい書いてくれたら正解かどうか言う
216212:04/09/18 16:12:48
#include <stdio.h>
void main(void)
{
static float x[5][5] = {{2, 4, 3, 7, 9},
{4, 3, 7, 9, 6},
{6, 5, 9, 4, 1},
{8, 2, 6, 3, 7},
{7, 1, 3, 5, 9}};

static float w[5][5] = {{0.2, 0.5, 0.8, 0.1, 0.6},
{0.3, 0.7, 0.8, 0.1, 0.2},
{0.9, 0.3, 0.5, 0.7, 0.4},
{0.7, 0.1, 0.3, 0.5, 0.9},
{0.4, 0.2, 0.5, 0.1, 0.7}};

int i,j;
float sum,sumsum;
sumsum=0;
for(i=0; i<5; i++){
sum=0;
for(j=0; j<5; j++){
sum = sum + x[i][j] * w[i][j];
}
sumsum += sum;
printf("合計=%f\n",sum);
}
printf("合計=%f\n",sumsum);
}
212です。sumsumは、合計=63.200001になりました。
合ってますでしょうか?よろしくお願いします。
217デフォルトの名無しさん:04/09/18 16:19:52
それでもいいけどsumsumが4回もでるからprintfも出しちゃったほうがいいんじゃない?
218デフォルトの名無しさん:04/09/18 16:21:21
sumsumは4回でないと思うよ
219デフォルトの名無しさん:04/09/18 16:32:58
あ、ほんとだごめん正解です。
220212:04/09/18 16:38:47
sumsumも足して、表示、足して、表示
させるんですね。
解決できました。
ありがとうございました。
221デフォルトの名無しさん:04/09/18 16:53:52
あ、書いてるときにスレ伸びてました。
正解だったということ了解しました。
これからも、ちょっとずつ通わせていただきます。
では。
222デフォルトの名無しさん:04/09/18 22:48:55
初期化処理(環境設定ファイル読み込み処理)
環境設定処理を読み込み、環境設定情報を環境設定情報管理テーブルに
保持するとはどーゆーことですか?
プログラムを作る実習で初期化設定のモジュール作成
の担当になったのですが、何を作ればいいのかわからず、
困っています。
223デフォルトの名無しさん:04/09/18 22:51:00
>>222
あの説明でわからなきゃどこで聞いてもいっしょだろ
224デフォルトの名無しさん:04/09/18 22:52:22
>>222
3ヶ所渡り歩いてきたんだね。
だんだん可哀想になってきたよ
225デフォルトの名無しさん:04/09/18 22:53:08
みなさんよくご存知で…

どーもすいません。
226デフォルトの名無しさん:04/09/18 22:54:30
環境設定ファイルってiniファイルのことその辺のやつみれ
管理テーブルってのはその情報を瞬時に利用できるようなもの
あとえばwidthっていう値がほしいときに簡単に取得できる仕組みを作れってこった
まあがんがれ
227デフォルトの名無しさん:04/09/18 22:55:36
二週間C言語の勉強を講義で習って、
実習で実際のプログラムを作るってそんなの
まったくの未経験のやつができるもんなのですか?
228デフォルトの名無しさん:04/09/18 22:57:27
>>226
Linuxだっていう話だよ
229デフォルトの名無しさん:04/09/18 22:59:30
まぁやる気しだいでできるやつはできますよね…
230デフォルトの名無しさん:04/09/18 23:01:10
>>227
できると思う。
学生が大学の講義で普通は半年でする内容だけど、
せいぜい週に1回の講義しかないわけでしょ?
15回*1〜2時間ほどしかしないわけだね。
2週間は長いねぇ。
231デフォルトの名無しさん:04/09/18 23:03:24
実際はCは10日なんですが、変わらないですよね

何回読んでも仕様の意味が理解できないし、、、
232デフォルトの名無しさん:04/09/18 23:19:30
何かこのスレ寒いな
233デフォルトの名無しさん:04/09/18 23:35:13
少なくとも,仕様を理解できないお前さんが要約した内容では,誰も作成不可能。

>・問題はしっかりと解いてもらう方にわかりやすいように
> 問題文などの省きはやめ、全文を書きましょう。
234デフォルトの名無しさん:04/09/19 00:11:54
ファイルから文字列(複数行ありマルチバイト文字含み)を読み込んで
それを1行づつ出力するプログラムを作りたいです
1行づつと言うのは 1行をひとくくりにして出力していくと言う意味です
それは もちろんその1行づつをループなどでまわして 全体行を出力します

環境は CUIでコンパイラはgccを使います
すいませんが よろしくお願いします
235デフォルトの名無しさん:04/09/19 00:12:40
ちょっといきなりでは時間的に高度な内容ですね、実際の現場だったら
できないと大変なさわぎなのでOJTを意識してるんでしょうね
まぁ実際新卒はなんもできないですけどね
236デフォルトの名無しさん:04/09/19 00:12:52
C言語って、簡単なの?
237デフォルトの名無しさん:04/09/19 00:15:40
頑張れる人にとっては簡単だよ
238234:04/09/19 00:29:22
ちなみに 私はプログラムをやり始めたばかりで良く分からないで
以下のように書いたのですが コンパイルはとおったのに
実行して ファイル名をいれてみるとセグメンテーションフォルトといわれてしまいました
セグメンテーションフォルトと言う意味も良く分からないです
以下のプログラムが なぜ動かないか指摘などもして頂けるとありがたいです すいませんがよろしくお願いします

#include<stdio.h>
#include<stdlib.h>
#define STRING_SIZE 450
int main(void)
{
        int val; int sum = 0; int cnt = 0; char FileName[30]; char string[STRING_SIZE]; FILE *fp;
        printf("Inpu Open FIle Name  >>>");
        scanf("%s", FileName);
        if( (fp = fopen( FileName, "r" ) ) == NULL) {
                printf( "%s Is  Not Open File ", FileName);
                exit( EXIT_FAILURE);
        }
        while( fgets( string, STRING_SIZE, fp) ) {
                sscanf( string, "%s", &val);
                printf("%s",val);
        }

        fclose( fp);
        return EXIT_SUCCESS;
}
239234:04/09/19 00:30:31
長いと言われたので 複数行をくっつけて 読みにくくなってしまいました
すいませんが よろしくお願いします
240デフォルトの名無しさん:04/09/19 00:34:55
sscanf( string, "%s", &val);
printf("%s",val);
241デフォルトの名無しさん:04/09/19 00:37:23
>>239
sscanf( string, "%s", &val);
いらない
printf("%s", string);
一行でいいでしょ。
242デフォルトの名無しさん:04/09/19 00:45:55
セグメンテーションフォルトってのは
windowsでいうアプリケーションエラー
誠に申し訳ありませんっていってるやつw
243ぼるじょあん ◆Md0vtgg3GE :04/09/19 00:46:42
|
|3 ・ ) エェー ・・・ボルスレナノニ ボルジョアガイナイノハナゼダロウ・・・・・
|⊂
244デフォルトの名無しさん:04/09/19 00:48:59
ぶるじょあの中の人も大変だな
245234:04/09/19 00:50:17
>>240,241さん
どうも ありがとうございました
ちゃんと 動きました!!

良く考えてみると intにいれるのがおかしいですね
これは 始めリストから計算をするのを前に書いたので それを単にprintfするようにしただけだったので
良く考えなかったのが悪いようです  すいません ありがとうございました

もう一度質問してしまうのですが
では 上記のようにstringからsscanfでとってprintfするようにするには どのようにかえたらいいんですかね?
始めの質問とは意図違いになってしまいますが 教えて頂けるとありがたいです
すいませんが よろしくお願いします
246234:04/09/19 00:54:55
>>242
ありがとうございます
アプリケーションエラー・・
あんまり Windowsは使ってませんし Windowsでプログラム書いたことが無いのでわかんないです・・
ようするに プログラムがおかしいので止めました みたいな感じでいいのですかねw
どうも ありがとうございました
247デフォルトの名無しさん:04/09/19 00:56:32
マカー臭がする
248デフォルトの名無しさん:04/09/19 00:56:33
正確には許可してないメモリにアクセスしようとして
抹殺されたってことです
249デフォルトの名無しさん:04/09/19 03:32:08
>>245
あんたがやりたいことの場合,
sscanfじゃなく,strcpy, strncpy,もしかしたらstrdupも?,が模範解答。
250デフォルトの名無しさん:04/09/19 03:53:12
>>234
#include <string>
#include <fstream>
#include <iostream>

int main()
{
    std::cout << "input file name:" << std::flush;
    std::string filename;
    std::cin >> filename;
    
    std::ifstream dat(filename.c_str());
    if (dat)
    {
        std::string str;
        while(getline(dat, str)) std::cout << str << std::endl;
        return 0;
    }
    else
    {
        std::cout << "file open error!" << std::flush;
        return 1;
    }
}
251234:04/09/19 04:55:03
レス遅くなってしまい申し訳ありません
私はMacユーザでもないですねw 触ったこと無いですしww
>>248
許可していないメモリ・・・  よくわからないです・・
>>249
そうですね strcpyなら そのままでいけますねぇw
後の2つは知らない関数です・・
>>250
・・・
全く持って分かんないです…
インクルードファイルさえ何か分かんないですし 中身は全く分かんないし…

みなさん 本当にどうもありがとうございました
252デフォルトの名無しさん:04/09/19 05:04:40
>>251
Cしか知らないのに何も書かなかった喪前も悪い
253デフォルトの名無しさん:04/09/19 10:22:59
>>251
>許可していないメモリ・・・ よくわからないです・・
どこでも読み書きできたらセキュリティがなりたたんだろうが

>後の2つは知らない関数です・・
調べろ

>全く持って分かんないです…
>インクルードファイルさえ何か分かんないですし 中身は全く分かんないし
C++について調べろ
254デフォルトの名無しさん:04/09/19 11:06:51
あれ? 久しぶりにこのスレに来たんだけど,
どうやってぼるじょあになればいいんだっけ?
255デフォルトの名無しさん:04/09/19 11:49:36
>>251
http://www.linux.or.jp/JM/ の 『man on WWW』 のセクション 2,3 で検索すると、
大概の C の関数は載っているので、調べてみる事をおすすめする。
256ぼるじょあ ◆yBEncckFOU :04/09/19 13:51:21
ぼるじょあ#ぶるじょあ
で変身できるYO!
257ぼるじょあん ◆Md0vtgg3GE :04/09/19 14:01:41
|
|3 ・ ) コソーリ・・・
|⊂
258ぼるじょあ ◆H6wikgcXIU :04/09/19 14:53:55
(・3・)
259ぼるじょあ ◆yBEncckFOU :04/09/19 14:57:16
ヘンシンテスツ.それにしても宿題が少ない.
260ぼるじょあ ◆yBEncckFOU :04/09/19 14:57:30
(・3・)エェー
261ぼるじょあん ◆Md0vtgg3GE :04/09/19 15:23:51
|
|3 ・ ) < エェー ヴィジュアルスタジオ入れたら沢山質問しに来るYO
|⊂
262ぼるじょあ ◆yBEncckFOU :04/09/19 17:34:35
ぼるじょあ#ぶるじょあ#ぶるじょあ#ぶるじょあ#ぶるじょあ#ぶるじょあ
のように何回続けても良いYO!
263デフォルトの名無しさん:04/09/19 17:44:11
#include<iostream>
#include<iomanip>
using namespace std;

void PromptRead(int&,int&,float&);
void CalcTotal(int,int,float&);
void Display(int,int,float,float);
const char SIGN = '$';
const char SPACE = ' ';
int main ()
{
int invNum,
qNum;
float uPri,
tPri;

PromptRead(invNum,qNum,uPri);
CalcTotal(qNum,uPri,tPri);
Display(invNum,qNum,uPri,tPri);

return 0;
}
264デフォルトの名無しさん:04/09/19 17:44:52
void PromptRead(int& invNum,int& qNum,float& uPri)
{
cout << "Enter invoice number ==>";
cin >> invNum;
cout << "Enter quantity ordered ==>";
cin >> qNum;
cout << "Enter unitprice ==>";
cin >> uPri;
}

void CalcTotal(int qNum,int uPri,float& tPri)
{
tPri = qNum * uPri;
}

void Display(int invNum,int qNum,float uPri,float tPri)
{
system("cls");
cout<< "Invoice Number:" <<invNum<<endl;
cout<< "Quantity Number:" <<qNum<<endl;
cout<< "Unit Price:" << SIGN << setprecision(2) << fixed << uPri <<endl;
cout<< "Your Total Price is"<<SPACE<<SIGN<< setprecision(2) << fixed <<tPri<<endl;
}
上の続きです。
えーっと、個数と個数値を計算する単純なプログラムなのですが
自分でやってみてわからないところができたので質問させてください。
uPriかqNumに小数点入れても整数として計算されちゃいます。
どうすればいいでしょうか?
265デフォルトの名無しさん:04/09/19 17:54:33
>>264
intに小数を入れてるからだろ
266デフォルトの名無しさん:04/09/19 17:55:02
すげぇなぁ、関数じゃなくてサブルーチンだね。
CalcTotal()の引き数がintだから実数には成り得ない。
267デフォルトの名無しさん:04/09/19 18:16:02
あ、簡単なところ見落としてました・・・。すいません><
268デフォルトの名無しさん:04/09/20 12:09:54
薬学実験のデータ処理をお願いします。ヒル係数を求めてください。
添付ファイルの「Aの変化」の最後の値の0.1倍と0.9倍の値があればその値
に対応する「入力濃度」の値をそれぞれ(0.1倍の時E10,0.9倍の時E90)用い、
y=log(E90/E10)/log81を計算せよ。yがヒル係数です。

また、該当する値が無ければ前後の値(0.1倍の場合は0.062430、0.091759となります)
とそれに対応する入力濃度の値(0.000010、0.000014)を取得します。
x,y平面で表現すると(E10x1.E10y1)=(0.000010,0.062430),
(E10x2,E10y2)=(0.000014,0.091759)です。ここでE10x1,E10x2=入力濃度、
E10y1,E10y2=Aの変化とします。この2点を通る直線と「Aの変化」の最後の値の0.1倍
(0.0735590=y座標になります)の直線との交点の値をE10とし、同様に0.9倍に該当する
値が無い場合も前後の値とそれに対応する入力濃度の値との2点を通る直線と0.9倍の値
(0.662031)との交点をE90とし、y=log(E90/E10)/log81を計算せよ。

テキストファイル(result.txt)を読み込むプログラムだとありがたいです。
よろしくお願いします。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1095649550_1/result.txt


http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1095649550
269デフォルトの名無しさん:04/09/20 12:53:00
宿題っていうか仕事依頼だな。
270デフォルトの名無しさん:04/09/20 13:12:44
>>268
エクセルで作れよ
エクセルがなければopen officeとか
271デフォルトの名無しさん:04/09/20 14:11:52
あれ? 仕事でいいんぢゃね? >宿題
勉強するのが仕事って言うであろう?
272デフォルトの名無しさん:04/09/20 14:31:38
いいわけねえだよ
273デフォルトの名無しさん:04/09/20 14:57:51
宿題に飢えてるので仕事でもなんでもいいだよ
274デフォルトの名無しさん:04/09/20 15:49:40
いくら?
275デフォルトの名無しさん:04/09/20 16:26:32
>>274
ハーイ!
276デフォルトの名無しさん:04/09/20 16:50:15
酢飯食え。ばかいくら。
277デフォルトの名無しさん:04/09/20 17:04:45
>>276
ハーイ?
278デフォルトの名無しさん:04/09/20 20:36:36
反応がないのでもう一度お願いします。
テキストファイル(a:\\a.txtとします)が以下のようになっています。

;アドレス:データ
009=0023
00a=00ff
00b=0e25
00c=3260
以下同じような感じで続く。

アドレスは16進表記で3桁です。データは16進表記で4桁です。
これを読み込んで、アドレスの示す配列の番地にデータを格納する
(たとえばアドレス00cなら配列buf[12]に0x3260と格納)プログラム
なんですが、お願いします。言語はCです。
279デフォルトの名無しさん:04/09/20 21:11:10
>>278
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
    FILE *fp;
    char s[100];
    char adr[4] = {0}, data[5] = {0};
    int buf[1000], ia, id;
    if((fp = fopen("a.txt", "r")) == NULL) exit(1);
    while(fgets(s, 100, fp) != NULL){
        strncpy(adr, s, 3);
        strncpy(data, s + 4, 4);
        sscanf(adr, "%x", &ia);
        sscanf(data, "%x", &id);
        buf[ia] = id;
    }
    return 0;
}
280デフォルトの名無しさん:04/09/20 21:26:35
sscanf(s, "%x=%x", &ia, &ib);
でいいだろうに。

つーか、桁数を制限するならちゃんと'='の位置を確認するべき。
それをサボるなら一旦adrやdataにコピーする必要はない。

それから、fgets()の第2パラメータはsizeof bufにしておく方が無難。
#あとでsのサイズを100以外にするときに修正漏れが起きる可能性があるから。
281279:04/09/20 21:39:03
>>280
sscanf(s, "%x=%x", &ia, &ib);
目からうろこです。
精進いたします。
282デフォルトの名無しさん:04/09/20 21:40:54
馬鹿でも回答者に回れるのが2chの神髄だしな
283ぼるじょあ ◆yBEncckFOU :04/09/20 21:54:22
284デフォルトの名無しさん:04/09/20 22:14:51
テトリスを作れ
285デフォルトの名無しさん:04/09/20 22:16:01
>>284
だまれ基地外
286デフォルトの名無しさん:04/09/20 22:30:28
M-x tetris
287デフォルトの名無しさん:04/09/21 03:21:35
大学の課題でわからないので、代わりにお願いします。
課題の内容は、fstream.hのファイルの書き込み読み込みをするっていうのと、
双方向リスト構造で、クラスを使用して作れ、というだけで、特にコレを作れっていうのはありません。

で、自分としては初めにファイルが有無の判定をして、あれば、データをリストに代入していき、
なければ、そのまま次に進む。で、次はデータを入力で、char型とint型をデータを入力をするっていうのがいいです。
そのデータをファイルから代入して作ったリストの後ろに繋ぎます。次は、それらのデータをファイルに書き込みます。
これらの作業をひとつひとつ別々の関数でさせたいです。並び替えも出来たらお願いします。

自分の課題なんですが、お願いします!!
288デフォルトの名無しさん:04/09/21 05:29:05
>>287
> fstream.hのファイルの書き込み読み込みをする
ヘッダファイルに書き込みするの?

> ファイルが有無の判定
ファイル「が」有無って何?

> データをリストに代入していき、
そのファイルがどういう構造をしているのか分からないと代入も
何もないんだけど?

質問は日本語で書こうね。
289デフォルトの名無しさん:04/09/21 06:39:44
失礼しましたー
えっと、ヘッダに書き込みではなく、fstream.hをインクルードしたときに使える、ファイルの書き込み
読み込みが出来る関数を使って、書き読み込みして欲しいっていう事です。

ファイル”が”ではなく、ファイルの有無の判定です。ファイルがあれば、ファイルの中身のデータをリストの代入。

例えば、Business_workというクラスで、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1095716344&res=1
てな感じです。

という風にリストに代入して欲しいです。ですが、↑にソースがあってるかは自分もわかりません。
こんな風に書いて欲しいっていう事なので、他に書き方があれば、それでお願いします。

かなり読みにくい文で申し訳ありませんでした。
お願いします。
290デフォルトの名無しさん:04/09/21 06:42:51
なんだか知らないけどここにウィルス置いときますね
ttp://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
291デフォルトの名無しさん:04/09/21 07:06:58
>>289
ファイルの中身はどういう風になっている?
292289:04/09/21 07:31:07
{
int n;
ifstream Jin;
ofstream Jout;
Business_work* pFirst = this->pNext;
Jin.open(FILE_NAME, ios::nocreate);
if(Jin.is_open() == 0)
n = 0;
else
{
Jin >> n;
Jin.close();
}
Jout.open(FILE_NAME, ios::ate);
Jout.seekp(0);
Jout << n + 1 << endl;
Jout.seekp(0, ios::end);
for(; pFirst != this; pFirst = pFirst->pNext)
{
cout << "No.2" << endl;
Jout << pFirst->pName << endl;
Jout << pFirst->Monthly_salary << endl;
Jout << pFirst->Time_salary << endl;
Jout << pFirst->Service_days << endl;
Jout << pFirst->Holiday_days << endl;
Jout << pFirst->Time_Service << endl;
}
Jout.close();
return;
}
こんな感じで書き込みをします。pNameはchar型で、それ以外はint型でお願いします。
293289:04/09/21 07:41:19
すみません。訂正です。char型とint型のデータ全てを一つの1人と考えて、
ファイルの最初には必ず人数を入れます。で、ファイルの読み込みのときに、その人数分のデータを読み込むっていうやつです。
他に良い方法があれば、その方法でお願いします。
294デフォルトの名無しさん:04/09/21 09:02:48
じゃ、ここに最新版ウィルス置いときますね
ttp://pukapuka.s1.x-beat.com/img-box/img20040921084521.lzh
295デフォルトの名無しさん:04/09/21 11:19:59
>>294
どう使うの?
% ./dotmaster255.exe
zsh: 実行形式エラー: ./dotmaster255.exe
296デフォルトの名無しさん:04/09/21 11:25:55
>>295
あーあ、やっちまった
297デフォルトの名無しさん:04/09/21 16:58:39
>>295
wine入れろ
298デフォルトの名無しさん:04/09/22 09:00:57
大学の課題なんですが、vector<string>の指定された要素の後に
新しいstringを挿入する、というのをやるのはどうすればいいのでしょか?
299デフォルトの名無しさん:04/09/22 10:53:38
>>298
insert
300デフォルトの名無しさん:04/09/22 12:10:55
大学の課題で、深さが増すにつれてノードから出る線が一本ずつ減っていくようなツリー構造のプログラムを作っているのですがうまくいきません。
深さは0からSまでの範囲で、深さ0から出る線の数はS本、深さSのときは0本です。
どなたか手伝っていただけないでしょうか。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=309
301デフォルトの名無しさん:04/09/22 12:35:59
>>300
イメージとしてはこんな感じ
実際にはエラー処理とかもしてね
void make_tree(Node* node,int n)
{
 for(i=0;i<n;i++){
  add_node(node,make_tree(make_node(),n-1));
 }
}
302デフォルトの名無しさん:04/09/22 12:38:05
t=6、s=-0.6、x=0.1*tでa=x+sを求めたいんだけど、
double t=6;
double s=-0.6;
double x=0.1*t;
double a=x+s;
だと、aが0にならないのは何故ですか?
ちゃんとした計算結果が求まるように教えてください。
303デフォルトの名無しさん:04/09/22 12:41:01
>>302
まず0.1や0.6を2進数で表現できるか紙に書いて確かめてみるといいです
304デフォルトの名無しさん:04/09/22 12:43:07
>>300
start は NULLポインタ なので
mk_tree(start,S);
の前に
start = (NET*) malloc(sizeof(NET));
とか
305302:04/09/22 12:49:45
>>303
2進数で表現できないとどうなるんですか?
306デフォルトの名無しさん:04/09/22 12:57:14
っゆーか0になるy
307デフォルトの名無しさん:04/09/22 13:00:02
>>302
0.1と0.6は2進表現にすると循環小数になってるから
コンピュータ内部では0.1、0.6ではなくそれらに近い数値であらわされている
だから掛けても0.6と0.1*6は一致しない
308デフォルトの名無しさん:04/09/22 13:00:22
おれも0.000000になる
2進数で表現しきれない部分は、誤差となってあらわれます。
309302:04/09/22 13:05:23
ということは、0にはできないんですね。
310デフォルトの名無しさん:04/09/22 13:30:38
.00011001100110011001100110011001 : 0.1
  110  110
   110  110
-------------------------
.10011001 : 0.6
どこで桁を切り捨てるかによって値は変わる
0になったりならなかったり
311デフォルトの名無しさん:04/09/22 14:53:36
クイックソートより早い検索ロジックを
C++で考えなければならないのですが、
私には思いつきません。
教えていただけませんか?
312デフォルトの名無しさん:04/09/22 14:56:28
クイックソートは検索ロジックではありません
313デフォルトの名無しさん:04/09/22 15:08:50
>>311
ソートする数によってアルゴリズム換えりゃいいじゃん
314デフォルトの名無しさん:04/09/22 15:24:02
>>311
ソート対象がそんな広くない整数だったら分布数えソートとか逆写像ソートとかがO(n)で済む
315デフォルトの名無しさん:04/09/22 15:29:30
ソートでいいのか?
3分割クイックソートとかもよいぞ
316デフォルトの名無しさん:04/09/22 16:37:14
>>315
つくってつくってーだでぃー
317デフォルトの名無しさん:04/09/22 16:45:26
>>311
入力に条件がなければ クイックソートが最も速いソートの一つ.
318311:04/09/22 17:07:24
ちなみに、クイックソートより早いソートなんて
世の中に存在するんですか?
私にはあるとは思えません。
319デフォルトの名無しさん:04/09/22 17:17:52
>>318
クイックソートなんて遅い方です
320デフォルトの名無しさん:04/09/22 17:35:05
>>318
問題文はどうなってるの?

O(nlogn) より良いソートなら必ず条件が必要.
321311:04/09/22 17:55:06
ランダムな整数型のデータが特定個集まった配列があります。
これを降順にした配列にする場合のプログラムを書きなさい。
但し、クイックソートよりも高速でなければいけません。

授業で↑の関数を作って来いと言ってましたが、
ありえないでしょう(w
クイックソートは最速です。
322デフォルトの名無しさん:04/09/22 17:56:52
>>314さんが言ってる分布数えソートなら一瞬だな
323311:04/09/22 18:05:06
分布数えソートって知らなくて調べたんですが、
maxとminが必要なんじゃないですか?
それ調べてる間に、最強クイックに負けませんか?
324デフォルトの名無しさん:04/09/22 18:10:08
調べてる間にっていうかそれでおわるんだけどソートが
あとえば上位8ビット部分で分布数えしてあとクイックにしちゃうとかって手もある
もっと複雑にしてもっと高速にすることもできる
325デフォルトの名無しさん:04/09/22 18:11:54
radix sort
基数ソート
で検索してみな
326デフォルトの名無しさん:04/09/22 18:11:55
>>321
クイック君は早い時もあるけど、逆に遅い時もあるよ。
データの並び次第
327デフォルトの名無しさん:04/09/22 18:12:35
クイックソートを並列化したら速くなりませんか?
328デフォルトの名無しさん:04/09/22 18:14:10
radixソートは分布数えソートを各桁に拡張しただけじゃなかったか?
329デフォルトの名無しさん:04/09/22 18:17:19
3分割クイックソートっていうのはマイナーだけどけっこう有効らしい
普通のクイックソートは大小にソートを再起的に分割していくんだけ
ど、これを大小と同じ部分の3区画にするだけで比較回数が激減す
るらしい
330311:04/09/22 18:37:33
例.
12, 34, 45, 36, 64, 32
1の位に着目してソート
12, 32, 34, 64, 45, 36
10の位に着目してソート
12, 32, 34, 36, 45, 64
(3* のパターンの数は3つあるが,
1の位についてはすでにソートしてある)

↑ってのをネットで見つけたんですが、
本当に早いの?って疑問です。
ソートの比較を行う場合に
10000回ぐらい回して
timeで計測するのはありですか?
実際にやってみたいんですが。
331311:04/09/22 18:38:14
すんません。
ラディックスソートです。
332デフォルトの名無しさん:04/09/22 18:41:45
数十程度だとシェルソートが早いです。
数千程度だとクイックソートが早いです。
数万程度だとラディックスが早いです。
333デフォルトの名無しさん:04/09/22 19:20:23
十分な記憶容量があれば分布数えソートが最強です
334デフォルトの名無しさん:04/09/22 19:51:47
335デフォルトの名無しさん:04/09/22 20:48:15
ここに完全版ウィルス置いときますから好きに使って下さいね^^
http://pukapuka.s1.x-beat.com/img-box/img20040922204002.lzh
336デフォルトの名無しさん:04/09/22 22:59:50
ビンソートが良いであろう
337デフォルトの名無しさん:04/09/22 23:22:35
こちらに移動して質問します

宿題に困っています。
お分かりの方、いらっしゃいましたら、よろしくお願いします。

1.iniファイルで指定されたフォルダにあるファイル名(例:abbccc)を取得
2.ファイル名を分解(例:a bb ccc)
3.msdeの行にadoを使ってインサートする(例:a bb cccとフィールドを分けて)
338デフォルトの名無しさん:04/09/23 00:11:30
>>337
前回までの課題や授業内容に課題が依存してる。
その上,ファイル名分割のデリミタもわけわからん。
無理。
339デフォルトの名無しさん:04/09/23 15:49:33
>>338
病欠していて、授業に出れませんでした。
ノート借りれる友達もいません・・・

ファイル名分割のデリミタは
iniファイル等で設定した文字数ごとに分割するです。

大変お手数ですが、よろしくお願いします。
340デフォルトの名無しさん:04/09/23 15:54:10
そのまま落第しろ
以上。
341デフォルトの名無しさん:04/09/23 17:46:50
うわぁ…もうなんか本当にどうしようもないって感じだな……
落としたくなかったら教授に土下座する覚悟で突撃してみたらどうだ
342デフォルトの名無しさん:04/09/23 17:48:32
>>339
もう一度落ち着いて、自分が書いた文で、どういうことをしたいのかが正確に
伝わるかどうかを客観的に見直してみてください。
343デフォルトの名無しさん:04/09/23 18:36:31
Cの課題です。
1.xyz実数空間で与えられた4つの頂点で構成される三角錐の体積を求めるプログラムを作成。

2.xyz実数空間で与えられた複数の頂点の重心を求めるプログラムを線形リストを用いて作成。

お願いします。
344デフォルトの名無しさん:04/09/23 18:41:11
そりは普通に数学の問題だろ
345デフォルトの名無しさん:04/09/23 19:38:03
>>332
STLのsortとかは、基本的にはクイックソートなんだけど、
1. ピボットの選び方は配列の先頭・真ん中・末尾の3つの値の中央値
2. 再帰が深くなりすぎたときに挿入ソートに切り替える
3. 配列の長さが短くなったら(だいたい32〜64くらい)挿入ソートに切り替える
というロジックでやってる。

これで要素数が数十程度の場合でもシェルソートに負けることはほぼなくなるし、
最悪の場合でもO(n^2)になることはほとんどない。
346デフォルトの名無しさん:04/09/23 19:42:21
>>343
三角錐の4つ頂点のベクトルをそれぞれ a, b, c, d として、
p = b - a, q = c - a, r = d - a とすると、
体積= (1/6)|p q r| ← p, q, r を並べた行列の行列式ね

N 個のベクトル a_i (i = 1, 2, .... , N) があったとして、
重心= (1/N) 農{i=1}^N (a_i)
347デフォルトの名無しさん:04/09/23 20:31:21
>>346
ありがとうございます。それでなんとかやってみます。
348339:04/09/23 21:55:32
ファイル分割は
20040923_aaa
であれば、2004 09 23 aaaに分割します。

それをデータベースの1行に登録します。
(フォルダに幾つかファイルがあって、1ファイルでデータベースの1行に登録します)

わかりにくい文章で、すみません。
349デフォルトの名無しさん:04/09/23 23:49:10
>>339
ファイル名分割の根拠が不明。「4文字・2文字・2文字・_・残り」で分割すんの?
フィールドって何?
MSDEに登録する手段は?そもそもadoって何よ?

…仮にプログラムを作ってくれる人がいるとして、その手元にMSDEがあることを前提にするなよ。
350デフォルトの名無しさん:04/09/23 23:53:12
ファイルを読み込んで、文字とキーワード(unit 30)
のような文字列をfgetsで読み込んで返した文字列の中からスペースの
後のキーワードを見つける方法を教えてください。
351デフォルトの名無しさん:04/09/24 00:19:32
>>350
FILE * fp = fopen("theFile", "r");
char buf[EnoughSize];
fgets(buf, sizeof(buf), fp);
char keyWord[EnoughSize];
sscanf(buf, "%*s%s", keyWord);
352デフォルトの名無しさん:04/09/24 00:24:43
sscanfですか!

ありがとうございます!
353デフォルトの名無しさん:04/09/24 09:22:36
nを入力し,フィボナッチ数列の値 F(n)を計算し表示する再帰プログラムfib.cを作成せよ.
フィボナッチ数列
F(n)=F(n-1)+F(n-2)
F(0)=2, F(1)=3
354デフォルトの名無しさん:04/09/24 09:23:23
↑おねがいします。
355デフォルトの名無しさん:04/09/24 09:26:59
ぐぐれ
356デフォルトの名無しさん:04/09/24 09:41:55
int fib(int n){
if(n<3) return 1;
else return fib(n-1)+fib(n-2);
}
357デフォルトの名無しさん:04/09/24 09:44:41
#include <iostream>
int fib( int n ){
    if( n <= 0 )
    return 2;
    if( n == 1 )
        return 3;
    return fib( n - 1 ) + fib( n - 2 );
}
int main(){
    int n;
    while( std::cout << "n=", std::cin >> n )
        std::cout << "fib(" << n << ")=" << fib( n ) << std::endl;
    return 0;
}
358デフォルトの名無しさん:04/09/24 09:53:33
↑f(2) = 5
359デフォルトの名無しさん:04/09/24 09:59:35
int fib(int n)
{
return n==0 ? 2 : ( n==1 ? 3 : fib(n-1)+fib(n-2) );
}
360デフォルトの名無しさん:04/09/24 10:01:17
再帰を使う悪しき例だな
n=50でもう重たい
361デフォルトの名無しさん:04/09/24 10:03:49
ループ展開きぼんぬ
362デフォルトの名無しさん:04/09/24 10:54:29
>>353 をテンプレートでやってみたんだけど、ちょっと不思議なことが。

template<int N> struct Fib { enum { value = Fib<N-1>::value + Fib<N-2>::value }; };
template<> struct Fib<0> { enum { value = 2 }; };
template<> struct Fib<1> { enum { value = 3 }; };

int fibfunc(int n) { return n<=0 ? 2 : ( n==1 ? 3 : fibfunc(n-1)+fibfunc(n-2) ); }

int main(int argc, char* argv[]) {
const intn = 40;
printf("%d\n", Fib<n>().value);
printf("%d\n", fibfunc(n));
return 0;
}

VC++6.0SP6 Win2k
これをビルド(Releaseモードでリビルド)するのは1秒もかからないのに、fibfunc関数の結果が表示されるは3〜4秒かかりました。
結果は両方とも同じ値でした。
計算をコンパイルタイムにやる方が速いのは何故ですか?
363デフォルトの名無しさん:04/09/24 11:12:04
>>353の問題ですが。
scanfを使いたいのですが。
364デフォルトの名無しさん:04/09/24 11:33:41
>>363
お前は考える頭がないのか?
365デフォルトの名無しさん:04/09/24 11:37:31
夏休み明けで全然頭が働きません。
どうか助けてください。
366デフォルトの名無しさん:04/09/24 11:50:08
>>362
当たり前だろ。実行時に計算量が多い方が遅いに決まってる。
頼むからネタと言ってくれ・・・・・
367デフォルトの名無しさん:04/09/24 11:55:02
>>366
おいおい。よく読め。
368デフォルトの名無しさん:04/09/24 13:30:09
>>367
あーそういう意味か。失礼した。
要するにコンパイル時の方が評価が速いって事ね。
Fib<40>()、Fib<39>()・・・・Fib<2>()の一時オブジェクトがコンパイル時に
内部で生成され、一度生成されたら次回の使用時に再計算せずにその
一時オブジェクトの値をそのまま使ってるからだろ。

fibfunc()でも内部にstaticの配列を持っておき、一度でも評価されたnについ
ての関数の値をストアして行き、次回から同じnで呼ばれたら配列から値を
返せば当然速くなる。
369デフォルトの名無しさん:04/09/24 14:18:35
>>362
テンプレートの方は最適化によってコンパイル時に即値に展開されている可能性がある。
370デフォルトの名無しさん:04/09/24 14:20:11
>>369
おいおい。よく読め。
371デフォルトの名無しさん:04/09/24 14:27:39
ワロツァw
372362:04/09/24 14:27:47
>>368
ああなるほど。

std::map<int, int>m;
int fib(int n) {
std::map<int, int>::const_iteratorit = m.find(n);
return it != m.end() ? it->second : m.insert(std::pair<int, int>(n, fib(n-1) + fib(n-2))).first->second;
}

int main(int argc, char* argv[]) {
const int n = 40;
m.insert(std::pair<int, int>(0, 2));
m.insert(std::pair<int, int>(1, 3));
printf("%d\n", fib(n));
return 0;
}

としたら劇的に速くなりました。
373デフォルトの名無しさん:04/09/24 14:43:04
>>372
しかしこの方法でもアッカーマン関数は重いんだよねえ・・・・・
果てしない再帰関数ですよあれは。
374デフォルトの名無しさん:04/09/25 15:50:22
入力された整数を16進表記に変換し、それをASCIIコードで出力しなさい

(例)
入力←123
出力→37 42
375 ◆FIcNi4f8js :04/09/25 15:58:31
int a = 123;
char h = a >> 4;
char l = a & 0x0f;
printf("%d %d\n", h, l);
376374:04/09/25 16:12:46
>>375
出力が 7 11
になってしまいます・・・
377デフォルトの名無しさん:04/09/25 16:17:52
#include <stdio.h>
#include <string.h>
int main()
{
    unsigned int num;
    unsigned char s[sizeof(unsigned int)*2 + 1];
    int i;

    scanf("%u", &num);
    sprintf(s, "%X", num);
    for(i = 0; s[i] != '\0'; i++) printf("%2X ", s[i]);
    printf("\n");
    return 0;
}
378374:04/09/25 16:23:34
>>377
ありがとうございました m(_  _)m
379デフォルトの名無しさん:04/09/25 21:05:38
合計を求めるところの関数を再帰関数にしろという問題です。
お願いします。ペコリ
#include <stdio.h>
int main(void)
{
int m,n,s;
scanf("%d",&m);
scanf("%d",&n);
s=gou(m,n);
printf("合計は%d\n",s);

return 0;
}

int gou(int m,int n)
{
int i,s=0;
for(i=m;i<=n;i++){
s=s+i;}
return s;
}
380379:04/09/25 21:13:22
どうも、お世話になります。
もう1問あったのでお願いします。ペコリ
九九の表を2次元配列を利用して表示させなさい。(だそうです。
381デフォルトの名無しさん:04/09/25 21:16:51
int gou(int m,int n)
{
return m <= n ? m + gou(m+1, n) : 0;
}

テストしてないから微妙
382379:04/09/25 21:28:01
>>381様ありがとうございます。
380の問題もやっていただければ光栄なのですが。。。
お願いします。ペコリ
383デフォルトの名無しさん:04/09/25 21:34:49
for(i=0; i<9; i++){
for(j=0; j<9; j++)
printf("%d ",i*j);
printf("\n");
}
384379:04/09/25 21:38:20
たびたび申し訳ありません。
381のreturn m <= n ? m + gou(m+1, n)  : 0;の
         ↑のあたりの「?」と↑の「:」の意味が分かりません。
できれば私、初心者向きな作り方でお願いできませんか?
基本の基本でお願いします。たびたび申し訳ありません。ペコリ
385デフォルトの名無しさん:04/09/25 21:44:39
>>384
意味を調べて自分で書き換えてみようとか思わん?
人に頼ってばっかだと脳が腐っちゃうよ。
386デフォルトの名無しさん:04/09/25 21:45:41
どんどん馬鹿が増えとるな。自覚のない馬鹿が。
日本の教育が衰退していくのがわかる。
387デフォルトの名無しさん:04/09/25 21:45:48
>九九の表を2次元配列を利用して表示

383はちがうよね(w
388マイク ◆yrBrqfF1Ew :04/09/25 21:45:53
>?:

三項演算子って結城本にあっただろ。
389デフォルトの名無しさん:04/09/25 22:10:30
return A ? B : C;



if(A) return B;
else return C;



>>386
学生なめんなYO!
390デフォルトの名無しさん:04/09/25 22:17:37
>>389
おうおう粋がっちゃって・・・・
(´-`).。oO(社会に出てから苦労するタイプだな)
391379:04/09/25 22:25:29
すみません。
言い分けみたいですが、本当に時間が無くて。。
本当に自分でも「自分で調べてやれよっ」って感じです。
その調べる時間がなくて、、、こうやってカキコしている時間もアセアセで・・・
スミマセン。。。。
392デフォルトの名無しさん:04/09/25 22:30:50
>>390
真面目に取られると非常に困る…
393379:04/09/25 22:38:59
>>392(ップ
もういい加減さっさと答え晒して終わろぉぜw
394デフォルトの名無しさん:04/09/25 22:40:59
int kuku[9][9];
for(i=0;i<9;i++) {
for(j=0;j<9;j++) {
kuku[i][j] = (i + 1) * (j + 1);
}
}
395デフォルトの名無しさん:04/09/25 22:59:57
>>380
#include <iostream>
#include <iomanip>

int main()
{
  int result[9][9];
  for (int i = 0; i < 9; ++i)
    for (int j = 0; j < 9; ++j)
      result[i][j] = (i + 1) * (j + 1);
  
  std::cout << "\ 1 2 3 4 5 6 7 8 9\n";
  for (int i = 0; i < 9; ++i)
  {
    std::cout << " " << i + 1;
    for (int j = 0; j < 9; ++j)
      std::cout << std::setw(3) << result[i][j];
    std::cout << '\n';
  }
  std::cout << std::flush;
}
396379:04/09/25 23:09:42
>>395難し杉る・・です、はい。
#include <stdio.h>
くらいじゃないと分らないし、、
std::cout << "\ 1 2 3 4 5 6 7 8 9\n";
for (int i = 0; i < 9; ++i)
{
std::cout << " " << i + 1;
for (int j = 0; j < 9; ++j)
std::cout << std::setw(3) << result[i][j];
std::cout << '\n';
}
std::cout << std::flush;
}
のあたりがまったく分りません。。。
理解できないのは意味が無いのでこの私(糞、アフォ、カス、禿げ、なんとでもお言いください)
が分る程度のレベルでお願いします。超超低いレベルでお願いします。ペコリ
397デフォルトの名無しさん:04/09/25 23:29:29
>>396
CならCと先に言えよ。
普通C++だがな。
398379:04/09/25 23:31:24
>>397様、はい、スミマセンでした。
環境はCです。お願いします。ペコリ
399デフォルトの名無しさん:04/09/26 00:06:33
>>349
うお,大文字のみて初めて気がついたが,ゲイツ君家のMSDEか(w
400デフォルトの名無しさん:04/09/26 01:09:24
int result[9][9];
for (int i = 0; i < 9; ++i)
for (int j = 0; j < 9; ++j)
result[i][j] = (i + 1) * (j + 1);



int result[10][10];
for (int i = 1; i <= 9; ++i)
for (int j = 1; j <= 9; ++j)
result[i][j] = i * j;
401デフォルトの名無しさん:04/09/26 02:02:49
>>393はスルーなのカ。

#include "stdio.h"
int main()
{
int result[9][9];
for (int i = 1; i <= 9; ++i)
for(int j = 1; i <= 9; ++j)
result[i-1][j-1] = i * j;

printf (" 1 2 3 4 5 6 7 8 9\n");
for(int i = 0; i < 9; ++i)
{
for (int j = 0; j < 9; ++j)
printf("%d", result[i][j]);
printf("\n");
}
}
402ぼるじょあ ◆yBEncckFOU :04/09/26 02:05:16
(・3・)エェー 学生サン ドンドンオイデー

みんな答えるの早いな.なんだかんだ言って飢えてらっしゃる...
403デフォルトの名無しさん:04/09/26 02:05:19
VC6でコンパイルが通らないとか言いそうだ…。

>>396
>超超低いレベルでお願いします

int result[9][9];
result[0][0] = 1*1;
result[0][1] = 1*2;
...
printf("%d", result[0][0]);

とでもすればできるんじゃないか。
404400:04/09/26 02:45:12
>401
>403

だから
result[1][1],result[1][2],...,result[1][9]
result[2][1],result[2][2],...,result[2][9]
 :
result[9][1],result[9][2],...,result[9][9]

ぢゃねーと難しすぎるって(w
405デフォルトの名無しさん:04/09/26 04:40:32
>>389
return A ? B : C;



if(A) return B;
return C;

ぢゃねの?
関数の最後returnで終わらせないと
406デフォルトの名無しさん:04/09/26 04:47:57
どっちでもいっしょだろ
407デフォルトの名無しさん:04/09/26 09:38:37
Cで○×ゲームってどうやって作るの?
408デフォルトの名無しさん:04/09/26 11:00:09
> 九九の表を2次元配列を利用して表示させなさい。(だそうです。

#include <stdio.h>

int main()
{
    int temp[1][1];
    int i, j;
    for(i = 1; i <= 9; i++){
        for(j = 1; j <= 9; j++){
            temp[0][0] = i * j;
            printf("%2d ", temp[0][0]);
        }
        printf("\n");
    }
    return 0;
}
409デフォルトの名無しさん:04/09/26 11:04:09
puts("一意の感情?誘拐?参加します。それは何か!!?? (◎か×か!!!) (間違いはだめ!!!!)");
scanf("%s",kotaeru_hensu);
if( strcmp( "●",kotaeru_hensu ) == 0)
{

puts("正解!!!!!!!!");

}else if(memcmp("◎",mannaka_no_kotae,2))
{ puts("おそかった");

}else{
puts("まちがえ、ました!!!!!!!!!!!!!!!!!!!");
}
410デフォルトの名無しさん:04/09/26 11:33:43
#include <stdio.h>
int main(void)
{
double d[10] = {67.2, 43.6, 78.9, 50.1, 0.0, 32.9, 44.4, 100.9, 62.5, 0.0};
int i, j, max, min;
max=d[0];
for (i=0;i<10;i++){
if(max<=d[i]){
max=d[i];
}
}
min=d[0];
for (j=0;j<10;j++){
if(min>=d[j]){
min=d[j];
}
}
printf("体重の最大値は%.1f、最小値は%.1fです。\n",max, min);
return 0;
}
答えが変なんですが・・・。
411デフォルトの名無しさん:04/09/26 12:05:35
・int max, min; をdoubleにする
・%.1fを%dにする
・printfのmax, minを(double)max, (double)minにする
好きなのを選べ
412410:04/09/26 12:10:38
>>411
一番最初の方法でやったらうまくできました。
有難うございました
413379:04/09/26 14:14:44
そんな簡単な問題聞いてんじゃねぇよ
この糞粘着チビ禿げめ!!!
なぁ?OONO??
414デフォルトの名無しさん:04/09/26 19:11:55
#include<iostream>
#include<string>
using namespace std;

void PromptRead(string);
void FindName(string,string,string);
void Display(string,string,string);

int main ()
{
string first,
middle,
last,
init,
fullName;

PromptRead(fullName);
FindName(first,middle,last,init);
Display(first,middle,last,init);

return 0;
}

void PromptRead(string& fullName)
{
cout << "Enter your full name. First, Middle, Last ==>";
cin >> fullName;
}
415デフォルトの名無しさん:04/09/26 19:12:21
void FindName(string first, string middle, string last, string init, string& fullName)
{
first = fullName.substr(0, fullName.find(' '));
middle = fullName.substr(fullName.find(' ')+1, fullName.size())
last = fullName.
init = fullName.
}

void Display(string first, string middle, string last, string init)
{
system("cls");
cout<< "First Name:" <<first<<endl;
cout<< "Middle Name:" <<middle<<endl;
cout<< "Last Name:" <<last<<endl;
cout<< "Initials:"<<init<<endl;
}
どうも〜まったくわからないので助けてください><
cinでGeorge W. Bushみたいな感じでファーストネーム、ミドルネーム、ラストネームを読み込み
coutでファーストネーム、ミドルネーム、ラストネームとイニシャルを出すといった感じの宿題なのですが
ラストネームとイニシャルをどうやって求めればいいかわかりません
getlineという物を使えば良いらしいのですが頭が悪いためさっぱり本を読んでもわからないです。
ちなみにこういった感じにしたいです。
First:George
Middle:W.
Last:Bush
Initials:GWB
416デフォルトの名無しさん:04/09/26 19:20:47
#include<stdio.h>
int main(void)
{
int manth;
int nichisu;
printf("何月の日数を調べますか?\n");
scanf("%d",&manth);
if(manth==1||manth==3||manth==5||manth==8||manth==10||manth==12)
{
nichisu=31;
}
else if(manth==4||manth==6||manth==9||manth==11)
{
nichisu=30;
}
else
nichisu=29;
printf("%d月の日数は%dです。\n",manth,nichisu);
return 0;
}
Cの問題ですが
コレを条件分岐のif文使わずに二次元配列でやってみいろ、というんですが
さっぱりわかりません。
417416:04/09/26 19:27:47
「配列のアドレスを利用しろ」、ということなのですが。
実行入力された月数と三通りの日数をどう関連づけた
二次元配列の表を組み立てるかどうかで
頭がモヤッとなってしまいました。
418416:04/09/26 19:32:15
一応、最初に416の文で書いたが
二次元配列の方が短い?簡潔?と言われた。
実行結果は同じなのに過程をこうしてやれ、
と言われてモヤモヤ。
419たけし:04/09/26 19:42:54
CでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
Cの基礎からすべてを叩き込んでくれませんか??
お願いします。
420デフォルトの名無しさん:04/09/26 19:52:14
>416

月毎の日数を配列にして保持しろ
421デフォルトの名無しさん:04/09/26 20:21:09
そもそも条件分岐を使わないなんてことが考えられない。
実行入力されるときの値はプログラミング中では不確定要素であり
「〜であれば」という文がなければ成り立たないように思えたのですが。
422デフォルトの名無しさん:04/09/26 20:24:07
配列の n 番目の要素に
n 月の日数が入っていれば
if 文は無くてもいけるかと。
423デフォルトの名無しさん:04/09/26 20:25:09
>421
は 416 か?
月毎の配列が2つあれば、条件分岐がいらない

※もっとも入力した月が1〜12かどうかの判断はさすがにifが必要だが
424デフォルトの名無しさん:04/09/26 20:26:34
なるほど、たぶん出題者の指摘はそこではないかと思います。
>422
425デフォルトの名無しさん:04/09/26 20:32:40
>424
は 416 か?
うるう年の判定もあるが、2つ用意した配列の添え字にするのだよ
426422:04/09/26 20:33:11
>>414
あまり綺麗じゃないけど。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=225

>>423
年は入れないみたいだから配列は一つだけでもいいのでは?
#閏年以外の意図だったら…どうしよう。
427416:04/09/26 20:48:10
配列の添え字を使う。なるほど。
最初から
manth[1]=30
manth[2]=29
manth[3]=31
を用意しておく
とこんな感じだろうか。
添え字で指定させて中身で出すみたいな感じかな。
428デフォルトの名無しさん:04/09/26 20:52:09
>>427
配列の初期化は
int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
みたいにできる。
(最初の0は参照するときに
days[month - 1]
とかすればいらない)

…って>>416
二次元配列と書いてあるね。
一次元でいけそうだけどなあ。
429416:04/09/26 20:56:56
#include<stdio.h>

int main(void)

{
int manth[10];
int i;

printf("何月の日数を調べますか?\n");
scanf("%d",&i);

manth[1]=31;
manth[2]=29;
manth[3]=30;


printf("%d月の日数は%dです。\n",i,manth[i]);

return 0;
}

いや、できた。できた。
まだ中途半端だがif文使わずにできましたよ。
ありがとう。
430416:04/09/26 21:04:40
しかしこれでは二次元ではないのだが・・・。
二次元にすることによってもっとコンパクトにできるんでしょうか?
そもそも日数は三通りしかないのですが、ポイントはここらへんなんだろうか。
431デフォルトの名無しさん:04/09/26 21:07:21
416よ
2月は29日と限定しているが、そうなのか?
432416:04/09/26 21:12:21
いや、とりあえずそこまで難しく捉える問題ではなく
課題の要点理解のため参照例としての数なので、閏年とかは
考えなくていいかと。
12通りの数と3通りの数の組み合わせ算出が問題です。
433デフォルトの名無しさん:04/09/26 21:13:24
偉そうだな
434414:04/09/26 21:13:28
>>426さん
ありがとうございます。
ただ、フルネームを一つの物としてgetline()をかならず使って
last,initialを求めないと駄目みたいなのでその場合のやり方を教えていただけません><
説明不足でした。本当ごめんなさい
435デフォルトの名無しさん:04/09/26 21:21:30
>>432
なんで12通りと3通りを組み合わせる必要があるのか?
436デフォルトの名無しさん:04/09/26 21:25:22
int getday( int &manth );
int main(void)
{
...
nichisu = getday( manth );
...
}

int getday( int &manth )
{
int day[] = { 29, 30, 31 };
int *db[][1] = { &2[day], &0[day], &2[day], &1[day], &2[day], &1[day], &0[day], &2[day], &1[day], &2[day], &1[day], &2[day] };
return **(manth-1)[db];
}

できた。
437416:04/09/26 22:07:10
だめだ。この問題の二次元配列が頭に浮かばない。
int kaz[][]の宣言から始まるわけだし。
[]*[]の変数が用意されるわけだから
余計ややこしくなる。
422と425のレスは参考になった。
どうもありがとう。
そんじゃ。
438デフォルトの名無しさん:04/09/26 22:09:16
>>434
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=226

ただこれだと 414 にあるような
空白交じりのものは処理できない。
(coutで取り出す自体で空白までしか入らない)

cout << first << middle << last;
とかすればいいのだけど、こうすると
分割する必要が……。

とりあえず今はカンマ区切りでやってる。
439デフォルトの名無しさん:04/09/26 22:14:04
>>437
素直に閏年入れて2次元にしとけって

#include <stdio.h>
int main(void){
   int year, month;
   int days[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
                          {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
   printf("年入力\n");
   scanf("%d", &year);
   printf("月入力\n");
   scanf("%d", &month);
   printf("日数=%d\n",days[(!(year % 4)) && (year % 100) || (!(year % 400))][month - 1]);
   return 0;
}
440dotkansai:04/09/26 23:26:49
宿題で以下のようなものが出題されましたが、何を書いたらいいのか
さっぱり思いつきません。
頭の良い方、いらっしゃいましたら教えてください。
「プログラミング言語Cの仕様の中には、今では不適切と思われるもの
がある。エラーの発見を困難にしていたり、妙に不自然な書き方を強制
していたりするものである。不適切と思われるCの言語仕様を挙げ、そ
れがどのように不都合であるか、またどう変えれば改善となるかを述べ
よ」
というものです。
誰でもいいのでHELPです。
441デフォルトの名無しさん:04/09/26 23:29:16
javaと比べて悪い点を挙げればいいんでない?
442デフォルトの名無しさん:04/09/26 23:45:28
>440
う〜ん、さっぱりわからん
強いて挙げればgotoってとこかなぁ
「エラーの発見を困難にしていたり」は
下手な書き方すればgotoに限ったことでもないし
「妙に不自然な書き方を強制していたり」は
それだったらgoto使わなきゃいいだけだし
443デフォルトの名無しさん:04/09/26 23:51:52
ポインタの宣言と初期化の書き方ぢゃね?

int *n = NULL;

*n ってアドレス? って勘違いしそう、とか。
444デフォルトの名無しさん:04/09/27 00:13:27
>>440
宣言の複雑さとか。

int型へのポインタの要素数[5]の配列へのポインタを返す関数へのポインタの
要素数[3]の配列を返す関数を宣言あるいは定義しなさい、って言われても
すぐにはピンと来ないし、見てもわかりにくいし。
445デフォルトの名無しさん:04/09/27 00:14:28
あ、改善策は当然typedefで分解。
446デフォルトの名無しさん:04/09/27 00:14:59
C99で改善された点でも取り上げて良いのかな??
447デフォルトの名無しさん:04/09/27 00:20:12
>>444
それはちょっと特殊すぎないか
448デフォルトの名無しさん:04/09/27 00:22:17
○×ゲームってどうやって作るの?
449デフォルトの名無しさん:04/09/27 00:26:12
>>448
まず○×ゲームのルールを作る。
450デフォルトの名無しさん:04/09/27 00:34:40
>441
javaに限らず他言語との違いを挙げていけば見えてくるものがあるんじゃないかと。
配列(特に多次元)関数に渡すときとか文字列とか結局ポインタまわりか。
451デフォルトの名無しさん:04/09/27 00:35:56
再帰関数を利用してx、yのべき乗を求める関数(pow)を作ってみたつもりなんですが
できません。ご指導お願いします。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#include <stdio.h>
int main(void)
{
int x,y,t;
scanf("%d",&x);
scanf("%d",&y);
t=pow(x,y);
printf("%d",t);
return 0;
}
int pow(int x,int y)
{
if(x!=1)return x*y*pow(x,y-1);
else return 1;
}
452デフォルトの名無しさん:04/09/27 00:39:00
int pow(int x)
{
if(x!=1)return x*pow(x-1);
else return 1;
}
453デフォルトの名無しさん:04/09/27 00:48:07
>>451
int pow(int x,int y)
{
return y <= 0 ? 1 : x*pow(x,y-1);
}
454デフォルトの名無しさん:04/09/27 00:48:59
>451
先ず、適当なサンプルを考える
x=2,y=3辺りかな
pow(2,3)のとき、計算式は2*2*2となる
再帰的な考え方をするとyを順次減らしていき
pow(2,3)は2*pow(2,2)を返す
pow(2,2)は2*pow(2,1)を返す
pow(2,1)は2を返す

int pow(int x,int y)
{
  if(y<=1) {
    return x;
  }
  return x*pow(x,y-1);
}
455448:04/09/27 01:06:47
#include <stdio.h>

void display(void);
int set(int ,int ,int );
int check(void);

void main(void){
while(1){
display(); /*盤表示*/
scanf("%d", &row); /*入力した行列を読み取る*/
set(row,column,koma) /*入力された場所にコマを置く*/
check(); /*勝利判定*/
}
}

void display(void)
{
   int board[3][3] = {0,0,0,
0,0,0,
0,0,0,} /*0:空き 1:○ 2:×*/

printf("%d %d %d\n", board[0][0], board[0][1], board[0][2]);
printf("%d %d %d\n", board[1][0], board[1][1], board[1][2]);
printf("%d %d %d\n", board[2][0], board[2][1], board[2][2]);
}


コマを置く位置の入力を読み取って、盤表示の更新する方法
勝利の判定が分かりません
456デフォルトの名無しさん:04/09/27 01:17:21
>>455
過去レス探せ。一式あったはずだ。
457448:04/09/27 01:50:31
html化されてる過去スレ見たけど見つからなかった。
458デフォルトの名無しさん:04/09/27 05:16:14
>>457
bord[][]はグローバル変数にするか、引数で渡すようにしなきゃだめだろ。
今のままじゃdisplay()でしか参照できない。
勝利の判定方法は、縦がすべて同じ値かどうかチェックして、同様に横と斜めに
ついてチェックすりゃいいでしょ。
459414:04/09/27 11:38:08
>>438さん
getline(cin, fullname)に変えてコンマの部分をスペースに変えたら出来ました。
ありがとうございます。
460デフォルトの名無しさん:04/09/27 15:09:19
461デフォルトの名無しさん:04/09/28 08:50:08
任意の正の整数を5つ入れて2分木を表示させる
プログラムを教えてください。お願いします。
462デフォルトの名無しさん:04/09/28 09:52:02
463デフォルトの名無しさん:04/09/28 09:53:48
ぐぐったら一番上に出てきた
464デフォルトの名無しさん:04/09/28 10:29:22
>>461
視覚化はどうしてほしいの?
465デフォルトの名無しさん:04/09/28 11:25:26
ツリーの視覚化といえばgraphbizのdot
466デフォルトの名無しさん:04/09/28 14:53:04
>>440
* がプレフィックス演算子だとか。
これをPascalの様にポストフィックス演算子にしてさえおけば、、、
467デフォルトの名無しさん:04/09/28 17:07:31
>>465 graphviz

>>440
構造体のフィールド参照に「.」、
構造体のポインタからのフィールド参照に「->」演算子を割り当てているが
統合できる。

八進数に0-8を割り当てている(K&R初版)→8が不要

文字列中に\xという16進数エスケープがあるが、不定桁なので、わかりずらい。
"\xabcdefg" →規格では"\xabcdef" "g" と同義。
2桁固定にしたほうがわかりやすい。

最上位宣言もしくは、複文の先頭でしか変数を定義できない。(C90)

・・・C90と、C99の比較をすれば、結構でてくるんでは?
468デフォルトの名無しさん:04/09/28 18:27:58
>>467
> 最上位宣言もしくは、複文の先頭でしか変数を定義できない。(C90)

これは好き.

{
  int i = foo();

  {
    int j = bar();

...

関数型言語の let みたいでヨロシイ.
469デフォルトの名無しさん:04/09/28 18:42:47
>>467
>2桁固定にしたほうがわかりやすい。
それだと255までしか表現できないが、charの長さは処理系定義じゃなかったっけ?
470デフォルトの名無しさん:04/09/28 18:44:17
sizeof (char) == 1は決められているが、CHAR_BITは処理系定義
471デフォルトの名無しさん:04/09/28 18:56:18
sizeof( char ) != 1 な処理系も…
472デフォルトの名無しさん:04/09/28 20:55:00
>>440
たとえば,
typedef unsigned int u_int;

unsigned int typedef u_int;
と書くことができる
473デフォルトの名無しさん:04/09/28 21:11:33
>>471
それってANSIじゃないね。
474デフォルトの名無しさん:04/09/28 23:18:36
strcasecmpが使えないので、同様の動作の関数が作りたいんですが、
どうすればいいかわかんないです。
どなたかお願いします。
475デフォルトの名無しさん:04/09/28 23:31:37
>>474
入力された2つの文字列を両方とも小文字に変換(tolower)してstrcmpにかければよい。
476デフォルトの名無しさん:04/09/29 00:21:55
数列の要素の比較に基づくソート法である単純選択法を使って
与えられた数列を小さい順に並べるにはどうしたらいいんでしょうか?
どなたか助けてください。よろしくお願いいたします。
477476:04/09/29 00:23:14
あ、どのようなプログラムを作ればいいんでしょうか?という事です。
言葉足らずですみません。
478デフォルトの名無しさん:04/09/29 03:35:14
#include <stdio.h>
#define N 10 /* データ数 */
int main(void) {
int data[] = {0,2,6,4,3,7,5,1,9,8}, i, max, tmp;
for(i=0;i<N;i++) printf("%2d ",data[i]); printf("\n");
for(max = N; max > 0; max--) {
for(i = 1; i < max; i++) {
if(data[i-1]>data[i]) {
tmp = data[i-1];
data[i-1] = data[i];
data[i] = tmp;
}
}
}
for(i=0;i<N;i++) printf("%2d ",data[i]); printf("\n");
return 0;
}
コンパイルしてないから上手く行くか試してない。
479デフォルトの名無しさん:04/09/29 05:01:04
>>478
バブルソート != たんずん選択法
480デフォルトの名無しさん:04/09/29 05:14:38
>>476
「単純選択法」でググると一発目にソース付きのページが
出てくるんだが?
481478:04/09/29 06:16:13
>>479で学んだ。>>480が言ったことをとりあえず無視して再挑戦
#include <stdio.h>
#define N 10 /* データ数 */
int main(void) {
int data[] = {0,2,6,4,3,7,5,1,9,8}, i, j, min, tmp;
for(i=0;i<N;i++) printf("%2d ",data[i]); printf("\n");
for(j = 0; j < N; j++) {
min = j;
for(i = j; i < N; i++) {
if(data[i]<data[min]) min = i;
}
tmp = data[min];
data[min] = data[j];
data[j] = tmp;
}
for(i=0;i<N;i++) printf("%2d ",data[i]); printf("\n");
return 0;
}
またも試してないんで上手く行くかは知らん。
482デフォルトの名無しさん:04/09/29 10:28:26
すみません、あまり具体的でなくて申し訳ないのですが、
C++で作ったアプリケーションの起動時に、毎回勝手にテンポラリファイルが
出来るという現象についてご存じの方いらっしゃいますか?

調査した者の話によると、「ステップ実行してみたが、どの部分で
作られているかわからない。C++が勝手にやっているんじゃないか」
ということでした。

現在手元にソースがないので何とも言えませんが、意識して
テンポラリファイルを作るようなコーディングをしていないのに、
勝手に出来るなどということがあるのでしょうか。

ご存じの方いらっしゃいましたら教えて下さい。
483デフォルトの名無しさん:04/09/29 10:36:55
具体的でなさ過ぎるわ
標準ライブラリだけ使っててそんな事になるとは、あまり思えない
妙なライブラリ使ってたら知らん、C++に原因求めるんじゃなくライブラリ調べろ
そして妙なコードを書いてる可能性の方がはるかに高い
484デフォルトの名無しさん:04/09/29 10:36:55
>>482
環境ぐらい書け。
485デフォルトの名無しさん:04/09/29 11:07:03
調査した者が主犯で、バレないように>>482にはそういっただけのこと
486デフォルトの名無しさん:04/09/29 11:14:08
・OSは?(Windows, Macintosh, Linux, FreeBSD, etc) or 組込系など
・処理系は?(VisualC++, BCC(BCB), gcc, etc)
・ライブラリ(dllやMFCなども含む)を使っているか
・APIは使っているか(Win32API, etc)
・ファイル操作をしている所は有るか

最低限これぐらい書け
487デフォルトの名無しさん:04/09/29 12:42:10
他のスレに書いたらここで聞けと言われたんでここで聞かせていただきます。

プログラミング講義C++
という本に演習とありますが答えが載ってないのでやり方が分かりません。
なのでここに演習の文を書くんでその答えを書いてくださらないでしょうか?

>>2つのオブジェクトa,bが、
>>(1)いずれもint型である場合
>>(2)いずれもdouble型である場合
>>(3)一方がint型で他方がdouble型である場合
>>の3つの場合に対して、sizeof(a+b)を表示するプログラムを作成し、その実行結果を考察せよ。

488デフォルトの名無しさん:04/09/29 12:58:24
で、その移動しろって言った人間だが。
#include <iostream>

int main()
{
 {
  int a = 1, b = 1;
  std::cout << "sizeof(int + int) = " << sizeof(a + b) << std::endl;
 }
 {
  double a = 1.0, b = 1.0;
  std::cout << "sizeof(double + double) = " << sizeof(a + b) << std::endl;
 }
 {
  int a = 1; double b = 1.0;
  std::cout << "sizeof(int + double) = " << sizeof(a + b) << std::endl;
 }
 return 0;
}
結果の考察は自分でしな。
489デフォルトの名無しさん:04/09/29 13:02:42
>>488
ここに質問するの待っててくれたんですか?
ありがとうございます。
490デフォルトの名無しさん:04/09/29 13:08:46
全角うぜぇ

int+int->int
double+double->double
int+double->double+double(暗黙の型変換)->double
491デフォルトの名無しさん:04/09/29 13:45:20
お願いします。


以下のようなint型配列がある。配列の要素と、配列中の最大値と最小値を表示するプログラムを、ポインタを使用して作成せよ。

『配列定義』
int data[10] = {10,9,1,20,45,21,38,45,88};
『実行結果』

配列の内容
data[ ] = 10,9,1,20,45,21,38,45,88
最大値 = 88
最小値 = 1
492デフォルトの名無しさん:04/09/29 13:52:17
>>491
int data[10] = {10,9,1,20,45,21,38,45,88};
int min = INT_MAX, max = INT_MIN;

for(int* p = data; p != &data[10]; ++p)
{
if( *p < min )
min = *p;
if( *p > max )
max = *p;
}

printf("min=%d max=%d\n", min, max);
493デフォルトの名無しさん:04/09/29 13:53:06
良く見かけるなぁ
494デフォルトの名無しさん:04/09/29 13:55:17
>>492
配列の数値、9個しかないお?
495デフォルトの名無しさん:04/09/29 13:57:42
>>494
0なんだろ。
残りの要素は0で初期化されるから省略してるんだよ、多分。
496デフォルトの名無しさん:04/09/29 14:07:28
じゃあなんで最小値=1??
data[9]={10,....の間違いなんじゃ?
497デフォルトの名無しさん:04/09/29 14:14:31
無理矢理C++

#include <iostream>
#include <algorithm>

template <typename T>
inline int
numof( const T& t ){
    return sizeof( t ) / sizeof( t[ 0 ] );
}

template <typename T>
void print( const T& t ){
    for( int i = 0; i < numof( t ); ++i ) std::cout << t[ i ] << ',';
    std::cout << "\b \b";
}

int
main()
{
    int data[ 9 ] = { 10, 9, 1, 20, 45, 21, 38, 45, 88 };

    std::cout << "配列の内容" << std::endl << "data[] = ";
    print( data );
    std::cout << std::endl;

    std::cout << "最大値 = " << *std::max_element( data, data + numof( data ) ) << std::endl;
    std::cout << "最小値 = " << *std::min_element( data, data + numof( data ) ) << std::endl;

    return 0;
}
498デフォルトの名無しさん:04/09/29 14:39:12
2003/05/27 10:08:41
2003/05/27 10:09:02
2003/05/27 10:09:23
2003/05/27 10:09:41

という形のデータがひたすら書かれたテキストファイルを読み込み、上下隣り合う行の時間差(秒数) を出し、その差が
1秒 = 200件
2秒 = 100件


100秒 = 20件

というように表示させるプログラムを作成せよ。

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


上記データで言うと、21秒差が2件、21秒差が1件なので、

21 = 2
22 = 1

といった感じに表示させるプログラムです。
お願いします。
499498:04/09/29 14:41:35
書き忘れですが、C言語です。
OS環境はRedhat9です.
500デフォルトの名無しさん:04/09/29 16:01:15
500get
501ぼるじょあ ◆yBEncckFOU :04/09/29 16:05:08
>>498
やってみる
502デフォルトの名無しさん:04/09/29 19:04:37
503502:04/09/29 19:18:40
補足だけど、パラメータからファイル名を取ってくるのを忘れてたり、
エラーチェックをしてなかったり、ループに無駄があったり、
そもそもソースが汚かったりするから、参考程度に(´・ω・`)
504デフォルトの名無しさん:04/09/29 19:36:13
sscanf(data, "%d/%d/%d %d:%d:%d", &t.tm_year, &t.tm_mon, &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec);
これは通らん
505デフォルトの名無しさん:04/09/29 21:00:01
506476:04/09/29 21:11:14
>>478
わざわざ改良までしてくれてホント有難いです。
感謝します。

>>480
ホントですね…。ご指摘ありがとうございました。
507dotkansai:04/09/29 22:10:08
質問です。以下のような問題が出たので、誰か分かる人がいたら教えてください。
Cの初期指定の文法をBNFで書け。次のような書き方が許されるものとする。

{1,2,3}
{{1,2},{3,4}}
{1,{2,3},{4,5,6},7}
これらが許されるような一般的な言語を想定して、その文法を書くこと。
終端記号は、「左波括弧」、「右波括弧」、「コンマ」、「数」の四つである。
非終端記号には自分で選んだ適当な名前をつけてよい。
508デフォルトの名無しさん:04/09/29 23:17:20
数字の後には,か}、あるいは即終了。
{のあとには{か数字
とかいくつか規則を作って後はパズル的に組み合わせれば良いんじゃないの?
509デフォルトの名無しさん:04/09/29 23:39:03
課題なんですが・・・。

コマンドライン入力で座標を入力して直線を描画したあと自動でまたコマンドライン
入力画面に戻り、再び座標を入力して同じ画面に直線を描画・・・ってな感じで
繰り返していくプログラムなんですが・・。
一回描画させたあと入力画面へ戻るところがよく分かりません。
教えていただければ幸いです<(_ _)>
510デフォルトの名無しさん:04/09/29 23:45:47
>>509
もっと詳しく書かないと解からない
511超初心者:04/09/30 01:23:23
はじめまして、VC++でエクセルを使いグラフを書きたいのですが
サンプルを持ってきたんですがうまく改良できません。
ファイルから読み込んでそのデータを細かい折れ線グラフ(心電図のような)
ものにしたいのですが教えていただきたいのですが
 
//グラフに使用するデータの出力
for(i = 1; i < 10; i++){
//軸の出力
data = (short)i;
data1 = (short)1;
RangePtr pCells = pSheet->Cells->Item[data][data1];
itoa(i*10,buffer,10);
pCells->Value2 = buffer;
//Dataの出力
data = (short)i;
data1 = (short)2;
pCells = pSheet->Cells->Item[data][data1];
itoa(i*100,buffer,10);
pCells->Value2 = buffer;
    //グラフの出力
ChartObjectsPtr pChartObjects = pSheet->ChartObjects();
ChartObjectPtr pChartObject = pChartObjects->Add(200,10,300,300);
pChartObject->Chart->ChartType = xlColumnClustered;
//データの設定
pChartObject->Chart->SetSourceData(pRange);
>>507
初期指定 ::= 数 | リスト ;
リスト ::= 左波括弧 リスト内部 右波括弧 ;
リスト内部 ::= 初期指定 コンマ 初期指定 | 初期指定 ;

このまま下降パーサ書いたら、無限ループに陥いりそーだが。
BNFで書けという要求には合っているだろう。
513デフォルトの名無しさん:04/09/30 11:03:16
JVMの簡単なコンパイラをC言語でおねがいします。
キーポイント
Aコードの生成速度が速いコンパイラ
B速いコードを生成するコンパイラ(最適化)

人に優しいシステムの開発-誤入力への対処、表示の工夫など
514デフォルトの名無しさん:04/09/30 11:04:30
ネタは他所でやれー
515デフォルトの名無しさん:04/09/30 11:06:19
>>513
宿題じゃないだろ?
もしかしたら宿題なのかもしれないけどさ、ちょっと時間がかかり過ぎる。
516デフォルトの名無しさん:04/09/30 11:32:24
>>512
それで
{1,2,3}はいけないような。。
517デフォルトの名無しさん:04/09/30 11:35:19
>>515
それが宿題なんですよ
なんとかなりませんかねえ
518デフォルトの名無しさん:04/09/30 11:36:09
>>515
JVMじゃなくても、CASLでも可です
519デフォルトの名無しさん:04/09/30 11:54:15
>>518
CASLの方が簡単かもしれんが
どちらにせよ時間がかかりすぎて誰もやりたがらないと思う。
520デフォルトの名無しさん:04/09/30 12:04:16
>>507
漏れも考えてみた。
ターゲット ::= 左ブレース 引数 右ブレース ;
引数 ::= |リスト ;
リスト ::= 数
      |ターゲット
      |リスト コンマ 数
      |リスト コンマ ターゲット
521デフォルトの名無しさん:04/09/30 12:04:27
そういえばやねうらおが作る予定だな
もしかして関係者か
522デフォルトの名無しさん:04/09/30 12:08:37
>>519
できればお願いします。
まじわからなくて困ってるんです。
本当に無理ならいいですけど
523デフォルトの名無しさん:04/09/30 12:32:40
>>522
無理じゃない。
だが、タダの範囲を超えてるし、趣味で作ろうと思わん。
524デフォルトの名無しさん:04/09/30 12:34:22
525デフォルトの名無しさん:04/09/30 12:42:55
>>522
30万くらいで作ってあげてもいいけど
526デフォルトの名無しさん:04/09/30 12:44:21
2分木のプログラムを作れという宿題を誰かお願いします。
説明もできるようにしないといけないのでできる限りシンプルなプログラムでお願いします。
C++
527デフォルトの名無しさん:04/09/30 13:43:25
>>525
かわいそうだろ30万なんて、ていうかひどいな
マジ困ってるようだから、作ってあげたら?
俺は無理だが
528デフォルトの名無しさん:04/09/30 13:52:02
30万は安すぎるだろ
529デフォルトの名無しさん:04/09/30 13:57:28
513==527
安すぎだろ
530デフォルトの名無しさん:04/09/30 14:03:37
513です
訂正
数式のコンパイラでいい。制御構造や入出力文はなくてもよい
ターゲットマシン、CASLまたはJVM
・取り扱える数値は整数値のみでよい(実数なら最高)
・演算は加減乗除のみでよい(それ以外あってもいい)
・演算子の優先順位を考慮し、括弧も扱えること
531デフォルトの名無しさん:04/09/30 14:32:17
>>530
数式を入力すると、その数式を解くCASLコードが吐ければいいわけ?
532デフォルトの名無しさん:04/09/30 14:45:21
>>530
それでOK
たのんます
533デフォルトの名無しさん:04/09/30 17:01:29
>>532
良くわからんのだが、入力する数式はどんな感じなんだ?
ただ 10+5*20 とか入れるだけなのか、
x = 5; y = 10 + x;
みたいなことが出来なければいけないのか。
書き出すコードはCASLのオブジェクトコードなのか、CASLのソースコードなのか。
534デフォルトの名無しさん:04/09/30 17:52:28
実は「ぬるぽ」と入れると・・・
535デフォルトの名無しさん:04/09/30 17:57:52
ぬるぽ
536デフォルトの名無しさん:04/09/30 18:22:06
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Null ... Pointer! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number! Not a number!
537デフォルトの名無しさん:04/09/30 19:02:59
  ∧_∧
  ( ・∀・)      | | ガガッ
 と    )      | |
   Y /ノ      .人
    / ) .人   <  >_∧∩
  _/し' <  >_∧∩`Д´)/
 (_フ彡 V`Д´)/   / ←>>534
            / ←>>535
538512:04/09/30 21:17:50
>>507
初期指定 ::= 数 | リスト ;
リスト ::= 左波括弧 リスト内部 右波括弧 ;
リスト内部 ::= 初期指定 コンマ リスト内部 | 初期指定 ;

かな。EBNFのほーが慣れてるんで、BNFで書くのはつらい。
いちおう、左再帰はないんで、下向きパーサは書けるはず。
539デフォルトの名無しさん:04/09/30 23:36:17
>>530
C/C++摺れだけど、yacc は使っていい?
540デフォルトの名無しさん:04/10/01 00:06:55
>>539
質問主が消えた悪寒
541デフォルトの名無しさん:04/10/01 00:09:13
>>538
> リスト内部 ::= 初期指定 コンマ リスト内部 | 初期指定 ;

{ 1, 2, 3, { 4, 5, 6} } の
3, { の部分が解釈できないみたいです...?

リスト内部 ::= 初期指定 コンマ リスト | 初期指定 ;

ではないでしょうか.
こういうのを検証するソフトってあるのですか? 名前だけでもキボンヌ.
542デフォルトの名無しさん:04/10/01 00:16:40
for(i=0;i<3000;i++){
y=5*i+A
}で、
0<i<1000の時 A=5
1001<i<2000の時 A=4
2001<i<3000の時 A=3
とするにはどうすればいいのですか?
543デフォルトの名無しさん:04/10/01 00:19:21
>>542
i=0,1000,2000のときはそれぞれAはどうすればよいのですか?
544デフォルトの名無しさん:04/10/01 00:30:56
A=5;
for(i=0;i<3000;i++){
if(i==1000||i==2000) A--;
y=5*i+A
}

for(i=0;i<3000;i++){
switch(i) {
case 0: A=5; break;
case 1000:A=4; break;
case 2000: A=3; break;
}
y=5*i+A
}

好きな方を選びな。
545デフォルトの名無しさん:04/10/01 00:41:20
>>543
1001, 2001の時のAの値も不明だね。
546デフォルトの名無しさん:04/10/01 00:42:00
C言語初心者です。
すいませんどうか助けてください。

一つのファイルを条件により複数のファイルにするファイル分割を
しています。、
条件がありまして、
@fgetc(fp)で順次読み込んだ文字がリターンキーなら次に文字を見る。
Aその文字が 0 〜 9 か 'ー' 〜 '九' ならリターンキーまでを一つのファイル
として閉じる。
BAの条件にかかった文字から新たなファイルを生成し@に戻る。

という仕様なんですが文字列操作がうまくいきません。
かな文字や関数字など2バイトなので判定ができません。
イメージとしては

while ((ch = fgetc(fp)) != EOF)
{
fputc(ch,fwp);

if (ch == 13) ← リターンキーのasciicode
{
ここまでしかできてない・・・

以下不明・・
}
}

すいませんが文字をすすめたり漢数字の'一'判定のために
どのようなコードを書けばよいかわからないので(ポインタの進め方戻り方など)
どなたか教えてください・・
547デフォルトの名無しさん:04/10/01 00:43:02
忍法たらい回しの術
548デフォルトの名無しさん:04/10/01 01:12:16
>>507
初期化子::=
    数
    |「左波括弧」初期化子リスト「右波括弧」
    |「左波括弧」初期化子リスト「コンマ」「右波括弧」
初期化子リスト::=
    初期化子
    | 初期化子リスト「コンマ」初期化子
ではだめかい?ISO/IEC 9899:1999(C規格)見ながら作ったんだけれども。
BNFの規格を厳密に知らないからな…
549デフォルトの名無しさん:04/10/01 01:37:42
>>546
シフトJISならば2バイト読んで
switch(〜)
{
case 0x88EA://'一'
case 0x93F1://'二'
case 0x8E4F://'三'
case 0x8E6C://'四'
case 0x8CDC://'五'
case 0x985A://'六'
case 0x8EB5://'七'
case 0x94AA://'八'
case 0x8BE3://'九'
}
とでもするしかないんでは?
550デフォルトの名無しさん:04/10/01 01:50:02
>>549
だから、そういうことするなって。
文字コード直書きするな。
551デフォルトの名無しさん:04/10/01 02:04:20
2バイトとか言ってる時点でどうせバイトごとに
分けて考えることになるだろうと思ったしさ。
552デフォルトの名無しさん:04/10/01 06:17:04
>>550
じゃあ聞くけど、>>549見たいな処理をしたかったらどう書けば良いの?
'九' は処理系定義だけど、 0x8BE3 は対象が Shift_JIS でなおかつ自分
で 2 バイト読むんだから、その場合に限るけど、処理系を変えても
想定通り動く(2バイト読んで h<<8&0xff00|l&0xffとしてから比較するからね)。
したがって、こちらの方が可搬性が高いと思う。そして、これとくらべて
明らかに優れている方法ってある?
553デフォルトの名無しさん:04/10/01 06:45:47
>546
コンパイルもしてないからわかんないけどこんな感じ?
int CheckWordByte( unsigned int c ){
    if( c < 0x21 )return 0;
    if( c < 0x81 )return 1;
    if( c < 0xa0 )return 2;
    if( c < 0xe0 )return 1;
    if( c < 0xfd )return 2;
    return 0;
}
↑こんなのを作っとくといい
554553:04/10/01 06:49:19
で、こんな感じかな?寝ぼけて書いてるんで自信なし。シフトJISの仕組み調べれ。
    while ((ch = fgetc(fp)) != EOF) {
        if( ch >= '0' && ch <= '9'){// 0 〜 9の処理
            continue;
        }
        if( CheckWordByte(ch) == 2 ){// 2byte文字のチェック
            char ch_low = fgetc(fp);
            if( ch_low == EOF )break;
            char wd[3];
            wd[0] = ch;
            wd[1] = ch_low;
            wd[2] = '\0';
            char* check_word[] = {"一","二","三","四","五","六","七","八","九"};
            for( int i = 0 ; i < 9 ; i++ ){
                if( strcmp( wd, check_word ) == 0 ){// 一 〜 九の処理
                    break;
                }
            }
            continue;
        }
    }
555デフォルトの名無しさん:04/10/01 09:21:36
>>548
それだと{1,}が許されてしまう罠。
556548:04/10/01 09:37:34
>>555
やってみると面白い。俺もおかしいと思ったんだが、
実は許されている。
557デフォルトの名無しさん:04/10/01 10:55:02
558デフォルトの名無しさん:04/10/01 10:57:07
>>554
ちなみに、C言語で書いてくれとのことだけど、char*の宣言は先頭にしないとダメだよ。
それともC99?
559デフォルトの名無しさん:04/10/01 10:58:41
そのくらい、訊いた人間が対応すりゃいいだけだろ
ダメ出し好きなんだな
560デフォルトの名無しさん:04/10/01 11:11:44
そういう突っ込み見ると、今どきlegacy(ancient?) Cかよ、って感じなんだが。
561デフォルトの名無しさん:04/10/01 11:21:05
C99はまだ一般的ではない。
Cの全て処理系でC99をサポートしているとは限らない。
GCCですらサポートしていないバージョンのものを使っているケースが結構ある。
C99で書くときは、そうであることを明記しておくべきだ。
562デフォルトの名無しさん:04/10/01 11:27:04
C++
563デフォルトの名無しさん:04/10/01 11:31:15
理屈こねてないで、自分が理想の回答書けばええやん
564デフォルトの名無しさん:04/10/01 11:59:48
565デフォルトの名無しさん:04/10/01 12:13:30

                          ( 私は特別。  )
─────                   ( 一般の猫とは )
 オーイ                     ( 違うのよ   )
 エサだよ〜! ∧∧                O
\        (・ω・ )∧∧             o      
  \        U U(・ω・ )⌒∧∧        ゚ ∧∧
       ゾロ    ∧∧Uー-(・ω・ )      + (*~ー)
             (・ω・ )⌒ヽ〜Uー-         |  ヽ
              U Jー-し'            ( u u )〜
            ゾロ
566デフォルトの名無しさん:04/10/01 12:17:10
567デフォルトの名無しさん:04/10/01 12:25:28
中国人ってなんでも食べるよね〜
568デフォルトの名無しさん:04/10/01 13:10:26
これをお願いします↓
まず,ファイルにデータの個数nと,その個数分のデータ(整数データ(key)と最大100文字までの文字列の組(string))を保存する.
プログラムindexbubble.cは,まずファイルからnを読み込み,その数だけデータを読み込む.セルにはstringを保存し,索引用配列
INDEXにはデータのkeyとセルへのポインタをそれぞれ保存する.次に,索引用配列INDEXをkeyについてバブルソートを実行する.
そして,INDEXの順にセルに保存されたstringを表示する.
データ例↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#1
C++です
569デフォルトの名無しさん:04/10/01 13:13:59
570デフォルトの名無しさん:04/10/01 13:29:03
質問スレに書いたのですが、スレ違いの為こちらへ再投稿させて頂きます。

private:
char m_str[512][512];
があり
public:
read_str()と言う関数を作って
引数に文字列のポインタを渡して、m_strの内容をstrcpy()でコピーするようなのを作りたいのですが
どのようにすればいいのでしょうか?

inline int read_str(char *str[512]) {strcpy(str, m_str);}
とかいう感じのを想定してるのですが、どうやっても型をあわせられません。
571デフォルトの名無しさん:04/10/01 13:31:57
お願いします。
クラスのメンバ関数のポインタ配列なのですが、
継承先クラスの関数を、継承元クラスの配列に登録する方法があったら教えてください。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1096604899&res=1
572デフォルトの名無しさん:04/10/01 13:33:40
フシアナトラップに大量に引っかかっているスレがあります。

1級土木施工実地試験パート2
http://science3.2ch.net/test/read.cgi/doboku/1072272597/l50

だれか、解析してくだされ。ぞいつらを。
573デフォルトの名無しさん:04/10/01 14:06:23
>>572
消えろあふぉ
574デフォルトの名無しさん:04/10/01 14:21:21
575デフォルトの名無しさん:04/10/01 14:43:20
>>571
virtual
576デフォルトの名無しさん:04/10/01 15:48:04
>>570
class CAnswer
{
private:
char m_str[ 512 ][ 512 ];
public:
int read_str( char str[ 512 ] );
}

int CAnswer::read_str( char str[ 512 ], int index )
{
strcpy( str, this->m_str[ index ] );
return 0;
}

こんな感じ?
577デフォルトの名無しさん:04/10/01 16:11:20
>>575
どもです。出来ました。
こういう意味ですよね?

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1096604899&rm=100
578デフォルトの名無しさん:04/10/01 18:28:49
579577:04/10/01 19:39:36
>>578
おぉ、なるほど!
僕にはとても思いつきそうもなかったです。

ありがとうございました。
580デフォルトの名無しさん:04/10/01 21:40:22
char *str[]=
{
"hoge 10000",
"hoge2 1000",
NULL
}

とあって、空白までの文字列を別の変数(temp[512][512])へコピーしたい時はどうすれば良いのでしょうか?

char temp[512][512];

for(int i=0; str[i]!=NULL; i++)
{
for(int j=0; str[i][j]!=' ';j++)
temp[j][i]=str[i][j];
}
これで上手く行きません。
tempへ、数字を除いた空白までの文字列が入ることを望むのですが・・・
581デフォルトの名無しさん:04/10/01 21:45:57
temp[j][i]ってわざと?
582579:04/10/01 22:06:30
>>581
jとiが逆でしたね。
でもそれを直しても結果は同じでした。
ちなみに自作のアプリケーションに組み込んでるのですが、この処理を行ってる時点で突然アプリが落ちます。

char temp[512][512];

for(int i=0; str[i]!=NULL; i++)
{
for(int j=0; str[j][i]!=' ';j++)
temp[j][i]=str[j][i];
}
583デフォルトの名無しさん:04/10/01 22:11:31
>>582
その処理を自作のアプリケーションから切り離して単独で実行してみ?
そうやって問題の発生箇所を絞り込んでいくのがデバッグのコツ。
584デフォルトの名無しさん:04/10/01 22:27:17
>temp[j][i]=str[j][i];
これを抜いてみるとか、
これの代わりにiとjを毎回出力して何回目で落ちるか見てみたら
585デフォルトの名無しさん:04/10/01 22:27:54
>>582
まだ逆。
2次元配列について勉強してくると良い

char temp[512][512];

for(int i=0; str[i]!=NULL; i++)
{
for(int j=0; str[i][j]!=' ';j++)
temp[i][j]=str[i][j];
}
586デフォルトの名無しさん:04/10/01 23:20:19
4つの数字1,2,3,4の並び順を全て表示しなさい

例)
1 2 3 4
1 2 4 3
1 4 2 3
    :
587デフォルトの名無しさん:04/10/01 23:21:37
4次元配列について有効な説明を誰かしうわなにをすr(ry
588デフォルトの名無しさん:04/10/01 23:42:44
>>586
#include <algorithm>
#include <iostream>

int factorial(int x){return x == 1 ? 1 : x * factorial(x - 1);}
int main()
{
  int a[4] = {1, 2, 3, 4},
      count = 0,
      num_a = sizeof(a) / sizeof(a[0]),
      end = factorial(num_a);
  while(count++ < end)
  {
    for(int iter = 0; iter < num_a; ++iter)
      std::cout << a[iter];
    std::cout << std::endl;
    std::next_permutation(a, a + num_a);
  }
  return 0;
}
589デフォルトの名無しさん:04/10/01 23:53:07
1回のSEX(挿入時間)が、まぁ平均15分としよう。
1分間でのピストンがおよそ120回(2/sec.)と仮定すれば、
1回のSEXで15×120=1800回はチンポを出し入れされる事になる。

平均的なカップルが週2回、一晩2回SEXすると仮定するならば、
一月に2×2×5×1800=36000、およそ36000回チンポを
マンコにピストンされていると概算されるわけだ。

これを、交際している年月に置き換えてみると、3ヶ月男と付き合っている女の子は10万8千回、
一年間付き合っている子は129万6千回、 3年間付き合っている子など驚べき事に
なんと388万8千回もチンコを出し入れされている計算になる。

この事実、全く持って驚愕するほか無いといえよう。
590デフォルトの名無しさん:04/10/02 00:19:00
>>589
速すぎだし早すぎ。
591デフォルトの名無しさん:04/10/02 00:23:48
2つの関数hogeとageを掛けたり割ったりするにはどうすればいいのですか?
double hoge(double a1, double a2){
 return(5a1, a2);
}

double moge(double a1, double b2){
 return(-b1, 8b2);
}
592デフォルトの名無しさん:04/10/02 00:28:13
???
ちゃんと喋れ
593デフォルトの名無しさん:04/10/02 00:30:42
>>588
ありがとうございました
594デフォルトの名無しさん:04/10/02 00:43:24
これで十分だと思うが

#include <iostream>
#include <algorithm>

template <typename T>
void print_array( const T& t ){
    for( int i = 0; i < sizeof( t ) / sizeof( t[ 0 ] ); ++i ) std::cout << t[ i ] << ' ';
    std::cout << std::endl;
}

int main(){
    int n[] = { 1, 2, 3, 4 };

    do{
        print_array( n );
    }while( std::next_permutation( n, n + sizeof( n ) / sizeof( n[ 0 ] ) ) );

    return 0;
}
595591:04/10/02 00:59:32
hogeとmogeのパラメータを掛けたり割ったりするにはどうすればいいのですか?
double hoge(double a1, double a2){
 return(5a1, a2);
}

double moge(double a1, double b2){
 return(-b1, 8b2);
}
596デフォルトの名無しさん:04/10/02 01:01:45
>>595
*
/
597デフォルトの名無しさん:04/10/02 01:16:09
>>595
意味ワカラネ
具体的にどれと、どれを掛けたり割ったりしたいんだ?
だいたい、b1ってどっから湧いてきたんだよ?

もしかして、こういう事?

void hoge(double *a1, double *a2){
 *a1 = *a1 * 5.0;
}

void moge(double *b1, double *b2){
   *b1 = -(*b1);
   *b2 = *b2 * 8.0;
}  

int main(void){
   double age = 4.0, sage = 3.0;
   moge(&age, &sage);
   printf("age=%f sage=%f", age, sage);
   return 0;
}
598デフォルトの名無しさん:04/10/02 01:17:51
double hoge(double a1, double a2){
 return 5*a1 + a2;
}

double moge(double b1, double b2){
 return -b1 + 8*b2;
}
とかじゃねぇの?


んなわけねぇか。
599 ◆FIcNi4f8js :04/10/02 01:36:23
a2ってどこで使うの?
600デフォルトの名無しさん:04/10/02 01:38:01
>>589
サンクス!
601591:04/10/02 02:35:36
598が正しい題意でした。すみませんでした。
602デフォルトの名無しさん:04/10/02 04:35:22
釣りにしか見えない辺りがすげぇなぁ。
603デフォルトの名無しさん:04/10/02 12:36:25
#include <stdio.h>
main(){
printf("素数");
return 0;
}
604デフォルトの名無しさん:04/10/02 12:44:33
素数を求めるプログ(ry
605デフォルトの名無しさん:04/10/02 13:07:16
#include <stdio.h>
main(){
int i;
for(;;){
printf("素数をください。お願いします。\n");
}
606デフォルトの名無しさん:04/10/02 13:09:36
#include <stdio.h>
main(){
printf("お断りだ");
}
607デフォルトの名無しさん:04/10/02 13:37:43
#include <stdio.h>
#include "smtp.h"
/* TODO
  smtp.h, smtp.c(pp)を作って
  SendMail 関数を作っておくこと
    void SendMail(
      char *addr, // 宛先のメールアドレス
      char *subject, // 題名
      char *body // 本文
    );
*/


int main()
{
  char *addr = "[email protected]"; /* 信頼できる人のアドレス */
  SendMail(addr, "助けて下さい!!!", "素数を教えて下さい。お願いします。\nメール待ってます。");
  return 0;
}
608デフォルトの名無しさん:04/10/02 13:57:09
実在のアドレス使うな!!!
609 ◆FIcNi4f8js :04/10/02 14:00:57
#include <stdlib.h>
main(){
system("shutdown -h now");
return 0;
}
610デフォルトの名無しさん:04/10/02 23:24:12
そのアドレス実在するのか・・・w
それは持ってる人自身もサンプルにされるのを覚悟の上だろうw
611デフォルトの名無しさん:04/10/02 23:32:26
>>608(とアドレスの所有者)
す、スマン(;´Д`)
612デフォルトの名無しさん:04/10/03 01:45:14
Aクラス、Bクラス、Cクラスの各クラスのデータがそれぞれ
A.txt、B.txt、C.txtに保存してある。
形式は各クラス共通で

名前,生年月日,点数
斎藤,19230720,1200
伊集院,19500505,555
田中,19721121,987
田中,19430303,783
田中,19761214,654
三輪,19960616,0
石川,19730823,489

阿部,19800204,500
加藤,19590412,890
高田,19921223,0
井上,19780420,390
井上,19790304,400
井上,19570405,756
井上,19671028,932
中島,19990922,0
西,19400321,564
飯田,19671111,643
613デフォルトの名無しさん:04/10/03 01:45:51
といった形にしてある。
各クラスの井上さんを取り出し以下のような形のテキストファイルを作成しなさい。

名前,生年月日,点数
井上,19570405,756
井上,19580618,690
井上,19600509,789

井上,19671028,932
井上,19780420,390
井上,19790304,400

*生年月日順にすること
*生年月日が同じ場合は点数の低い方が上にくるようにしなさい
*なお各クラスのデータは姓ごとに固まっているこのことを利用すると加点します

お願いします。
614デフォルトの名無しさん:04/10/03 03:07:57
>>612
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=233&fi=no
"井上.txt"に出力する。
各クラスのデータは姓ごとに固まっていることは利用していない。
615デフォルトの名無しさん:04/10/03 09:45:05
>>612
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=235&fi=no
Cのみで、姓ごとに固まっていることを利用してます。
616デフォルトの名無しさん:04/10/03 11:06:30
>>613
>  *なお各クラスのデータは姓ごとに固まっているこのことを利用すると加点します
本当なら原点対象にしたい仕様だな
617デフォルトの名無しさん:04/10/03 11:52:27
>>616
採点のセンスがCOBOL チックだね。
618デフォルトの名無しさん:04/10/03 11:55:26
工夫を見たいんでしょ
619デフォルトの名無しさん:04/10/03 12:00:00
>>618
依存する項目が多くなればなるほど、糞コードとなるのは
自明の理。

こんな下らない事に依存するようなコードを書かせていると、
将来DBを学ぶときの妨げになる。
620ぼるじょあ ◆yBEncckFOU :04/10/03 12:33:30
(・3・)エェー 「仮定します」の typo じゃないの
621デフォルトの名無しさん:04/10/03 12:38:01
利用することを仮定しちゃうの?
622デフォルトの名無しさん:04/10/03 15:04:49
姓ごとに固まっていることをチェックして、
そうでなければ警告をだす様にしとけばよいのでは
623デフォルトの名無しさん:04/10/03 15:15:27
>>622
そうやって、どんどん泥沼にはまっていく訳だ。

いつか辿った道だな。
624デフォルトの名無しさん:04/10/03 15:23:59
そして泥沼になった先にあるものは…
625デフォルトの名無しさん:04/10/03 15:50:37
>>624
池沼になる未来
626デフォルトの名無しさん:04/10/03 19:24:23
>>624-625
おもろい
>>533
パソコンがダウソして困っておりました。数値と演算子の区切り文字は特に設けず、トークンは
4桁固定とする。
_は空白一文字を意味する
簡単化のためにトークンの文字数を4桁に固定する。


入力A =(2+8)/(2+3)
   B =A+3

出力 AAA STRAT
               LD      GR3,=2
               LD      GR1,=8
           ・ 
           ・
           ・
みたいになればいいんです。
よろしくおねがいします。遅れてすいませぬ 
628デフォルトの名無しさん:04/10/03 23:35:45
double func(double A, double B){
 return 5A+2B;
}
のBを配列(40個の要素)にして、forで回すにはどうすればいいのですか?
for(i=0;i<40;i++){
 funcの書き方が分かりません
}
629デフォルトの名無しさん:04/10/03 23:41:21
>>628
あなたの言っていることがよく分かりません。 >1 にもあるように

>・問題はしっかりと解いてもらう方にわかりやすいように
> 問題文などの省きはやめ、全文を書きましょう。
630628:04/10/03 23:59:17
double func(double A, double B){
 return 5A+2B;
}
があり、Bの値を0<i<=5のとき0.2,6<i<40のとき0.925としたい。
main(){
 for(i=0;i<=5;i++){
 B[i]=0.2;
 } 
 for(;i<40;i++){
 B[i]=0.925;
 } 
 for(i=0;i<40;i++){
 //ここの書き方が分かりません。switchまたはif文でBの値を変化させると
 //遅くなるのでforの外で配列を用いてiに対応するBの値をあらかじめ求めて
 //おきたいんです。お願いします。
 }
}
631デフォルトの名無しさん:04/10/04 00:13:38
>>630
funcにコンパイルエラーがあるのですが・・・。
つーか、速くしたつもりで遅いコードかいてる君に乾杯。
632デフォルトの名無しさん:04/10/04 00:14:39
そもそも5A+2Bって何だ。5*A+2*Bのつもりか?
633628:04/10/04 00:19:31
5*A+2*Bのつもりか?
その通りです
634デフォルトの名無しさん:04/10/04 00:24:23
>>630
Bが配列じゃないときの書き方はわかってんのか?


マジレスしてしまった・・・。
ネタ確率90%以上・・・。
635デフォルトの名無しさん:04/10/04 00:27:14
>>631
配列を用意するコストを無視しても遅くなったっけ?
636デフォルトの名無しさん:04/10/04 00:30:03
>>630
error : >>630 line 0 : 5A+2B : 識別子5Aは宣言されていません。
error : >>630 line 0 : 5A+2B : 識別子2Bは宣言されていません。
error : >>630 line 4,6,7,9,10,12 : i : 識別子iは宣言されていません。
error : >>630 line 5 : main(){ : 関数mainに戻り値の型intが指定されていません。
error : >>630 line 7,10 : B[i] : 識別子Bは宣言されていません。
error : >>630 line 13-15 : comment : funcにAとして何を渡すのか指定されていません。
error : >>630 line 13-15 : comment : funcの戻り値の使用方法が指定されていません。
致命的なエラーが複数発生しました。
回答者はこのコードをコンパイルすることが出来ませんでした。
637デフォルトの名無しさん:04/10/04 00:34:10
> error : >>630 line 4,6,7,9,10,12 : i : 識別子iは宣言されていません。
> error : >>630 line 5 : main(){ : 関数mainに戻り値の型intが指定されていません。
> error : >>630 line 7,10 : B[i] : 識別子Bは宣言されていません。
これはサンプル程度だろうし、この辺は別に良いんじゃない。
warningぐらいにしとくとか。
638デフォルトの名無しさん:04/10/04 00:37:25
>>632-633
このやり取りにデジャヴュを感じる
639デフォルトの名無しさん:04/10/04 00:39:44
それは一種の精神疾患だ。治し方は俺が知っている。俺に任せろ
640デフォルトの名無しさん:04/10/04 00:44:15
>>627
最終的に出力するトークンの指定は?
その例だとAを出力すればいいのかBを出力すればいいのかわからん
641デフォルトの名無しさん:04/10/04 00:58:13
>>638
俺も。

>>635
VC.NET 2003で計測しました。
最適化で消えちゃ困るので関数はインライン化なし。
変数はカウンタを除いて volatile。

配列を使用しない場合(ループ毎に if で振り分け、Bに定数使用)= 133
〃(Bに変数使用)= 178
〃(if じゃなくて?:、定数使用)= 221
〃 (if じゃ無くて?:、変数使用)= 218

配列を使用した場合(配列への代入は済ませておく)= 190

100回繰り返してはじめと終わりの高分解能パフォーマンスカウンタの差。
それぞれ何回か行ったが誤差は±1程度。
(大きくずれることもあるが別プロセスの影響と判断して無視)
実際の何秒に相当するかは調べてません。

ループは展開してくれるかと期待したのですがしてくれませんでした。
?: は遅いらしい。
642デフォルトの名無しさん:04/10/04 01:43:19
ハードウェアの動作を熟知した上でアセンブリで書くのが一番速い



はず。

そして、俺は無理。
643デフォルトの名無しさん:04/10/04 06:30:01
>>627

yacc使っていいの?
644デフォルトの名無しさん:04/10/04 11:20:27
こんにちはー
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=119
このソースファイルを宿題で書いてみたのですけどうまくいきません
100.21とcinで入れたら100ドルが一枚、10セントが2枚、1セントが一枚といった感じにするプログラムなんですが
まったくうまくいかないのでまたここに書き込ませてもらいました。
ちなみに添付ファイルの方が学校の先生の作ったサンプルファイルになります。
ご教授よろしくお願いします。
645デフォルトの名無しさん:04/10/04 11:39:28
CalcTotalの/と%を入れ替えてみたら?
646デフォルトの名無しさん:04/10/04 12:55:49
>>640
とりあえず書いてあった出力を全部かきます
AAA  START
        LD        GR3,=2             
        LD        GR1,=8         
        ADDA   GR3,GR1        
        LD        GR4,=2            
        LD        GR1,=3             
        ADDA   GR4,GR1            
        LD        GR1,GR3                
        LD        GR2,GR4     
        CALL    DIV        
        LD        GR5,GR1           
        ST        GR5,A
        LD        GR3,A
        LD        GR1,=3
647デフォルトの名無しさん:04/10/04 12:59:40
           ADDA   GR3,GR1
           ST        GR3,B
           LD        GR0,A
           CALL    NUMOUT
           LD        GR0,B
           CALL    NUMOUT
           RET
A         DS       1
B         DS       1
           END

>>643
おそらくだめとおもわれ
648デフォルトの名無しさん:04/10/04 13:37:54
>>645さん
入れ替えても意味なかったす。
649デフォルトの名無しさん:04/10/04 15:59:41
>>648
>645の指摘は、全部の'/'と'%'の入れ替えだ(と思う)よ。
それから、.exeなんて添付しても誰も見てくれないと思われ。
650デフォルトの名無しさん:04/10/04 16:19:46
>>649さん
なるほど、できました。ありがとうございました。
添付ファイルの件は了解です。
651612:04/10/04 17:52:24
>>614-615
ありがとうございます。

error C2664: 'qsort' : 4 番目の引数を 'int (const struct tagData *,const struct tagData *)' から
'int (__cdecl *)(const void *,const void *)' に変換できません。 (新しい機能 ; ヘルプを参照)
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。

とエラーが出て動きません。
652デフォルトの名無しさん:04/10/04 18:00:06
>>651=612

関数cmp()の引き数を構造体へのポインタからvoid*に変更して、
関数内部でキャストすればよろしい。
つーか、>615が詰めが甘いのだね。
653デフォルトの名無しさん:04/10/04 18:12:34
c++でコンパイルしてるからだろ。
654デフォルトの名無しさん:04/10/04 19:47:32
年月日を2回入力して,1回目に入力された年月日から2回目に入力さ れた年月日までの日数を数えるプログラムを作りなさい.
Cです。よろしくお願いします。
655デフォルトの名無しさん:04/10/04 19:52:20
オレに命令するな!
656デフォルトの名無しさん:04/10/04 21:03:25
657656:04/10/04 21:04:16
追記
入力形式は 年/月/日
658デフォルトの名無しさん:04/10/04 23:38:07
リスト構造の問題がわからなくて困ってます。問題がとても長くて恐縮ですが
どなたか教えてください。どうかお願いします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=120
659デフォルトの名無しさん:04/10/04 23:52:50
>>658
入力はどんなの?
HOGE 3
FUGA
2
FOO 12 BAR

0
とかもあるの?
660651=612:04/10/05 00:07:59
すいませんC++でコンパイルしてました。
ご迷惑をおかけしました。
661デフォルトの名無しさん:04/10/05 00:29:23
>658
void InputMJ_list( MJ_list* ptr )
{
    printf( "Name:" );
    scanf( "%s", ptr->name );
    printf( "Houmuran:" );
    scanf( "%d", &ptr->homerun );
}
という関数を作って
    /* リストのトップデータ */
    hd=(struct MJ_list*)malloc(sizeof(struct MJ_list));
    InputMJ_list( hd );
    hd->pointer = NULL;
    /* 第二リストデータ */
    p1=(struct MJ_list*)malloc(sizeof(struct MJ_list));
    InputMJ_list( p1 );
    p1->pointer = NULL;
    hd->pointer=p1;
    /* 第三リストデータ */
    p2=(struct MJ_list*)malloc(sizeof(struct MJ_list));
    InputMJ_list( p2 );
    p2->pointer = NULL;
    p1->pointer=p2;
これでおk
あと printf("5d\n",sum); じゃなくて printf("%5d\n",sum); な
662658:04/10/05 00:44:26
>>659
HOGEとかって何ですか?ごめんなさい〜わかりません。
入力は ICHIRO 10  みたいな感じです…。
JIRO 20
663デフォルトの名無しさん:04/10/05 00:48:43
627のものですが
作ってもらえませんかね?
本当に困ってるんですが
664デフォルトの名無しさん:04/10/05 00:59:33
マンドクセ('A`) のでオレはパス。↓宜しく
665デフォルトの名無しさん:04/10/05 01:04:37
>>663
100万くれたら作ってやるよ。
666 ◆FIcNi4f8js :04/10/05 01:14:52
>>665
100万ルピーくらいですか?
667デフォルトの名無しさん:04/10/05 01:18:01
俺は作るほど暇じゃないがこれぐらいなら、作ってあげれよ
そのためのスレだろ?
668デフォルトの名無しさん:04/10/05 01:21:49
>>663-667
この流れにデジャヴをk(ry
669デフォルトの名無しさん:04/10/05 04:41:09
>>663
作った。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=310

仕様がわからないところは適当。CASLもよくは知らないので適当。
疲れた。もう寝る。
670デフォルトの名無しさん:04/10/05 04:41:17
>>663
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=239&fi=no

適当に再帰下降型パーサで書いてみた。

・gccとVC7.1でコンパイル確認
・生成されたコードは一通り目で追ってみたけど、正しいかわからん(多分あってるはず)
・生成するコードに無駄が多い
・変数名は4文字固定
・MUL,DIVはGR1 op GR2 → GR1のサブルーチンと仮定
・1語のサイズは16bitと仮定
・再帰型にしたら演算子が右結合になっちまった
・試行錯誤したゴミが残ってたりする

あと多分不具合色々・・・1時間ちょいで書いたので勘弁してけれ

hoge.exeとしてコンパイルしたら、
hoge ソースファイル
でコンパイル。out.casファイルが生成される

てかCASLほとんど忘れてるから、コードそのものが間違ってるかも・・・
671670:04/10/05 04:42:54
うお、かぶっちまった(;´Д`)
こっちのはダメダメぽいから放置でヨロ(´・ω・`)ノシ
672デフォルトの名無しさん:04/10/05 13:09:37
>>669
>>670
ほんとうにありがとうございます。
助かりました!!
感謝!!
673デフォルトの名無しさん:04/10/05 18:01:03
お願いします。
C++の問題でVisualStudioを使っております。CUI環境で結果はDOS窓に表示するものです。

問1
整数を記憶するスタックを表すクラスを作り、それを利用したプログラムを作りなさい。
 ・スタックは、データをLIFOで記憶取り出しを行う。
 ・スタックの機能として、Push(記憶)、pop(取り出し)をもとせること。

問2
整数を記憶するリストを作り、それを利用したプログラムを作りなさい。
 ・リストは、線形の片方向リストでよい。
 ・リストへの要素の追加は、先頭に追加するのみでよい。
 ・リストの要素は、データ部とポインタ部を持つノードとして作る。
 ・ノードは、構造体でもクラスでも可。


御手数おかけしますが、何卒よろしくお願いいたします。
674デフォルトの名無しさん:04/10/05 18:02:50
STLをコピペしる!Q
675674:04/10/05 18:10:12
俺宛じゃなかったか。命拾いしたな。
676デフォルトの名無しさん:04/10/05 18:10:44
問1
class int_stack : public std::stack< int >{};

問2
class int_list : public std::list< int >{};
677デフォルトの名無しさん:04/10/05 18:19:33
>>676
コンストラクタを書け。
678673:04/10/05 18:22:07
すみません、説明が不足していました。
テンプレートなどは使わずに実際に作れという宿題なのです。
また、学校ではVisualStudioをを使用していますが、
今現在はBorlandC++コンパイラーを使用しております。

御手数おかけしますが、何卒よろしくお願い致します。
679デフォルトの名無しさん:04/10/05 18:34:40
車輪の再発明はつまらないからなかなか答えてもらえない。
680デフォルトの名無しさん:04/10/05 18:58:04
車輪って何?
681デフォルトの名無しさん:04/10/05 19:02:52
しゃりん 0 【車輪】
(1)車のわ。
(2)〔もと役者が熱演することの意〕一生懸命に事を行うこと。大車輪。
「自分が―に働くことを以て其不幸を慰めた/続俳諧師(虚子)」

車輪の再発明
http://www.google.co.jp/search?q=%BC%D6%CE%D8%A4%CE%BA%C6%C8%AF%CC%C0&lr=lang_ja&hl=ja&ie=EUC-JP&oe=UTF-8
682デフォルトの名無しさん:04/10/05 19:47:40
テンプレートも使っちゃいけないって意味分かんね。
template機能が禁止ってこと?それともSTL禁止のつもりだったん?
683デフォルトの名無しさん:04/10/05 19:49:58
課題で行列の演算をするプログラムを書いています。
乗算の部分を書き換えて加算をするようにしたいのですがうまくいきません。
行列の加算とコメントが書いてあるところが乗算のままなのでそこを加算に直すには
どのようにすればいいのでしょうか?
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1096972927
684デフォルトの名無しさん:04/10/05 19:51:18
685デフォルトの名無しさん:04/10/05 20:22:38
#include <stdlib.h>
class MyStack {
    int *stk;
    int pt;
    int max;
public:
    MyStack()
    {
        stk = NULL;
        pt = 0;
        max = 0;
    }
    ~MyStack()
    {
        free(stk);
    }
    bool push(int num)
    {
        if(pt >= max){
            max += 128;
            stk = (int *)realloc(stk, sizeof(int) * max);
            if(stk == NULL) return false;
        }
        stk[pt++] = num;
        return true;
    }
    int pop()
    {
        if(pt <= 0) return -1;
        return stk[--pt];
    }
};
686デフォルトの名無しさん:04/10/05 20:37:15
stackは例外安全、例外中立にしてください
687デフォルトの名無しさん:04/10/05 20:44:28
例外出る場所ねーぞ?
688デフォルトの名無しさん:04/10/05 20:48:02
stk = (int *)realloc(stk, sizeof(int) * max);
realloc に失敗すると stk 消えます。
689デフォルトの名無しさん:04/10/05 20:50:02
そこでリソースの獲得とは初期化イディオムですよ
690デフォルトの名無しさん:04/10/05 20:55:26
C++でreallocかよプッ
691デフォルトの名無しさん:04/10/05 20:57:13
>>689って何?
692デフォルトの名無しさん:04/10/05 21:49:08
>>673
例外安全・例外中立のstackにするために、pop()は取出しでは
ない。top()で取得した後にpop()で消去せよ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=240
693デフォルトの名無しさん:04/10/05 22:12:03
>>678 でテンプレート使うなって書いてあるけどいいのか?
694デフォルトの名無しさん:04/10/06 01:27:36
ちょっと書き換えれば大丈夫じゃん
695デフォルトの名無しさん:04/10/06 01:58:57
どうも>>673は根本的にわかってなさそうな気がする。
696デフォルトの名無しさん:04/10/06 10:43:44
どうかこの問題をお願いします↓
まず,ファイルにデータの個数nと,その個数分のデータ(整数データ)を保存する.
プログラムinsert.cは,まずファイルからnを読み込み,その数だけデータを読み込み,挿入ソートを実行する.そして最後にソート結果を表示する.
データ例↓
10
6
4
1
2
7
5
0
9
8
3
C++です
697デフォルトの名無しさん:04/10/06 11:08:22
>>696
int main(int argc, char* argv[])
{
// TODO: この位置にファイルを開く処理を書く

// TODO: この位置にnを読み込む処理を書く

// TODO: この位置にデータを読み込む処理を書く

// TODO: この位置に挿入ソートの処理を書く

// TODO: この位置に結果を表示する処理を書く
}
698デフォルトの名無しさん:04/10/06 11:36:27
>>697
これで何とかなりそうです
どうもありがとうございます
699デフォルトの名無しさん:04/10/06 11:42:13
>>698
いやいやなんともならないので教えてください。
>>696
700デフォルトの名無しさん:04/10/06 11:51:43
>699
特定しますた!
あとで食堂の裏にプリンもってきたら教えてやるよ
701从*・ 。.・从 ◆SayuminPM. :04/10/06 13:17:24
>>696
引数でファイル指定. エラー処理無し
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
vector<int> Data;
ifstream fin(argv[1]);
int loop;
fin >> loop;
while (loop--) {
int hoge;
fin >> hoge;
Data.push_back(hoge);
}
for (int j = 1; j < Data.size(); j++) {
int key = Data[j];
int i;
for (i = j - 1; i >= 0 && Data[i] > key; i--) { Data[i + 1] = Data[i]; }
Data[i + 1] = key;
}
for (vector<int>::iterator i = Data.begin(); i != Data.end(); i++) { cout << *i << endl; }
return 0;
}
702デフォルトの名無しさん:04/10/06 13:29:07
>>697
#include <fstream>
#include <vector>
#include <ostream>
int main(int argc, char* argv[]) {
  if (argc <= 1)
    return 0;
// ファイルを開く処理
  std::ifstream ifs(argv[1]);
//nを読み込む処理
  int n;
  ifs >> n;
//データを読み込む処理
  std::vector<int> Data;
  for (int i = 0; i < n; i++) {
    int x;
    ifs >> x;
    Data.push_back(x);
  }
//挿入ソートの処理
  for (int i = 1; i < n; i++)
    for (int j = i; j > 0 && Data[j - 1] > Data[j]; j--) {
      int x = Data[j - 1];
      Data[j - 1] = Data[j];
      Data[j] = x;
    }
//結果を表示する処理
  for (int i = 1; i < n; i++)
    std::cout << Data[i] << std::endl;
}
703デフォルトの名無しさん:04/10/06 13:45:26
>//挿入ソートの処理
> for (int i = 1; i < n; i++)
> for (int j = i; j > 0 && Data[j - 1] > Data[j]; j--) {
> int x = Data[j - 1];
> Data[j - 1] = Data[j];
> Data[j] = x;
> }
バブルソートに見えるのは気のせい?

fuga.cc: In function `int main(int, char**)':
fuga.cc:28: error: `cout' undeclared in namespace `std'
704デフォルトの名無しさん:04/10/06 14:49:52
こんな感じか挿入エロソートって

for(i=0;i<n;i++){
ifs >> x;
for(j=0;j<i;j++){
if(x<Data[j]){
for(k=i;k>j;k++){
Data[k]=Data[k-1];
}
Data[j]=x;
break;
}
}
}
705デフォルトの名無しさん:04/10/06 16:04:22
>>704
k--だろう
706デフォルトの名無しさん:04/10/06 16:57:23
お願いします。
2以上の整数Nをキーボードから入力すると、Nを偶数部と奇数部に分解しそれを表示するプログラムを記述せよ。(例えば、Nとして1800を入力すると1800=2^3x225と表示したい。)
C言語です。
707デフォルトの名無しさん:04/10/06 16:59:20
整数値の上限は?
708デフォルトの名無しさん:04/10/06 17:23:10
上限は特にないみたいです。
709デフォルトの名無しさん:04/10/06 17:30:24
>>706
#include <stdio.h>
int main(void)
{
int n;
int count = 0;
scanf("%d", &n);
while (n % 2 == 0) {
n /= 2;
count++;
}
printf("2^%d * %d\n", count, n);
return 0;
}
710706:04/10/06 17:44:48
ありがとうございます。
助かりました。
711デフォルトの名無しさん:04/10/06 20:11:44
  |123456789
ーー+−−−−−−−−−
 1|123456789
 2|24681012141618
 3|369121518212427
4|4812162024283236
 5|51015202530354045
 6|61218243036424854
 7|71421283542495663
 8|81624324048566472
 9|91827364554637281
と表示されるプログラムを教えてください。
C++は初心者なのでかなり悩んでます
誰か助けてください



712デフォルトの名無しさん:04/10/06 20:12:32
  |123456789
ーー+−−−−−−−−−
 1|123456789
 2|24681012141618
 3|369121518212427
4|4812162024283236
 5|51015202530354045
 6|61218243036424854
 7|71421283542495663
 8|81624324048566472
 9|91827364554637281
と表示されるプログラムを教えてください。
C++は初心者なのでかなり悩んでます
誰か助けてください



713初心者:04/10/06 20:13:05
  |123456789
ーー+−−−−−−−−−
 1|123456789
 2|24681012141618
 3|369121518212427
4|4812162024283236
 5|51015202530354045
 6|61218243036424854
 7|71421283542495663
 8|81624324048566472
 9|91827364554637281
と表示されるプログラムを教えてください。
C++は初心者なのでかなり悩んでます
誰か助けてください



714デフォルトの名無しさん:04/10/06 20:18:21
#include <iostream>
using namespace std;
int main()
{
    cout << "  |123456789 " << endl;
    cout << "ーー+−−−−−−−−− " << endl;
    cout << " 1|123456789 " << endl;
    cout << " 2|24681012141618 " << endl;
    cout << " 3|369121518212427 " << endl;
    cout << "4|4812162024283236 " << endl;
    cout << " 5|51015202530354045 " << endl;
    cout << " 6|61218243036424854 " << endl;
    cout << " 7|71421283542495663 " << endl;
    cout << " 8|81624324048566472 " << endl;
    cout << " 9|91827364554637281" << endl;
    return 0;
}
715デフォルトの名無しさん:04/10/06 20:32:15
日記
10月6日 雨
姫野ベンチがしたくて、ifc(ifort)入れた。
おもしろかった。

C ふぉとらん
implicit none
integer i, j, tmp
do i = 1, 9
do j = 1, 9
tmp = i * j
write(*,*) i, ' * ', j, ' = ', tmp
enddo
enddo
pause
do i = 1, 10
write(*,*) 'ふぉーーーー', i
enddo
end
716デフォルトの名無しさん:04/10/06 21:45:44
#include<stdio.h>

int main(void){

int i,j,z[9][9];

for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
z[i][j]=i*j;
printf("%2d ",z[i][j]);}
printf("\n");}

return 0;
}
717デフォルトの名無しさん:04/10/06 22:33:34
#include<stdio.h>

int main(void){

int i,j;
char wnum[][] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};

for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
printf((i*j>9?"%d":"%s"),(i*j>9?i*j:wnum[i*j]));}
printf("\n");}

return 0;
}

718マイク ◆yrBrqfF1Ew :04/10/06 23:06:01
2つ以上の[]が許されるようになったのかC99は?
719デフォルトの名無しさん:04/10/06 23:19:33
C99でも無理だろ。
char *wnum[] = 〜;にしないと。
720ぼるじょあ ◆BORUJOARaA :04/10/07 15:44:59
(・3・) エェー こっちのトリップも良いNE
721デフォルトの名無しさん:04/10/07 20:02:38
>>718-719
ホントだ。気づかなかった。
すまそ
722デフォルトの名無しさん:04/10/07 22:45:46
Cです。

標準入力から現れた大文字は小文字に、小文字は大文字に、
そのほかはそのままに変換するプログラムをつくれ。

#include <stdio.h>
int main(void)
{ int ch,count=0;
while((=getchar()) != EOF )
if( { } ) ch+= { } ;
eise if( { } ) ch-= { } ;
putchar(ch);
}
return(0);
}

{ } の中身が分かりません。
お願いします。
723デフォルトの名無しさん:04/10/07 22:47:34
>>722
せめて正しく問題文を写して来い
724デフォルトの名無しさん:04/10/07 22:48:31
ウホッw LISP?
725デフォルトの名無しさん:04/10/07 22:54:01
if (isupper(ch)) ch = toupper(ch);
else if (islower(ch)) ch = tolower(ch);
726デフォルトの名無しさん:04/10/07 22:59:51
#include <stdio.h>
int main(void)
{ int ch,count=0;
while((ch=getchar()) != EOF )
{
if( ch >= 'a' && ch <= 'z' )ch+= 'A' - 'a' ;
elseif( ch >= 'A' && ch <= 'Z' )ch-= 'A' - 'a' ;
putchar(ch);
}
return(0);
}
727デフォルトの名無しさん:04/10/07 23:15:30
>726
EBCDICならアウツw
728デフォルトの名無しさん:04/10/07 23:20:29
>>725
問題文から外れてるのでアウツw
729725:04/10/07 23:32:27
なんかムシャクシャしていたのであえて無視してみた。
730初心紗:04/10/07 23:51:22
授業の課題で、ファイルの16進数ダンプをするプログラム(DOS )を作成しなければいけません。おねがいだれかつくって。
も〜う、憂鬱で夜も眠れません。
731デフォルトの名無しさん:04/10/07 23:53:49
>>730
マルチしたので0点
732デフォルトの名無しさん:04/10/07 23:54:09
とりあえず問題文を全部書き写せ
733初心紗:04/10/07 23:57:25
マルチって何?

【補習課題】
ファイルダンプ(バイナリファイルの入力)
    
コントロールブレイクの課題が完了した方は、バイナリファイルの入力を習得しましょう。
機能仕様:指定されたファイルの内容を16進数でダンプ表示する。
インターフェイス:
C:\> FILDMP.EXE 入力ファイル名
734デフォルトの名無しさん:04/10/08 00:01:17
なんだマルチかよ
735初心紗:04/10/08 00:06:56
別の板で、質問したら、もうバカかアホかとののしられ・・・
736デフォルトの名無しさん:04/10/08 00:12:21
別の板で、質問したら、もうバカかアホかとののしられ・・・
~~~~~~~~~~
これがマルチ。2chの人達は複数のスレで訊かれると「信用されてないな」
と考え、答えることを拒否します。
早く答えが欲しいと複数のスレに書き込むことは逆効果。
737デフォルトの名無しさん:04/10/08 00:14:44
ポワソンの右辺の関数g(x,y)が
g(x,y)=exp((x-1/2)^2+(y-1/2)^2)
のとき、Gaussの消去法を用いてポワソン方程式を解くプログラムを作成する。
内点は10×10として境界上ではz=0とする。
------------------------------------------------------
この課題の考察を考えよ。

ダレカお願いします、、
738デフォルトの名無しさん:04/10/08 00:16:04
考察を考えよって面白い問題だな。
739デフォルトの名無しさん:04/10/08 00:26:27
>>733
ダンプって、やっぱり書式が必要?
740デフォルトの名無しさん:04/10/08 00:31:54
>>733
まあ雛型だけ書いてやるよ。このまま提出しても5点くらいしかやらないだろうな。俺なら。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
FILE *fp;
int in;
if ((fp = fopen(argv[1], "r")) == NULL) {
printf("file open error!!\n");
exit(1);
}
while ((in = fgetc(fp)) != EOF) {
printf("%02X ", in);
}
fclose(fp);
return 0;
}
741初心紗:04/10/08 00:31:59
サンプルのEXEでは、以下のようにでます。

HEXDMP(bookq.htm)
[00000001] 3C48544D 4C3E0A3C 48454144 3E0A3C6D * <HTML>.<HEAD>.<m *
[00000017] 65746120 68747470 2D657175 69763D22 * eta http-equiv=" *
[00000033] 436F6E74 656E742D 54797065 2220636F * Content-Type" co *
[00000049] 6E74656E 743D2274 6578742F 68746D6C * ntent="text/html *
[00000065] 3B206368 61727365 743D782D 736A6973 * ; charset=x-sjis *
[00000081] 223E0A3C 5449544C 453E8341 83938350 * ">.<TITLE>アンケ *
[00000097] 815B8367 3C2F5449 544C453E 0A3C5354 * ート</TITLE>.<ST *
[00000113] 594C4520 54595045 3D227465 78742F63 * YLE TYPE="text/c *
[00000129] 7373223E 0A41207B 74657874 2D646563 * ss">.A {text-dec *
742デフォルトの名無しさん:04/10/08 00:33:42
>>741
この野郎、後になって問題につけたししやがって!!!ふざけるな!!!
743初心紗:04/10/08 00:34:49
5点ではなあ〜はああ 落第じゃん。
744デフォルトの名無しさん:04/10/08 00:53:13
745744:04/10/08 00:53:57
>>741 よりは一般的な出力になっていると思われ。
746デフォルトの名無しさん:04/10/08 00:55:53
ダンプ松本?
747初心紗:04/10/08 01:03:58
std::cout って習ってないというか・・・  ::って何でしょうか? 
748デフォルトの名無しさん:04/10/08 01:05:17
>>747
調べなさい。
749デフォルトの名無しさん:04/10/08 01:05:55
>>747
文句ばっかりだな。礼のカケラもないし。
750デフォルトの名無しさん:04/10/08 01:07:41
>>747
習ってないからって即座に音を上げるな。
「using namespace std」とかでぐぐったら出てこない?
とりあえず、名前空間について調べろ。
751744:04/10/08 01:09:13
もしかしてC++は蚊帳の外なのか…せっかく今頑張って作ったのに(ToT)
752初心紗:04/10/08 01:12:24
ごみん・・・ 礼を言う暇もなかったですが・・・ C++は前人未踏の世界です。 
753デフォルトの名無しさん:04/10/08 01:13:30
>>752
馬鹿は素直に落第しろよ
754デフォルトの名無しさん:04/10/08 01:14:45
無礼にも程がある
755デフォルトの名無しさん:04/10/08 01:14:55
前人未踏って(w
「君が」未踏なんだろ?
756デフォルトの名無しさん:04/10/08 01:16:43
ところでさ、宿題スレって要らなくない?
こんなバカが増えるだけじゃないの?
757デフォルトの名無しさん:04/10/08 01:17:48
>>756
宿題スレは必要だ。
CやC++スレに持ってこられたらそれこそ迷惑だからな。
758デフォルトの名無しさん:04/10/08 01:38:34
要するに昔微妙に流行った広告ホイホイみたいなもんか
759デフォルトの名無しさん:04/10/08 02:40:11
初心者ですからスレの違いなんてわかりませんよキモヲタども

みたいな態度でどこの関連スレにも現れるのが現状ですが・・・
760デフォルトの名無しさん:04/10/08 03:25:19
>733
#include <stdio.h>
#include <ctype.h>
int main(int argc, char* argv[])
{
  FILE* pFile;
  char acBuf[16];
  char acLine[79+1];
  char acTmp[8+1];
  unsigned char uc;
  int iCount;
  int iRead;
  int i;

  if(argc != 2) {
    fprintf(stderr, "Usage: fildmp filename\n");
    return 1;
  }
761デフォルトの名無しさん:04/10/08 03:26:32
  pFile = fopen(argv[1], "rb");
  if(pFile == NULL) {
    fprintf(stderr, "ファイルのオープンに失敗しました。\n");
    return 1;
  }

  for(iCount = 0; ; iCount += 16) {
    memset(acLine, ' ', 79);
    sprintf(acTmp, "%08X", iCount);
    memcpy(acLine, acTmp, 8);

    iRead = fread(acBuf, 1, 16, pFile);
    for(i = 0; i < iRead; i++) {
      uc = (unsigned char)acBuf[i];
      sprintf(acTmp, "%02X", uc);
      memcpy(acLine + 9 + i * 3, acTmp, 2);
      acLine[57 + i] = isgraph(uc) ? (char)uc : '・';
    }
    acLine[79] = 0x00;
    printf("%s\n", acLine);
    if(iRead != 16) {
      break;
    }
  }

  fclose(pFile);
  return 0;
}
762 ◆FIcNi4f8js :04/10/08 08:47:23
そう言えば宿題の採点結果がどうだったかを書き込むやつは見たこと無いな。
763デフォルトの名無しさん:04/10/08 09:22:50
そんなもん学期末になるまで,誰も気にしねぇだろ。

A取らなきゃ気がすまない,絶対あのゼミ行くぜ!,
って奴なら別かもしれんが,そんな奴ぁはここに来ない。
764デフォルトの名無しさん:04/10/08 10:40:39
2ちゃんのdat形式のファイルID取り出しがうまくいかないorz
名前や本文にに <>とか空白とか含めることできるから、なかなかいい方法が見つからないorz
なんかいい方法教えてくださいorz
765デフォルトの名無しさん:04/10/08 10:41:51
>>764
どこの学校の宿題ですか?
766デフォルトの名無しさん:04/10/08 11:48:36
人生の宿題でつよ。
767デフォルトの名無しさん:04/10/08 12:44:38
>>764
datをよく見よ。
<は<>は>で区切り以外で<>は出てこない。
例外でトリップがあると名前</b>トリップ<b>という風になっている。

他にも♥など詳しくは html 特殊文字 でぐぐれ。
768デフォルトの名無しさん:04/10/08 12:46:46
すまん

datをよく見よ。
<は&lt; >は&gt;で区切り以外で<>は出てこない。
例外でトリップがあると名前</b>トリップ<b>という風になっている。

他にも&hearts;など詳しくは html 特殊文字 でぐぐれ。
769デフォルトの名無しさん:04/10/08 12:54:04
ネコミミモードです♥
770764:04/10/08 13:11:10
>>768
あ、そっかなるほど。わかったよ(`∇´*)ノオウ!!
ありがとd(*´`)
771デフォルトの名無しさん:04/10/08 13:23:56
&amp;くらい使えよ
772デフォルトの名無しさん:04/10/08 15:08:35
任意の動画ファイルを読み込んで輝度値を2〜5倍して出力しなさいと言う問題があるのですが
動画ファイルの読み込みがうまくいかずになんともなりません。
誰か教えていただけませんか?
773デフォルトの名無しさん:04/10/08 15:09:25
>>772
どううまくいかないのか具体的に述べよ。
774772:04/10/08 15:33:15
>>773
えーと、元のファイル「test.avi」っていうのがあったとして
それの輝度値を変えたのが「test2.avi」としますよね
このtest2.avi自体は生成されるんですけど、開こうとしたりプロパティ見ようとすると
アプリケーションの強制終了が起こるんです。
んで、動画の各フレームを読み込む部分が悪いのかなと思ってそこをいじってたら
ワケが分からなくなってしまったので質問したんです。もう丸々一から作り直そうかと思ってます。
775772:04/10/08 15:50:39
で、その際にまたファイルの読み込み部でエラー起こったらイヤなので
その辺りを教えていただければと。ちなみにCです。
776デフォルトの名無しさん:04/10/08 16:11:15
ファイルフォーマットを詳しく書かないと無理
APIで読むならスレ違い
777772:04/10/08 17:02:42
ヘッダなしで1ドットあたりに8bitの信号が並んでいるものです。
720*480でYUV信号がTOPとBOTTOMで半分ずつになっているようなものです。
778デフォルトの名無しさん:04/10/08 19:51:28
CIAから送られた座標データをCプログラムで判断して
仮に[x,y]=[1,0]なら "そこは日本です。"とCIAagentに返すプログラムを教えてくだない。
779デフォルトの名無しさん:04/10/08 20:49:45
>>778
氏ね
780デフォルトの名無しさん:04/10/08 23:59:47
>>779
死ねってなんだよこのやろう。
お前、俺が死んだら責任とれんのか?
人にはいっていいことと悪いことがあんだよ。
そんなこともわかんねえのか?プログラムなんかやってないで
もっと人間としてのマナーを学んだほうがいいんじゃない?
だいたい君、たいした実力もないのに、下を見て悦になるタイプでしょ。
いややわあそんなの。向上心持とうぜうんこちゃんw
781780:04/10/09 00:07:31
いや、まだ怒りがおさまりません。
こっちが必死になって聞いているのに
無下に投げ捨てるその態度もさることながら
死ねなどという私の尊厳を無視した対応には
大変遺憾である。
>>779さんにはぜひとも謝罪を要求したく思います。
わかったな、たかし。
782デフォルトの名無しさん:04/10/09 00:22:38
コピペ?
ま、どっちにしろ面白くも何とも無いが
783デフォルトの名無しさん:04/10/09 00:23:06
┌───────────────────
│あ、どうもスイマセン、>>780がお騒がせしました・・・
└───v───────────────
     /⌒\ っ   /\
    /'⌒'ヽ \ っ/\  |
    (●.●) )/   |: | すぐ連れて逝きますんで・・・
     >冊/  ./     |: /
   /⌒   ミミ \   〆
   /   / |::|λ|    |
   |√7ミ   |::|  ト、   |
   |:/    V_ハ   |
  /| i         | ∧|∧
   и .i      N /⌒ ヽ) >>780
    λヘ、| i .NV  |   | |
      V\W   ( 、 ∪
              || |
              ∪∪
784デフォルトの名無しさん:04/10/09 00:27:00
(((((;゚д゚)))))ガクガクブルブル

>>779

WWW
785デフォルトの名無しさん:04/10/09 01:09:46
何だ。釣りかキチガイか。
786デフォルトの名無しさん:04/10/09 10:32:35
この俺の願いを叶えてくれる優しいプログラマーいない?
787デフォルトの名無しさん:04/10/09 10:49:12
とりあえず書いてみろ
788デフォルトの名無しさん:04/10/09 10:52:24
>>787
あまりにも図々しい願いだからちょっと気が引けてるの(;´Д`)

とりあえずプログラムかじったこともない自分だけどあと6時間ぐらい
自分で考えてやってみる
789デフォルトの名無しさん:04/10/09 10:56:32
じゃあ書くなよカスが
790デフォルトの名無しさん:04/10/09 11:19:21
ドラゴンボールを集めてきたら
願いを叶えてやらんでもない。
791デフォルトの名無しさん:04/10/09 11:36:55
くそここは厨の掃き溜めかよ。
792デフォルトの名無しさん:04/10/09 12:56:20
>>791
例えばお前とかな。
793791:04/10/09 13:04:11
本当に嫌なスレだよ。
単に状況を嘆くスレしただけでいちいち>>792のような
煽りがつく。もうこのスレの汚さに吐き気さえ催すよ。
>>792 もういいかげんそういうの止めろよ。みんな迷惑してるぞw
794791:04/10/09 13:05:20
2行目 スレ→レスな。
どうせ修正しないと、ねちっこく叩いてくるんだろ?
もうあきあきしてるんだよ、そういうの。
もっと寛大な心でいられないものかねえ。
795デフォルトの名無しさん:04/10/09 13:07:35
またアンチぼるじょあが暴れているのか。
796デフォルトの名無しさん:04/10/09 13:11:31
【ネタ投入】
標準入力から入力を読み取って標準出力に出力する電卓プログラムを書け。
ただし、次の演算子、関数をサポートすること。変数に対応する必要はない。
(単項演算子)+, -
(2項演算子)+, -, *, /, %
(関数)sin, cos, tan, arcsin, arccos, arctan, sec, cosec, cot, sinh, cosh, tanh,
arcsinh, arccosh, arctanh, log10(底が10の意), log2(底が2の意), log(底がe),
exp, pow
797ぼるじょあ ◆yBEncckFOU :04/10/09 13:15:53
>>795 呼んだ?
798デフォルトの名無しさん:04/10/09 13:26:21
課題が出たのですが分からないので教えてください

この間に、英文テキストファイル(単語数100語程度)を用意し、
これを処理するプログラムをつくります。

プログラムは、
(1)テキストファイルを単語ごとに区切る
(2)単語をソートして並べ替える
(3)ファイルに保存する
という流れで作ってください

↑という問題です
初心者にも分かりやすくお願いします
799デフォルトの名無しさん:04/10/09 13:29:06
awk,sortを使ってはダメか?
800799:04/10/09 13:31:05
system()等を使って
801デフォルトの名無しさん:04/10/09 13:51:29
>>798
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <boost/tokenizer.hpp>

int main(){
    std::string filename, line;
    std::vector<std::string> words;
    std::getline( std::cin, filename );
    std::ifstream ifs( filename.c_str() );

    while( std::getline( ifs, line ) )
    {
        typedef boost::char_separator<char> myseparator;
        typedef boost::tokenizer<myseparator> mytokenizer;
        typedef mytokenizer::iterator iter;
        myseparator sep( " \t" );
        mytokenizer tokens( line, sep );
        for( iter it = tokens.begin(); it != tokens.end(); ++it )
            words.push_back( *it );
    }

    std::sort( words.begin(), words.end() );
    ifs.close();
    std::ofstream ofs( "out.txt" );
    for( std::vector<std::string>::iterator it = words.begin(); it != words.end(); ++it )
        ofs << *it << std::endl;
    ofs.close();
    return 0;
}
802798:04/10/09 14:17:08
>>801
ありがとうございます!!
これからやってみます!!
803デフォルトの名無しさん:04/10/09 14:38:40
>>802
ちゃんと読んで返事してるか?
804デフォルトの名無しさん:04/10/09 14:49:55
void sortAndOut(const char * inFileName, const char * outFileName)
{
char * p = new char[strlen(inFileName) + strlen(outFileName) + 30];
sprintf(p, "xargs -n1 echo < %s | sort > %s", inFileName, outFileName);
system(p);
}
805804:04/10/09 14:50:23
あー、deleteするの忘れたよ。
806デフォルトの名無しさん:04/10/09 15:28:32
>>801
宿題なんだから標準以外のライブラリを使うなってw
807デフォルトの名無しさん:04/10/09 15:44:45
行数制限に合わせるために激しく醜いが、一応標準だけ。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <fstream>
#include <string>
#include <vector>
int operation(const char* input_name, const char* output_name) {
  std::ifstream input(input_name);
  if (!input) return -1;
  const char delimiters[] = " \t,.;:\"?!";
  std::vector<std::string> words;
  std::string line;
  while (getline(input, line)) {
    std::string::size_type start_index = line.find_first_not_of(delimiters);
    while (start_index != std::string::npos) {
      std::string::size_type end_index = line.find_first_of(delimiters, start_index);
      if (end_index == std::string::npos) end_index = line.length();
      if (end_index - start_index != 0) words.push_back(line.substr(start_index, end_index - start_index));
      start_index = line.find_first_not_of(delimiters, end_index);
    }
  }
  std::sort(words.begin(), words.end());
  std::ofstream output(output_name);
  if (!output) return -1;
  for (std::vector<std::string>::iterator first = words.begin(), last = words.end(); first != last; ++first) output << *first << std::endl;
  return 0;
}
int main(int argc, char* argv[]) {
  if (argc != 3) {std::cout << "invalid arguments!" << std::endl;return 1;}
  else return operation(argv[1], argv[2]);
}
808デフォルトの名無しさん:04/10/09 17:08:40
open InFile, "Input.txt"; # 入力用ファイルを開く
my $FileInputContents = join '', <InFile>; # 文章を1文字列として変数に読み込み
close InFile;

my (@Words) = $FileInputContents =~ /(\w+)/g; #文章から単語を抽出し、配列に入れる
@Words = sort { $a cmp $b } @Words; # 配列に入っている単語をソート

open OutFile; # 出力用ファイルを開く
print OutFile join ' ', @Words;
close OutFile;
-----------------------------------------
まぁ、これはPerlだわな。
だが一旦中間的に落としているものとしてはわかりやすい(目的と合致しとるし)

C++でも上の入力と出力は簡単にできる。
真ん中の部分をいかにC++で書くかが問題だが、「課題」であれば、ソートを
使用してはなんの意味もないだろう。

課題の目的は
・「トークンへと分解するのを自作のアルゴリズムでできるか」
・「単語同士を比較してソートするのを自作のアルゴリズムでできるか」
ってことだ。よってここは標準関数(クラスメソッド含め)使用すべきではないと思う。
(そうでなければ、何の思考の鍛錬にもつながらないので意味を成してない。)
あとは自分でやりなされ。
809デフォルトの名無しさん:04/10/09 17:24:34
798がC++を使ってプログラム手法を学んでいるのか
単にC++を学んでいるのかによるな。
810デフォルトの名無しさん:04/10/09 17:30:14
単にCを学んでいるという可能性もあるな。
811デフォルトの名無しさん:04/10/09 17:31:22
Cだとコールバック書くのがウザイからなあ
812デフォルトの名無しさん:04/10/09 17:37:55
>>807
std::set に突っ込めよと思うのは気のせい?
813デフォルトの名無しさん:04/10/09 21:53:42
確かに宿題でboostはやりすぎだなw
814807:04/10/10 00:07:16
>>812
std::multiset(おそらく複数の同一要素を格納する必要があるから)は
俺も考えたんだが、ただvectorを後で一気にソートしたほうが早い
のではないかと思ったから。実験してないけど。
815デフォルトの名無しさん:04/10/10 01:47:55
#include <iostream.h>
#include <fstream.h>
class coord{
private:
int x, y;
public:
coord(int a = 0, int b = 0){x = a; y = b;}
friend ostream& operator<<(ostream& stream, coord ob);
friend istream& operator>>(istream& stream, coord& ob);
};
ostream& operator<<(ostream& stream, coord ob){
stream << " x: " << ob.x << " y: " << ob.y << endl; return stream;}
istream& operator>>(istream& stream, coord& ob){stream >> ob.x >> ob.y; return stream;}
int main(){
coord a(10, 20), b(30, 40), c, d;
ofstream out("test");
out << a << b;
out.close();
ifstream in("test");
in >> c >> d; cout << c << d;
in.close();
return 0;
}
using namespace std;にしてないのは、VC++6.0を使ってて、operator<<でエラーが出るからです。
で、お聞きしたい事は、結果が10 20 30 40と得られると思ったのですが、実際は0だけにしかなりません。
どうすれば、望んだ結果を得ることができるのでしょうか?
お願いします。
816デフォルトの名無しさん:04/10/10 02:13:22
>>815
失敗したのは c, d の出力だけ?
ストリームに数値と別に "x:" や "y:" が挿入されてるせいで int にちゃんと変換できていないと思われ。
817デフォルトの名無しさん:04/10/10 02:28:47
>>816
失敗したのはc、dだけです。
どこを変えたいいんでしょうか?
818デフォルトの名無しさん:04/10/10 02:36:48
>>817
とりあえず " x: " や " y: " を消して、ob.x と ob.y を ' ' で区切って出力するだけにしてみ
819デフォルトの名無しさん:04/10/10 02:41:08
>>818
あっ できました・・・。
これってどういう事なんでしょうか?
なぜ文字を消して、' 'を書くことでうまくいったんでしょうか?
820デフォルトの名無しさん:04/10/10 02:46:58
良く嫁やボケ
821デフォルトの名無しさん:04/10/10 02:50:50
もしかして、釣りだったとか?
822デフォルトの名無しさん:04/10/10 21:15:30
>>815
> stream << " x: " << ob.x << " y: " << ob.y << endl;
で出力が「 x: 10 y: 20(改行)」になるよな。んで
> stream >> ob.x >> ob.y;
「x:」とか「y:」はどこで読み込むんだい?
823ぼるじょあ ◆yBEncckFOU :04/10/11 00:22:11
(・3・)エェー
チミ の宿題どんどん片づけちゃうよー.オイデオイデー.
824デフォルトの名無しさん:04/10/11 01:02:38
>>823
代わりに試験勉強してください
825デフォルトの名無しさん:04/10/11 01:13:41
>>824
試験結果に慄く君を見られるなら喜んでさせて頂く
826デフォルトの名無しさん:04/10/11 02:09:29
827デフォルトの名無しさん:04/10/11 06:38:11
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=121
1a
2b
3c
3d
5e
12335
abcde
上のように表示するプログラムですが、Before[i]を表示した後に必ず不正な処理などと出て結果が出てきません。
どうもTurnStrがおかしいと思うのですがどうすればいいのでしょうか?
828从*・ 。.・从 ◆SayuminPM. :04/10/11 06:55:17
>>827
7c7
< for (int j = 0; i < ToNum; j++)
---
> for (int j = 0; j < ToNum; j++)
829デフォルトの名無しさん:04/10/11 08:05:43
>>828
直りました。
ありがとうございます。
830デフォルトの名無しさん:04/10/11 15:30:20
CASLアセンブラを設計し、プログラムを作成しなさいという課題なんですが教えてください。Cでおねがいします。

(1)アセンブラは、例1に示すようなソースファイルを読み込み、例2の形式で結果をファイルに出力する。
(2)変換処理は2パス形式とし、1パス目にラベルの登録を行い2パス目に各コード変換を行って出力する。
(3)内部で処理される主となるデータの構造体をきちんと定義する。
(4)入力ファイルは、大文字、小文字、タブなどの文字を想定して認識できるようにする。
831830:04/10/11 15:31:03
(例1) 入力ファイル例
push 0,gr1 ;レジスタの退避
push 0,gr2 ;
push 0,gr3 ;
ld gr2,2,gr4 ;翻訳アドレスを初期化する
dis_10 cpl gr2,1,gr4 ;逆アセンブルの終了条件を調べる
jmi dia_20 ;逆アセンブルの実行
jmp dia_90 ;逆アセンブルの終了
dis_20 lea gr3,dbuff ;編集バッファアドレスを初期化する
lea gr0,0 ;
st gr0,esize ;編集データサイズを初期化する
ld gr0,ebufs ;GR0=編集バッファサイズ
lea gr1,0,gr3 ;GR1=編集バッファアドレス
call clrbuf ;編集バッファをクリアする
lea gr0,gr2 ;GR0=翻訳アドレス、GR3=編集バッファアドレス

832830:04/10/11 15:31:25
(例1) 入力ファイル例
push 0,gr1 ;レジスタの退避
push 0,gr2 ;
push 0,gr3 ;
ld gr2,2,gr4 ;翻訳アドレスを初期化する
dis_10 cpl gr2,1,gr4 ;逆アセンブルの終了条件を調べる
jmi dia_20 ;逆アセンブルの実行
jmp dia_90 ;逆アセンブルの終了
dis_20 lea gr3,dbuff ;編集バッファアドレスを初期化する
lea gr0,0 ;
st gr0,esize ;編集データサイズを初期化する
ld gr0,ebufs ;GR0=編集バッファサイズ
lea gr1,0,gr3 ;GR1=編集バッファアドレス
call clrbuf ;編集バッファをクリアする
lea gr0,gr2 ;GR0=翻訳アドレス、GR3=編集バッファアドレス

833830:04/10/11 15:32:02
(例2) 出力ファイル例
LINE ADDR OBJECT SOURCE
1 0000 7001 0000 push 0,gr1 ;レジスタの退避
2 0002 7002 0000 push 0,gr2 ;
3 0004 7003 0000 push 0,gr3 ;
4 0006 1023 0002 ld gr2,2,gr4 ;翻訳アドレスを初期化する
5 0008 4124 0001 dis_10 cpl gr2,1,gr4 ;逆アセンブルの終了条件を調べる
6 000A 6100 000E jmi dia_20 ;逆アセンブルの実行
7 000C 6400 004E jmp dis_90 ;逆アセンブルの終了
8 000E 1230 0056 dis_20 lea gr3,ebuff ;編集バッファアドレスを初期化する
9 0010 1200 0000 lea gr0,0 ;
10 0012 1100 00A7 st gr0,0 ;編集データサイズを初期化する
11 0014 1000 00A6 ld gr0,esize ;GR0=編集バッファサイズ
12 0016 1213 0000 lea gr1,0,gr3 ;GR1=編集バッファアドレス
13 0018 8000 00AD call clrbuf ;編集バッファをクリアする
14 001A 1202 0000 lea gr0,0,gr2 ;GR0=翻訳アドレス、GR3=編集バッファアドレス
834830:04/10/11 15:33:03
すいません。例1を間違えて2回やってしまいました・・・
835デフォルトの名無しさん:04/10/11 15:55:48
>830
レベル高杉。ボソッ
836デフォルトの名無しさん:04/10/11 15:58:37
ちょっと時間掛かりそうだな
837デフォルトの名無しさん:04/10/11 16:03:01
こんなのできねーよ。
熟練プログラマじゃないと。
838デフォルトの名無しさん:04/10/11 16:06:08
じゃあ、熟練じゃない(アマ)プログラマの俺が挑戦してやるよ
839830:04/10/11 16:08:08
すいません、ありがとうございます。
しかしそんなに難しいものを出してくるオレの学校っていったい・・・
できている人いるのだろうか・・・
840デフォルトの名無しさん:04/10/11 16:35:33
余因子行列を展開するプログラムを教えて下さい。
841デフォルトの名無しさん:04/10/11 16:50:14
>>839
宿題としては大掛かりすぎるけど、期末課題としてなら妥当では。
本気で取り組めば出来ない問題ではないかと。
ただ掲示板で手軽に答えられるほど簡単じゃないな。
842デフォルトの名無しさん:04/10/11 16:53:24
オレも卒業課題でCASLコンパイラの作成したなぁ
実際に作ろうとすると、仕様をもっと深く決めないといけない
843デフォルトの名無しさん:04/10/11 17:33:13
俺は授業でCコンパイラ作らされた罠
844デフォルトの名無しさん:04/10/11 17:39:34
漏れもCコンパイラつくったけど、教科書どおりにやってただけで
自分で1からは無理ぽね。
845デフォルトの名無しさん:04/10/11 18:08:18
命令に対応するコードって自由に作っていいんだよな。。。
846830:04/10/11 18:17:16
特に指定がないので多分いいと思います。
847デフォルトの名無しさん:04/10/11 20:18:45
時間かかりそ〜。マクロ命令なんてのもあるんだ
848デフォルトの名無しさん:04/10/11 23:35:47
お願いします。

問:
正の整数aとbを入力し、aのb乗を求めるプログラム。
反復処理を用いよ。
849デフォルトの名無しさん:04/10/11 23:41:54
/* int a = ?, b = ?; */
int i, n;

n = 1;
for(i = 0; i<b; i++) n *= a;

printf("%dの%d乗は%dです。", a, b, n);
850デフォルトの名無しさん:04/10/11 23:53:31
すぐオーバーフローしそう
851848:04/10/11 23:56:46
本当にすみません!!
c++でお願いします。書き忘れましたすみません。
852デフォルトの名無しさん:04/10/11 23:58:26
849はC++だろうが
853デフォルトの名無しさん:04/10/12 00:01:51
CはC++に部分集合として含まれる。よってCのコードはすなわち
C++のコードでもある。
854デフォルトの名無しさん:04/10/12 00:03:29
>>848
cout使えつうことか?
855デフォルトの名無しさん:04/10/12 00:05:54
じゃあ、C++風に・・・

// #include <iostream>
// int a = ?, b = ?;

// ... int main()とか
int n = 1;
for(int i = 0; i < b; i++) n *= a;

std::cout << a << "の" << b << "乗は" << n << "です。" << std::endl;

//... returnとか
856デフォルトの名無しさん:04/10/12 00:14:30
cout使うとマヌケなプログラムに見えてしまうな・・・
857デフォルトの名無しさん:04/10/12 00:28:39
http://www.geocities.jp/i035192/server2.c
上のソースを変更してクライアントから入力した文字をそのまま返す(エコーバック)ことを実現するサーバプログラムを作成したいのですが、
どこを変更したらいいのかわかりません。
ちなみにクライアント側は
http://www.geocities.jp/i035192/client3.c
を使用します。
エコーバックの実現方法についての説明文も必要なので教えてください
858デフォルトの名無しさん:04/10/12 00:35:18
>>856
char str[256];
sprintf(str, "%dの%d乗は%dです。", a, b, n);

std::cout << str << std::endl;
859デフォルトの名無しさん:04/10/12 00:38:19
>>858
統一感のないコードだな
860デフォルトの名無しさん:04/10/12 00:40:19
>>857
ひどいな、コメントが「サバープログラム」だったり
機種依存文字が入ってたり…
861デフォルトの名無しさん:04/10/12 00:41:34
>>857
一度に全てのデータを送受信できると決めつけて
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=242
862857:04/10/12 01:33:04
>>860
サバープログラムは私の打ち間違えです(恥
機種依存文字入ってました?
文字化けした部分を直したりしたのですが気づかなかったです・・・

>>861
ありがとうございます。
これで何とか実験が出来ます。
863デフォルトの名無しさん:04/10/12 01:37:43
再帰を使って(for while使用禁止)x^nをO(log(n))で計算するアルゴリズムが分かりません
ご教授お願い致します
864デフォルトの名無しさん:04/10/12 01:53:30
>>863
n が2の冪でいいなら簡単なんだけど。
865デフォルトの名無しさん:04/10/12 01:59:34
>>864
すべての自然数nです
866デフォルトの名無しさん:04/10/12 02:30:19
>>863
xは整数でいいの?
867デフォルトの名無しさん:04/10/12 02:31:30
>>866
はい
868デフォルトの名無しさん:04/10/12 02:37:09
#include <stdio.h>

#define BUF_SIZE 256

int npow(int x, int n)
{
if(!n){
return 1;
}else{
int p = npow(x, (n >> 1));
if(n & 1){
return p * p * x;
}else{
return p * p;
}
}
}

869デフォルトの名無しさん:04/10/12 02:37:59
int main(void)
{
char buf[BUF_SIZE];
int x, n;

do{
x = n = 0;
printf("x, n = ");
fgets(buf, BUF_SIZE, stdin);
sscanf(buf, "%d,%d", &x, &n);
printf("%d ^ %d = %d\n", x, n, npow(x, n));

printf("repeat?(y/n)");
fgets(buf, BUF_SIZE, stdin);
}while(buf[0] != 'n')

return 0;
}
870デフォルトの名無しさん:04/10/12 02:39:03
>>863
int pow(int x, int n)
{
    return n == 1 ? x : x * pow(x, n - 1);
}
871870:04/10/12 02:40:56
あ、nは正数の方向で。
872デフォルトの名無しさん:04/10/12 02:43:02
スマソ

}while(buf[0] != 'n')

}while(buf[0] != 'n');
だった orz
873デフォルトの名無しさん:04/10/12 02:46:45
>>870
それはO(n)じゃないか?
874デフォルトの名無しさん:04/10/12 02:47:37
>>870
それO(n)だよ
875デフォルトの名無しさん:04/10/12 02:48:00
ケコーン
876870:04/10/12 02:50:30
普通に問題読んでなかった…スマン(_ _;
877デフォルトの名無しさん:04/10/12 02:55:59
>>868

0 ^ 0 = 1 でよかったっけ?
n は自然数だから考えなくていいのかな?
878デフォルトの名無しさん:04/10/12 02:58:00
0^0は不定じゃなかろか
879デフォルトの名無しさん:04/10/12 03:06:37
要するに
pow(3,10)=pow(3^2,10/2)=pow(9,5)=9*pow(9, 4)=9*pow(9^2,4/2)=9*pow(81,2)=9*pow(81^2,2/2)=9*pow(81^2,1)
で半分ずつになっていくから O(logN) ってこと?
880デフォルトの名無しさん:04/10/12 03:07:00
881デフォルトの名無しさん:04/10/12 03:10:34
>>879
pow(3,10) の場合 (log(2)10) 回(約3〜4)の計算量で終わる
882デフォルトの名無しさん:04/10/12 03:23:33
すぐオーバーフローしそう
883デフォルトの名無しさん:04/10/12 03:42:52
int
power( int n, int pow )
{
    if( pow <= 0 )
        return 1;
    if( pow & 0x1 )
        return n * power( n * n, --pow >> 1 );

    return power( n * n, pow >> 1 );
}
884デフォルトの名無しさん:04/10/12 03:47:37
普通にforループで掛け合わせていくのと、>>883ってどっちのが早いの?
885デフォルトの名無しさん:04/10/12 03:59:12
>>884
オーバーフローしないとして、
Nが大きくなった場合は
>>883>>868 の方が明らかに速い

ところで、
--pow >> 1 のところの -- って必要ないような
886デフォルトの名無しさん:04/10/12 04:00:09
>>884
n=400にしても10回しか呼び出されない
887デフォルトの名無しさん:04/10/12 04:34:51
2^100 = 1267650600228229401496703205376
にしても100回くらいしか呼び出されない.
888デフォルトの名無しさん:04/10/12 04:54:32
2^100 は再帰7回だろ?
889デフォルトの名無しさん:04/10/12 06:52:00
n次の正方行列Aから第i行と第j列を取り去って得られるn-1次の正方行列を
求めるプログラムを教えてください。
890889:04/10/12 06:53:41
Cでお願いします
891デフォルトの名無しさん:04/10/12 09:19:05
>>889
いきなりそういう宿題が出されたのではなく、恐らくその前提となるn次行列を取り扱うロジックが
講義で使われるか以前の宿題として出ていたのではないかな?
そうであれば、その前提を提示することなく出題者の意図するような回答は得られないと思うのだが。
892デフォルトの名無しさん:04/10/12 11:44:50
宿題スレって先生が見てて、2chで聞いたの誰だって
怒られないのかね。
>>669
この実行の仕方がまじでわからん、だれか詳しくおしえてくれ
ちなみに初心者でCpad for LSI使ってる
コンパイラは通ったが実行方法まるで不明
894デフォルトの名無しさん:04/10/12 12:52:20
宿題自分でやるやつと人に聞くやつの割合ってどれくらいだろう?
さすがに2chで聞くようなのは下から0.1%未満だろうと思うけど。
895デフォルトの名無しさん:04/10/12 12:58:51
>>893
そのくらいソースから読み取れ
896デフォルトの名無しさん:04/10/12 13:52:22
>>892
以前は宿題が載せてあるURLかいたお馬鹿ちゃんがいたから
先生にちくったりしてましたよwww

897デフォルトの名無しさん:04/10/12 14:21:45
893ですが
まじで初心者なんで誰かおしえてください
898デフォルトの名無しさん:04/10/12 14:25:57
ヤクザですがと言われてもな
899デフォルトの名無しさん:04/10/12 14:50:18
数式書いたファイルをコマンドライン上から指定すれば標準出力にでてくる
Cpad使ってるなら実行時引数っていうのがあるからそこにファイル名
900デフォルトの名無しさん:04/10/12 15:28:46
893でつ
コンパイラわかりました!!
つーかこのプログラム>>669を作った方、つーかプログラムわかる方だれでもよいので
・アルゴリズム・データ構造の説明(少なくていいです)
・スピードやメモリの効率向上のためなど工夫した点
を聞きたいのですが、おねがいします
901デフォルトの名無しさん:04/10/12 15:55:16
宿題を他のスレにマルチポストするバカ>>900は放置モードで♥
902デフォルトの名無しさん:04/10/12 15:55:47
>>900
どこにでも貼り付け杉
903デフォルトの名無しさん:04/10/12 16:02:11
>>901,>>902
つーかあんたらなんなの?
探すなんてよほどの暇人ですね

親切な人がいないんだな、2ちゃんって
904デフォルトの名無しさん:04/10/12 16:03:39
逆ギレキター
なんで親切にしなきゃならんのだ
905デフォルトの名無しさん:04/10/12 16:09:54
さすが893
906デフォルトの名無しさん:04/10/12 16:21:03
>>903
バカの書き込みをわざわざ探す奴はいない。
巡回先で見つけただけ。
907デフォルトの名無しさん:04/10/12 16:23:42
>>903
つーかお前は何様?
つーかお前の態度が悪いんだろ?2ch全体を勝手に貶めない様に。
908デフォルトの名無しさん:04/10/12 16:27:14
>>907
つーかマルチはそんなに悪いこととは知らず
すいません
ただ早急に答えが欲しくて、すいません。
二度としませんから誰かおねがいします。本当に困ってます
909デフォルトの名無しさん:04/10/12 16:33:55
LR(1)再帰下降パーサ
910デフォルトの名無しさん:04/10/12 16:34:15
んなもんソース読んで適当にでっちあげろよ
宿題としてそれが出たのなら、そのための知識は持ってるはず
どこまでも人に頼りすぎだ
911デフォルトの名無しさん:04/10/12 16:54:19
>>909
で実行速度向上のために再帰しないって書くのか
912デフォルトの名無しさん:04/10/12 17:00:53
>>908
自分でソース読んだ方が速いと思う。
結局質問するにも限りは有ると、私は思う。
Cの関数しか使ってなさげだから、Cの標準関数の載ってる
本とか買ってみたらどう?サイト探してみるとか。
913デフォルトの名無しさん:04/10/12 17:12:35
>>912
つーかはやく答え教えろ
893なんだぜwww
914デフォルトの名無しさん:04/10/12 17:13:01
>>912
本当に時間がないんですよ。
おねがいできませんか?
915デフォルトの名無しさん:04/10/12 17:13:56
>>900
・ソース読め
・ソース読め
これで回答すればいいじゃん
916デフォルトの名無しさん:04/10/12 17:14:21
> ・アルゴリズム・データ構造の説明(少なくていいです)
むしゃくしゃしてやった。
> ・スピードやメモリの効率向上のためなど工夫した点
速ければなんでも良かった。
今は2chでマルポしている。
917デフォルトの名無しさん:04/10/12 17:15:20
>>914
>>669から1週間
お前は何をやってたんだ?
手前のケツぐらい手前で拭けよ
>>669がちゃんと便所紙渡してくれただろ
918デフォルトの名無しさん:04/10/12 17:17:51
>>916
さすがにそれだけでは・・・
工夫した点はプログラムのここをこうしたとか書いて欲しいです

無理はいいませんが
919デフォルトの名無しさん:04/10/12 17:27:35
というか基本過ぎて解説できない罠。
解説してもらうより読んだ方が速いと思ってる人の方が多そう。
というかプログラムで何がしたいんだ〜〜。
というかマジレスする自分に鬱。。。
920デフォルトの名無しさん:04/10/12 17:36:32
>>919
基本すぎの単純な解説でいいんでおねがいできませぬか?
921デフォルトの名無しさん:04/10/12 17:38:29
確かに。ソース読んでみたが、コメントついていない以外は普通に読めるコードだな
CASLのコードがわかってて、Cの基本構文わかってれば全然問題ない

けど、for(;;)は宿題としては嫌がられるかもしれない
そのあたりから「なぜfor(;;)なのか」とかを適当にでっち上げればいいかもしれない

少なくとも、この程度のものが読めないということは、読む気がないんだろう
手助けするような相手じゃないな
922デフォルトの名無しさん:04/10/12 17:45:26
>>921
自分はまったくプログラムわかってないんで、お願いします!

まじ初めてプログラムの授業でて、初めてCを見たレベルなんです
923デフォルトの名無しさん:04/10/12 17:46:21
事後処理はスレ違い。
924デフォルトの名無しさん:04/10/12 18:01:21
・ハフマン法を利用した逐次検索を行い、その結果を標準出力からランダムアクセスで出力する
・動的なハフマンツリーを構築するには処理速度が不安だったため、
 静的にツリーを保持し、データの入力をランダムアクセスにすることによってループを減らした
 また、論理演算にインラインアセンブラを使用するというアイディアをアドバイスされたので、
 出力ルーチンをアセンブラ化することによって高速化を図った


こんなもんでどうだ?
925デフォルトの名無しさん:04/10/12 18:08:06
>>924
ワロタ
どこから突っ込めばいい?
926デフォルトの名無しさん:04/10/12 18:09:23
>>924
すげーこれ
でもこんな説明しかないんですか?
確かに面くらいそう
927デフォルトの名無しさん:04/10/12 18:11:28
>>924
おいおい、こんなに詳しく書いちゃうと>>893は「この説明の解説をお願いします!!」
なんて言いかねんぞ
928デフォルトの名無しさん:04/10/12 18:12:06
>>924
まあ単純に1から10行目に「これをやった」
11から16行目は「これをやった」みたいな感じでいいんですが、それは無理?
929デフォルトの名無しさん:04/10/12 18:13:25
なんかスゲー鬱陶しいやっちゃな
こんな説明しかとかいいんですがとか。
930デフォルトの名無しさん:04/10/12 18:14:57
>>929
ごめんとしかいえません。
無理ならかまいませんが、暇ならお願いしたいです
931デフォルトの名無しさん:04/10/12 18:16:44
・単純に1〜231行目でコンパイルを行う
・1〜231行目で単純に速くなるように頑張った。
932デフォルトの名無しさん:04/10/12 18:22:57
>>931
部分ごとの解説はC言語じゃきびしいんすか?
しょうがないっすね
933デフォルトの名無しさん:04/10/12 18:27:43
>>932
>>924を暗記しておいて、「なんで解説がないのかね?」といわれたら大声で>>924を暗唱しろ
クラスの全員にお前をアピールするチャンスだ
みんながお前を見る目が変わること請け合い
934デフォルトの名無しさん:04/10/12 18:30:30
>>933
レポだけなんだが、924を書けば先生はマニアックだからわかってくれるかいな?
935889:04/10/12 18:35:39
4次以上の行列式の計算をするプログラムを教えてください。
936デフォルトの名無しさん:04/10/12 18:55:54
誰も突っ込まないな
そのまま提出させたらどうせ「先生に怒られました!どうしてくれますか!」とか
来てウザくなるのがわかってるんだから、止めとけよ

>>893
>>924はネタだ
突っ込みを入れなくてもすむところがないぐらいネタだらけだ
あれを提出したら怒られるか笑いものにされるかのどっちかだ
937デフォルトの名無しさん:04/10/12 20:03:01
class Matrix
{
int* m_pMat;
int m_n;
public:
Matrix(int n) {
m_pMat=(int*)malloc(sizeof(int)*n*n);
for(int i=0; i<=n; i++){
for(int j=0; j<=n; j++) {
if(i==j) m_pMat[i]=0; else m_pMat[i]=1;
}
}
m_n=n;
}
~Matrix() {free(m_pMat);}
void DeleteLineRow(int i, int j) {
i--,j--;
for(int y=i; y<m_n-1; y++){
for(int x=0; x<m_n; x++){
m_pMat[n*y+x]=m_pMat[n*(y+1)+x];
}
}
for(int y=0; y<m_n; y++){
for(int x=j; x<m_n-1; x++){
m_pMat[n*y+x]=m_pMat[n*y+(x+1)];
}
}
m_n--;
m_pMat=(int*)realloc( m_pMat, sizeof(m_n*m_n) );
}
}
Cではどう書けばいいのか。。。Cで書けなくなっちゃったよ。最近。
938デフォルトの名無しさん:04/10/12 20:51:43
>>935=889
>891を読め。
それから突然問題を変えるな。
939937:04/10/12 20:57:46
質問者じゃないですよ。私は。
940デフォルトの名無しさん:04/10/12 21:14:54
>>939
誰もあんたに何かを言っているわけではないだろ?
941937:04/10/12 21:17:17
ごめん。勘違いした。。。
942デフォルトの名無しさん:04/10/12 21:50:15
ほのぼのした('-'*
943デフォルトの名無しさん:04/10/12 22:22:54
934なんだけど
結局何分割にして説明はきびしいんですね

このスレは利用価値のあるスレなだけに残念
944デフォルトの名無しさん:04/10/12 22:46:54
>>943
正直に
ちっ使えないスレだな
と言え。
945デフォルトの名無しさん:04/10/12 22:49:37
>>944
いちいちそんなこと書くあんたもよっぽど暇人だな
俺も人のことはいえんが
946デフォルトの名無しさん:04/10/12 23:00:15
893です
C言語にサブルーチンなんぞあるかは知らんけど
>>669
には何かサブルーチンがあるのか
だれか親切な人おしえてください
947デフォルトの名無しさん:04/10/12 23:03:42
しつけえええええええええええええええ
948デフォルトの名無しさん:04/10/12 23:06:41
まあええやん
ケチらずに教えてくだされ、頼む
そのためのスレじゃないの?
949デフォルトの名無しさん:04/10/12 23:10:00
>>948
頼むからここじゃなくて友達かなんかに聞いてくれ。
950デフォルトの名無しさん:04/10/12 23:10:09
幼稚園製に九九を教えたほうが有意義だ
951デフォルトの名無しさん:04/10/12 23:12:55
>>946
育たぬ苗木に水や肥料与えるのは勿体無い
952デフォルトの名無しさん:04/10/12 23:22:14
>>951
竹の開花を待つぐらい気長に待てば花が咲くかもよ
953デフォルトの名無しさん:04/10/12 23:22:50
俺からも頼みますよー!!
954デフォルトの名無しさん:04/10/12 23:27:13
次スレおながいします
955デフォルトの名無しさん:04/10/12 23:29:58
OK。任せとけ。
956デフォルトの名無しさん:04/10/12 23:48:05
本スレはなかなかの名スレだった
957デフォルトの名無しさん:04/10/12 23:58:12
スマソ、新このホストでは〜 にやられた。
俺立ててないのに...

他の人、スレ立て頼む。
958ぼるじょあ ◆yBEncckFOU :04/10/13 00:04:15
ダディクールの新スレ
http://pc5.2ch.net/test/read.cgi/tech/1097592876/
959デフォルトの名無しさん:04/10/13 00:11:06
ダディクールかよ…
960デフォルトの名無しさん:04/10/13 01:00:54
>>951-952
なにげにうまいこといいますねぇ
961デフォルトの名無しさん:04/10/13 22:03:17


学生データーを入力し、学籍版g法順にソートしてファイルに出力しなさい。

構造体タグ名 Gakusei
メンバー命 Namber[10] 文字型(学籍番号)
         Name「20] 文字型(氏名)
         *next 次ポインタ

-----------実行画面-------------
学籍番号 ==>2ch003
氏名 ==>モナー
学籍番号 ==>2ch001
氏名===>ギコネコ
学籍番号 ==>2ch002
氏名==>ゾヌ
学籍番号==>999999
氏名==>999999(これで入力終了)

------------出力------------------
2ch001 ギコネコ
2ch002 ゾヌ
2ch003 モナー

なんだか入力した後にソートするのではなく、入力時点でソートをしていくとか?

ア、smdfヵsdmヵfべか3へ:ふぁえf

お願いしますです。


962デフォルトの名無しさん:04/10/13 22:49:41
> 学籍版g法順
番号順じゃなくて「版g法順」か。先に定義しろ。

> メンバー命
新手の愛好家か?

> Namber[10]
Numberだろ。


下らない揚げ足取りはさておき。
入力時点で適切な位置に挿入していけばよし。
963デフォルトの名無しさん:04/10/13 22:58:08
稲垣メンバー命
964デフォルトの名無しさん:04/10/14 11:14:29
>>938
代因子行列知らないんですか?
965デフォルトの名無しさん:04/10/14 17:24:15
知識のひけらかしでしか
966デフォルトの名無しさん:04/10/14 20:12:36
>>964
俺は「余因子行列」と習ったが。そんな訳もあるんだ。
967デフォルトの名無しさん:04/10/15 06:56:28
そんな訳ない
968デフォルトの名無しさん:04/10/15 07:17:35
次スレが…
969デフォルトの名無しさん:04/10/15 09:49:01
おまいらに宿題です。

あ と 3 年 以 内 に 外 に で よ う な。
970デフォルトの名無しさん:04/10/15 10:33:20
>>969
宿題は家でやるから宿題なのです
971デフォルトの名無しさん:04/10/15 11:26:25
>>969
つまり3年間はひきこもってもいいってことか
972勉強中:04/10/15 11:41:40
>>961
昨日構造体勉強したばかりなので
961の問題興味あるのですが、nextって
何に使うのでしょうか?
973デフォルトの名無しさん:04/10/15 11:42:56
「連結リスト」とか「リンクドリスト」で調べてみ
974勉強中:04/10/15 11:48:32
早速の返事ありがとうございます。
がんばります。
975デフォルトの名無しさん:04/10/15 11:53:31
next = this;
976デフォルトの名無しさん:04/10/15 12:37:45
#include <stdio.h>

int main(void)
{
int n, m, s, sum = 0;

printf("n >>"); scanf("%d", &n);
printf("m >>"); scanf("%d", &m);
printf("s >>"); scanf("%d", &s);

for (; n <= m; n++)
if (n % s == 0) sum += n;

printf("sum = %d", sum);

return 0;
}
977デフォルトの名無しさん:04/10/15 22:30:22
電気回路の問題なんですが
i=虚数 i*i=-1
R=1,L=0.001,C=0.0001
PI=円周率

基本式
w=2*PI*f
s=i*w
Z1=R+s*L
Z2=1/(s*C)
Z=(Z1*Z2)/(Z1+Z2)

で周波数を0〜100000まで変化させてZの絶対値を求める。
結果は周波数(一列目)Zの絶対値(2列目)というふうに出力する。

この仕様をみたしたプログラムをCで書くという問題です。
よろしくお願いします。
978デフォルトの名無しさん:04/10/16 00:28:18
Cなのか。C++ではなく。


とりあえず

初期化
for(freq=0;f<=100000;f+=df){
z=f(freq);
freqとzを出力して改行;
}

で、
f(double freq);を別に用意して実際の計算をやらせるって感じで
979デフォルトの名無しさん:04/10/16 00:38:35
3回目か…。
980デフォルトの名無しさん
>>978
だから、これも3回目だけど、周波数1Hzきざみで評価するのはやめてくれ。