[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 10/23 23:03 / Filesize : 305 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 108代目



1 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:18:31 ]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 106代目
pc11.2ch.net/test/read.cgi/tech/1209810861/

702 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:34:33 ]
何度か書いてるが、Windows + gccってのはほんとにそういう環境なのかなあ。

703 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:35:20 ]
>二つの整数値を読み込んで、
標準入力でOK?


704 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:36:07 ]
>>702
Cygwin + gcc かもね

705 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:36:54 ]
a < b

((1+b) * b - (1 + a) * a ) / 2


706 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:37:44 ]
>>626
わかりました。ありがとうございます。

707 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:37:54 ]
>>701
#include <stdio.h>

int main(void)
{
int a, b;

scanf("%d%d", &a, &b);

printf("%d", a > b ? (a + b) * (a - b + 1) / 2 : (a + b) * (b - a + 1) / 2);

return 0;
}


708 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:39:12 ]
>>703
標準かどうかはよくわかりませんが、scanfで読み取る形です。

709 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:42:00 ]
>>707
すいません!書き忘れました。
Do文を使って最後にWhile文を追加する形でした。


710 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:44:04 ]
>>704
cygwin + gcc だとして、実行環境はWindows?cygwin?というのも
あるし、Xかもしれない。
といったところで実行環境に依存するような宿題については
そのような曖昧な環境記述は無かったような気もするし、、、
気にしないほうがいいのかなあ?



711 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:45:04 ]
なんだそりゃw
#include <stdio.h>
int main(void)
{
int a, b, sum = 0;
scanf("%d%d", &a, &b);
if(a < b) do { sum += a++; } while(a<=b);
else do { sum += b++; } while(b<=a);

printf("%d", sum);

return 0;
}


712 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:45:10 ]
>>1より。
> ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。

きをつけてね

713 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:45:33 ]
>>707
初心者向けにしましょうw


714 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:45:38 ]
>>701
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", (a+b)*(abs(a-b)+1)/2 );
return 0;
}

715 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:49:32 ]
>>713
初心者の定義は何?自分が理解できる=初心者向け?
理解できない=初心者じゃない?とか?

716 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:51:02 ]
パッと見であっさり理解できるか
ちょっと見てみてあぁなるほどと思えるか

の差じゃない?

717 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:51:48 ]
>>711
++はどういう意味なんでしょうか?

718 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:52:21 ]
>>715
いちいち絡むなよw

719 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:54:13 ]
>>717
a++ は a = a + 1

720 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:55:29 ]
>>717
a++ = a = a + 1



721 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:58:06 ]
その=の使い方には問題があるぞ

722 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:58:49 ]
ではsum+=とは何なのでしょうか?
初心者ですいません

723 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:00:32 ]
sum += a は sum = sum + a

724 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:00:50 ]
sum = sum + 1

725 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:01:27 ]
つまり sum += a++; は
sum = sum + a;
a = a + 1;

726 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:05:30 ]
>>725
cのとっつき難さはそこなんだろうな。

727 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:06:39 ]
A += B
A -= B
A *= B
A /= B

A = A 演算子(+-*/) B

728 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:06:45 ]
レスをくれた方々ありがとうございます。
色々勉強になりました。
ちょっと複雑に考えすぎていたようです。

729 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:09:36 ]
プログラムは単純に考えよう。
プログラムを書くこときも、トリッキーなことをせずに簡単に書こう。

って、先輩にならったな。

730 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:10:02 ]
>>725
逆も上げとくわ
sum += ++a;は
a = a + 1;
sum = sum + a;



731 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:11:29 ]
>>729
sum += a++ が一番簡単で単純だろ?

732 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:12:13 ]
直感的ではないよ

733 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:15:09 ]
>>731
そうだな。

こっちのPart28終わりからPart29の頭にかけてa++関連の未定義問題で論争があったくらいだ。

C言語なら俺に聞け(入門篇) Part 29
pc11.2ch.net/test/read.cgi/tech/1212329099/



734 名前:733 mailto:sage [2008/06/06(金) 00:15:52 ]
>>733>>731への同意ではなく>>732への同意だ。


735 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:17:36 ]
インクリメントを禁止してるプロジェクトに関わった事があったな。。。。。
ちょっと新鮮だった。

736 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:21:07 ]
実際のところたとえば
a = a + 1;
sum = sum + a;



sum += ++a;

