C/C++の宿題を片づけます 50代目
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:09:01あなたが解けないC/C++の宿題を片づけます
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows/Linux/等々
[3.2] コンパイラ名とバージョン: gcc 2.9 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
【前スレ】
49代目: http://pc8.2ch.net/test/read.cgi/tech/1123661447/
0232デフォルトの名無しさん
2005/09/16(金) 17:18:47間違ってなかったらO(n^2/2)位かな?
void search(int* a, int ln, int t, int startEnd[2]) {
int m, n, M, N;
int unko;
startEnd[0]=startEnd[0]=-1;
for(M=0, N=ln; M < N;) {
int sum;
for(m=M, sum=0; m < N; m++) {
int sAbs;
sum+=a[m];
if(unko > abs((sAbs = (sum - t)))) {
unko = sAbs;
startEnd[0]=M; startEnd[1]=m;
}}
N--;
for(n=N, sum=0; n > M; n--) {
int sAbs;
sum+=a[n];
if(unko > abs((sAbs = (sum - t)))) {
unko = sAbs;
startEnd[0]=N; startEnd[1]=n;
}}
M++;
if(unko == t) break;}}
0233デフォルトの名無しさん
2005/09/16(金) 17:37:54それは O(n^2) という。
0234デフォルトの名無しさん
2005/09/16(金) 17:39:081.左端からi番目の要素までの和からなる列を作る。元が
-10, 31, 40
なら、
0, -10, 21, 61
になる。ここから二数を選んで、右から左を引くと対応する部分列の和になる。O(n)。
2.この列を覚えておいて、ソートしたコピーを作る。O(n log n)。
3.できたコピーを双方向リストと平衡木の二重構造に入れる。O(n)。
この平衡木は、削除O(log n)、探索O(log n)で、「あるキーに最も近い要素」の探索もO(log n)
4.覚えておいた列の左から順にポインタpが動く間、次のことをする。O(n log n)
i: 平衡木から*pを削除。O(log n)
ii: *pとの差が問題の数に最も近くなる要素を平衡木から探索。O(log n)
0235234
2005/09/16(金) 17:50:10もっといいアルゴリズムきぼん。
0236デフォルトの名無しさん
2005/09/16(金) 17:56:08うーん、なんか着眼点よさげかも。
ちょっと後半がよくわからんな。
双方向リストと平衡木の二重構造とやらのノードの構造体だけでも書いてみてよ。
0237デフォルトの名無しさん
2005/09/16(金) 18:04:54struct k
{
int value;
struct k *next; /* 次に大きいノードを指す */
struct k *prev;
struct k *left; /* 左部分木を指す */
struct k *right;
};
0238デフォルトの名無しさん
2005/09/16(金) 18:06:10おお、凄い。確かに実装するのは辛そうだがw
0239デフォルトの名無しさん
2005/09/16(金) 18:33:15素晴らしい。ただ、右から左を引かなければならないので、
そこはうまく工夫して「右のもので最も求める値に近くなるもの」が検索
できないと駄目かも。
ただ、これが O(log n) でできれば、ここの候補を馬鹿サーチしても
O(nlogn)だね。
うまく、「自分より右でかつ値に近い」というのを順序でできれば
解決だね。
0240デフォルトの名無しさん
2005/09/16(金) 18:44:33誤って左と比べないように4-iで順番に削除してるんだが、だめか?
0242デフォルトの名無しさん
2005/09/16(金) 19:17:260243デフォルトの名無しさん
2005/09/16(金) 20:02:26ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/899.c
標準外の機能を使ってるってのが問題だな
//チラシの裏
ちなみにGCがあると2色木の挿入は恐ろしく簡単になる
削除する時は今回は2度と挿入しないんだからrebalanceする必要ないしな
0244デフォルトの名無しさん
2005/09/16(金) 20:52:56ソートしたコピーと双方向リストは何に使うの?
0245234
2005/09/16(金) 20:55:23C++での実装。ご参考まで。
0246234
2005/09/16(金) 21:01:20ソートしたコピーは特に使わない。ソートしながら木を構築できるならそれでもよし。
双方向リストは、「キーにもっとも近い要素」の探索を対数時間でできるようにするための仕組み。
通常の木の探索で「キー以上の値を持つ要素のうち最小のもの」を見つけた後、
リストを一つ前に辿ってそれも検討する。
>>243
>削除する時は今回は2度と挿入しないんだからrebalanceする必要ないしな
気づかなかった…
考えてみればリストは双方向である必要はないし、木は平衡木である必要はないな。
0247デフォルトの名無しさん
2005/09/17(土) 02:36:58> 木は平衡木である必要はないな。
いや、平衡木だからこそlog nで検索できたんでは内科?
まあ何はともあれ、
・和で配列を作る
・平衡木を使う
の2点はカッコヨカッタ
0248デフォルトの名無しさん
2005/09/17(土) 03:02:24はふぅ。
0249215
2005/09/17(土) 06:42:511. 累積させた配列を作成してソートする.
2. その配列を左から順に見ていき(a[i], 1 ≦ i ≦ n),右の残りの配列の中でa[i] との差が最も x に近い値を求める.
2.1 その際に二分探索で求める.
ということでしょうか.
これなら,確かに n * log n です.
これは思いつきません.ソートと二分探索が効いてますね.
二分探索は探索して見付からなかったときに最終位置と
左右どちらかで近い方を選択することでできるのかな..
>>234
累積配列の最初に,0 があるおかげで,a[2] 〜 a[n] じゃなくて a[1] 〜 a[n]
の部分列が求められるのか.こういうの苦手です.
>>245
便利な関数がいっぱいあるのだと勉強になりました.
partial_sum とかそのまんまのがあるんですね.
find_nearest がむずい…(´・ω・ :;.. 頑張ります.
感心してばかりでした.ありがとうございました.
0250デフォルトの名無しさん
2005/09/17(土) 10:43:07レフトポインタとライトポンタが重なったら、その左右の値を調べればいいんじゃないの?
0251デフォルトの名無しさん
2005/09/17(土) 13:23:43使えないのは、二分探索が使えないからだよね。
0252デフォルトの名無しさん
2005/09/17(土) 17:35:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/926.c
0253デフォルトの名無しさん
2005/09/17(土) 17:58:36すげー。
ちゃんと赤黒木実装してるし。
search_nearestはエレガントだし。
せっかく書いたから俺もあげとく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/927.txt
0254234
2005/09/17(土) 18:19:27>1. 累積させた配列を作成してソートする.
>2. その配列を左から順に見ていき(a[i], 1 ≦ i ≦ n),右の残りの配列の中でa[i] との差が最も x に近い値を求める.
>2.1 その際に二分探索で求める.
微妙に違う気がする。左から見ていくのはソートする前の配列ね。
>find_nearest がむずい…(´・ω・ :;.. 頑張ります.
>>245のfind_nearestは間違ってた。
結果は正しいし、計算量も問題ないけど、これだとリストの価値がない。
つまり、そもそもリストは要らなかった。(thx >>252)
ついでに、>>253も俺です。
0255デフォルトの名無しさん
2005/09/17(土) 23:41:31これ配列を1度だけ見ていくだけで求まるロジックがあるので
そいつを応用すればO(n)だと思う
ちょっと探してみるよ
0256デフォルトの名無しさん
2005/09/17(土) 23:54:514要素{A,B,C,D}に対して、
生成される部分列は{A,B,C,D, A+B,B+C,C+D, A+B+C,B+C+D, A+B+C+D}
つまり、n要素に対する部分列の個数はn(n+1)/2である。
A,B,C,Dの何れも正負の符号を取るのならば、
部分列に新たな要素を加算した総和が元に比べ単純増加するとは限らない。
(A+B)>(A+B+C)という可能性もある。
結局、全ての部分列の要素について総和を求める必要がある。
これは数列の要素数nが2以上の場合になりたち、この問題の計算量は最小でもO(n^2)である。
のではまかろーに?
0257256
2005/09/18(日) 00:02:390258256
2005/09/18(日) 00:03:270259デフォルトの名無しさん
2005/09/18(日) 00:10:37漏れもそこ気になった。要素が全て正ならば成り立つけれど、
負も含まれてしまうと問題になる希ガス
0260デフォルトの名無しさん
2005/09/18(日) 00:12:010261デフォルトの名無しさん
2005/09/18(日) 00:12:480262デフォルトの名無しさん
2005/09/18(日) 00:13:40026359
2005/09/18(日) 00:17:06それとも、基本的にはある概念にそって開発するんですか?
0264デフォルトの名無しさん
2005/09/18(日) 00:17:460265デフォルトの名無しさん
2005/09/18(日) 00:20:490266デフォルトの名無しさん
2005/09/18(日) 00:26:02気のせいだ。
木の中には
{ 0, A, A+B, A+B+C, A+B+C, A+B+C+D }...(1)
が小さい方から順に入っている
この木からxに最も近いもの,x+Aに最も近いもの,...,x+A+B+C+Dに最も近いもの
を探している。そうやって擬似的に
{ B, B+C, B+C+D } ...(2)
{ C, C+D }
:
という集合を作り出してその中からxに近いものを探索しているわけだね
(1)からx+Aに近いものを探索するのと(2)からxに近いものを探索するのは同じことだ(ただし>>239-240参照)
また、すべての要素から一定の値が引かれてるから順序関係は変わらない
故に、その探索はそれぞれ O(log n)ですむ(全部調べなくていい)
それをn回やってその中で1番xに近いものはすべての組み合わせの中でもxに一番近い
だからオーダーはO(n log n)だ。と
0267255
2005/09/18(日) 00:43:53int tbl[]={-10,31,40};
#define TBL_SIZE (sizeof(tbl)/sizeof(int))
#define KEY 15
int main(void)
{
int i,max,sum,maxst,maxed,st,ed;
max=sum=tbl[0];
maxst=maxed=st=ed=0;
for(i=1; i<TBL_SIZE; ++i){
if(sum!=0){ sum+=tbl[i]; ed=i;}
else{ sum=tbl[i]; st=ed=i;}
if(abs(sum-KEY)<abs(max-KEY)){ max=sum; maxst=st; maxed=ed;}
}
printf("\n%d <- [%d]-[%d]\n", max,maxst,maxed);
return 0;
}
0268デフォルトの名無しさん
2005/09/18(日) 00:48:41find {x+A+B+C} from sort{0,A,A+B,A+B+C,A+B+C+D}をしてしまったら
AやA+Bが選択される危険性があるような…
0269256
2005/09/18(日) 00:56:27>> { C, C+D }
を生成しているつもりで、
{ -A , 0 , B , B+C , B+C+D}
{ -A-B, -A, 0 , C , C+D} を生成している罠。
しかもソートされているので、不要な要素(0から左)が消せないのでは?
0270256
2005/09/18(日) 01:03:11そうすればO(1)でできそう。
0271デフォルトの名無しさん
2005/09/18(日) 01:05:32やり方を教えてください!
1 1 1 1
2 4 8 16
3 9 27 81
4 16 64 256
宜しくお願いします!
0272デフォルトの名無しさん
2005/09/18(日) 01:06:400273デフォルトの名無しさん
2005/09/18(日) 01:18:12#include <stdio.h>
int main()
{
int i,j,num;
for (i=1 ; i<5 ; i++)
{
num=i;
for (j=0 ; j<4 ; j++)
{
printf("%d ", num);
num*=i;
}
printf("\n");
}
return 0;
}
0274デフォルトの名無しさん
2005/09/18(日) 01:24:18>>267 でいいのか?
O(n)だぞ
0275デフォルトの名無しさん
2005/09/18(日) 01:28:49>>253で
arr={10,30,-5}で15となる組合検索(解- 0 1 2)を実行しても(0 2)が蛙。
0276デフォルトの名無しさん
2005/09/18(日) 01:34:18int tbl[]={-10,40,31};
0277デフォルトの名無しさん
2005/09/18(日) 01:39:54> int data[] = {-10, 31, 40, -30, 8, -9, 3, 10, -67, 45}; /* => 13:[6, 7] */
0278デフォルトの名無しさん
2005/09/18(日) 01:48:36ありがとうございます!
せっかく解いてもらったのに申し訳無いのですが
自力で出来ました。
また、分からない時はぜひお願いします!!
0279デフォルトの名無しさん
2005/09/18(日) 01:59:25最尤系列推定のプログラムおしえてください。
0280デフォルトの名無しさん
2005/09/18(日) 02:03:29それじゃ駄目だろう。
区切られた部分列が解の部分列の一部になっている場合はどうする?
0281デフォルトの名無しさん
2005/09/18(日) 14:21:36[2] 問題文(含コード&リンク):http://www.geocities.jp/kabutomusi1/kadai.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: Cでお願いします。
[4] 期限: [明日]
[5] その他の制限:なるべく簡単に。
宜しくお願いします。
0282デフォルトの名無しさん
2005/09/18(日) 14:33:50配列の要素数、或いは終端条件を提示してください。
0283デフォルトの名無しさん
2005/09/18(日) 14:36:04配列のデータ入力方法も、だな。
コマンドラインから入力するのか、ソースにベタ書きでいいのか。
0284デフォルトの名無しさん
2005/09/18(日) 14:36:30配列の要素数は?
確か先頭へのポインタとして渡された場合、ヌル終端されてるとか
負数があるとかの決まりがないと、関数側じゃ要素数は取得できないと思うが
以下、要素数をnとしたときのソース@脳内コンパイラ
double Average(int *p)
{
unsigned long diff=0;
int i;
for (i=1;i<n;i++)
diff += p[i] - p[i-1];
return (double)p[0] + ((double)diff)/n;
}
0285デフォルトの名無しさん
2005/09/18(日) 14:38:48訂正
誤)diff += p[i] - p[i-1];
正)diff += p[i] - p[0];
0286デフォルトの名無しさん
2005/09/18(日) 14:43:32適当に仕様を想像した結果
#include<stdio.h>
double Average(int *p){
double d=0.0;
int i;
for(i=0;p[i]!=-1;i++){
d+=(double)p[i];
}
if(i==0)return -1.0;
return d/i;
}
int main(){
int a[11],i;
for(i=0;i<10;i++){
printf("整数[%d]==>",i);
scanf("%d",&a[i]);
if(a[i]==-1)break;
}
a[i]=-1;
printf("\n平均:%.1f",Average(a));
return 0;
}
0287デフォルトの名無しさん
2005/09/18(日) 14:46:2310個若しくは要素にー1が現れるまでが条件か・・・?
つーか、問題はちゃんと全部書けと散々言ってるだろう
それで問題全部なら、出題した奴の頭に蛆でも沸いてるんじゃねーの
0288デフォルトの名無しさん
2005/09/18(日) 14:55:50条件はそういうことだと思います。
問題はこれで全部です。
0289デフォルトの名無しさん
2005/09/18(日) 14:59:32配列の[9]には-1が格納されるべき。
0290デフォルトの名無しさん
2005/09/18(日) 15:01:34もし-1が要素の終了条件であるならば、実行画面1の[9]には-1が格納される筈。
ってこと
0291デフォルトの名無しさん
2005/09/18(日) 15:03:46実行例1には[9]にも90と入ってるぞ
とりあえず287に書いた条件で手直ししてみた
例によって相変わらずの脳内gccだから違ってるかも知れない(特にキャスト周辺)
ちゃんと動くか確認してみてくれ
double Average(int *p)
{
unsigned long diff=0;
int i;
for (i=1;i<10 && p[i] != -1;i++)
diff += p[i] - p[i-1];
return (double)p[0] + ((double)diff)/((double)i);
}
0292デフォルトの名無しさん
2005/09/18(日) 17:27:37ダメだと思う
素直にdoubleにしとけよw
0293デフォルトの名無しさん
2005/09/18(日) 18:03:44まぁ減点対象だろうが
0294デフォルトの名無しさん
2005/09/18(日) 19:18:45-1が入ってたら打ち切り、なんだろ?
負数が無いと仮定した方がしぜんジャマイカ
0295デフォルトの名無しさん
2005/09/18(日) 19:55:57ちゃんと>291を読めよ。
負の数を代入する可能性があるのは見えないか?
0296デフォルトの名無しさん
2005/09/18(日) 20:04:20見えない
つーかあったとしても-1だけ例外なのはおかしいし
0297デフォルトの名無しさん
2005/09/18(日) 20:11:23そうではなくて、p[i] - p[i - 1] も見えないのか?
0298デフォルトの名無しさん
2005/09/18(日) 20:40:270299デフォルトの名無しさん
2005/09/19(月) 02:33:52unsignedじゃダメじゃんか・・・longだよlong_| ̄|○
0300デフォルトの名無しさん
2005/09/19(月) 02:34:52もう寝る('A`)ノシ
0301デフォルトの名無しさん
2005/09/19(月) 13:19:56[2]文字列strの中に、文字cが含まれていればその添字を返し、
含まれていなければ-1を返す関数
int str_char(const char str[], int c)
を作成せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/929.txt
関数部分は合っていると思うのですがエラーが出てしまいます。
添削お願いします。
[3.1]windows[3.2]bcc[3.3]C
0302デフォルトの名無しさん
2005/09/19(月) 13:22:22>>1
>・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0303デフォルトの名無しさん
2005/09/19(月) 13:39:54printf("文字列を入力してください:");
fgets(st, 100, stdin);
printf("調べたい文字を入力してください:");
ch = getchar();
0304デフォルトの名無しさん
2005/09/19(月) 13:53:17あとは>>303の修正で良いと思う(or scanf("%s ",st))
0305304
2005/09/19(月) 13:56:17×(or scanf("%s ",st))
○(or scanf(" %c",&ch))
0306デフォルトの名無しさん
2005/09/19(月) 14:33:52>{ -A , 0 , B , B+C , B+C+D}
>{ -A-B, -A, 0 , C , C+D} を生成している罠。
実際生成していないんだが、ソース読んでるか?
0307デフォルトの名無しさん
2005/09/19(月) 20:33:270308デフォルトの名無しさん
2005/09/19(月) 23:18:11多分>>303で正解。
0309デフォルトの名無しさん
2005/09/20(火) 00:23:14[2] 問題文: 縦横100×100で8ビット256色のBMPファイルを読みこみ、1ピクセルあたりの画素値を
CSVファイルにBMPの画像のように同じ様に書きこめ。
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン: VC++
[3.3] 言語: C言語
[4] 期限: [無期限]
[5] その他の制限: BMPのヘッダーを構造体に入れてから画素値を取り出しなさい。また2次元配列を使いなさい。
以前同じ質問をしたのですがいまだに解き方がわからないので再度質問させてください。
freadで一行分のピクセルデータから1バイトずつ抜き出していく方法を考えているのですが、これをどう0〜256の
画素値にするのかがわかりません。
ビットマップのピクセルデータをどう扱うか、また1ピクセルごとにどうファイルから読んで二次元配列に入れていくのか
という根本的なところが理解できていないのが解らない原因ですが、どうかご教授ください。
0310デフォルトの名無しさん
2005/09/20(火) 00:32:31ソースを見直してようやく分かった。
sums[i]要素を削除するremove_lt()で処理してるんだな。
まあ、このスレに助け求めている人間があんなコードを渡されても…という感は否めないがw
>>309
そもそも主がどこまでやったかわからん。晒せ。
0311デフォルトの名無しさん
2005/09/20(火) 00:41:18参考になればいいが、
8bitなら2^8=256個、赤、青、緑の色情報を格納する構造体を宣言する。
(構造体でなくとも、long int型でもいい)
画像からカラーパレット情報を読み出したら、上の構造体に保存しておく。
画像からイメージ情報を読み出したら、カラーパレット番号に対する色情報を出力する。
(long int型を使ったら、表示するときに色成分を分ける)
こんな感じか...
とりあえずカラーパレット一覧をCVSにするプログラムを作るのが先か。
0312デフォルトの名無しさん
2005/09/20(火) 00:42:500313309
2005/09/20(火) 00:58:29画像ファイルからのデータの抜き出しという考え方が頭の中でイメージできなくて。
テキストファイルだと一文字や一列づつ読み込むと言うのは解るのですが、ビットマップは1マスずつの扱い方が
どうも理解が出来ないんです。
Cを初めて全然たっていないんですがポインタと配列の関係でもつまづくくらい覚えが悪いんです。
0314デフォルトの名無しさん
2005/09/20(火) 01:36:49[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/931.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/930.txt
[3] 環境
[3.1] OS: /Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [9/20 17:00]
[5] その他の制限:
931がcommon.inc.cです。930のインクルードに書いてあるcommon.inc.cです。
./a.out 930 common.inc.c -lm
でコンパイルします。
で、common.inc.cの
/* コードブックサイズ */
//#define CODEBOOK_SIZE 256
#define CODEBOOK_SIZE 2048
/* コードブックモード */
//#define CODEBOOK_RGB
#define CODEBOOK_YUV
のところで、#define CODEBOOK_RGBをコメントアウトして#define CODEBOOK_YUV
を有効にしてしまうとエラーが出てしまいます。逆の場合(RGBを有効、YUVをコメントアウト)はでません。
どうか解決をお願いいたします。
0315デフォルトの名無しさん
2005/09/20(火) 01:38:360316デフォルトの名無しさん
2005/09/20(火) 01:39:45ところで・・・・C言語講座じゃないでしょ?
ホントのところは、なんなのさ。
0317デフォルトの名無しさん
2005/09/20(火) 01:41:490318314
2005/09/20(火) 01:49:49In file included from makecodebook.c:8:
common.inc.c: In function `colorrgb2coloryuv':
common.inc.c:188: parse error before `unsigned'
common.inc.c:192: `coloryuv' undeclared (first use in this
function)
common.inc.c:192: (Each undeclared identifier is reported
only once
common.inc.c:192: for each function it appears in.)
よろしくお願いいたします
0319デフォルトの名無しさん
2005/09/20(火) 02:07:55俺はc89でしか書かんが。
0320デフォルトの名無しさん
2005/09/20(火) 02:50:54エラーのあるなしが変わるのはコンパイル前処理で#ifdefが無くなるから。
0321デフォルトの名無しさん
2005/09/20(火) 03:28:55ありがとうございます。
gcc ファイル名 -lm -std=c99
ということでしょうか?
>>320
> 関数冒頭で変数宣言してないからだな。defineのコメントアウトで
> エラーのあるなしが変わるのはコンパイル前処理で#ifdefが無くなるから。
ありがとうございます。
176行目で、
UINT32 coloryuv;
とすればよろしいのでしょうか?
0322デフォルトの名無しさん
2005/09/20(火) 03:48:29宿題の内容とは全く関係ないが、
common.inc.cをインクルードしてるのがちょっとな・・・
実行ファイル名がa.outなのもどうかと。
そろそろMakefile作ってソース構成まとめたほうがいいんでない?
(構成例)
common.h :共通定義
common.c :共通ソース
codebook.c :コードブック作成処理
encode.c :エンコード処理
decode.c :デコード処理
Makefile :以下の実行形式ファイルを生成
→ codebook(コードブック作成)
→ encode(エンコード)
→ decode(デコード)
この辺は人それぞれだから、別に強制するわけではないけどね。
0323デフォルトの名無しさん
2005/09/20(火) 04:06:23>321
すこしは自分でやるとか調べるとかしようよ。
Linuxからでもネットはできるんだからさ。
>gcc ファイル名 -lm -std=c99
>ということでしょうか?
実際にやってみてどうでしたか?
コンパイルオプションを調べましたか?
>176行目で、
>UINT32 coloryuv;
>とすればよろしいのでしょうか?
実際にやってみてどうでしたか?
エラーは出なくなりましたか?
0324デフォルトの名無しさん
2005/09/20(火) 04:13:21ありがとうございます。できればやってみようと思います。
>>323
ありがとうございます。
実際にやってみたのですがだめでした。
コンパイルオプションについて調べてみました。
http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide05-1.html
ここを参考にして身ました。
UINT32 coloryuv.c;
をやってみました。エラーは減ったのですがやはりだめでした。
In file included from makecodebook.c:8:
common.inc.c: In function `colorrgb2coloryuv':
common.inc.c:189: parse error before `unsigned'
170行目で、UINT32 colorrgb ,UINT32 coloryuv
にしてみましたがこれまただめでした。
知り合いの環境だといままでやったことを何もせずともコンパイルが通ったそうです。
0325デフォルトの名無しさん
2005/09/20(火) 04:19:37-mはリンカオプションなんで最後に書くけど、コンパイルオプションは最初に書くべきでしょうね。
参考にしたというページの例でもそうなってますね。
変数の宣言を2回してませんか?
知り合いの環境で動くなら知り合いの環境で組むのがいいでしょうね。
0326デフォルトの名無しさん
2005/09/20(火) 04:24:34ありがとうございます。
ggc -ostd=c99 ファイル名 -lm を実行しましたがだめでした
変数の宣言を二回しています。
ということは170行目で宣言してはいけないということですよね?
知り合いの環境では動きました。ということは新たに加えて宣言してはいけないようなプログラムだと
いうことですか?
知り合いは遠くの人なので何度も実行結果を送ってもらうわけにはいかないので
なんとかしたいです。
0327デフォルトの名無しさん
2005/09/20(火) 04:34:30・知り合いが面倒なので適当に出来たとだけ言っている
・知り合いがなにか修正したり、コンパイル時に何かしてるのに報告してない
・あなたが知り合いをでっち上げている
どれだろうね。
0328314
2005/09/20(火) 04:34:48何か思い当たるようなことはないでしょうか?
どうかよろしくお願いいたします
0329デフォルトの名無しさん
2005/09/20(火) 04:35:580330314
2005/09/20(火) 04:37:28ありがとうございます。
どれもないかとおもいます。というのはRGBの場合だと問題ないのに
YUVだと問題があるということから真ん中は消えます。
(RGBとYUVでコンパイル時に別のことはしていない)
一番上は、実際に処理ファイルを送ってもらったことや、信頼できるやつなので違うと思います
一番下は違います。
0331デフォルトの名無しさん
2005/09/20(火) 04:38:27細かいことは聞いてないのでわかりません(もう寝てしまった・・・)
コンパイル方法は
gcc ファイル名 -lm
です。
■ このスレッドは過去ログ倉庫に格納されています