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

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

■ このスレッドは過去ログ倉庫に格納されています
0001ぼるじょあ ◆yBEncckFOU 2006/12/10(日) 11:33:41
(・3・)エェー ぼるじょあですYO!
         わからない宿題を片づけますYO!

あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
0643デフォルトの名無しさん2007/03/01(木) 07:06:07
>>642
すべてのC++はCもコンパイルできるYO
VC++以外ならBorlandのBCCとかcygwinでgccとか
0644デフォルトの名無しさん2007/03/01(木) 07:55:55
全てとはまた大きく出たなぁ。例外は一つもないと思っているんだろうか。
0645デフォルトの名無しさん2007/03/01(木) 11:43:58
>>644
C++ってそういう規格、仕様じゃないの(Cの記述がそのまま使える)
0646デフォルトの名無しさん2007/03/01(木) 17:01:24
ANSI CはC++のサブセットだが、C99はC++と互換性ない
0647デフォルトの名無しさん2007/03/01(木) 17:24:46
C89ですら互換性の無い部分はある。
K&Rスタイルの関数宣言、構造体の中に入れ子となった構造体の宣言、
型安全性の強化(特にvoid*から他のポインタ型への変換)など。

>>645
VC++、BCC、GCCはCとC++両方のコンパイラを内蔵しているとでもいうべき。
いずれもソースファイルの拡張子やコンパイラオプションなどで、
CとC++のどちらとしてコンパイルするかが切り替えられるようになっている。

しかし全てのC++コンパイラはCコンパイラとしても使えるように
なっていなければならないという決まりはどこにもないので、
そのような機能を持たない純粋なC++コンパイラがあったっていい。

そういうコンパイラでもCのソースをコンパイルしたら、
勿論C++がCのサブセットを内包しているため基本的にはコンパイルできるだろうが、
コンパイラからすれば所詮C++のソースをコンパイルしているとしか認識されない。
0648デフォルトの名無しさん2007/03/01(木) 18:26:37
誰か教えてください・・・
0649デフォルトの名無しさん2007/03/02(金) 01:13:10
ここは過疎が激しいね
0650ぼるじょあ ◆hZ8e4Wjqvw 2007/03/02(金) 01:19:36
>>640
(・3・) エェー 期限は過ぎてるだろうけど、これでいいのかYO!
          何をしたいのか書いてないから getopt は無視したYO!
          これでも同じエラーが出るなら分からないYO!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3721.c
0651デフォルトの名無しさん2007/03/02(金) 02:37:44
Visual C++ でc言語のコンパイルができません どうやるのか教えてください
0652デフォルトの名無しさん2007/03/02(金) 03:17:19
>>651
C言語ならBorlandC++とCPad for bccでも使ってなはれ
0653デフォルトの名無しさん2007/03/02(金) 07:33:01
>>651
ここは宿題を片づけるスレだよ
コンパイルできないならエラーとか出てるでしょ
0654デフォルトの名無しさん2007/03/02(金) 13:21:29
>>653
やさしいぼるじょあさんなら答えてくれると思われ。
>>652
調べてみる。�d
0655homoじょあ ◆5OLf4yFnuM 2007/03/13(火) 21:02:28
(・3・) エェー ちょっと暇だから宿題待ってるYO
0656ぼるじょあ ◆yBEncckFOU 2007/03/16(金) 19:08:46
(・3・) エェー もいらも宿題待ってるお
          片っ端から宿題解きたくてうずうずしてるお