としたところでコンパイル後のバイナリレベルでどのくらいクロックやメモリ
を稼げるものなんだ?

それと引き換えに新人が保守するかも知れないリスクとの天秤にかけた場合の
コストも。

737 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:23:16 ]
まだ学生だからわからんのだけど仕事でやってて、それに引っかかる人いるの?

738 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:24:10 ]
万人にわかるようにするんだよ。

739 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:25:54 ]
そんなのもわからないやつにソース触らせんなよw

740 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:27:30 ]
しるかよw

そういう規約をつくってるんだからw

あ、デクリメントも禁止されてたよ。



741 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:28:09 ]
>>737
ソースって案外長生きなんだよ。
COBOLとかあれだけクラサバ登場で無くなるといわれたのに
今だに残ってる。

webの発達でc出来る人口が減ってるのに、新人にわざわざ
今の程度の説明で時間取られたくないだろ?

742 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:29:04 ]
>>736
最適化がかかればクロックやメモリは同等になるはず
好きな方を選べばいいだけ

743 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:29:54 ]
インクリメントすら理解できないなら他の部分が大丈夫なわきゃないと思うんだが。

744 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:31:37 ]
前に、++aとa++って、何が違うんですかって、聞かれたことがあった。


745 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:35:52 ]
それだけが1行にあれば機能は同じだけど、

条件判定の中にあったりすると面倒だし
この間論争になったのは

if (xxxxxx) printf("%d",(a++)*(a++));

こんな感じの結果の違いでもめてたし。



746 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:36:21 ]
それ論争以前の未定義だから

747 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:37:33 ]
>>746
新人がインクリメント覚えて使い出してこんなの書かれると
また教える羽目になるでしょ。

だったら素直にインクリメントなどは使うなとしたほうがいい。

748 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:39:46 ]
なんていうか、C言語の省略した記述って
メモリやCPUなんかのハード資源が極端に
少なかったころのゲーム開発と似てて
みみっちいという気がする。


749 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:40:29 ]
それを論争とか言っちゃう人間が何を教えんの?

750 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:49:14 ]
なんでいまさら宿題スレでインクリメントが問題視されるのかわからん



751 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:32:20 ]
とても難しい問題が来ました
しかし馬鹿な私と違って非常に優秀な諸兄にはわけないでしょう

[1] 授業単元:C言語研修
[2] 問題文(含コード&リンク):
1から45の数(合計値)は1から9の数(要素)の和で作ることができる。(要素に同じ数を使わない)
例えば合計値6は最大3つ(要素数)の要素の和でつくることができ、要素数1であれば6、要素数2で
あれば1+5と2+4の2通り、要素数3であれば1+2+3でつくる。この組み合わせで全てである。
合計値と要素数から要素の和の組み合わせ全てを計算する再帰関数を作れ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 6.0
 [3.3] 言語: C言語
[4] 期限: 起源はありませんが優秀な貴方方の手に掛かれば瞬殺でしょう
[5] 制限はありません。貴方方の持っている全ての知識を注ぎ込んじゃって構いません

752 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:36:25 ]
>しかし馬鹿な私と違って非常に優秀な諸兄にはわけないでしょう
こういっておけば馬鹿が調子こいてやってくれるよwプゲラ
という主の顔が浮かぶ

753 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:54:21 ]
>>751
#include<stdio.h>
int resolve_sub(int total, int num, int min) {
static int ans[9], anslen = 0;
int i, j;
if(!num)
return !total;
for(i = min; i <= 9 && i <= total; i ++) {
ans[anslen ++] = i;
if(resolve_sub(total - i, num - 1, i + 1)) {
for(j = 0; j < anslen ; j ++)
printf("%d ", ans[j]);
printf("\n");
}
anslen --;
}
return 0;
}
void resolve(int total, int num) {
resolve_sub(total, num, 1);
}
int main() {
resolve(30, 6); /* (例)30を6個の和に分ける */
return 0;
}

754 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:25:34 ]
#include <stdio.h>
void f(int size, int n, int *p)
{
static int pos = 0, start = 1;
int i;
if(pos==size-1) {
p[pos] = n;
for(i=0; i<size; i++) printf("%d ", p[i]);
putchar('\n');
return;
}
for(i=start; i*2<n; i++) {
start = i + 1;
p[pos++] = i;
f(size, n-i, p);
pos--;
}
}
int main(void)
{
int num, amount, *p;
printf("要素数を入力して下さい:");
scanf("%d", &num);
printf("合計数を入力して下さい:");
scanf("%d", &amount);
p = malloc(sizeof(int) * num);
f(num, amount, p);
return 0;
}

