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

このエントリーをはてなブックマークに追加
562デフォルトの名無しさん
以下のような行列の積を求めるプログラムを作成して下さい

行列xを表示
1 2
3 4
5 6

行列yを表示
1 2 4
3 6 9

行列xとyの積を表示


^^^^^^^^^^^^^^^^^^^^^^^
行列xとyの積を表示の下には計算結果を表示するようなプログラムを教えて下さい
お願いします
563デフォルトの名無しさん:2012/11/06(火) 02:25:25.39
MatProduct(int M, int N, double A[M][N],double B[N][M],double C[M][M]){
int m,n,k;
for(n=0;n<M;n++)for(m=0;m<M;m++)C[m][n]=0;
for(n=0;n<M;n++)for(m=0;m<M;m++)for(k=0;k<N;k++)C[m][n]+=A[m][k]*B[k][n];
}
564デフォルトの名無しさん:2012/11/06(火) 02:48:18.61
>>563
>for(n=0;n<M;n++)for(m=0;m<M;m++)C[m][n]=0;
いるのか?
565デフォルトの名無しさん:2012/11/06(火) 03:31:45.84
いらないと思ったのか?
566デフォルトの名無しさん:2012/11/06(火) 06:25:42.97
>>564
ばか?
567デフォルトの名無しさん:2012/11/06(火) 08:16:12.58
いらねーだろふつーに
568デフォルトの名無しさん:2012/11/06(火) 08:33:52.09
いらねーって言ってる奴は学校行ったの?
569デフォルトの名無しさん:2012/11/06(火) 08:56:43.10
>>545
お願い
570デフォルトの名無しさん:2012/11/06(火) 08:58:11.47
>>545
誰かお願いします
571デフォルトの名無しさん:2012/11/06(火) 09:00:19.03
>>570
>>557にあるよ
572デフォルトの名無しさん:2012/11/06(火) 09:03:56.92
どこですか
573デフォルトの名無しさん:2012/11/06(火) 09:04:02.61
changeとか語彙力ねーな
574デフォルトの名無しさん:2012/11/06(火) 11:23:13.14
課題で「自作の関数(main)以外)を少なくとも一つ実装して使用せよ」という条件が出されたんですが、次レスようなプログラムで条件を満たしていますか?
ちなみに課題はx要素の二乗和を求める課題で、元となった参考プログラムにsum(void)はありませんでした。

575>>574:2012/11/06(火) 11:26:19.54
#include<stdio.h>
#include<math.h>
double x2sum(double *x, int n){
int i;
double sum = 0.0;
for(i=0; i<n; i++) {sum = sum + x[i]*x[i];}
return sum;
}
int sum(void);
int main (void){
sum();
return 0;
}
int sum(void){
int i,n;
double X[1000],x2norm;
scanf("%d",&n);
for(i=0; i<n; i++){ scanf("%lf", &X[i]); }
printf("xの要素の二乗和は%lf\n", x2sum(X, n));
x2norm = sqrt(x2sum(X,n));
printf("xをベクトルと考えた時の長さは%lf\n",x2norm);
return 0;
}
576デフォルトの名無しさん:2012/11/06(火) 11:36:24.96
>>573
Yes we can!
577デフォルトの名無しさん:2012/11/06(火) 11:44:21.83
> for(i=0; i<n; i++) {sum = sum + x[i]*x[i];}

ここは
for(i=0; i<n; i++) sum += x[i]*x[i];
で良い

sum() の戻り値を使っていないのに定義するのは無駄

main() で何もしないのなら main() に sum() の内容を書いた方が良いと個人的には思う

scanf() は禁止

入力後 n の上限(1000)をチェックするべき

x2sum(X, n) を二回呼んでいるので効率悪い
578デフォルトの名無しさん:2012/11/06(火) 12:16:02.52
>>577
ありがとうございます

>main() で何もしないのなら main() に sum() の内容を書いた方が良いと個人的には思う