0657ぼるじょあ ◆yBEncckFOU 2007/03/22(木) 21:52:35
(#・3・) エェー 待ってるのにこないし
           まあ卒業のシーズンだしそもそも学生はみんな春休みか
           質問来なくてもしかたないな
           
0658ぼるじょあ ◆hZ8e4Wjqvw 2007/03/22(木) 21:56:58
(・3・) エェー 宿題来ないから age ちゃうYO!
          (あと、一週間くらい様子見てからNE)
0659デフォルトの名無しさん2007/03/23(金) 00:58:26
もう一つの宿題スレでお願いした課題に動きがないのですが
こちらに貼ってもよろしいのでしょうか
0660デフォルトの名無しさん2007/03/23(金) 01:31:24
おk カモン
0661デフォルトの名無しさん2007/03/23(金) 01:37:38
[1] 授業単元:prog2
[2] 問題文(含コード&リンク):
ダイナミック・プログラミングに関する問題です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3760.txt
[3] 環境
 [3.1] OS: Windows2000
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: [2007年3月31日23:59まで]
[5] その他の制限: なし

すいません、よろしくおねがいします
0662デフォルトの名無しさん2007/03/23(金) 02:56:31
>>661
こんなん出ました

p = s % size[i];
newvalue = s / size[i] + value[p];
----------------------
value[s] = newvalue;
item[s] = i;
0663デフォルトの名無しさん2007/03/23(金) 14:06:23
>>662
正解でした
ありがとうございました


[1] 授業単元:prog2
[2] 問題文(含コード&リンク):
字句解析に関する問題です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3765.zip
[3] 環境
 [3.1] OS: Windows2000
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: [2007年3月31日23:59まで]
[5] その他の制限: なし


これで最後の問題になります
よろしくお願いします
0664ぼるじょあ ◆hZ8e4Wjqvw 2007/03/31(土) 21:48:14
>>663
(・3・) エェー 久しぶりの書き込みがギブアップってのもあれだけど
          ◆hZ8e4Wjqvw はとりあえずギブアップしとくYO!
0665ぼるじょあ ◆yEbBEcuFOU 2007/04/02(月) 15:36:47
俺もぼるじょあになれるのかっ!?
0666デフォルトの名無しさん2007/04/07(土) 20:19:09
保守
0667ぼるじょあ ◆yBEncckFOU 2007/04/07(土) 20:46:14
保守
0668homoじょあ ◆5OLf4yFnuM 2007/04/07(土) 21:35:38
(・3・) エェー ほっしゅっしゅ
0669デフォルトの名無しさん2007/04/07(土) 22:35:02
やぁ!homoじょあさん!
0670homoじょあ ◆5OLf4yFnuM 2007/04/08(日) 02:57:49
(・3・)やぁ・・・なんで僕はこんな時間に仕事やねん
0671デフォルトの名無しさん2007/04/08(日) 04:13:03
Linuxをパソコンに入れていろいろ勉強したいんですがどれがオヌヌメですか?
企業はWindowsを避けてLinux化するところが増えてるようですがそういうことに対応したいので聞いています
僕は学生です 素人ですが教えてください 
すれ違いって言われるかもですがまぁ宿題の依頼も少ないようなので教えてください、ぼるじょあさん。
0672デフォルトの名無しさん2007/04/08(日) 04:17:47
すれ違い→スレ違い
0673homoじょあ ◆5OLf4yFnuM 2007/04/08(日) 04:37:27
(・3・) エェー Vineでいいんジャマイカ
          仕事終わった寝る〜♪
0674デフォルトの名無しさん2007/04/08(日) 04:43:50
おやすみ
0675デフォルトの名無しさん2007/04/08(日) 04:48:09
Redhatはどうだろう?前学校Redhatだったんだけど今はなぜかTurboにしちゃったんだよね
はいはい Linuxスレに行ってきますよ。。。
0676デフォルトの名無しさん2007/04/08(日) 08:26:22
RedHatは高いからお勧めできない。
取り敢えずCygwinでも入れておけば充分だろ。
0677デフォルトの名無しさん2007/04/08(日) 19:52:23
(´・3・`)
0678homoじょあ ◆5OLf4yFnuM 2007/04/09(月) 19:49:03
(・3・) エェー じゃあFedoraでいいじゃん
0679デフォルトの名無しさん2007/04/10(火) 13:53:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): int型配列をソートする関数dsortを作成せよ。dsort関数の戻り値は、
ソートする配列が10数値以下ならば正常終了(0)11数値以上ならばエラー(−1)とする。
dsortを起動するmain関数は、文字列を手操作により入力し、
それをint型配列に格納し、それをdsortに引数として渡す。
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
よろしくお願いします
0680デフォルトの名無しさん2007/04/10(火) 17:12:18
「ソートする配列が10数値以下」ってどういうこと?
0681homoじょあ ◆5OLf4yFnuM 2007/04/10(火) 22:21:10
>>679
(・3・) エェー ようわからんのでdsortだけ作ったお

int dsort(int num[], int n){
int i, k, swap;
if(n > 10) return -1;
for(i=0; i<n-1; i++){
for(k=i+1; k<n; k++){
if(num[i] > num[k]){
swap = num[i];
num[i] = num[k];
num[k] = swap;
}
}
}
return 0;
}
0682デフォルトの名無しさん2007/04/11(水) 00:24:01
0683デフォルトの名無しさん2007/04/11(水) 02:29:23
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):矩形転置暗号を用いて、平文を暗号文に変換するプログラムを作成せよ。
(テキストファイルを読み込んで実行する)
暗号鍵(矩形の行数と列数)は適当な定数で与える。
ファイル末尾に到達した場合は矩形の残りの部分にスペースが入った状態にして
暗号文をとりだして終了する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC++ 2005
 [3.3] 言語:C++
[4] 期限:4月12日(木),PM5:00まで,2007年
[5] その他の制限:文字型(char)の2次元配列を用いる

よろしくお願いします
06846792007/04/11(水) 09:24:23
「ソートする配列が10数値以下」ですがコピペミスです。
配列の中身が10個以下という意味です。。。
すみませんです
0685デフォルトなしの名無しさん2007/04/11(水) 13:45:21
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):gets()関数によりキーボードからchar型配列buff[256]に文字列を読み込み、
               それをputs()関数により画面に出力し、これをEOFが読み込まれるまで続ける。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VisualBasic
 [3.3] 言語: C言語
[4] 期限:本日14時30分 
[5] その他の制限: 緊急で申し訳ないですがよろしくおねがいします^^;
0686デフォルトの名無しさん2007/04/11(水) 16:26:25
getsはあかんやろぉ〜、どこの学校だ!?通報しちゃる!
0687デフォルトの名無しさん2007/04/11(水) 18:43:59
 [3.2] コンパイラ名とバージョン: VisualBasic
 [3.3] 言語: C言語

どういうこと?
0688homoじょあ ◆5OLf4yFnuM 2007/04/11(水) 22:01:01
>>684
(・3・) エェー こんなん?

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

int dsort(int[], int);

int main(void){
int num[100], i;

for(i=0; i<100; i++){
char buf[64], *err;
fgets(buf, sizeof(buf), stdin);
err = NULL;
num[i] = strtol(buf, &err, 10);
strtok(buf, "\n");
if(strcmp(err, "") != 0)break;
}
dsort(num, i);
return 0;
}
0689デフォルトの名無しさん2007/04/14(土) 17:56:27
cのプログラムができるとなんかいいことあるんですか?
僕は専攻が法学なんでまったく関係ないんですが面白いので勉強してます
0690デフォルトの名無しさん2007/04/14(土) 20:49:21
>>689
がんばってね
0691デフォルトの名無しさん2007/04/15(日) 14:04:56
>>685
いる?
0692デフォルトの名無しさん2007/04/15(日) 23:24:41
>>689
> なんかいいこと
面白く思えること

人生楽しい時間は多いほうがいいじゃん
0693デフォルトの名無しさん2007/04/16(月) 00:55:29
[1] 授業単元:C言語プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3825.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC++ 2005
 [3.3] 言語: C言語
[4] 期限:4月16日中
よろしくおねがいします。
0694デフォルトの名無しさん2007/04/16(月) 01:03:54
>>693
#include <stdio.h>

int checkLeapYear(int year){
if( (year%4==0 && year%100!=0) || year%400==0 )
return 1;
else return 0;
}

int main(void)
{
int x;
printf("Input year > ");
scanf("%d",&x);
if( checkLeapYear(x) )
printf("%d年は閏年\n",x);
else printf("%d年は平年\n");
return 0;
}
0695デフォルトの名無しさん2007/04/18(水) 13:18:26
>>693
キミ 俺の後輩やろ
それ去年やった
0696デフォルトの名無しさん2007/04/18(水) 21:10:14
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
numを2,3,...,num/2のいずれでも割り切れないときnumは素数である。numが素数なら戻り値を1、非素数なら戻り値を0とする。numが1以下の数なら戻り値を0とする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: [2007年4月19日00:00まで]
[5] その他の制限: なし

お願いします(´;ω;')
0697ぼるじょあ ◆hZ8e4Wjqvw 2007/04/18(水) 21:27:58
>>696
(・3・) エェー こんなのでいいのかYO!
          久しぶりに答えられたYO!

int is_prime(int num){
    int i;
    if(num<2) return 0;
    for(i=2;i<=num/2;i++)
        if(num%i==0) return 0;
    return 1;
}
0698デフォルトの名無しさん2007/04/18(水) 23:11:41
>>697
ぼるじょあさんありがとう(^ω^)♪
0699デフォルトの名無しさん2007/04/19(木) 00:00:20
>>696ですが、さっき教えて頂いたものを実行してみたら
'isprime'値を返さないコントロールパスがあります。
と、出てきたのですが原因はなんでしょう??
0700デフォルトの名無しさん2007/04/19(木) 00:45:05
>>699
それ、どの行で警告が出た?


>>695
>西暦年が、4で割り切れる年のうち、100で割り切れる年は平年とする。
こういう頭の悪い文章なら、確かに間違いようがないね。
0701デフォルトの名無しさん2007/04/19(木) 01:03:35
>700
宿題スレ見ればわかるけど、自分で変にコードブロック化してるせい。
理解できないならそのまま写せばいいのに、なんで余計なことしたがるんだろうね。
0702デフォルトの名無しさん2007/04/22(日) 05:11:39
保守 
画像処理専門のぼるじょあさんはどこいったんだ。。。
0703デフォルトの名無しさん2007/04/22(日) 15:05:37
えー、私は某大学のTAですが、ここで晒されている解答と全く同じものが複数の学生から提出されているので、注意を促したいと思います。
お前ら、教授にちくられたくなかったら自分で解答しろ
0704デフォルトの名無しさん2007/04/22(日) 15:32:49
そういうときは教授にばれないようこっそり0点にしておくのがやさしさ
0705デフォルトの名無しさん2007/04/22(日) 17:31:22
WindowsXPのコマンドラインプロンプトで動く、エディターをC言語で作成したいのですが、
ネットや書籍などで参考になる資料などありませんか?

C言語の文法などは一応、入門書籍などでやって一通りマスターしたのですが、
こういった実用的なプログラムを作成しようとするとフリーズしてしまいます。

どうしたらいいのでしょうか?
0706デフォルトの名無しさん2007/04/22(日) 17:33:05
>>702
HDレコーダー等の動画関係の処理に関するプログラムを作成しているぼるじょあならば
穴じょあと名乗って、PC初心者板でうとまれているYO
そいつのこと?
0707デフォルトの名無しさん2007/04/22(日) 18:34:55
>>705
スレ違い。
「ソフトウェア作法」なんかはエディタを作るという点で参考になると思う。
詳しくは書籍スレで。
0708デフォルトの名無しさん2007/04/24(火) 00:12:34
[1] 授業単元:初級プログラミング講座
[2] 問題文(含コード&リンク): 元旦からの日数を入力して、何月何日かを出力する。うるう年ではない年として計算してよい。
[3] 環境
 [3.1] OS:Win2000
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:25日
0709デフォルトの名無しさん2007/04/24(火) 01:08:37
>>708
何その伝統的な宿題
0710デフォルトの名無しさん2007/04/24(火) 01:23:34
キーボードからの入力は、なぜバッファつきで読み込むのか。
0711デフォルトの名無しさん2007/04/24(火) 01:49:28
C言語を使って
f(x)=sin(x) (0<x<2π)
の導関数を差分近似によって計算する方法
を教えてください。
0712デフォルトの名無しさん2007/04/24(火) 06:24:52
>>708 こうですか?分かりません ><;
#include <stdio.h>
int main(void)
{
int md[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,days,n;
printf("Input > ");
scanf("%d",&n);
if(n>365) return 1;
for(days=n,i=0; days>md[i]; days-=md[i],i++);
printf("%d日目は%2d月%2d日\n",n,i+1,days);
return 0;
}
0713デフォルトの名無しさん2007/04/25(水) 18:25:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
  :http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3866.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C++
[4] 期限:4/26 17:00

よろしくお願いします
0714デフォルトの名無しさん2007/04/25(水) 20:06:53
凄い初心者丸出しな質問で申し訳ない

例えば

#include <stdio.h>

int func_hoge();

int main(int argc, char* argv[])
{

  func_hoge();

}

というCのコードtest.cをC++のコードにして実行したくて

hogeクラスのhoge.cppとhoge.hに書いて
test.cでインクルードして
コンパイルしても通りません

どなたかCのコードをC++化する方法を教えて下さい
0715デフォルトの名無しさん2007/04/25(水) 20:09:51
あ、func_hogeの内容は書き忘れましたが
何らかの処理してtrue falseを返すと思って下さい
0716デフォルトの名無しさん2007/04/25(水) 20:22:34
立て続けに連書き込みで申し訳有りません
環境はcygwinです
0717デフォルトの名無しさんNGNG?2BP(222)
test.cをtest.cppにリネームしてコンパイルすりゃいいだろ。
0718デフォルトの名無しさん2007/04/25(水) 20:29:05
hoge.cppとhoge.hをさらせよ
0719デフォルトの名無しさん2007/04/25(水) 20:29:18
>>717
C言語のソースファイルの拡張子をcppにすりゃC++のソースになっちゃうという人の考えでつね?(・∀・)ニヤニヤ
0720デフォルトの名無しさん2007/04/25(水) 20:31:45
>>717
> test.cをtest.cppにリネームしてコンパイルすりゃいいだろ。

はい、それだとコンパイルも通りますし
実行も出来ますが
モジュール化?(クラス化?カプセル化?っていうんでしょうか?)したいんです
0721デフォルトの名無しさん2007/04/25(水) 20:44:48
>>718
> hoge.cppとhoge.hをさらせよ
はい
まずhoge.h
#ifndef HOGE_H

class Hoge
{
public:
 int func_hoge();
};
#endif

続いてhoge.cpp

#include <stdio.h>
その他インクルード
#include <hoge.h>

int func_hoge()
{
 int modori;
なんかの処理
 return modori;
}

って感じです
0722デフォルトの名無しさん2007/04/25(水) 20:52:18
>>721
まずここ。
>続いてhoge.cpp 
int hoge::func_hoge() 
{
>test.cpp
int main(int argc, char* argv[]) 
{ 
  hoge h;
  h.func_hoge(); 

hoge::func_hogeはstaticにしてもいいかもね。
0723デフォルトの名無しさん2007/04/25(水) 20:53:04
>>714
コンパイルエラーの詳細きぼんぬ
0724デフォルトの名無しさん2007/04/25(水) 21:44:02
>>722
ありがとうございます
大幅にコンパイルエラーが減りました
>>722
>>723
現在のコンパイルエラーです

実行したコマンド
gcc -Wall -g -o TEST test.cpp

エラー
/cygdrive/c/DOCUME~1/ADMIN~1/LOCALS~1/Temp/ccA1IpLH.o: In function `main':
/home/Administrator/workspace/Test/test.cpp:12 undefined reference to `hoge::func_hoge()'
collect2: Id returned exit status
0725デフォルトの名無しさん2007/04/25(水) 23:11:37
あ、因みに2行目の.oファイルはコンパイルする度変わります
0726ぼるじょあ ◆hZ8e4Wjqvw 2007/04/26(木) 00:30:08
>>724
これでどう?
g++ -Wall -g -o TEST test.cpp hoge.cpp
0727ぼるじょあ ◆hZ8e4Wjqvw 2007/04/26(木) 00:31:13
(・3・) エェー やっちまったYO!
0728ぼるじょあ ◆yBEncckFOU 2007/04/26(木) 00:31:49
(・3・) アルェ〜俺の偽物かYO!
0729ぽるじょあ ◆6I9SwHc8xc 2007/04/26(木) 09:32:48
(・3・) アルェ〜俺も偽物だYO!
0730デフォルトの名無しさん2007/04/26(木) 10:36:49
>>729
ぼるじょあはゆとり世代中卒ニート旋盤工
0731デフォルトの名無しさん2007/04/26(木) 11:23:16
こんにちは、はじめまして!
C初心者です。

最近、授業の課題で
「適当なソースファイルを読み込んでステップ数を数えて表示」
という宿題が出されたのですが、
C言語にステップ数を数える関数とかあるんですか?
それか、実行ステップ数だけ何か計算で数えるものなのでしょうか?

教えていただけたら助かります。よろしくお願いいたします。
0732デフォルトの名無しさん2007/04/26(木) 12:06:41
改行文字を数える
0733デフォルトの名無しさん2007/04/26(木) 14:15:20
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):fftを作成することです。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 5月1日くらいまでに教えていただけたら幸いです。
[5] その他の制限:以下のソースを使って作るように指示されました。
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
#include "fft.h"
07347332007/04/26(木) 14:16:34
static int ibitr(int, int);

int fft(double *xreal, double *ximag, int n, int nu)
{
int n2, nu1;
int l, i, p;
int k, k1, k1n2;

double arg, c, s;
double treal, timag;

xreal--; /* 配列の添え字を1からにする */
ximag--;

n2 = n / 2;
nu1 = nu - 1;
k = 0;

for(l = 1; l <= nu; l++) {
loop: ;
07357332007/04/26(木) 14:18:09
for(i = 1; i <= n2; i++) {
p = ibitr((int)(k / pow(2, nu1)), nu);
/* printf("%d, %d\n", p, k); */
arg = 2 * PAI * p / (double) n;
c = cos(arg);
s = sin(arg);
k1 = k + 1;
k1n2 = k1 + n2;
treal = xreal[k1n2] * c + ximag[k1n2] * s;
timag = ximag[k1n2] * c - xreal[k1n2] * s;
xreal[k1n2] = xreal[k1] - treal;
ximag[k1n2] = ximag[k1] - timag;
xreal[k1] += treal;
ximag[k1] += timag;
k++;
}
07367332007/04/26(木) 14:19:04

k += n2;
if (k < n) goto loop;
k = 0;
nu1--;
n2 /= 2;
}
for(k = 1; k <= n; k++) {
i = ibitr(k-1, nu) + 1;
if ( i <= k) continue;
treal = xreal[k];
timag = ximag[k];
xreal[k] = xreal[i];
ximag[k] = ximag[i];
xreal[i] = treal;
ximag[i] = timag;
}
return 0;
}

07377332007/04/26(木) 14:19:40
static int ibitr(int j, int nu)
{
int i;
int j1, j2, r;

j1 = j;
r = 0;

for ( i = 1; i <= nu; i++) {
j2 = j1 / 2;
r *= 2;
r += j1 - 2 * j2;
j1 = j2;
}
return r;
}
すみませんが、お願いします。
0738デフォルトの名無しさん2007/04/26(木) 19:11:52
>>726
> >>724
> これでどう?
> g++ -Wall -g -o TEST test.cpp hoge.cpp

遅レスですいません
ありがとうございました
g++ではなくgccでコンパイル通って実行出来ました
0739デフォルトの名無しさん2007/04/27(金) 11:30:29
>>732様
ありがとうございます、やはり改行文字を数えるんですね。
でも、それがちょっとわからなくて…\nを数えるということでしょうか?
改行文字が他にあるのですか?
0740デフォルトの名無しさん2007/04/27(金) 11:34:37
>>739
バッファを長めにとって、fgets()を何回呼べるかで代用するのが簡単だよ。
0741デフォルトの名無しさんNGNG?2BP(222)
>>740
char buf[1024];
int count=0;
while(fgets(buf,1024,stdin)!=EOF){if(buf[1023]=='\n'){count++;}}
結局改行を数えることになる。
07427402007/04/27(金) 14:54:50
>>741
それだと、最終行に改行が無いときに困る。
#その涛_では単純にfgetc()で改行文字を数えても同様。
1行が1023文字以内ならば、>741のif文を省略できるという魂胆。
つーか、エディタでラップアラウンドした表示行を数えるイメージだがね。
■ このスレッドは過去ログ倉庫に格納されています