755 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:34:17 ]
問題読み違えた。
1から45まで限定で1から9しか使っちゃダメなのか。

756 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:50:08 ]
>>751
#include<stdio.h>
int O00O(int OOO0){
if(OOO0%2) return OOO0/2*(OOO0+1);
return (OOO0+1)/2*OOO0;
}
void OOOO(int O0OO[], int OOO0, int OO0O, int OO00, int O0000){
int O, O000;
if(OO00<=1){
O0OO[OO00]=OOO0;
for(O=1;O<OO0O;O++) printf("%d+", O0OO[O]);
printf("%d\n", O0OO[OO0O]);
return;
}
O000=(OOO0-O00O(OO00-1)-1)/OO00;
for(O=O0000;O<=O000;O++){
O0OO[OO00]=O;
OOOO(O0OO, OOO0-O, OO0O, OO00-1, O+1);
}
}
void O0O0(int OOO0, int OO0O){
int O0OO[1000];
if(OO0O>=sizeof(O0OO)/sizeof(O0OO[0])) return;
OOOO(O0OO, OOO0, OO0O, OO0O, 1);
}
int main(void){
O0O0(100, 10);
return 0;
}

757 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 03:11:13 ]
>>756
難読化乙

758 名前:デフォルトの名無しさん [2008/06/06(金) 11:37:44 ]
#include <stdio.h>
#include <float.h>
int main(void)
{ float f;
double x;
long double ld;
printf("\nTesting the precision of float, double, and long double : \n");
f = 1.0f + 1.0e-7;
printf(" 1.0 + 1.0e-7 = %.10f\n", f);
f = 1.0f + 1.0e-8;
printf(" 1.0 + 1.0e-8 = %.10f\n", f);
x = 1.0l + 1.0e-15;
printf(" 1.0 + 1.0e-15 = %.20lf\n", x);
x = 1.0l + 1.0e-16;
printf(" 1.0 + 1.0e-16 = %.20lf\n", x);
ld = 1.0L + 1.0e-19;
printf(" 1.0 + 1.0e-19 = %.30Lf\n", ld);
ld = 1.0L + 1.0e-20;
printf(" 1.0 + 1.0e-20 = %.30Lf\n", ld);
printf("\nThe experiment above is explained by constants from float.h :\n");
printf(" precision of float : %e\n", FLT_EPSILON);
printf(" precision of double : %.15le\n", DBL_EPSILON);
printf(" precision of long double : %.30Le\n", LDBL_EPSILON);
return 0; }
表示された結果のうち、
1.0 + 1.0e-7 が 1.0000001 にならず、同様に
1.0 + 1.0e-15 が 1.000000000000001 にならず、
1.0 + 1.0e-19 が 1.0000000000000000001 という、きれいな数にならない理由を、FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON との関係から説明してもらえないでしょうか。
よろしくお願いします。



759 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 11:43:55 ]
>>758
単純な話管理できる桁があるので小数点側の切捨てが行われてるだけかと。
たとえば
1.0 + 1.0e-7 を 0.1 + 1.0e-7 や 0.01 + 1.0e-7 とした場合
おそらく.0000001は保持されると思われ。

760 名前:デフォルトの名無しさん [2008/06/06(金) 12:01:07 ]
>>759
それをFLT_EPSILON, DBL_EPSILON, LDBL_EPSILON との関係から考察しなきゃならないんですけどいまいちわからなくて・・・



761 名前:759 mailto:sage [2008/06/06(金) 12:05:21 ]
>>760
www.asahi-net.or.jp/~UC3K-YMD/Lesson/Section03/section03_13.html
ここがいいかも

イプシロン(誤差幅)だそうです。

762 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:06:34 ]
ググったら直ぐ出てきたんだが…怒

763 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:32:01 ]
>>758
質問と関係ないが
printfの %l は整数にしか使えないと思うんだ


764 名前:デフォルトの名無しさん [2008/06/06(金) 12:41:53 ]
複素数を求めるプログラムなのですけど、
#include <stdio.h>
#include <math.h>
typedef struct {
double rel;
double imp;
} complex;
double mulcompl(complex x, complex y); /* 関数の戻り値の型を定義 */