それだとmain関数以外の関数を少なくとも一つ実装せよという条件に反しませんか?
できればこの条件の満たし方(?)を教えてほしいです
ちなみに正式な課題内容は「要素数(n)と、n個の数を入力し、その要素の二乗和と、平方根を求めよ」です
579デフォルトの名無しさん:2012/11/06(火) 12:34:49.44
double x2sum(double *x, int n){

これは関数じゃないの
580デフォルトの名無しさん:2012/11/06(火) 12:35:35.50
>>578
IOをMainで、主計算を函数でやればいいやん
581デフォルトの名無しさん:2012/11/06(火) 12:48:12.14
>>579-580
あっ……理解できました(笑)
ありがとうございます
582デフォルトの名無しさん:2012/11/06(火) 15:22:07.07
>>547を初心者ながら解いてみました
糞コードだと思うので、よろしければ改善点のアドバイスをください
http://codepad.org/jOsS7rjQ
583デフォルトの名無しさん:2012/11/06(火) 15:51:27.43
>>582
l.27 題意より成績
l.29 引数が多いときtrueになる?
l.40-42,61,62 fgetsの返り値を活用
l.50-57 姓名の配列が固定長ならサイズチェック
l.58,59 atoi2回呼ぶのとaveにtokutenを加算するのはどっちが得?
584デフォルトの名無しさん:2012/11/06(火) 16:00:05.08
[1] 授業単元:C言語 アルゴリズム
[2] 問題文(含コード&リンク):配列,ファイル処理
ttp://codepad.org/2AyMDfHY
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限:特になし
ファイルのを読み込み配列に格納するプログラムです.
アドバイスよろしくお願いします.
http://codepad.org/DKaf1c3A
585デフォルトの名無しさん:2012/11/06(火) 16:42:52.56
>>583ありがとうございます。勉強になりました
586デフォルトの名無しさん:2012/11/06(火) 17:17:50.06
PGM STRT
LD GR5,DD
LAD GR1,3
LD GR6,DD,GR1
ADDA GR5,GR6
ST GR5,EE
RET
DD DC 5,6,7,8
EE DS 1
END

レジスタGR5の値(10進数)
レジスタGR1の値(10進数)
レジスタGR6の値(10進数
レジスタGR5の値(10進数)

を教えてください。
587デフォルトの名無しさん:2012/11/06(火) 17:41:57.55
今更の話だけど、10文字以内の以内についてはどう解釈すれば
よいのだろうか。名字の末尾に空白が来たら、次の空白以外の
文字から名前が始まるということか。
588デフォルトの名無しさん:2012/11/06(火) 18:22:34.85
>>584
添削して欲しいコードが問題文に副ってないんだが
589デフォルトの名無しさん:2012/11/06(火) 19:03:58.34
590デフォルトの名無しさん:2012/11/06(火) 19:15:08.51
>>586
スレチ
591デフォルトの名無しさん:2012/11/06(火) 19:16:47.90
>>587
>>547がdata-1.datをうpしない限りなんともいえないんじゃね
それ故に入力ファイルを
>>561はスペース、タブ、改行をデリミタとするDelimiter-Separated Valueとして
>>582は簡易版CSVとして想定してるし
592587:2012/11/06(火) 20:18:34.58
>>591
そうですね。ただ一連のフォーマット部分を見てたら、もしかしたら
最初の項目は固定長のつもりなのかって思えちゃって。
593デフォルトの名無しさん:2012/11/06(火) 21:01:44.87
>>591
>>547 です。

申し訳ないです。
書き込んでからスレをチェックしてませんでした。

今週末まで帰宅できない為手元にdata-1.datについては無いです。
時間が取れたので自分で>>547は完成しました。
ttp://codepad.org/RENONFpa
本当にスレの皆さんには迷惑かけました。

>>548 についてはどうしてもできないので教えていただけると助かります。

よろしくお願いします
594デフォルトの名無しさん:2012/11/06(火) 21:13:11.04
どうせ書いたって見ないでしょ。
595デフォルトの名無しさん:2012/11/06(火) 21:50:18.24
>>582,583
もっとあるっしょ
・St_MAXみたいな意味の分かりにくい変数名をつけない
・argc==1とその次のエラー文の内容に齟齬がある
・ファイルのオープンに失敗した時のエラー表示がおかしい
・strはM_LENGTHで確保してるけど50しか使わないのは何故
・1行が50バイト以上だとwordの中身が入ってなくて不正アクセスで落ちないか?
・学生が100人超えるとバッファオーバーランで死なないか?
・do-whileじゃなくてwhileにしたらeofの判定1回で済むし、空行を強制する必要がないと思うけど
・strlenしてループ回してるのはstrncpyの劣化か?
・指摘すみだけど、名前が10バイト超えたら死ぬ
・学生の人数が0だったら平均の計算で死ぬよね
・最後の出力は桁決まってるしMとかの方がいんでない?
596デフォルトの名無しさん:2012/11/06(火) 21:54:36.97
>>593,548,561
561の改善版(データsort追加)
http://ideone.com/jveo2x
597デフォルトの名無しさん:2012/11/06(火) 22:00:39.88
wrがfbs
598デフォルトの名無しさん:2012/11/06(火) 22:42:20.98
>>596
ありがとうございます。

本当に助かりました。
599582:2012/11/06(火) 22:45:12.23
>>595
ありがとうございます
C言語の例外処理は本当に多様で、気をつけるのが難しいです。だいぶまともなコードになりました
600デフォルトの名無しさん:2012/11/07(水) 08:28:32.06
>>595
>・最後の出力は桁決まってるしMとかの方がいんでない?
どゆこと?
601デフォルトの名無しさん:2012/11/07(水) 09:53:30.15
>>587
全体が固定長で、名字、名前だけ後部は空白で埋められていると解釈するのが
一番自然なんだろうけど。Cの場合あまりそういう解釈を取らない。
602デフォルトの名無しさん:2012/11/07(水) 21:00:17.76
>>600
%4dが化けてるわ…
603デフォルトの名無しさん:2012/11/07(水) 21:42:08.80
[1]C/C++プログラミング実習 
[2]問題 http://codepad.org/IbHwR87p
[3]visual studio 2010
[4]11月12日 10時
[5]ファイルを読み取って書き換えてtxtファイルに出力するというものですが
  私には難しすぎてわかません。どなたか助けてくれれば幸いです。
604デフォルトの名無しさん:2012/11/07(水) 21:49:55.79
>>603
>ファイル名を削除し右から順に番号を振った上で要素が0のものを削除し書き換え

>caltech10/accordion-0001.jpg 1 0 2 0 1 0...
>1:1 3:2 5:1…

>caltech10/accordion-0002.jpg 1 2 7 0 0 3...
>1:1 2:2 3:7 6:3…


左からに見えるんだけど・・
605デフォルトの名無しさん:2012/11/07(水) 21:55:50.41
/*
あるtxtファイルにファイル名とランダムな数字で書かれた多数の数列がある。


caltech10/accordion-0001.jpg 1 0 2 0 1 0...
caltech10/accordion-0002.jpg 1 2 7 0 0 3...
caltech10/accordion-0003.jpg 0 0 2 199 0 3...
caltech10/accordion-0004.jpg 0 0 0 0 5 1...


このtxtファイルを読み取って
ファイル名を削除し右から順に番号を振った上で要素が0のものを削除し書き換え
txtファイルに出力するプログラムを作れ。

実行例
1:1 3:2 5:1…
1:1 2:2 3:7 6:3…
3:2 4:199 6:3....
5:5 …

必ず 番号:数値?番号:数値?番号:数値?…
という形にすること

*/
606603:2012/11/07(水) 21:56:41.37
>>604さん
すいません左と右を間違えてました。。。

>>603の問題を訂正しておきました。申し訳ございません。
607603:2012/11/07(水) 21:58:46.05
>>604さん
すいません左と右を間違えてました。。。

>>603の問題を訂正しておきました。申し訳ございません。
http://codepad.org/CMscRTdS
608デフォルトの名無しさん:2012/11/07(水) 22:43:43.96
古いC++本のサンプルプログラムなんですが、

#include <stdio.h>
int main()

{
int x;

printf("%d\n", x); /* xの値は不明*/

printf("%d\n", x=4); /*代入式 x = 4の値を表示:*/
printf("%d\n", x); /* x に4が代入されたかを確認*/

x = 6; /*xに別の値を代入*/
printf("%d\n", x); /* xに6が代入されたかを確認*/

x = x + 4; /*x の値を 4 大きくする*/
printf("%d\n", x); /*それを確認*/

return 0;
}
をVisualStudio2010で実行すると、必ず 4行目 x; のところでコンパイルエラーになります。
本の通り書いてるのですが、本当なら、表示が

750
4
4
6
10

と、なるそうなんですが、何がおかしいのでしょうか? 教えて下さい。
609デフォルトの名無しさん:2012/11/07(水) 22:47:47.05
それは宿題ですか?
610デフォルトの名無しさん:2012/11/07(水) 23:04:10.11
&x
611デフォルトの名無しさん:2012/11/07(水) 23:22:21.52
初期化されていないローカル変数って、VisualStudio2010ではコンパイルエラー扱いなの?
612デフォルトの名無しさん:2012/11/07(水) 23:25:01.25
613デフォルトの名無しさん:2012/11/07(水) 23:39:01.79
あーすいません、スレ間違ってましたか・・・

向こうで聞いてみますね。ありでした。

ちなみに、初期化されてないローカル変数はエラーになるようです・・・
614デフォルトの名無しさん:2012/11/07(水) 23:40:37.05
>>603
http://ideone.com/h7O6Io

使用方法:
a.exe < input.txt > output.txt
615 ◆QZaw55cn4c :2012/11/08(木) 01:57:50.77
616初心者VC++スレの666:2012/11/08(木) 21:09:13.51
初心者にVC++を教えるスレから誘導されてきました。
問題文はないし、学生じゃないので授業単元はないですが、
先輩にやっとくようにいわれた宿題の一部なのでこちらで質問させてください。
忍者帖の文字数制限にかかるので、次のレスで質問します。
617初心者VC++スレの666:2012/11/08(木) 21:12:16.94
環境:Windows XP(32bit)、VC++ 2005

ある与えられた文字列をバイナリに変換して16バイトのバイト配列に入れる
与えられる文字列は、バイナリ変換した時に128bitまでに収まる数値の文字列とする
という問題で困ってます
例:
"1234"
→1234(4D2h)
→00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,04h,D2h

で、QWORD以上は整数値にできずに困っています。
"18446744073709551616"
→10000000000000000h
→00h,00h,00h,00h,00h,00h,00h,01h,00h,00h,00h,00h,00h,00h,00h,00h,
どのように処理すればいいのでしょうか?
618デフォルトの名無しさん:2012/11/08(木) 21:29:50.95
619デフォルトの名無しさん:2012/11/08(木) 21:41:29.79
>>617

>通信仕様を渡されてやっといて
ネットワークプログラミングならここでもそう書けよ
620603:2012/11/09(金) 18:05:08.89
>>614
お礼が遅れて申し訳ございません。。。ありがとうございます!!
621デフォルトの名無しさん:2012/11/09(金) 18:23:30.61
[1]プログラミング実習 
[2]問題 http://codepad.org/pFx4NTTb
[3]visualStudio 2010
[4]11月15日 10時
[5]フォルダの中にあるファイルの名前を書き換えて他のフォルダに移す
  という問題です。どなたかお願いします。
622デフォルトの名無しさん:2012/11/09(金) 18:48:58.34
>>621
要件が曖昧かつ不足

1. 並び順
   gazou\A\img-2.jpg
   gazou\A\img-01.jpg
  とあったときに、
   gazou\A\img-2.jpg → gazou2\A-0001.jpg
   gazou\A\img-01.jpg → gazou2\A-0002.jpg
  とすべきなのか
   gazou\A\img-01.jpg → gazou2\A-0001.jpg
   gazou\A\img-2.jpg → gazou2\A-0002.jpg
  また、「_」の扱いも、ファイルマネージャー(ExplorerやNautilusやThunar)ごとに異なる。
  Cのstrcmp()やstricmp()でも並び順が変わるし、DOSのsortコマンドも異なる。

2. 画像ファイルが10000個以上ある時、10000個目は
  gazou2\A-10000.jpg
  で良いのか

など。
623デフォルトの名無しさん:2012/11/09(金) 18:53:28.98
>>622
間違った

×
> 1. 並び順
>    gazou\A\img-2.jpg
>    gazou\A\img-01.jpg
>   とあったときに、
>    gazou\A\img-2.jpg → gazou2\A-0001.jpg
>    gazou\A\img-01.jpg → gazou2\A-0002.jpg
>   とすべきなのか
>    gazou\A\img-01.jpg → gazou2\A-0001.jpg
>    gazou\A\img-2.jpg → gazou2\A-0002.jpg


> 1. 並び順
>    gazou\A\img-10.jpg
>    gazou\A\img-2.jpg
>   とあったときに、
>    gazou\A\img-10.jpg → gazou2\A-0001.jpg
>    gazou\A\img-2.jpg → gazou2\A-0002.jpg
>   とすべきなのか
>    gazou\A\img-2.jpg → gazou2\A-0001.jpg
>    gazou\A\img-10.jpg → gazou2\A-0002.jpg
624デフォルトの名無しさん:2012/11/09(金) 19:37:39.90
>>622
そもそも元ファイル名がどうなっているって言う指定がないんだから
FindNextFileで出てくるのを連番にすればいいだけだろ
5桁以上はその都度桁増やせばいいんじゃね、そんなに突っ込んだらパフォーマンス落ちるけどな
625デフォルトの名無しさん:2012/11/09(金) 19:56:17.87
gazouフォルダ内に既に A-00nn.jpg ってファイルがあったらその番号は保存するの?付け替えても平気?
626621:2012/11/09(金) 22:27:12.65
>>623 >>624 >>625 さん
レスありがとうございます、そして説明不足で申し訳ございません。
>>624さんの言うとおり、元ファイル名に指定はないので
あああ.jpgとか165287.jpgといった適当に名前の付けられた画像ばかりが入ってるという条件です。
なのでファイル名を並び順関係なしに連番でつけてください。
画像内部に既にA-00nn.jpgがあったとしても番号は保存なしに付け替えても大丈夫です。
また10000個目があったとしたら桁数を増やすという対処でお願いします。
もしかしたらこれでも説明不足かもしれません。そしたらまたツッコミをお願いします。。
627デフォルトの名無しさん:2012/11/10(土) 00:57:32.13
>>616,617
ベタで書いてみたがリンク貼れないので加工。
http : //ideone.com/qHzVns
628デフォルトの名無しさん:2012/11/10(土) 04:06:03.90
[1] c言語
[2] 問題文:C言語でのポインタを使った行列の操作です。
1 2 3 0
0 0 0 1
2 0 0 2
0 0 0 1
をファイルから読み込み,以下の操作を実行せよ。
1,非零の要素を左から右へ、上から下へ書きならべた配列を作り、
[1 2 3 1 2 2 1]とする。
2,各要素が何行目・何列目にあるかを別の配列に格納し、
A = [1 2 3 1 2 2 1] 非零要素リスト
IA = [1 1 1 2 3 3 4] i行
JA = [1 2 3 4 1 4 4] j列
の配列が出力されるようにせよ。
3,何番目の要素からiが始まるかを書きならべる。
IAの中で、1が初めに出現するのは1番目、2が初めに出現するのは4番目、3が初めに出現するのは5番目、4が初めに出現するのは7番目なので、
IA' = [1 4 5 7] の配列が出力されるようにせよ

[3] 環境:Ubuntu11.00
よろしくお願いします
629デフォルトの名無しさん:2012/11/10(土) 04:17:21.00
>>628
入力が
1 2 3 0
0 0 0 1
0 0 0 0
0 0 0 1
だった場合 IA = [1 1 1 2 4]となって 3 が出現しないんだけど、
IA'はどう表現すればいいのだろう。

入力は
1 2 3 0
0 0 0 1
2 0 0 2
0 0 0 1
意外考えなくて良いのかな。
630デフォルトの名無しさん:2012/11/10(土) 06:01:56.91
入力を固定値しか考えなくていいのなら
固定値をpsintfすれば?
631デフォルトの名無しさん:2012/11/10(土) 15:21:22.71
>>628
#include <stdio.h>

#define I_SIZE 4
#define J_SIZE 4

int main(void){
int matrix[I_SIZE][J_SIZE]={{1,2,3,0},{0,0,0,1},{2,0,0,2},{0,0,0,1}};
int A[I_SIZE*J_SIZE], IA[I_SIZE*J_SIZE], JA[I_SIZE*J_SIZE], IA_[I_SIZE]={0};
int *pA=A, *pIA=IA, *pJA=JA, i, j, c;

for(i=0,c=0;i<I_SIZE;i++){
for(j=0;j<J_SIZE;j++){
if(matrix[i][j]){
*pA++=matrix[i][j];
*pIA++=i+1;
*pJA++=j+1;
c++;
}
}
}

for(i=0;i<c;i++) if(IA_[IA[i]-1]==0) IA_[IA[i]-1]=i+1;

printf("\nA ="); for(i=0;i<c;i++) printf(" %d", A[i]);
printf("\nIA="); for(i=0;i<c;i++) printf(" %d", IA[i]);
printf("\nJA="); for(i=0;i<c;i++) printf(" %d", JA[i]);
printf("\nIA'="); for(i=0;i<I_SIZE;i++) printf(" %d", IA_[i]);

return 0;
}
632デフォルトの名無しさん:2012/11/10(土) 23:46:23.31
誰か>>621>>626やっていただけると嬉しいです。。
633デフォルトの名無しさん:2012/11/11(日) 00:25:58.92
>>629
>>631
ファイルから
1 2 3 0
0 0 0 1
0 0 0 0
0 0 0 1
という数値を入力したいのですがどのような方法があるでしょうか?
634デフォルトの名無しさん:2012/11/11(日) 01:21:31.75
>>628,633
http : //ideone.com/Q6qfkE
635デフォルトの名無しさん:2012/11/11(日) 02:07:23.57
>>634
キモいマクロ使うより s を使えよ
636デフォルトの名無しさん:2012/11/11(日) 03:11:11.65
>>632
ファイルの操作(名前変更とか移動とか)がからむから、
WindowsなのかLinuxなのか、処理系を明示した方が
良いと思いますよ。
637636:2012/11/11(日) 12:32:55.38
>>621に書いてあったorz
(私は作れないのでごめんなさい)
638デフォルトの名無しさん:2012/11/11(日) 12:52:40.23
>>637
たしかにvisual studioはlinaxで動くのもあるらしいですしもう少し定義しなきゃダメでしたね・・
忠告ありがとうございます。
それを踏まえて>>621の問題を改変したものをもう一回かいておこうと思います。
度々申し訳ございません。

[1]プログラミング実習 
[2]問題 http://codepad.org/jgm76WsV
[3]visualStudio 2010
[4]11月15日 10時
[5]先生に指摘があった点を言った所、枚数の方は100枚以下という条件になりました。
フォルダに100枚以下の画像を名前や順番関係なしに「フォルダ名ー番号」
という名前に書き換えて違うフォルダに移すという問題です。
どうかよろしくお願いします。
639デフォルトの名無しさん:2012/11/11(日) 16:17:26.72
>>638
対象:windows、jpg決め打ち
http://ideone.com/paE2Ii

10分くらいで書けるかと思ってたけど意外とめんどかった。
windows.hとかファイル操作するときはideoneのrunを外さないとダメなんですね。
サイト上でエラーでまくっていますが、ローカルだと動くと思います。
640デフォルトの名無しさん:2012/11/11(日) 16:41:32.66
>>639
#define MAXPATH 256 // ← windows.hで定義されている_MAX_PATHを使うべし
641デフォルトの名無しさん:2012/11/11(日) 18:01:48.08
UNICODEでしか作れないファイルがあると動かないコードだね
642デフォルトの名無しさん:2012/11/11(日) 19:12:32.65
643デフォルトの名無しさん:2012/11/11(日) 19:16:50.17
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
ファイル処理
1、ファイルの中身を表示
2、漢字の読みを入力を促す。
3、入力後Enterで再びファイルの中身を表示させる。
4、入力した読みも追記されている状態にする。

ファイル内容は
春夏秋冬
です。
読みを入力してください。
しゅんかしゅうとう

ファイル内容は
春夏秋冬
しゅんかしゅうとう
です。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限: 早めにお願いします。
644デフォルトの名無しさん:2012/11/11(日) 20:08:53.93
(夕方)このPGやっといて。期限?まぁ早めにやってくれればいいよ。
(終電前)あれ終わった?はぁ!?とっかかりだけ!?早めにって言っただろ!!!

という上司に当たると困るよね。
軽い依頼に油断して具体値を確認しない糞社畜もダメなんだけどね。はい、私です。
645638:2012/11/11(日) 20:17:42.15
>>639 >>640
ありがとうございます、無事コンパイルもできて動きました!
本当に助かりました。。ありがとうございます・・・!

もし次に依頼する時がある時はちゃんと詳細をかいてから投稿することにします
その点については本当に申し訳ございませんでした。
646デフォルトの名無しさん:2012/11/11(日) 20:48:13.18
>>644
期日だけは最初に必ず聞いて
無理なら無理って言わないと全て自分のせいになっちゃうよね
647643:2012/11/11(日) 23:06:48.18
>>644 >>646
643です。
お願いしている身なのにも関わらず不愉快な思いをさせてしまいすみませんでした。
明後日の火曜日までです。
どなたかお願いします。
648デフォルトの名無しさん:2012/11/12(月) 00:02:45.11
仕様が分からないのだけど、>>547の仕様を以下のように設定し、
貼ったコードを改造した解答を誰かさらしてくれないでしょうか。
>>547とは全く関係ないのだけど、自分で実装してて凄く気になったもので。

独自仕様:読み込んだ得点の平均点も表示。

http://codepad.org/PQLpXWQA
649デフォルトの名無しさん:2012/11/12(月) 00:19:35.51
[1] 情報処理演習U
[2] ここのNo.384です
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C
[4] 期限: 2012年11月12日23:59まで
[5] 添付ファイルの9番と14番です。よろしくお願いします。
650デフォルトの名無しさん:2012/11/12(月) 00:31:48.43
651デフォルトの名無しさん:2012/11/12(月) 00:35:55.14
strtokなんてめったに使わないものを持ち出してくるとは
652デフォルトの名無しさん:2012/11/12(月) 00:39:34.87
653デフォルトの名無しさん:2012/11/12(月) 01:06:01.31
654653:2012/11/12(月) 01:09:59.20
>>649
あ、9番だけね
14番は問題の意図がよくわからんかった
655デフォルトの名無しさん:2012/11/12(月) 01:13:54.98
656デフォルトの名無しさん:2012/11/12(月) 01:19:20.93
>>651
strtok以外で、CSVのようなフォーマットの外部ファイルを読み込んで、
それぞれのデータを分けるやり方ってあるのでしょうか。

>>652
ありがとうございます。こうすれば良いのですね。
657デフォルトの名無しさん:2012/11/12(月) 01:40:44.58
形式が決まってるんだったら
fscanf(hoge,"%d,%[^,],%[^,],%d",&h・・・
みたいにfscanf(もしくはfgetsとsscanf)で十分でしょう
658 ◆QZaw55cn4c :2012/11/12(月) 01:40:52.69
>>656
自分で作る。strtok() は個人的見解として仕様がまずい。
http://toro.2ch.net/test/read.cgi/tech/1313183984/35 pbm2bmp.c : cutToken() みたいのが好み。
659デフォルトの名無しさん:2012/11/12(月) 01:49:27.10
[1] 授業単元: C言語
[2] 問題文(含コード&amp;リンク):
ファイル処理
文字列を複数入力した上で、その順番に表示するプログラムを作る。また、その応用で逆に表示するものも作る。
1、文字列はいくらでも入力できる。
2、連結リストにデータを保持する。
3、入力を終わらせる手段を用意する

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限: 11月12日 10:00
頑張っていたのですが、ちょっと厳しいです。よろしくお願いします。時間ないですけど…。
660 ◆QZaw55cn4c :2012/11/12(月) 03:16:16.04
661デフォルトの名無しさん:2012/11/12(月) 03:27:11.21
>>653
>>655
ありがとうございました。
考え方が根本的に違いました
662デフォルトの名無しさん:2012/11/12(月) 08:27:23.37
>>660
ありがとうございます!
ただ、c言語初心者で現在構造体を学んでいる段階の私にはよく分らない所だらけで…。
入力した文字列(名前など)を逆順に表示するだけにするにはどうすればいいですか?
私としては、構造体の宣言→入力受付→それに応じた領域の確保→入力された文字列(名前など)逆順に表示の流れで考えているのですが…。
663 ◆QZaw55cn4c :2012/11/12(月) 08:49:25.33
>>662
http://codepad.org/zpaXn7RJ
これでどうですか?
664デフォルトの名無しさん:2012/11/12(月) 09:26:08.51
http://codepad.org/ucTCDxtR
char data[];
はC99で認めらているけど、が気になるなら
char data[0];
にしとけ、[0]はGCCの拡張機能。

但し、以下の利用条件を守る場合に限り利用を許可する。
次回からの質問では「Qzは回答禁止」と書くこと。
665デフォルトの名無しさん:2012/11/12(月) 09:43:15.51
>>659
正順の方。利用条件は>>664に同じ

http://codepad.org/plo7qOEc
666デフォルトの名無しさん:2012/11/12(月) 10:33:25.20
[1] 配列ポインタ
[2] n件の浮動小数点型データを配列に入力して、その最大値を出力するプログラムを作成。
ただし、配列の定義以外で添字演数子[ ]を用いないまた、*(p+i)、*p++の形式2つを用いた場合をそれぞれ作成。また、入出力処理をファイル処理に変更して、入出力ファイル名はコマンドラインで指定する。
[3]Linux、gcc、C

[4] 至急
[5] 緊急で無理とは思いますがお願いします
667デフォルトの名無しさん:2012/11/12(月) 11:10:12.30
662です。fputsとstrcpyの部分でエラーが出てしまいます。何か他の表現方法とかはありますか?
668 ◆QZaw55cn4c :2012/11/12(月) 12:39:55.72
>>664 >>665
へえ free() しないんだ?
669デフォルトの名無しさん:2012/11/12(月) 15:34:25.86
>>668
Qは回答禁止
670デフォルトの名無しさん:2012/11/12(月) 15:48:24.79
>>668
テメーが完璧にfreeしてから言え。SIGKILL食らった場合でもfreeしろよ。カス。
671デフォルトの名無しさん:2012/11/12(月) 17:11:19.66
自演乙
672 ◆QZaw55cn4c :2012/11/12(月) 19:45:18.19
>>664 >>665
分けちゃったの?一つのプログラムで書きたいよね

>>665
>struct data_list data_list = {0},
ふーん、正順のときは頭の一個は空っぽなんだ、これじゃ一つにまとめられないよね

>for (p = &data_list; p->next != NULL; p = p->next)
> ;
Ο(n)なの?後ろまでいちいち手繰るの?一発で到達できないの?

>>670
free() が一つもない、というのは教育的じゃないよね、C は malloc()/new しまくる言語じゃないんだけど

あと可変長構造体はリッチーはすごく嫌っていたみたい
http://www.kouno.jp/home/c_faq/c2.html#6
>ただしDennis Ritchieは「Cの実装への根拠 のない馴れ馴れしさ」と呼んだ。
C99 では公認されたにしてもちょっとねえ、妙なところは技巧的にいくんだ?
673デフォルトの名無しさん:2012/11/12(月) 19:58:03.21
お前はSIGKILL喰らってもきっちりfreeできるテクを開発するまでmalloc使用禁止な。
674 ◆QZaw55cn4c :2012/11/12(月) 21:00:23.95
>>673
SIGKILL はシグナルハンドラを設定できないシグナルだったかと。
675デフォルトの名無しさん:2012/11/12(月) 22:02:14.78
>>664 >>665
free() できるけどしない、のか、free() のしかたをしらないのか、区別つかない
676デフォルトの名無しさん:2012/11/12(月) 22:03:30.18
また自演
677デフォルトの名無しさん:2012/11/12(月) 22:08:43.88
>>664 >>665
もうちっとましなの科研か?
678デフォルトの名無しさん:2012/11/12(月) 22:44:37.75
黙れ朝鮮人
679デフォルトの名無しさん:2012/11/12(月) 22:46:59.05
散々バカにされて悔しいから、どうでもいいところに噛み付くキチガイがいるw
680デフォルトの名無しさん:2012/11/12(月) 23:00:30.13
横からすみません。

>>665にfreeを入れてみたのですが
ttp://ideone.com/3sL3Jx
これで良いのでしょうか?
681デフォルトの名無しさん:2012/11/12(月) 23:07:11.58
平静を装うキチガイ絵便器族がいるね↑
682デフォルトの名無しさん:2012/11/12(月) 23:14:17.24
>>680
終了するだけなのにfreeしろっていうのは池沼の証明だから必要ない。
SIGKILL喰らった時に「mallocしたブロックはfreeすべし」というマヌケな
ポリシーが貫けなくなるので、mallocは使えないことになりましたとさ。
683デフォルトの名無しさん:2012/11/12(月) 23:22:21.74
OSが後始末してくれるような環境だったら良いんだけどね。
684デフォルトの名無しさん:2012/11/12(月) 23:22:37.97
プログラム終了とともに解放されることが確実な領域をfree()するかどうかは趣味の問題でしかないのに、
そんなどうでもいいところに噛み付かなきゃプライドが保てないQZが哀れすぎるw
685デフォルトの名無しさん:2012/11/12(月) 23:29:21.46
おいおいおいおい糞喰い民族ファビョるな
686デフォルトの名無しさん:2012/11/12(月) 23:31:54.02
死ねや自演野郎
687デフォルトの名無しさん:2012/11/12(月) 23:36:59.89
なんとなく、エラー処理で終了するときにexit終了だとmalloc解放とかその他諸々キレイにしてくれるけど、
return終了だとファイル解放くらいしかしてくれないと思ってたんだけど、
外部割込みで強制終了とかじゃなくて普通に終了したら、
exitだろうがreturnだろうがvoid mainの終了だろうが関係なく全部解放してくれてるの?
ちなみにそれはOSに依存するの?vcやgccとか言語に依存するの?
688デフォルトの名無しさん:2012/11/12(月) 23:58:31.14
関数の中だけで使うため生成した領域やファイルポインタやハンドル類は、
その関数が終わる時に解放するのがこのスレとしては模範的なんじゃないかな。
689デフォルトの名無しさん:2012/11/13(火) 00:19:11.07
自分のやりたいようにやればいい
690デフォルトの名無しさん:2012/11/13(火) 00:35:05.40
freeとは何か? 不要になったメモリブロックをメモリアロケータに返却し、
再利用可能にするための仕組みだ。
プログラムの終了で再利用の可能性は消滅するのだから、終了直前にfree
するのは池沼のやる事。
691デフォルトの名無しさん:2012/11/13(火) 00:38:19.46
>>690
頭悪いのが頑張るとひどいことになるんだな
692デフォルトの名無しさん:2012/11/13(火) 01:24:17.39
>>683
そういう環境の場合に終了前に呼び出すべきクリーンナップルーチンはfreeではない。
OSがmalloc/freeレベルの細粒度のブロックを管理する事は無い。

終了直前にfreeするのは池沼のやる事。
693デフォルトの名無しさん:2012/11/13(火) 02:09:37.74
[1]C/C++プログラミング実習 まとめ 
[2]問題 http://codepad.org/CfJninhf
  問題文中に出てくるhistograms.txt :http://www1.axfc.net/uploader/so/2673930.txt
[3]visual studio 2010
[4]11月19日 10時
[5]前にここのスレでお世話になりました>>603です。
  この前の課題を提出した所、今度はまとめとして前の問題の発展問題がだされました。
  前に頂いたプログラムを改変してみようと思ったのですが、今回の問題が複雑になりすぎてて
  お手上げ状態です。どなたか助けていただけると幸いに思います。
694デフォルトの名無しさん:2012/11/13(火) 03:28:58.99
695 ◆QZaw55cn4c :2012/11/13(火) 04:00:56.33
>>680
残念。それはうまくいかない。
>for (p = data_list.next; p; p = p->next)
> free(p);
free(p); → p = p->next → p != 0?
free(p) したあとでは、p->next の値を利用できない。

>>682
SIGKILLにシグナルハンドラを設定できるのならば簡単なんですけれども

>>684
free() 以外にも >>672 にいろいろあげておきました。

>>687
別に解放しなくても OS がまとめて面倒みてくれると思います。 MS-DOS の時代ですらそうでしたし。
free() するしないは宗教問題でしょうね。free() を使えることが前提ではありますが。
696 ◆QZaw55cn4c :2012/11/13(火) 04:04:06.30
>>684
>プログラム終了とともに解放されることが確実な領域をfree()するかどうかは趣味の問題でしかないのに、
そのとおり。ただしfree() をちゃんと使えることが前提ではありますが。
697デフォルトの名無しさん:2012/11/13(火) 04:08:09.44
ちゃんとしたプログラムがろくに書けないアホが、なんで他人がfree()使えないとか思えるんだよw
698 ◆QZaw55cn4c :2012/11/13(火) 04:19:14.05
>>683
free() ならいいのだけれども
globalalloc() とか、私がよくやる
HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
だったらglobalfree() とか HeapFree(GetProcessHeap(), 0, p); とかしないと、やっぱりまずいのでしょうか?
699 ◆QZaw55cn4c :2012/11/13(火) 04:22:45.38
>>697
>>664 とか >>665 とかがまともに見えるのですか?動けばいい、という投げなりなプログラムだとどうしても思ってしまうのですが?
700 ◆QZaw55cn4c :2012/11/13(火) 04:28:50.64
>>697
free() を使わないと、いろいろと理屈をこねないといけないので死ぬほど面倒くさいことがよくわかりました。
さっさとfree() 書いときますね。
701デフォルトの名無しさん:2012/11/13(火) 05:26:47.74
>>695
> >>680
> 残念。それはうまくいかない。
> >for (p = data_list.next; p; p = p->next)
> > free(p);
> free(p); → p = p->next → p != 0?
> free(p) したあとでは、p->next の値を利用できない。

あ、そうですね。p->nextの領域が解放されて消滅した後に
参照しても正当な値が得られる保証はありませんね。
うかつでした。ありがとうございます。正しくは、
char *pp;

for (p = data_list.next; p; ) {
pp = p->next;
free(p);
p = pp;
}
ですね。
702701:2012/11/13(火) 05:49:21.56
>>701
> char *pp;
> …

struct data_list data_list * pp;

の間違いでした
703デフォルトの名無しさん:2012/11/13(火) 07:11:53.60
>>702
struct data_list *pp;
704デフォルトの名無しさん:2012/11/13(火) 07:31:41.06
>>695
> SIGKILLにシグナルハンドラを設定できるのならば簡単なんですけれども
ふむ、それなら捕捉可能なシグナルにたいしてきっちりfreeしろよ。
まずは>>663を修正してみろ。
705デフォルトの名無しさん:2012/11/13(火) 09:34:33.99
>>680
利用条件を守りなさい。
706デフォルトの名無しさん:2012/11/13(火) 11:39:55.79
707693:2012/11/13(火) 12:57:24.15
>>693
まさかここまで早くやってくれるとは思いませんでした。ありがとうございます!
708デフォルトの名無しさん:2012/11/13(火) 14:32:15.80
自分で自分にお礼
709680:2012/11/13(火) 17:18:32.82
>>695>>703>>680
ありがとうございます。
>>680を修正しました。
ttp://ideone.com/ahMM2K

※ Qzさん申し訳ありませんが回答禁止でお願いします。
710 ◆QZaw55cn4c :2012/11/13(火) 20:58:42.75
>>709
>p->next = malloc(sizeof(data_list) + l + 1);
>if (p->next == NULL) {
>.........
>goto PG_END;
>}
すばらしい。malloc() に失敗してまでもfree() しようとするところ、free()信者の鑑といえよう。
異常系はよくわからんからやる気のない私は似非信者。
711デフォルトの名無しさん:2012/11/13(火) 21:37:39.11
freeしないとまずい処理系が存在しないんだったら良いんだけど、
現在動いている組み込み系とかCP/Mとかって、全て、本当に、大丈夫なの?
712デフォルトの名無しさん:2012/11/13(火) 21:50:06.63
>>695
> SIGKILLにシグナルハンドラを設定できるのならば簡単なんですけれども
簡単って豪語したんだから、捕捉できるシグナルをきっちりfreeしろよ。
713デフォルトの名無しさん:2012/11/13(火) 21:58:25.97
>>711
お前バカだろ。大丈夫じゃないmallocを作れば大丈夫じゃない。
714デフォルトの名無しさん:2012/11/13(火) 23:09:03.54
>>711
スレ違
715デフォルトの名無しさん:2012/11/13(火) 23:43:11.89
つまり、mainだろうが動的確保したものは開放しろよ、
ってことでFA?
716デフォルトの名無しさん:2012/11/13(火) 23:43:51.38
解放
717デフォルトの名無しさん:2012/11/13(火) 23:53:05.67
違う。再利用する可能性が無いのに解放するのは池沼のやる事。
718デフォルトの名無しさん:2012/11/14(水) 00:03:05.14
>>717
( ゚Д゚)ハァ?
719デフォルトの名無しさん:2012/11/14(水) 00:09:48.53
ハイレベル
720デフォルトの名無しさん:2012/11/14(水) 00:19:31.60
>>718
(解放した後の空きメモリを)再利用する可能性が無いのに解放するのは〜〜
ということでしょ。
だとすると、解放した後の空きメモリを再利用する可能性があるなら解放する。
もはや言葉遊びだな。
でも、組み込みARMのCで、そんな実装があったような。
複数モジュールがあって、それぞれmain()を持ち、適宜呼び出される。
各々main()の中で動的確保されたメモリは、main()抜けるまでに解放すること。
721デフォルトの名無しさん:2012/11/14(水) 00:20:11.15
>>718
意味ないし、不可能だし(SIGKILL)、不可能なの除外して(SIGKILL以外)も困難だし。
簡単とか豪語したクズもやっぱりできてないし。
722デフォルトの名無しさん:2012/11/14(水) 01:18:00.61
[1] 授業単元:C言語 アルゴリズム
[2] 問題文 行列ベクトル積
http://ideone.com/21ECGq
[3] 環境
[3.1] OS:ubuntu11.00
[3.2] gcc
[3.3] 言語: C
以前質問させて頂いたものを参考に作成しました。ファイルから数値をを取り込んで行列ベクトル積を計算したいのですがうまく数値が変動しません。アドバイスよろしくお願いします
723デフォルトの名無しさん:2012/11/14(水) 01:39:38.80
>>722
まず、

・190行目の
 ksl b[i] = 0;
 は何でしょうか?
 コンパイルが通るソースを上げましょう。

・void dot_crs_cpu(double *b, double *x, double *val, int *col_ind, int *row_ptr);
 ですが、引数に n を渡す必要があるのでは。
 void dot_crs_cpu(int n, double *b, double *x, double *val, int *col_ind, int *row_ptr);
 として、153行目は
 dot_crs_cpu(n, vector_b,vector_x,val,col_ind,row_ptr);
724723:2012/11/14(水) 01:43:55.43
>>723
まだ全然処理を見ていないので、dot_crs_cpuに渡すのが
mainのnかどうかは分からないけど、とりあえず…
725デフォルトの名無しさん:2012/11/14(水) 01:51:28.06
>[1] 授業単元:C言語 アルゴリズム
>[2] 問題文 行列ベクトル積
>http://ideone.com/21ECGq
>[3] 環境
>[3.1] OS:ubuntu11.00
>[3.2] gcc
>[3.3] 言語: C
>以前質問させて頂いたものを参考に作成しました。ファイルから数値をを取り込んで行列ベクトル積を計算したいのですがうまく数値が変動しません。アドバイスよろしく
お願いします

>>722ですが再掲です。>>723さんのアドバイスと入力するテストデータを追記してみました。
よろしくお願いします
726デフォルトの名無しさん:2012/11/14(水) 02:17:11.83
>>725
>>>722ですが再掲です。>>723さんのアドバイスと入力するテストデータを追記してみました。

722と同じurlになってるよ。
新しい方のurlを貼られたし。
727デフォルトの名無しさん:2012/11/14(水) 02:27:06.64
>>722
宣言
void dot_crs_cpu(double *b, double *val, double *x, int *row_ind, int *col_ind);
定義
void dot_crs_cpu(double *b, double *x, double *val, int *col_ind, int *row_ptr)

ズレている。
728デフォルトの名無しさん:2012/11/14(水) 02:31:36.59
>>722
>>727
>>726
>>723
>>723
http://ideone.com/TLCMSf>>723
ご指摘ありがとう御座います。何度も申し訳ありません。よろしくお願いします
729デフォルトの名無しさん:2012/11/14(水) 02:41:07.76
>>728
188行のnはいらないだろう?
というか、コンパイルが通るの確認してからうpすべし。
あと、>>727の書いてあるとおり、プロトタイプと実体の変数の並び順が合っていない。
俺は寝る。
730デフォルトの名無しさん:2012/11/14(水) 02:43:54.99
>>722,728
CCSになってないか?
731デフォルトの名無しさん:2012/11/14(水) 03:18:41.29
>>722>>728は、

matrix_a(5行5列) 〜
{1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 3.000000 3.000000 3.000000 3.000000
1.000000 3.000000 5.000000 5.000000 5.000000
1.000000 3.000000 5.000000 7.000000 7.000000
1.000000 3.000000 5.000000 7.000000 9.000000 }

vector_b(5行1列) 〜
{5.000000 13.000000 19.000000 23.000000 25.000000 }

で、単に
vector_x = matrix_a * vector_b
のvector_xを求めたいのかな?
それにしてはCRSとかの処理らしきものが入っているし、、

違ったらすみません。
732731:2012/11/14(水) 03:20:04.16
表現訂正

vector_b(5行1列) 〜
{5.000000
13.000000
19.000000
23.000000
25.000000 }
733 ◆QZaw55cn4c :2012/11/14(水) 05:07:44.29
>>704,712,721
>簡単とか豪語した
あはは、これは失言。
signal()時代ではハンドラはリエントラントに書かないといけないので大変というか無理だったんですが、ここでは sigaction(2) を使用して再入しないようにしました。これならむずかしくないかと思うんですけれどもどうなんでしょう?
SIGINT, SIGQUIT, SIGTERM, SIGTSTP にのみ対応、ほかのは対応しても意味ないし。
http://toro.2ch.net/test/read.cgi/tech/1313183984/592
734 ◆QZaw55cn4c :2012/11/14(水) 05:31:04.70
>>720
お話興味深いです。
まあ、>>668 はfree()信者が釣られてしまったということでよいかと
735デフォルトの名無しさん:2012/11/14(水) 06:02:29.85
質問です。

double test;
test=195/4;
printf("%10.2f",test);

を実行すると48.00になるのですが

double test;
test=195.0/4;
printf("%10.2f",test);

だと、48.75になります。
なぜでしょうか?後者の方が正しいと思うんですが。
736デフォルトの名無しさん:2012/11/14(水) 06:27:18.51
>>731
CRS形式の行列ベクトル積を実装しようとしています。
b=AxにのA、xに適当な数値を与え、bに結果を格納し、行列ベクトル積が正しく動作しているか確認するつもりですソースを書きました。
737デフォルトの名無しさん:2012/11/14(水) 07:37:27.18
195/4
整数と整数の割り算なので割った結果を切り捨てて整数化された 48 が式の値
そのあと浮動小数点数の変数に代入するので test は 48.00 となる
738デフォルトの名無しさん:2012/11/14(水) 14:05:29.60
>>733
0点。お前はmalloc使用禁止。
739デフォルトの名無しさん:2012/11/14(水) 14:17:22.97
> SIGINT, SIGQUIT, SIGTERM, SIGTSTP にのみ対応、ほかのは対応しても意味ないし。
再利用の可能性が無いのにfreeする事を要求しているお前の宗教の経典では意味あるだろ。
SIGKILLでfree出来ない時点で欠陥経典なわけだが。
740デフォルトの名無しさん:2012/11/14(水) 15:04:04.54
最近 atexit() というものを覚えました
これで完璧です
741 ◆QZaw55cn4c :2012/11/14(水) 22:12:17.78
>>738
うーん、たしかに >>733 には malloc() で確保した領域が宙に浮く瞬間があり、そこでシグナルが発生すると解放しそこねますね。
ではこれでどうだ?
http://codepad.org/nWaEzamS
742デフォルトの名無しさん:2012/11/15(木) 01:50:28.10
再帰分割を利用した迷路作成のプログラムを作っているのですが、うまくいかないので、アドバイスお願いします。
課題としては、壁を#、道をスペースで表示するといったものです。

[1] 授業単元:
[2] 問題文(含コード&amp;リンク):
RecursiveDivisionMethodを使用しての迷路作成。(英語ですいません。。。)

en.wikipedia.org/wiki/Maze_generation_algorithm#Recursive_division_method

[3] 環境
 [3.1] OS:Mac OSX 10.8.2
 [3.2] gcc
 [3.3] C
[4] 期限: 2012/11/16まで

現時点でのソースコード
codepad.org/lMzvP9Il

はじめの壁二つと壁の穴開けまでは特に問題なくできたんですが、そこから再帰を使って壁と穴を
作っていくところで手詰まり状態です。

後、直接は関係ありませんが、40~42行目のif文でelseを削除するとFloating point exceptionが出てしまいます。
これも何故だかよくわかりません。

よろしくお願いします。(リンク貼るとエラーが出るので、URLのhttp~~は省略しています。)
743デフォルトの名無しさん:2012/11/15(木) 05:12:14.08
744デフォルトの名無しさん:2012/11/15(木) 05:21:27.28
ああ
途中で center 壊してるな
直さなきゃ・・・
745デフォルトの名無しさん:2012/11/15(木) 05:51:07.70
>>742
recursiveDevide()呼び出すたびにsetPoint()でpointxとpointyが変化してまずいのでは。

pointxとpointyはグローバルではなく、
recursiveDevide()のIN引数(入力パラメータ)、
setPoint()のOUT引数(結果入れ先)
として与えた方が良いかも。

あと細かいけど
・#include<time.h>
・127行目
  >if( x == 0 | x == SizeX-1) {
   ↓
  >if( x == 0 || x == SizeX-1) {
746デフォルトの名無しさん:2012/11/15(木) 08:24:03.99
747デフォルトの名無しさん:2012/11/15(木) 09:03:20.17
>> 745

>recursiveDevide()呼び出すたびにsetPoint()でpointxとpointyが変化してまずいのでは。

コメントありがとうございます。そこには気づいていたんですけど、それを回避しようととして40-42行目のif文をいれて小細工しようとすると
前述したようにエラーが起きてしまう・・・といった感じでした。

>pointxとpointyはグローバルではなく、

これはたとえば
void setPoint( int refx, int refy, int maxx, int maxy, int *pointx, int *pointy) {*pointx = rand()%(maxx-refx) + refx;
*pointy = rand()%(maxy-refy) + refy;
}

void recursiveDevide( int refx, int refy, int sizex, int sizey) {
setPoint( refx, refy, sizex, sizey, &pointx, &pointy);
}

といった感じのことでしょうか。

>>743

ありがとうございます。試してみます。
と、思ったらこれC++ですねw
748デフォルトの名無しさん:2012/11/15(木) 09:06:18.15
>>746
WIDTHかHEIGHTのどちらかが偶数のとき、
まずくないかな?
749デフォルトの名無しさん:2012/11/15(木) 09:08:24.48
>>747

> >>743
> ありがとうございます。試してみます。
> と、思ったらこれC++ですねw

#include以外はCだよ
750デフォルトの名無しさん:2012/11/15(木) 09:29:06.48
>>748
道幅が変化する場合の動作は未定義ですので
コメントで禁止(運用でカバー)しています
751748:2012/11/15(木) 09:34:30.71
>>750
英語読めねいのがばれた。寝ます。
752745:2012/11/15(木) 09:55:51.76
>>747
> これはたとえば
> void setPoint( int refx, int refy, int maxx, int maxy, int *pointx, int *pointy) {*pointx = rand()%(maxx-refx) + refx;
> *pointy = rand()%(maxy-refy) + refy;
> }

そうです。そして、
void recursiveDevide( int refx, int refy, int sizex, int sizey) {
int pointx, pointy;
setPoint( refx, refy, sizex, sizey, &pointx, &pointy);

recursiveDevide( refx, refy, pointx, pointy) ;
recursiveDevide( refx, pointy, pointx, maxy) ;
recursiveDevide( pointx, refy, maxx, pointy) ;
recursiveDevide( pointx, pointy, maxx, maxy) ;
}
といった感じのことです。
main()でのsetPoint()はいらなくなるかな。

>>745
> recursiveDevide()のIN引数(入力パラメータ)、
と書いたけど、これは無駄でしたね。

何か勘違いして混乱させていらた、すみません。
753デフォルトの名無しさん:2012/11/15(木) 10:27:25.22
>>748 >>750
今回のはたぶん必ずループ脱出できるみたいだから良いけど、
do{}while()でrandomで期待する値が出るまで待つのは、
あまり良い方法じゃないと思うよ。
偶数か奇数かしか要求しないのなら、
RandInt()をもう少し改良して、
指定範囲内の偶数または奇数のみ
生成して返すようにした方が良い。
754デフォルトの名無しさん:2012/11/15(木) 14:58:58.05
[1] プログラミング
[2] 1+2+3+....+nが1000になる直前の変数nの値を求めよ
[3] 環境
 [2.1] Windows
[2.2] C++
[4] 期限: ([2012年11月17日12:00まで]
[5] その他の制限:9月から講義でC言語を扱っているため初歩的な知識しか
  ならっていません。printf scanf switch文 if else if for文

何かアドバイスをいただけると助かります。
よろしくお願いします。
755デフォルトの名無しさん:2012/11/15(木) 15:10:38.04
756デフォルトの名無しさん:2012/11/15(木) 15:11:43.32
1000にはならないので1000以上になる直前ってことで
#include <stdio.h>
int main() {
int sum=0,n;
for(n=1;(sum+=n)<1000&&n++;);
printf("n=%d\n", n);
return 0;
}
757756:2012/11/15(木) 15:13:57.73
ミスってた。スルーして下さい。
758742:2012/11/15(木) 18:45:42.93
>746

ソースありがとうございます。勉強になります。boolというのがあったので、C++なのかなと思ってしまいました・・・。
試しにincludeだけ変えて動かしてみようと思ったのですが、コンパイルエラーがでてしまいます。。。
もし何かおかしい点があれば、指摘もらえるとありがたいです。

gcc maze_test.c -o maze_test
maze_test.c:11: error: expected specifier-qualifier-list before ‘_point’
maze_test.c:20: error: expected ‘;’, ‘,’ or ‘)’ before ‘=’ token
maze_test.c: In function ‘RecursiveDivisionMethod’:
maze_test.c:45: error: ‘for’ loop initial declaration used outside C99 mode
maze_test.c:47: error: redefinition of ‘i’
maze_test.c:45: error: previous definition of ‘i’ was here
(略)
759742:2012/11/15(木) 18:52:47.98
>>752

アドバイスどうもです〜。ポインタを使った値の受け渡しをうまく使えるようにならないといけませんね。
なにぶん、今までCをほとんど触ったことなかったので、ポインタの使いこなし方がよくわからなかったりします。
日々勉強ですね。
760デフォルトの名無しさん:2012/11/15(木) 19:10:05.88
>>758
そうだね。>>746のコードはmaze_test.cppに保存して
gcc maze_test.cpp -o maze_test
としないといけないね。
761742:2012/11/15(木) 19:32:54.88
>>760

そういうことですか!試してみます。
ただ、.cで作らなきゃいけないので… ^^;
762デフォルトの名無しさん:2012/11/15(木) 21:50:40.42
>>761
ttp://codepad.org/PznC0kRj
中は見てないけどCに直してみた
763デフォルトの名無しさん:2012/11/15(木) 23:32:05.30
最近のCって文中に宣言が在っても通るんだね。
764デフォルトの名無しさん:2012/11/15(木) 23:44:11.50
そもそも「再帰分割を利用した迷路作成」は
解く側から見て最初に経路の目星を付け易いという欠点があるよ
765742:2012/11/15(木) 23:50:39.91
>>762

無事動かすことができました!ありがとうございます。
このソース、しっかり目を通して勉強します。
766デフォルトの名無しさん:2012/11/16(金) 01:47:44.13
>>741
実行せずに一瞥しただけでバグがすぐ見える。

死ねよ。ヘボ。ヘボヘボヘボヘボヘボヘボ。
他人のコードに言いがかる付けるのは50億年早い。お前はmalloc永久に使用禁止。
767デフォルトの名無しさん:2012/11/16(金) 01:51:52.23
言いがかる付ける

おちつけ
768デフォルトの名無しさん:2012/11/16(金) 03:17:57.70
麻ー呂っくを禁止されると困るでおじゃる
769デフォルトの名無しさん:2012/11/16(金) 04:53:26.34
>>766
どんなバグがあるの?動くようにしかみえないけれど
770746:2012/11/16(金) 10:33:13.30
>>753
動いてたから問題ないと思ってたけど
大きなバグがありました
#define RandInt(s, e) (!((e) - (s)) ? (s) : ((s) + rand() % ((e) - (s))))
じゃなくて
#define RandInt(s, e) ((e) - (s) <= 0 ? (s) : ((s) + rand() % ((e) - (s) + 1)))
としないとまずいですね
何で誰も教えてくれなかったんだ
771デフォルトの名無しさん:2012/11/16(金) 10:44:38.11
ああ、
出来る迷路になんとなく偏りが有るなぁと感じたのはそのせいか。
妙に細長い道が多いとか。
みんな判っててスルーしてるんだと思ってたよ。
772デフォルトの名無しさん:2012/11/16(金) 11:39:09.58
>>770
回答者のコードは結構検証されないもので。
773デフォルトの名無しさん:2012/11/16(金) 11:51:38.39
>>771
rand() % ((e) - (s)) だと右端とか下端に穴が開かなくなるので
左や上に道が出来る傾向が大きくなりますね
>>742 さんの元コードそのまま使ってて
そこはあまり気にしてなかった

>>742 さんの
http://codepad.org/lMzvP9Il
を改めてよく見たら
  // Create walls
  while( blankx1 == refx || blankx1 >= pointx || blankx1 % 2 != 1 ) {
    blankx1 = rand()%pointx + refx; ←ここもおかしい
  }
(略)
  while( blankx2 == pointx || blankx2 >= maxx || blankx2 % 2 != 1 ) {
    blankx2 = rand()%(maxx - pointx) + pointx;
  }
774デフォルトの名無しさん:2012/11/16(金) 11:54:22.32
(略)
  while( blankx2 == pointx || blankx2 >= maxx || blankx2 % 2 != 1 ) {
    blankx2 = rand()%(maxx - pointx) + pointx;
  }
じゃなくて
    blankx2 = rand()%(maxx - pointx + 1) + pointx;
が正しいことになります
775デフォルトの名無しさん:2012/11/16(金) 12:11:13.08
>774
いや、
そこは大丈夫だろ。
お前がバグを埋め込んだんだよ。
776デフォルトの名無しさん:2012/11/16(金) 12:44:43.63
>>766
>>672 お前もいいかげんへぼ
さっさとなおせ
777デフォルトの名無しさん:2012/11/16(金) 12:50:58.46
もしかして 777
778デフォルトの名無しさん:2012/11/16(金) 13:28:24.40
赤字国債の発行を 2015 年度まで認める特例公債法が成立って、3 年先まで借金の予定してるよ。
憲法第86条に反していない?違憲じゃない?
779デフォルトの名無しさん:2012/11/16(金) 15:34:34.58
>>769
未初期化の変数使うパスが存在するだろ。Qzほど素質の無いバカはめったにいない。
死んだ方がいい。
780デフォルトの名無しさん:2012/11/16(金) 15:57:42.28
>>779
ないと思うけれど?
http://codepad.org/nWaEzamS
の何行目?
781デフォルトの名無しさん:2012/11/16(金) 16:25:30.08
30
782デフォルトの名無しさん:2012/11/16(金) 16:32:55.31
INIT を通さずに DISABLE や ENABLE を呼んだ場合の抜け道?
783デフォルトの名無しさん:2012/11/16(金) 18:34:20.95
C で書く限りそんな縛りをコードにふくませることはできないだろう。
>>741 は INIT を呼んでから DISABELE や ENABLE を呼んでいる。
であれば、「INIT を通さずに DISABLE や ENABLE を呼んだ場合の抜け道がある」というのは、それはいいがかりというもの。

それともほかにいい方法があるとでも?
784デフォルトの名無しさん:2012/11/16(金) 19:09:43.91
>>783
抜け道云々はいいがかりだろ。 というのは同意するよ

>>779 が考える「未初期化の変数使うパス」って何だろね?と想像してたんで
785デフォルトの名無しさん:2012/11/16(金) 20:21:03.41
お前ら全員malloc禁止な。
137行でmallocがフェイルすると145行のENABLEで未設定のrestoreSでシグナルマスクをリストアする。
でも、これをなおしても0点。無理やりfreeするためにsignal禁止なんて笑うしかない。

ダメな奴は努力してもダメなんだからあきらめて転職しろよ。乞食の方がましだぞ。
786デフォルトの名無しさん:2012/11/16(金) 20:28:17.90
C言語
gcc
Linux
問題:cat関数を作りなさい。ただし、fgets,fputsを用いること。です。

明日のお昼までにお願いします。
787デフォルトの名無しさん:2012/11/16(金) 20:33:01.77
>>785
    ∧__∧
    ( ・ω・)   いやどす
    ハ∨/^ヽ
   ノ::[三ノ :.、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"
788デフォルトの名無しさん:2012/11/16(金) 22:19:03.86
>>787
宿題スレしか相手してくれないんだよ。
言わせんな恥ずかしい。
789デフォルトの名無しさん:2012/11/16(金) 22:20:18.89
>>786
system("cat");
790デフォルトの名無しさん:2012/11/16(金) 22:22:35.69
#include <stdio.h>

int main(int ac, char **av)
{
  char buf[65536];
  FILE *fp = fopen(av[1], "rb");
  while(fgets(buf, sizeof(buf), fp)) fputs(buf, stdout);
  fclose(fp);
  return 0;
}
791デフォルトの名無しさん:2012/11/16(金) 23:59:06.43
cat とは
ttp://kazmax.zpp.jp/cmd/c/cat.1.html
>cat はデフォルトではテキストモードを用い、 標準出力がファイルまたはパイプにリダイレクトされたときには
>バイナリモードを用いる。
792デフォルトの名無しさん:2012/11/17(土) 00:01:31.29
793デフォルトの名無しさん:2012/11/17(土) 00:15:23.96
794デフォルトの名無しさん:2012/11/17(土) 01:12:03.52
てす
795デフォルトの名無しさん:2012/11/17(土) 13:51:46.62
>>785
ご指摘感謝。
またmalloc() に失敗したときだけまずい、というわけではなく
malloc() に成功した直後にシグナルが入ると、そのmalloc() で得たブロックはシグナルハンドラで解放されない、ということもありますね。
そういう意味では >>785 の指摘は少し突っ込みが足りない。

以下に訂正します。
http://toro.2ch.net/test/read.cgi/tech/1313183984/593

>無理やりfreeするためにsignal禁止なんて笑うしかない。
いや >>704 でそうしろ、といういわれたから興味もあってしてみただけ。>>721 がいうほど困難ではないことがよくわかったは収穫だ。
私の経典にもそこまでは記されていない。「malloc()したもの宜しくfree()すべし」とはあるが。
796デフォルトの名無しさん:2012/11/17(土) 14:12:22.28
わろた
指摘が足りないことを指摘してどうしても上に立ちたいんだな

そのうち誰からも指摘してもらえなくなる・・・というかすでにネット上でしか指摘してもらえなくなってるのか
797デフォルトの名無しさん:2012/11/17(土) 14:34:50.48
だから言ったろ
Qは実際の自分より遥かに自分を大きく見せたいだけの自己愛性パーソナリティ障害だって
実際は社会の底辺君なので現実を見ると耐えられないんだろうな
798デフォルトの名無しさん:2012/11/17(土) 14:38:36.07
>>785
Qは無職
799デフォルトの名無しさん:2012/11/17(土) 15:54:30.81
>>795
あわれなくらい頭弱いな。シグナル禁止でいいならmainに入った直後に全部禁止すればいいだろ。
800デフォルトの名無しさん:2012/11/17(土) 16:02:41.34
>>799
^Cとか^Zとかkillとかは利かしておきたいの、その上で信者の務めを全うしたいの
>>721がいうほどむずかしくないことがわかったので満足
801デフォルトの名無しさん:2012/11/17(土) 16:05:58.61
一瞬だけ禁止するのも全部禁止するのもかわりはない。これほどのバカも珍しい。
802デフォルトの名無しさん:2012/11/17(土) 16:07:15.35
単元:アルゴリズムとデータ構造
問題:http://www1.axfc.net/uploader/so/2679236|
複数ファイルあるのでzipにしてます。
環境:ubuntu10.24 gcc C言語
期限:11/20まで
よろしくお願いします<(_ _)>
803デフォルトの名無しさん:2012/11/17(土) 16:15:32.25
>>801
さすがにそれは同意しかねる
割り禁とかと同じでしょう
804801です:2012/11/17(土) 16:22:40.46
アップうまくできてないようなので
http://www.dotup.org/uploda/www.dotup.org3631427.zip.html
連レス失礼しました。
805デフォルトの名無しさん:2012/11/17(土) 16:35:12.00
>>801
ブロックしたシグナルはブロックが解除された時点で利くんですよ、そんなこともしらないの?
806デフォルトの名無しさん:2012/11/17(土) 18:23:48.80
ふと思ったが、割り込み禁止のことを割り禁っていうのはうちのローカルルールなのかな

>>802,804
ttp://codepad.org/ftLI0y9P
問題3の意図が不明確
分割コンパイルの練習しろってことだろうけどmainでなにすればいいんだ
問題4はmakeするだけだから自分でやりな
807デフォルトの名無しさん:2012/11/17(土) 18:38:11.38
NG推奨:
◆QZaw55cn4c
/tech/1313183984/
808デフォルトの名無しさん:2012/11/17(土) 18:44:12.85
書けないからって僻むんじゃないよ
809デフォルトの名無しさん:2012/11/17(土) 18:56:10.29
>>805
「禁止」と「ブロック」でアゲ足取ったつもりか? 救いようのないバカだな。
810デフォルトの名無しさん:2012/11/17(土) 19:12:39.43
>>809
ちがうね「一瞬だけ禁止するのも全部禁止するのもかわりはない。」という記述が間違いであることを指摘している書けないからこんな間違いをする
811デフォルトの名無しさん:2012/11/17(土) 20:03:41.64
ぷぷぷっ 餅つけ。日本語になってねーぞ。

「一瞬だけ禁止するのも全部禁止するのもかわりはない。」という記述は一般的には正しくない、
しかし、free教狂信者の「freeするためにsignalをブロックする」という愚かなコードを貶す文脈
の中なので「一瞬だけ禁止するのも全部禁止するのもかわりはない。」は正しい。
812デフォルトの名無しさん:2012/11/17(土) 20:09:06.84
>>811
意味不明
>>800 がわからないの?最初から最後までブロックしたらシグナルハンドラが起動しないあと「『一瞬だけ禁止するのも全部禁止するのもかわりはない。』という記述は一般的には正しくない」理由がわかってんの?
813デフォルトの名無しさん:2012/11/17(土) 20:10:44.44
>>811
>「freeするためにsignalをブロックする」
これも微妙ないいかただ本当に分かっているのか?
814デフォルトの名無しさん:2012/11/17(土) 20:55:39.19
>>813-814
わからないのはお前がバカだから。www

で、お前はこれからmallocするすべての宿題の回答にそのクソコードを追加するんだろうな。
815デフォルトの名無しさん:2012/11/17(土) 20:57:06.16
スレ違い
現実でやれ
816デフォルトの名無しさん:2012/11/17(土) 23:13:24.78
>>814
自覚してるじゃねーか
817デフォルトの名無しさん:2012/11/18(日) 11:32:26.63
まあ >>704 >>712>>721 にいたっては
>不可能だし(SIGKILL)、不可能なの除外して(SIGKILL以外)も困難だし。簡単とか豪語
と思っていたのが、あっさりとクズに >>733 で9割がた書かれてしまったのがよほど腹にすえかねたんだろ

馬鹿にはありがちなパターン
818デフォルトの名無しさん:2012/11/18(日) 17:53:45.67
あのクソコードで出来た気になってる。惨めすぎるぞ。
一瞬だけ禁止するのも全部禁止するのもかわりはない。

禁止するのはバカでもできる。
819デフォルトの名無しさん:2012/11/18(日) 17:56:55.77
>>818
>一瞬だけ禁止するのも全部禁止するのもかわりはない。
全然わかっていないんだねクズ以下だね
820デフォルトの名無しさん:2012/11/18(日) 18:10:11.20
クズは所詮クズしかし下だと思っていたクズが実は上だったりすると発狂する馬鹿って多いんだよね
>>663>>664 を比べればすぐにわかる、というか >>663 のあとで >>664
>以下の利用条件を守る場合に限り利用を許可する。次回からの質問では「Qzは回答禁止」と書くこと。
とかもうねクズ以下だと自覚したときの絶望には同情するがね
821デフォルトの名無しさん:2012/11/18(日) 20:14:59.82
毎年一番出題が多い季節になったのに、全然上がらない。
822デフォルトの名無しさん:2012/11/18(日) 21:36:31.21
2chは時代遅れ
823デフォルトの名無しさん:2012/11/18(日) 21:53:16.06
毎年同じ問題だから過去スレで間に合ってる希ガス売る
824デフォルトの名無しさん:2012/11/18(日) 22:22:01.30
過去スレは●がいるんじゃない?
825デフォルトの名無しさん:2012/11/18(日) 22:57:29.39
>>819-820
相変わらずトリップつけたり外したり。薄汚い奴だ。ww
バカは死んでもなおらないんだろうな。
826デフォルトの名無しさん:2012/11/18(日) 23:19:22.49
お前もつけろよ
827デフォルトの名無しさん:2012/11/19(月) 03:13:43.66
単元:プログラミング1
問題:ある指定した値までの素数の表を出力するプログラムをかけ。
環境:gcc C言語
期限:11/20まで
828デフォルトの名無しさん:2012/11/19(月) 03:15:52.23
単元:プログラミング1
問題:ある指定した個数の素数の表を出力するプログラムをかけ。
環境:gcc C言語
期限:11/20まで
829デフォルトの名無しさん:2012/11/19(月) 03:21:55.31
素数のリストではなく表なんだな
830デフォルトの名無しさん:2012/11/19(月) 03:32:44.09
表の書式は?
831デフォルトの名無しさん:2012/11/19(月) 04:16:51.51
>>827-828
http://ideone.com/EDjPt9

こんな感じでいいの?
832デフォルトの名無しさん:2012/11/19(月) 05:50:10.02
>>827
#include <stdio.h>

int main(void)
{
int i, j, n;

scanf("%d", &n);

for(i = 2; i <= n; i++) {
for(j = 2; j * j <= i; j++) if(i % j == 0) goto L;
printf("%d\n", i);
L:; }

return 0; }

>>828
#include <stdio.h>
int main(void) {
int i, j, k, n;

scanf("%d", &n);

for(i = 0, j = 2; i < n; j++) {
for(k = 2; k * k <= j; k++) if(j % k == 0) goto L;
printf("%d\n", j);
i++;
L:; }

return 0; }
833 ◆QZaw55cn4c :2012/11/20(火) 07:49:09.48
834デフォルトの名無しさん:2012/11/20(火) 14:30:01.32
833 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

になります
ここに書いてください
835デフォルトの名無しさん:2012/11/20(火) 15:02:38.81
モリタポ乞食が生息するスレwww
836デフォルトの名無しさん:2012/11/20(火) 15:09:40.67
なんだいったい
833はなんだったんだ
いつもまにか絵kされてるぞ
837デフォルトの名無しさん:2012/11/20(火) 22:26:52.60
単元 C言語配列
問題1 Float型配列にマクロで指定した個数の乱数(randを使う)を格納して
その平均値と最大値を出力するプログラムを作成せよ。

問題2 上記の問題で結果を小さい順で表記せよ。
環境 Linux gcc C言語
期限 今週日曜日まで
よろしくお願いします
838デフォルトの名無しさん:2012/11/20(火) 23:57:11.35
>>837
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int fcmp(const void *a, const void *b) {
    if (*(float *)a < *(float *)b) {return -1;}
    else if (*(float *)a == *(float *)b) {return 0;}
    else {return 1;}
}
int main() {
    const int n = 100;
    const int r = 10;
    int i;
    float max = 0.0;
    float sum = 0.0;
    float a[n];
    srand((unsigned int) time(NULL));
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) {a[i] = (float) rand() / RAND_MAX;}
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
        if (max < a[i]) {max = a[i];}
        sum += a[i];
    }
    printf("Q.1\nAverage: %f, Maximum: %f\n\n", sum / n, max);
    qsort((void *)a, sizeof(a) / sizeof(a[0]), sizeof(a[0]), fcmp);
    puts("Q.2");
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
        printf("%f", a[i]);
        i % r == r - 1 ? puts("") : putchar(' ');
    }
    return 0;
}
839デフォルトの名無しさん:2012/11/21(水) 00:08:45.27
マクロって言われたらマクロにしろよw
840桃白白:2012/11/21(水) 01:02:59.19
どうやら桃白白のスーパーバブルソートをお披露目する時が来たようだな。
>>837
http://ideone.com/CHwJGn
841デフォルトの名無しさん:2012/11/21(水) 01:09:24.16
どこがスーパーなんだよw
842デフォルトの名無しさん:2012/11/21(水) 01:30:49.92
配列 〜 50000個

>>838 〜 17.921s
>>840 〜 0.085s
843デフォルトの名無しさん:2012/11/21(水) 01:43:03.79
>>842
逆だ
844デフォルトの名無しさん:2012/11/21(水) 01:59:40.04
>>838
./a.out 0.04s user 0.01s system 55% cpu 0.104 total

>>840
./a.out 5.37s user 0.08s system 96% cpu 5.671 total

>>840を修正
void bubblesort(float a[], int n)
{
int i,j;
float t;

for ( i = 0; i < n; ++i) {
for ( j = i+1; j < n; ++j) {
if (a[j] > a[j]) {
t = a[j];
a[j] = a[i];
a[i] = t;
}
}
}
}

./a.out 0.05s user 0.08s system 36% cpu 0.358 total
845デフォルトの名無しさん:2012/11/21(水) 02:04:22.23
Ave:O(n^2)とAve:O(n*log(n))のアルゴリズムなんだから要素が多くなったら当然の結果だろ
バブルはあくまで要素数が少ないと期待できるときに選択するアルゴリズムで実装も容易なことが利点なんだから
846デフォルトの名無しさん:2012/11/21(水) 02:05:21.15
>>844
お前そんなんで生きてて良く恥ずかしくないな
847デフォルトの名無しさん:2012/11/21(水) 02:22:07.08
>>838
float a[n];

>>840
float a[N];
も、配列が12345678個とか多くなるとセグメンテーション違反で落ちるけど、
static float a[N];
にしたらどちらも落ちなくなります。
848デフォルトの名無しさん:2012/11/21(水) 02:42:21.09
>>847
記憶クラスでお勉強
予め阿保みたいな数の配列になることがわかってるならstaticでもいいけど
どうなるか全く予測できないならmallocでヒープに
849デフォルトの名無しさん:2012/11/21(水) 12:29:07.77
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://codepad.org/oMN19ueH
[3] 環境 windows C言語
[4] 期限: 2012年11月21日21時00分
[5] その他の制限 特になし
おねがいします
850デフォルトの名無しさん:2012/11/21(水) 12:52:38.43
851デフォルトの名無しさん:2012/11/21(水) 13:01:16.73
>>850
ありがとうございました
852デフォルトの名無しさん:2012/11/21(水) 20:42:58.04
配列習ってる人がバブルソートとかわかるの?
853デフォルトの名無しさん:2012/11/21(水) 20:59:28.31
わかるでしょ
854デフォルトの名無しさん:2012/11/21(水) 21:00:04.72
>>852
何ソートならいいの?
855デフォルトの名無しさん:2012/11/21(水) 21:17:03.32
ボゴソート
856デフォルトの名無しさん:2012/11/21(水) 21:21:30.79
コムソートいいよ
比較回数はクイックソートの倍くらいかかるけど
書くのが簡単で必要メモリがものすごく少ない
857デフォルトの名無しさん:2012/11/21(水) 23:38:48.47
そこはあれだ、スリープソートで
858デフォルトの名無しさん:2012/11/21(水) 23:55:28.43
運任せならランダムソート
これはわかりやすいソートの一例
859デフォルトの名無しさん:2012/11/22(木) 00:15:58.01
そーとは知らなかった、勉強になるな。
860デフォルトの名無しさん:2012/11/22(木) 00:25:53.24
そんな相当なソートは卒倒しちまうぞ
861デフォルトの名無しさん:2012/11/22(木) 11:07:24.80
[1] 授業単元:C言語
[2] 問題文(含コード&amp;リンク)://codepad.org/oNUxByE7
[3] 環境
 [3.1] OS:LINUX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:11/25
[5] その他:スレ違いでしたらごめんなさい.上記にhttp:をお願いします.
862デフォルトの名無しさん:2012/11/22(木) 11:20:16.56
なげーし、mainが終わったと思ったら54行目からいきなり中身が始まるし、
{ と } が全然対応とれてねーし。
文法エラーをなくしてから出直せ。

> ・問題文は、出題されたまま全文を書いてください。
863デフォルトの名無しさん:2012/11/22(木) 12:22:47.67
エラーや文法が間違っているのは>>861は承知しているのでは?
このプログラムの手直しをお願いしていると思われ
864デフォルトの名無しさん:2012/11/22(木) 12:35:24.54
出力はPGMだが、入力フォーマットが不明だし、
カラー画像のフォーマットが3個の別々のファイルってのも変だし、
前半は与えられたサンプルのようにも見えるけど、4で割る意図が不明だし、
このままでは明らかに問題文が不十分。
865デフォルトの名無しさん:2012/11/22(木) 12:37:07.75

だってコイツあほだろ
RGBで同じようなのが3つもあるじゃん
何かを決定的にわかってないヴァカがカくようなプログラミっだぞこれ
途中が間違ってるとかそういうレヴェルじゃねーもん
だれかから干しつけられたとか
自分でやろうとしたけど挫折したとか
ともすれば業務的な何かだろコレ
argvが5まであるらしいけど
それの説明すらないだろ?
コイツはそういうコミュ小だよ
何を伝えればいいのか全然わかってないアホ野郎だ
866デフォルトの名無しさん:2012/11/22(木) 13:46:11.85
>>863
文法エラーを消すだけの知識が無いなら、まずは初心者スレなりでクリアすべきだな。
867デフォルトの名無しさん:2012/11/22(木) 16:13:46.57
[1] プログラミング基礎
[2] 5人の学生の学生番号、身長、体重を入力し
平均身長ave_heigh、平均体重ave_weightを求める。
ただし、学生番号、身長、身長の平均からの差、体重、体重の平均からの差は 2次元配列data[5][5]に格納するようにすること。

学生番号、身長、体重の各々をkeyにして昇順、降順のどちらでもソートできるようにせよ。
ただし、ソート処理は関数化しソートアルゴリズムには選択ソート、バブルソート、クイックソートの何れかを選択可能とすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
868デフォルトの名無しさん:2012/11/23(金) 04:49:41.63
>>861
ttp://ideone.com/gN66JU

仕様は、
ttp://codepad.org/oNUxByE7
を読んだ印象で勝手に決めました。
あらかじめ書いておきますが、これは私のオナニーの一種です。

確認ページ
 表色系の相互変換 - Programming-Tips - 総武ソフトウェア推進所
 ttp://smdn.jp/programming/tips/colorspaces/
で、RGB = #CC1234 は
 H = 349
 S = 0.91
 V = 0.80
らしいけど、当プログラムでも
 H = f832 〜 349.02998397802700846875715266651
 S = e968 〜 0.91175707637140459296559090562295
 V = cc00 〜 0.79688715953307392996108949416342
なので、あっているはず。
幅2×高さ4のファイルで確認したけど問題は無さそうでした。

最後に書いておきますが、これはオナニーの一種です。
諸々責任は持ちません(汗)
869868:2012/11/23(金) 05:10:30.27
>>868
いま、処理に影響無いところを一部修正。
したけど、URLは同じ ttp://ideone.com/gN66JU
870デフォルトの名無しさん:2012/11/23(金) 06:30:04.21
>>868
#include <string.h>
が必要
871デフォルトの名無しさん:2012/11/23(金) 16:01:56.85
公然とオナニーを見せつける猥褻行為をすぐにやめろ。
872デフォルトの名無しさん:2012/11/23(金) 17:50:58.11
[1] 授業単元:計算機実習
[2] 問題文(含コード&リンク):
whileを用いて数当てゲームを作りなさい
・コンピュータが乱数で1から1000までの数を用意する.
・プレイヤがキーボードから数を入れる.
・コンピュータの数より大きければ「大きい」,小さければ「小さい」と画面に表示する.
・コンピュータの数とプレイヤの数が同じでなければ,繰り返す.
「何回で当てられたか」を表示させる.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月28日
873デフォルトの名無しさん:2012/11/23(金) 19:50:29.37
乱数ってのはもちろん正規分布の普通の乱数だよな?
874デフォルトの名無しさん:2012/11/23(金) 20:40:26.25
>>873
覚えた言葉を使ってみたい年頃か
875デフォルトの名無しさん:2012/11/23(金) 21:58:02.33
876デフォルトの名無しさん:2012/11/23(金) 22:01:06.10
>>873
コンピュータの「普通」の乱数といえば一様乱数では?
だいたい正規分布なら,平均と標準偏差も指定してくれなきゃ困る。
877デフォルトの名無しさん:2012/11/23(金) 22:16:33.77
そういうのはこの課題の趣旨ではないんじゃないの?
878デフォルトの名無しさん:2012/11/23(金) 22:58:00.04
メルセンヌツイスター
879桃白白:2012/11/24(土) 01:12:42.70
>>867
んあー、一級バブルソート伝道師である桃白白も途中でくじけそうになった。関数ポインタを使うべきなのか。
http://ideone.com/Yw48Qg
880デフォルトの名無しさん:2012/11/24(土) 01:15:45.55
[1] 授業単元:C言語
[2] 問題 codepad.org/I9NEBx3U
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: VisualStudio2010
 [3.3] 言語:C
[4] 期限:11/25
よろしくお願いします。
881デフォルトの名無しさん:2012/11/24(土) 01:55:09.51
882デフォルトの名無しさん:2012/11/24(土) 01:55:50.96
>880
3つ目は繰り返し処理を使わなくても良いのかな?
883デフォルトの名無しさん:2012/11/24(土) 02:13:48.52

使ってるじゃん
884デフォルトの名無しさん:2012/11/24(土) 02:39:48.49
>>883
問題文に書かれていないって意味じゃないの?
main(){printf("%d",(int)(log(1000000)/log(2)+1));}
885デフォルトの名無しさん:2012/11/24(土) 03:00:32.40
[3]の問題は平方数列の和だから、
n * (n + 1) * (2 * n + 1) >= 1000000.0
の n を求めれば良いことになる。
886デフォルトの名無しさん:2012/11/24(土) 03:02:52.46
>>885
まちがった。
聞き流して
887デフォルトの名無しさん:2012/11/24(土) 03:19:16.14
#include<stdio.h>
#include<math.h>
int main()
{
double max = 1000000.0;
printf("%d\n", (int) ceil(log(max + 1.0) / log(2.0)));
}
888デフォルトの名無しさん:2012/11/24(土) 03:32:19.59
>>887
「max以上になる(maxも含む)」場合は
printf("%d\n", (int) ceil(log(max + 1.0) / log(2.0)));

問題文のように、
「maxを超える(maxを含まない)」場合は
printf("%d\n", (int) ceil(log(max + 2.0) / log(2.0)));
889デフォルトの名無しさん:2012/11/24(土) 05:59:35.78
[1] 授業単元:C言語
[2] 問題
0から255までの整数を8bitの2進数で表わし、小さい方から順に左から右へ並べ、
それらを上位のbitから6bitづつ区切って342個の整数に変換するとき、
(最後に2bitあまるので下位4bitを0で埋める)
変換後のそれぞれの整数の出現数をカウントし、整数とその出現数を表示する。
表示する際は、整数は6bitで表示し、整数の小さい順に出力すること。
例:
00000000 00000001 00000010 ...

000000 000000 000100 000010 ...

000000 XX回
000001 XX回
...
111111 XX回

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: VC++2008
 [3.3] 言語:C
[4] 期限:11/25
よろしくお願いします。
890デフォルトの名無しさん:2012/11/24(土) 09:23:23.40
891デフォルトの名無しさん:2012/11/24(土) 10:19:36.78
>>890
ありがとうございます
多分あってます
素朴なコードで安心です
892デフォルトの名無しさん:2012/11/24(土) 11:36:07.38
>>859
#include <stdio.h>

int main(void)
{
int i, j, n, cnt[64] = {0};
char a[8 * 256 + 4] = {0}, b[8] = {0};

for(i = 0; ; ) {
for(j = 0; j < 8; j++) a[i++] = b[j];
if(i == 8 * 256) break;
for(j = 7; (b[j] ^= 1) == 0; j--);
}

for(i = 0; i < 342; i++) {
for(j = n = 0; j < 6; j++) n = n * 2 + a[i * 6 + j];
cnt[n]++;
}

for(i = 0; i < 6; i++) b[i] = 0;

for(i = 0; ; i++) {
for(j = 0; j < 6; j++) printf("%d", b[j]);
printf(" %d回\n", cnt[i]);
if(i == 63) break;
for(j = 5; (b[j] ^= 1) == 0; j--);
}

return 0;
}
893デフォルトの名無しさん:2012/11/24(土) 11:37:03.56
>>859じゃなくて>>889だった
894デフォルトの名無しさん:2012/11/24(土) 12:00:37.56
895デフォルトの名無しさん:2012/11/24(土) 12:50:25.09
>889
すでに解答ついてるけど
http://codepad.org/sL6d0bub
ちょっとしたいい頭の体操になった
896デフォルトの名無しさん:2012/11/24(土) 13:21:48.46
変数関数定数などの名前って重要ですね・・・
全く読む気にならないソースになってしまう
897デフォルトの名無しさん:2012/11/24(土) 13:29:45.71
都合よく64個全部出るもんなんだな
そしてどれも5,6回
なんでそうなんの?
898デフォルトの名無しさん:2012/11/24(土) 14:34:50.51
[1] 授業単元:画像処理演習
[2] 問題文(含コード&amp;リンク):ヘッダファイル(改変無)http://codepad.org/IyRRZWji
               関数用ファイル(改変無)http://codepad.org/6dooZn7v
               主問題ファイル(要改変)http://codepad.org/yrbB47hy
[3] 環境
 [3.1] OS: ubuntu
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C
[4] 期限: 11月24日中
[5] その他の制限:
画像データを取り込んでウィンドウで表示するプログラムです。インプットファイルは何でも構わないはずです。
主問題のソースの改変をお願いします。他はノータッチのままで大丈夫だと思います。
大まかな流れは大丈夫だと思うので、どこがおかしいのか改変していただければと思います。
かなり複雑ですがよろしくお願いします。
899デフォルトの名無しさん:2012/11/24(土) 14:46:15.09
>>897
不思議ですよね。
それも655655と規則性があるかと思いきや、
最後の最後にどんでん返し。
900デフォルトの名無しさん:2012/11/24(土) 14:48:54.62
>889 の仕様通りだと
110000 を 6回 にするか 5回 にするか微妙なところ
901デフォルトの名無しさん:2012/11/24(土) 14:51:01.40
>>897
最初の 256 個のデータの並び順を
グレイコードとかにしてみるのも
面白いかも知れない
902デフォルトの名無しさん:2012/11/24(土) 15:20:04.91
>897
ランダムじゃないんだから当たり前じゃね?
903デフォルトの名無しさん:2012/11/24(土) 19:49:49.98
>>902
規則性が生まれるのは当たり前だと思うけど
ほぼ一様になることは何か別の理由で説明(証明?)できるだろうね
俺には分からんけど

ちなみに8bit→6bitだと皆の回答のとおり一様になってるけど
10bit→8bitとかほかのパターンだと一様にはなりませんでした
904デフォルトの名無しさん:2012/11/24(土) 20:28:28.48
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
BMP形式のカラー画像を読み込んで2値画像を出力するプログラムを作成せよ
・サイズは320×240
・閾値は適当に設定してよい
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:VS2008
 [3.3] 言語:C
[4] 期限:11/28
[5] その他の制限:外部プログラムや標準ライブラリ以外のライブラリを使用してはならない
905デフォルトの名無しさん:2012/11/24(土) 20:29:27.00
>>903
数が足りてないだけじゃね?
906デフォルトの名無しさん:2012/11/24(土) 20:44:19.32
BMP形式にどこまで対応すればいいの?
907デフォルトの名無しさん:2012/11/24(土) 21:57:28.79
BMP形式のカラー画像すべて
908デフォルトの名無しさん:2012/11/24(土) 22:05:34.06
>905
909デフォルトの名無しさん:2012/11/24(土) 22:17:05.38
910デフォルトの名無しさん:2012/11/24(土) 22:36:03.28
>>909
内容を表示する問題なの?bmp->bmpに変換するのではないの?
911デフォルトの名無しさん:2012/11/24(土) 23:15:15.42
>>910
よくみろ、>>388への回答だ
>>909はBMPしか見てないんだろう
912デフォルトの名無しさん:2012/11/25(日) 00:22:26.85
913デフォルトの名無しさん:2012/11/25(日) 01:46:24.20
>>904
>>912
「2値画像」の解釈にもよるけど、1pixel = 1bit にしてみたバージョン。
http://codepad.org/xie31AMA
914デフォルトの名無しさん:2012/11/25(日) 02:00:44.69
915デフォルトの名無しさん:2012/11/25(日) 04:57:31.66
>>912
自動変数で画像の配列とってるのは気持ち悪いなぁ。
そりゃ16bitの時代じゃないけどさ。
916デフォルトの名無しさん:2012/11/25(日) 05:02:40.24
16bitの世界でも動くようにはしたいものだ直接の意味はないが互換性を考慮する書き方とはそういうことのような飢餓
917デフォルトの名無しさん:2012/11/25(日) 05:06:54.94
200kくらいなら平気
918デフォルトの名無しさん:2012/11/25(日) 05:09:10.12
64kの壁超えてるぞ
919デフォルトの名無しさん:2012/11/25(日) 05:18:23.60
今大丈夫でも将来原因不明の症状に悩まされることになります。
そのときになって思い出すのは至難の技です。
素直に言うことを聞いておきなさい。
920デフォルトの名無しさん:2012/11/25(日) 05:54:52.26
スレッド使うとスタックを1Mとか2Mとかに設定することがあるので、後で困る
921デフォルトの名無しさん:2012/11/25(日) 06:07:42.14
char hoge[256][256]; で簡単に64kの壁に到達するから今では不要な小細工が必要になる
RGBをプレーン毎に分解して640x400/8で32kに収めてた
922デフォルトの名無しさん:2012/11/25(日) 08:55:08.73
そだねこの場合64kどうこうではなくてスタックに200k突っ込むのが問題か
923デフォルトの名無しさん:2012/11/25(日) 09:00:39.49
>>909 は 1.2M も使ってるし
924 忍法帖【Lv=40,xxxPT】(1+0:5) :2012/11/25(日) 19:49:33.26
fseekで54バイトをすっ飛ばすのは、BMPのヘッダー領域をすっ飛ばしてんだよな?

色数のエラーチェックやfseekからの戻り値のエラーチェックはしないんだなw
925デフォルトの名無しさん:2012/11/25(日) 19:58:19.42
今はもうほとんど絶滅したけど
OS/2WarpのBMPヘッダは54バイトじゃない
926デフォルトの名無しさん:2012/11/25(日) 20:06:40.69
ヘッダサイズがご丁寧にヘッダに書いてあるのに固定で飛ばすとは何事か
許さん
927904:2012/11/25(日) 20:27:46.49
後出しですみません。。
RLEとビットフィールドというのにも対応してください。
928デフォルトの名無しさん:2012/11/25(日) 20:52:04.14
[1] 授業単元:情報処理2
[2] 問題文(含コード&リンク):
1.自然数n1・n2(n1<n2)を入力し、n1からn2までの数の合計sを計算しその結果を表示しなさい
  ただし、sは次式で表せれるものとする。s=n2・(n2+1)-(n1-1)/2

2. 球の半径rを入力し、球の体積vを計算し、少数第2位まで表示しなさい
π=3.1415
半径を入力してください-->10
答えは4188.79になります。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:C言語を始めようver2.0.0.5
 [3.3] 言語: C
[4] 期限:11月26日中
[5] その他の制限: ソースコードがわかればいいのですが使用データが壊れてしまったので早急です、どなたかお手伝いお願いします
929デフォルトの名無しさん:2012/11/25(日) 21:49:00.87
>C言語を始めようver2.0.0.5
こんなコンパイラあるんだ、しらなんだ
930デフォルトの名無しさん:2012/11/25(日) 22:16:15.49
931デフォルトの名無しさん:2012/11/25(日) 22:18:46.56
>>929
新しいコンパイラかと思ってググって見たら、bcc32.exe を呼んでるだけじゃねーか… orz
932デフォルトの名無しさん:2012/11/25(日) 22:36:54.74
>>930
ありがとうございました!本当に感謝です

>>931
初めて書き込んだのでわからないことだらけでしたのでミスをしてしまい申し訳ありません。
どのように書き込んだほうがよろしいのでしょうか・・・
933デフォルトの名無しさん:2012/11/25(日) 23:01:14.22
>>932
きにしない、どんとまいんど
934デフォルトの名無しさん:2012/11/26(月) 00:07:43.93
>927
動作テスト用にサンプルデータ用意してくれたら考えます
935デフォルトの名無しさん:2012/11/26(月) 02:47:43.31
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):このプログラムを循環リストに改変せよ
http://ideone.com/6y0sLF
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:VS2010
 [3.3] 言語:C
[4] 期限:2012年11月27日まで
[5] その他の制限:
936935:2012/11/26(月) 02:53:56.57
すみません。間違えました。リンク先C++で設定して作ってしまいました。
このプログラムはもともと普通のCです。
http://ideone.com/VpBQs2
上記をご利用下さい。よろしくお願いします。
937桃白白:2012/11/26(月) 03:13:38.32
>>935
循環リストってこのウロボロスのようなやつ?頭が尻尾をパクってしてるやつ?
リングバッファじゃなくて?
http://upload.wikimedia.org/wikipedia/commons/f/fa/Ouroboros.png
938935:2012/11/26(月) 03:16:20.84
>>937
それです!そういうことです!
939デフォルトの名無しさん:2012/11/26(月) 09:12:44.69
>>879
ありがとうございます!


お疲れ様でした…
940桃白白:2012/11/26(月) 21:21:49.33
941デフォルトの名無しさん:2012/11/26(月) 22:31:09.51
[1] 情報処理
[2] http://s2.muryo-de.mydns.jp/~c_cpp_homework/cgi-bin/joyful/joyful.cgi?
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語: C
[4] 期限: 2012年11月27日00:00まで
[5] 添付ファイルの3番の(4)と5番です。時間ありませんがもし間に合いましたらお願いします。
942デフォルトの名無しさん:2012/11/26(月) 22:51:26.30
>>649と同じ奴か
943デフォルトの名無しさん:2012/11/26(月) 22:57:17.70
3の(4)なんてないし
944デフォルトの名無しさん:2012/11/26(月) 23:34:33.42
>>941
3の(4)
int function(int n)
{
if (n < 3) {
return 1;
}
return function(n-1)+function(n-2);
}
945デフォルトの名無しさん:2012/11/26(月) 23:44:49.34
>>941
5

#include <stdio.h>

int ncr(int n, int r)
{
if (n == r)
return (1);
if (r == 0)
return (1);
if (r == 1)
return (n);
return ( ncr(n - 1, r - 1) + ncr(n - 1, r) );
}

int main()
{
int n, r;
printf("n r = " );
scanf("%d %d", &n, &r);
printf("%d&yen;n", ncr(n, r));
return 0;
}
946デフォルトの名無しさん:2012/11/26(月) 23:53:51.80
>>945
問題を見ると、nはデクリメントさせないんじゃないの?
947デフォルトの名無しさん:2012/11/27(火) 00:35:50.76
>>941 の5
>>946
失礼、修正しました。
#include <stdio.h>

int ncr(int n, int r){
if (n == r)
return (1);
if (r == 0)
return (1);
if (r == 1)
return (n);
return ncr(n, r - 1) * (n - r + 1) / r;
}

int main(){
int n, r;
printf("n r = ");
scanf("%d %d", &n, &r);
printf("%d&yen;n", ncr(n, r));
return 0;
}
948デフォルトの名無しさん:2012/11/27(火) 00:51:53.34
>>944-945-947
ありがとうございました。
949デフォルトの名無しさん:2012/11/27(火) 01:04:32.84
if (r == 1)
return (n);

は無くてもよいですね
950デフォルトの名無しさん:2012/11/27(火) 13:24:59.37
950
951デフォルトの名無しさん:2012/11/28(水) 01:14:53.39
[1] 授業単元:2値化
[2] 問題文(含コード&リンク):
http://ideone.com/fskVl3
画像読み込み→2値化→2値化した画像を表示するプログラムを作成せよ
画像読み込みまでは出来ましたが、2値化がよくわかりませんでした。
フルカラー前提でRGBの全チャンネルが同値なら濃淡画像に変換され、その濃淡画像を閾値処理によって2値にするらしいですがその辺がよくわかりません
[3] 環境
 [3.1] OS:Windows7
 [3.2] コンパイラ名とバージョン:VS2010
 [3.3] 言語:C
[4] 期限:12/1
[5] その他の制限:出来るだけ標準ライブラリでお願いします
952デフォルトの名無しさん:2012/11/28(水) 01:52:37.18
640*480の画像をどうやって表示するのか指定はないのか
953デフォルトの名無しさん:2012/11/28(水) 04:25:00.47
だいたい
 1. ファイル入力
 2. RGBをYCrCb(YCbCr)変換などでグレースケール明度を割り出し、しきい値で2値化イメージ作成
 3. 画面出力

3.については、VS2010ならWin32Appで作ったウィンドウのGDIにStretchBlt();で描き出す。
2.のしきい値については、入力用のスライドバーがあると俺はうれしい

という感じで良いのではないかな。俺はいまLinux作業中なので出来ませんが。
954953:2012/11/28(水) 04:26:44.79
ああごめん。
>>951に「RGBの全チャンネルが同値なら濃淡画像に変換され、その濃淡画像を閾値処理によって2値にする」と書いてあったね。
YCrCb(YCbCr)変換は忘れてください。
955デフォルトの名無しさん:2012/11/28(水) 05:33:42.00
2進化っていっても、パソコン内部は全部二進数だしな〜
ただ、画像から変換できたんなら
あとは、文字列化して二進数で保存するなら
画像の1ピクセルあたりの幅を補完しながら
順次読み込めばいいんじゃない?

作れって?

断る。
956デフォルトの名無しさん:2012/11/28(水) 06:45:59.52
>>951
「できるだけ」でどうしても使ってはいけないんなら駄目だけど
使えるんならOpenCV使えば瞬殺できる

アルゴリズムは二値化自体は超簡単で
画像のすべての画素に対して
if文で閾値以上なら255、閾値以下なら0にするだけ
むしろ画像をどうやって表示するのかのほうがはるかにめんどくさい
実装は正直考えたくない
957デフォルトの名無しさん:2012/11/28(水) 06:48:42.84
閾値以上なら putc("@");
閾値以下なら putc(" ");

とかw
958デフォルトの名無しさん:2012/11/28(水) 06:49:23.26
putc('@');
putc(' ');

だったな
959デフォルトの名無しさん:2012/11/28(水) 06:51:30.98
system();でImageMagickのコマンドを呼びだすとか
960デフォルトの名無しさん:2012/11/28(水) 07:08:38.27
>951
センスのかけらも無いコードだな
2次元配列の使い方も間違ってる
961デフォルトの名無しさん:2012/11/28(水) 07:10:42.40
>957
どうせなら魚偏の漢字のみで濃淡使ったAA化してくれると有難い
962デフォルトの名無しさん:2012/11/28(水) 07:19:44.42
>>951
どんな状況でそのコードが必要なのかわからないけど
画像処理やりたいんなら悪いこといわんからOpenCV導入した方がいい
それからグレースケール変換せずにカラー画像のまま閾値処理したいってこと?
963デフォルトの名無しさん:2012/11/28(水) 07:41:27.59
>>951
>[1] 授業単元:2値化
どこの大学だよ、こんな単元開講してるのは
964デフォルトの名無しさん:2012/11/28(水) 07:57:55.96
>>962
課題の環境に条件つけても意味はないかと。
965デフォルトの名無しさん:2012/11/28(水) 08:05:19.36
RGBが同値なら濃淡画像に変換される、ってなんだ?
「濃淡画像として表示される」を聴き間違えたか?
966デフォルトの名無しさん:2012/11/28(水) 09:00:07.40
&amp;#32;てすと&#32;
&amp;#x20;あああ&#x20;
&amp;#160;いいい&#160;
日本語が不自由なんだろ。
察してやれ。
967デフォルトの名無しさん:2012/11/28(水) 09:03:16.83

&#x20;む
 ふ
 む
968デフォルトの名無しさん:2012/11/28(水) 09:24:57.48
fseekで54バイトをすっ飛ばすのは、BMPのヘッダー領域をすっ飛ばしてんだよな?

色数のエラーチェックやfseekからの戻り値のエラーチェックはしないんだなw
969デフォルトの名無しさん:2012/11/28(水) 09:28:01.38
今はもうほとんど絶滅したけど
OS/2WarpのBMPヘッダは54バイトじゃない
970デフォルトの名無しさん:2012/11/28(水) 09:35:13.48
ヘッダサイズがご丁寧にヘッダに書いてあるのに固定で飛ばすとは何事か
許さん
971デフォルトの名無しさん:2012/11/28(水) 09:36:31.08
>>951
自動変数で画像の配列とってるのは気持ち悪いなぁ。
そりゃ16bitの時代じゃないけどさ。
972デフォルトの名無しさん:2012/11/28(水) 09:37:50.19
16bitの世界でも動くようにはしたいものだ直接の意味はないが互換性を考慮する書き方とはそういうことのような飢餓
973デフォルトの名無しさん:2012/11/28(水) 09:38:54.92
900kくらいなら平気
974デフォルトの名無しさん:2012/11/28(水) 09:39:35.52
64kの壁超えてるぞ
975デフォルトの名無しさん:2012/11/28(水) 09:39:55.94
今大丈夫でも将来原因不明の症状に悩まされることになります。
そのときになって思い出すのは至難の技です。
素直に言うことを聞いておきなさい。
976デフォルトの名無しさん:2012/11/28(水) 09:40:19.98
スレッド使うとスタックを1Mとか2Mとかに設定することがあるので、後で困る
977951:2012/11/28(水) 09:43:49.37
後出しですみません。。
RLEとビットフィールドというのにも対応してください。
978デフォルトの名無しさん:2012/11/28(水) 09:44:02.21
>>971からの流れは…>>915のデジャビュー?
979デフォルトの名無しさん:2012/11/28(水) 09:49:27.72
動作テストにはこちらの画像をご利用ください。
http://www.dotup.org/uploda/www.dotup.org3673324.jpg
980デフォルトの名無しさん:2012/11/28(水) 09:57:43.23
次スレ要る?
981デフォルトの名無しさん:2012/11/28(水) 09:59:47.22
イラネ。
982デフォルトの名無しさん:2012/11/28(水) 10:11:27.44
いるない
983デフォルトの名無しさん:2012/11/28(水) 10:33:32.99
ドーンと逝こうや!
984デフォルトの名無しさん:2012/11/28(水) 10:43:20.22
>>951
ttp://ideone.com/u00VfH

一応表示されると思う
985984:2012/11/28(水) 10:57:38.52
ttp://ideone.com/oeIdwr

2値変換モードをRGBの平均値から計算したらもっとそれらしく見えるようになった バージョン
986984:2012/11/28(水) 11:04:32.65
テストデータ
ttp://www.dotup.org/uploda/www.dotup.org3673408.bmp

ファイル名をimage.bmpに変更して使う。
987984:2012/11/28(水) 11:08:20.67
ちなみに、>>985を実行して得られた結果
ttp://www.dotup.org/uploda/www.dotup.org3673417.bmp
988984:2012/11/28(水) 11:28:14.93
ttp://ideone.com/MzrOT7

>>953のYCrCb変換グレースケール明度による2値化
[参考] ttp://www.sm.rim.or.jp/~shishido/yuv.html
989デフォルトの名無しさん:2012/11/28(水) 11:34:29.18
990デフォルトの名無しさん:2012/11/28(水) 11:40:09.44
C/C++の宿題片付けます 161代目
http://toro.2ch.net/test/read.cgi/tech/1354070278/
991984:2012/11/28(水) 11:45:24.40
>>984>>985>>988
一部間違っていたので修正
992デフォルトの名無しさん:2012/11/28(水) 11:55:32.33
>>990
void main()
{
printf("乙");
main();
}
993デフォルトの名無しさん:2012/11/28(水) 12:16:35.87
3673417 と 3673467 はどっちが良いかは好みが分かれそう。
自分は 3673417 の方が好き。
994デフォルトの名無しさん:2012/11/28(水) 14:09:13.99
>990
乙python
995デフォルトの名無しさん:2012/11/28(水) 15:19:19.76
>988
そのサイト勉強になりました。
ありがとうございました。
996 ◆QZaw55cn4c :2012/11/28(水) 19:06:42.41
>>985
案外うまくいくんだ‥‥‥
997デフォルトの名無しさん:2012/11/28(水) 22:18:45.65
うめとく
998デフォルトの名無しさん:2012/11/28(水) 22:19:28.11
うめとく
999デフォルトの名無しさん:2012/11/28(水) 22:19:59.21
次スレ

C/C++の宿題片付けます 161代目
http://toro.2ch.net/test/read.cgi/tech/1354070278/
1000デフォルトの名無しさん:2012/11/28(水) 22:20:08.02
ume
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。