>>951 数学的観点から見たら展開した方が汚いよ。
>>949 >>947のメインループを以下のようにしては?
for(k=0; k<90; k++){
for(i=0;i<n;i++){
y[i] =cos(pai*k/180)*a[i]+sin(pai*k/180)*b[i];
z[i] =-sin(pai*k/180)*a[i]+cos(pai*k/180)*b[i];
}
r = R(y, z, n);
if(r > r_max) { r_max = r; k_max = k; }
}
fprintf(fp,"k_max=%d R(k_max)=%lf\n",k_max,r_max);
for(i=0;i<n;i++){
y[i] =cos(pai*k_max/180)*a[i]+sin(pai*k_max/180)*b[i];
z[i] =-sin(pai*k_max/180)*a[i]+cos(pai*k_max/180)*b[i];
fprintf(fp,"y[%d]=%lf z[%d]=%lf",y[i] ,z[i]);
}
ちなみに前もって以下を定義しておく。
double r_max = 0, r;
int k_max;
double avg_pow4(double arr[], int N) {
int i; double result = 0;
for(i = 0; i < N; i++) result += pow(arr[i], 4);
return result / N;
}
double R(double y[], double z[], int N) {
return pow(avg_pow4(y, N) - 5, 2) + pow(avg_pow4(z, N) - 5, 2);
}
>>953 どうも有り難うございましたm(__)m
感謝します!
955 :
デフォルトの名無しさん:03/10/26 19:53
------------------------------------------------------------
テキストファイルの内容をバッファ読み込む関数
int file_load(const char *fname,char *buf)
バッファの内容をテキストファイルに読み込む関数
int file_save(const char *fname,char *buf)
ファイルオープン・クローズ、および必要なエラー処理は関数無いで行い
戻り値はエラー終了の場合-1、正常終了の場合0とする
------------------------------------------------------------
の作り方がどうしてもわかりません。。。
よろしければご教授おねがいします。
>>955 普通にfopenしてbufにメモリ割り当ててstrcpyすればいいのでわ?
レスありがとうございます。
C言語まだ初めて数ヶ月の初心者でどこをどういじって
いいのやらみたいな感じで。。。
厨房同然で申し訳ありませんがが簡単な説明交えてサンプルソースなんか
作って頂けると有り難いです。。。
>>951 それなりのコンパイラなら,最適化かけりゃどっちも同じマシンコードになるはず。
再帰で書いて欲しそうだったから,再帰にしてあげた。
>>956 その引数じゃ何をしたいのかわけワカメ。
, char **pbuf)
でバッファを動的に確保するとか,
, char *buf, size_t buf_size)
で確保済みバッファを渡すとか,
もう少し,意図を明確に。
バッファオーバーフロー上等ってのは勘弁してくれ。
>>959 レスどうもです。
バッファオバーフローとかはまだ習っていない状態です。。
引数はconst char *fname,char *bufしか与えてはいけ
ないらしいです。。
>>960 > 引数はconst char *fname,char *bufしか与えてはいけ
このスレッド最大の難問だな。
>>961 >>959 あ、もうしわけありません。
重要なことがぬけてたっぽいです。。。
「バッファのメモリ確保は関数外で行うものとする」
だそうです。。
>>955 インデントが崩れたら適当に調節してね。
で、main()も要る?
int file_load(const char* fname, char* buf)
{
FILE*fp = fopen(fname, "rt");
intch;
if(fp == NULL) return -1;
while( (ch = fgetc(fp)) != EOF ) {
*buf++ = ch;
};
fclose(fp);
*buf = '\0';
return0;
}
int file_save(const char* fname, char* buf)
{
FILE*fp = fopen(fname, "wt");
if(fp == NULL) return -1;
fwrite(buf, 1, strlen(buf), fp);
fclose(fp);
return0;
}
>>962 #include <stdio.h>
size_t FileSize;
int file_size(const char *fname) {
FILE *fp;
if((fp = fopen(fname, "r")) == NULL) return -1;
fseek(fp, 0L, SEEK_END);
if((FileSize = ftell(fp)) == 0) return -1;
fclose(fp); return 0;
}
int file_load(const char *fname, char *buf) {
FILE *fp;
if((fp = fopen(fname, "r")) == NULL) return -1;
if(fread(buf, 1, FileSize, fp) != FileSize) return -1;
fclose(fp); return 0;
}
int file_save(const char *fname, char *buf) {
FILE *fp;
if((fp = fopen(fname, "w")) == NULL) return -1;
if(fwrite(buf, 1, FileSize, fp) != FileSize) return -1;
fclose(fp); return 0;
}
int main(int argc, char **argv) {
char *buf;
if(argc != 3) return -1;
if(file_size(argv[1]) != 0) return -1;
if(FileSize <= 0) return -1;
buf = (char *)malloc(FileSize);
if(file_load(argv[1], buf) != 0) return -1;
if(file_save(argv[2], buf) != 0) return -1;
return 0;
}
すまん。さっきから名前欄の数字を消し忘れてばかり…。
>>964 ありがとうございます。感謝感激です。
main関数は次の授業でなにか作るらしいので結構です。
これからC言語の勉強がんばります。
ほんとにありがとうございました〜
授業でVC++使ってるんですが、「Tree作ってこい」とのことです。
( ゚Д゚).。oO(Treeって何?) っていう状態で困ってます(検索しても死ぬほどでてくる)。
>>968 普通ツリーっていったら木構造で、たぶん課題なら二分木だと思われ。
「アルゴリズム 二分気」とかって検索しる!
実はクリスマスツリーを作ってくる宿題に300モナー
っていうかさ、本当に教官が「Tree 作ってこい」と言っただけなんだったら
クリスマスツリーの AA 作って提出すりゃいいと思う。
それで単位落とされたら教務課にクレーム出してもいいくらい。
↑もちろん、その教官が授業中木構造について全く説明してないってのならの話ね。
ツリーツっていうのを食えってことだよ
聞き間違いだよ
埋めるためにほんわかさせてみた
>>968 フラクタル図形で木でも描いたら良いんだろ?
友達に質問メール出してたらさっき返信が帰ってきますた。
”treeコマンドを作れ”とのことらしいです。
一応treeコマンドがどんなものか検索したら分かりましたので、
これからがんばってみることにします。
(今日は寝れるかな・・・)
友達居んなら来んなよ゚д゚) 、ペッ
WinAPIでそんなんがあったやうな
977 :
デフォルトの名無しさん:03/10/27 13:30
関数テンプレートなのですが
これだと
エラー E2147 untitled.cpp 6: 引数宣言は 'type' で始められない
エラー E2303 untitled.cpp 6: 型名が必要
というエラーが出ますどこが間違っているのでしょうか?
#include<iostream>
using namespace std;
template <typename type> type f(type a, type b);
f(type a, tyep b)
{
return (a + b) * 4;
}
void main()
{
int a=9, b=3;
double c=3.8, d=5.8;
cout<<f(a, b);
cout<<f(b, c);
cout<<f(c, d);
cout<<f(d, a);
}
template <typename type> type f(type a, type b) /*;
f(type a, tyep b) */
>>978 そこがいらなかったのですか・・・プロトタイプ宣言とごっちゃになってました
ありがとうございました
エラー見たら推測できないなー
まーちゃんと返事も書いて礼儀正しいから良しとしますか
任意のウインドウに文字列を送信するって
どうやって実現しているのですか?
例えば、顔文字入力支援といったものがありますよね。
クリップボードを経由するやり方があるのでしょうか?
単にクリップボードにコピーするのであれば
・OpenClipboard()
・EmptyClipboard
・SetClipboardData
・CloseClipboard
という手順でやったことはあるのですが。
それとも、クリップボードなど経由でず、直接ウインドウの
例えばエディットコントロール等に文字列を送っているのでしょうか?
ご存知の方、いらっしゃいましたら教えて下さいませ。
宿題かよ
あれ?
>>984 レスありがとうございます。
推測ですが・・・
クリップボードへコピーした後に、CTRL+V 相当の
指示を対象ウインドウに送るのでしょうか?
だとしたら、それってどうやるんでしょう?
FindWindow() でウインドウハンドル取得して、
メッセージを投げるのでしょうか?
それとも、クリップボードからペーストする別の
機構が用意されているのでしょうか?
>>985 別のスレに行ったほうがいいよ。
スレ違いだし、ここはもう埋め立てるだけだから。
>955 KAIT(´ι_`)
Page 2B-3
読みずれー!
まっとうなインデントしろよ。
つーか、
string1.concatenate(ch)なんてどこに書いてあるんだよ。
string1.substring(string2)なんてどこに書いてあるんだよ。
お前はどんなmainを書いたんだ?
そのmainがどう動作すること期待してて、
実際にはそのmainはどう動いたんだ?
それを書け。
>>990 (っていうか「質問」とか「教えて」とかいう状況じゃあなさそうだから、課題の文章を
そのままコピペしてもらったほうがいいんじゃないかな。。。)
>>990 読みづれー!
まっとうな日本語使えよ。
delete [] 配列名;
で、なんかエラーが出るので、
配列名 = NULL;
こうしてみたのですが、
このやりかたで、メモリ解放できているのでしょうか?
配列?
とりあえず開放はされない。
ちゅーか、ソース抜き出して貼れよ。
996 :
デフォルトの名無しさん:03/10/28 16:09
記念カキコ v(^-^=)
error
終幕
1000 :
デフォルトの名無しさん:03/10/28 16:14
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。