int main(void){
complex c1, c2, c3;
c1.rel = 3.2; c1.imp = 2.7;
c2.rel = 2.5; c2.imp = 1.8;
c3 = mulcompl( c1 , c2 ); /* complex変数c1,c2を仮引数としてmulcompl関数を呼び出す */

printf("複素数の積 \n");
printf("( %.2f + i %.2f ) * ", c1.rel, c1.imp);
printf("( %.2f + i %.2f ) = ", c2.rel, c2.imp);
printf("( %.2f + i %.2f )\n", c3.rel, c3.imp);
return 0;
}
double mulcompl(complex x, complex y) /* 関数の戻り値の型を定義 */
{
complex z;
/* 仮引数x,yを使って複素数の掛け算を計算する */
z.rel = x.rel * y.rel - x.imp * y.imp;
z.imp = x.rel * y.imp + x.imp * y.rel;
return z;
}
それでどうしてエラーが取れないのですがどこが間違っているのか分かりません。
どなたかお願いします。


765 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:42:42 ]
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):forkによる子プロセスの生成

子プロセスを2つ生成して、それぞれに、fork1, fork2 のプログ
ラムを実行させるようなプログラムを作成しなさい。

///fork1.c///
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6800.txt

///fork2.c///
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6801.txt

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6月11日

前回は本当にありがとうございました。よろしくお願いします。

766 名前:ロベ mailto:sage [2008/06/06(金) 12:43:46 ]
>>646
お願いします!!!!

767 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:58:20 ]
いまどきこれはないだろ。VC++が無料で使えるってのに。
> [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 for Win32


768 名前:ロベ mailto:sage [2008/06/06(金) 13:00:53 ]
VC++は家でつかってますb

769 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:07:42 ]
>>764
double mulcompl(complex x, complex y) → complex mulcompl(complex x, complex y)


770 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:11:37 ]
>>766
wikipediaみたらOS/2 2.xのヘッダ構造書いてなかったんでやる気無くした。



771 名前:ロベ mailto:sage [2008/06/06(金) 13:14:11 ]
>>770
いちようBMPのヘッダについて書いてあるページは見つけたけど
プログラムの技術がないからできなくて;;
 www.kk.iij4u.or.jp/~kondo/bmp/

772 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:31:33 ]
とあるゲーム機のSS取るのに使った構造体
typedef struct
{
//      char bfType[2];
 unsigned long bfSize;
 unsigned short bfReserved1;
 unsigned short bfReserved2;
 unsigned long bfOffBits;
} BmpFileHed;
typedef struct
{
  unsigned long bcSize;
  short     bcWidth;
  short     bcHeight;
  unsigned short bcPlanes;
  unsigned short bcBitCount;
} BmpFileInfoOS2;
typedef struct
{
  unsigned long biSize;
  long      biWidth;
  long      biHeight;
  unsigned short biPlanes;
  unsigned short biBitCount;
  unsigned long biCompression;
  unsigned long biSizeImage;
  long      biXPixPerMeter;
  long      biYPixPerMeter;
  unsigned long biClrUsed;
  unsigned long biClrImporant;
} BmpFileInfoWindows;

773 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:31:53 ]
残り

typedef struct
{
BmpFileHed     hed;
BmpFileInfoWindows Info;
char        data[480*272*4];
} BmpWindows;

774 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:32:48 ]
でも欠点があってgccでコンパイルすると共通のヘッダ部分に
アライメントが入る。

誰だよBMの後に調整用の領域作らないヘボいフォーマット決めたの

775 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:35:11 ]
typedef struct
{
BmpFileHed     hed;
BmpFileInfoWindows Info;
char        data[2];
} BmpWindows;

typedef struct
{
BmpFileHed     hed;
BmpFileInfoOS2 Info;
char        data[2];
} BmpOS2;

776 名前:ロベ mailto:sage [2008/06/06(金) 13:50:42 ]
>>772 >>773 >>775
この構造体をどう使えば・・・

777 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:54:30 ]
>>766
期限に間に合わなかったので作るのやめたよ


778 名前:ロベ mailto:sage [2008/06/06(金) 13:59:04 ]
>>777
6月10日まで期限延ばしてもらえたので
お願いできませんか?


779 名前:777 mailto:sage [2008/06/06(金) 14:00:06 ]
>>778
作りかけのやつ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6802.c


780 名前:772 mailto:sage [2008/06/06(金) 14:03:19 ]
>>779
unsigned long bcSize;(unsigned long biSize;)に該当する
部分を
unsigned long bfOffBits;
の後に持ってくると楽



781 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:05:06 ]
BMとかどうせ使わないし読み捨てて構造体から排除しちゃえ。

782 名前:ロベ mailto:sage [2008/06/06(金) 14:05:22 ]
>>777
どこまでできてるんですか?

783 名前:ロベ mailto:sage [2008/06/06(金) 14:06:25 ]

>>779 の間違え

784 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:06:46 ]
>>781
以前別スレでやってたけど
#pragma pack(push, 1)
この間に調整されたくない構造体を記述
#pragma pack(pop)

するといいらしい

785 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:17:44 ]
>>782
こいついったいなんなの?
ソースがあるのにどこまでできているか聞くなんて。
自分で確認もできないのなら何でも適当なものをでっちあげてやれば、
ありがたがってそのまま提出しちゃうんじゃないかw

786 名前:777 mailto:sage [2008/06/06(金) 14:19:47 ]
>>774
gccなら
struct s0 {
char a, b, c;
} __attribute__ ((packed));
でパディングなし

787 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:21:14 ]
>>786
おーそうなんだ

継続して作ってないなら続きやろうか?

788 名前:ロベ mailto:sage [2008/06/06(金) 14:22:28 ]
>>787
おねがいできますか?

789 名前:777 mailto:sage [2008/06/06(金) 14:32:31 ]
>>787
どうぞ
自分はグレースケール変換だけやってみる


790 名前:787 mailto:sage [2008/06/06(金) 14:53:08 ]
うほ>>779のを見てると自分の組み方が変則的なのかわかるorz

我流でやってるので悩むorz



791 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:06:00 ]
問03
学科の出席簿作成。
15人分の学生を表示し、入力により内容を変動させる。

表示順番:
出席表
<入力>学生番号0〜14
<入力>曜日番号0〜6
<入力>時限番号0〜3
<入力>出欠番号0〜1
<入力>学生番号0〜14の時に99を入力するとプログラム終了。
頼む。

792 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:10:28 ]
>>646の例題で不明な点があるんだけど
ビットカウントが1,4,8のときはカラーパレットに対して処理するのか?


793 名前:777 mailto:sage [2008/06/06(金) 15:19:54 ]
>>792
もうそれで作りつつある

switch(bit_count) {
// 2値なのでスケール化はできない
case 1:
printf("2値画像のため変換しません\n");
return;
// パレットのみ変更
case 4:
case 8:
pal_count = 1 << bit_count;
for (i = 0; i < pal_count; i++) {
if (os == BMP_OS2) {
y = (unsigned char)(pal3[i].rgbRed * YR + pal3[i].rgbGreen * YG + pal3[i].rgbBlue * YB);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
}
else if (os == BMP_WIN) {
y = (unsigned char)(pal4[i].rgbRed * YR + pal4[i].rgbGreen * YG + pal4[i].rgbBlue * YB);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
y = 0;
fwrite(&y, 1, 1, out_fp);
}
}


794 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:21:07 ]
いつまでだらだらとスレ消費すんだよw

795 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:21:58 ]
フルフォーマット考えると結構面倒だなw

796 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:26:22 ]
>>777
どうする?すでに読み込み用プログラム公開してるサイト見つけたんだけど・・・・

797 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:27:35 ]
BMPの圧縮関係ってどう対処すれば正解?
biCompressionフィールドって任意に拡張可能だった希ガス

798 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:29:19 ]
>>797
まあそうなんだけどさ・・・
BMPで圧縮してるのなんてみたことないし。

でも出題した教師はこれを知ってかしらないでか出してるしな。
まともに対応を考えるとLibレベルになるよ。

799 名前:デフォルトの名無しさん [2008/06/06(金) 15:29:23 ]
ちなみにBMP関係でこんなの見つけたお
sunpillar2004.hp.infoseek.co.jp/data/files/bmp.html

800 名前:デフォルトの名無しさん [2008/06/06(金) 15:30:24 ]
ああ,色深度16bitの時のビットフィールドの意味とかもいろいろあるし,BEかLEかで違いがあるんだっけか・・・?
忘れた



801 名前:796 mailto:sage [2008/06/06(金) 15:30:30 ]
>>799
www.syuhitu.org/other/bmp/bmp.html
こっちはLibにしてソースまで公開してくれてる。

802 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:30:57 ]
>>800
あるね

かなり面倒だよ、これ。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<305KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef