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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/11/16(火) 22:14:58
あなたが解けない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
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
0153デフォルトの名無しさん2010/11/19(金) 19:15:02
>>152
その度数分布だと5等分なんじゃ?
0154デフォルトの名無しさん2010/11/19(金) 19:44:05
>>151
規格を解釈するとそうなる
0155デフォルトの名無しさん2010/11/19(金) 19:48:48
#include <stdio.h>
#include <stdlib.h>
double ave,var;
double heikin(double *array,int n)
{
int i;
double sum=0;
srand(10);
for(i=0;i<n;i++){
array[i] = (double)(rand())/RAND_MAX;
sum+=array[i];
printf("%lf\n",array[i]);
}
return sum;
}
0156デフォルトの名無しさん2010/11/19(金) 19:50:46
int main(void)
{
int d=0;
double *h,r;

printf("乱数の数:");
scanf("%d",d);

h=(double*)malloc(d*sizeof(int));
r= heikin(h,d);
printf("合計:%lf",r);
return 0;
}

乱数の合計値を求めるプログラムなんですが、エラーが発生します。
どこが原因なんでしょうか?
0157デフォルトの名無しさん2010/11/19(金) 19:54:03
>>156
sizeof(int)
0158デフォルトの名無しさん2010/11/19(金) 19:56:05
>>157
sizeof(int)をどうすれば良いのですか?
0159デフォルトの名無しさん2010/11/19(金) 20:12:30
double *h,r; hはdouble型のポイントで

h=(double*)malloc(d*sizeof(int)); int型のサイズで確保してどーすんだと
0160デフォルトの名無しさん2010/11/19(金) 20:13:20
ポイントってなんだ、ポインタやん orz
0161デフォルトの名無しさん2010/11/19(金) 20:20:25
>>156
scanf("%d",d);
↓
scanf("%d",&d);
0162デフォルトの名無しさん2010/11/19(金) 20:30:04
>>159-161
ありがとうございます。
初歩的なミスでした。

実を言うと、もう一つ質問があります。
この合計から「分散」を計算したいのですが、どうすれば良いですか?
0163mery2010/11/19(金) 20:57:47
>153さん
すいません、5等分でした。
正しい問題は、
「無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 」です。
0164デフォルトの名無しさん2010/11/19(金) 21:23:30
>>152
#include <stdio.h>

int main(void)
{
int count[5]={0};
int i, j, x=0;
i=0;
while(1)
{
if(i>=10) break;
scanf("%d", &x);
count[(x-1)/10]++;
i++;
}
i=0;
while(1)
{
if(i>=5) break;
printf("%2d〜%2d : ", i*10+1, (i+1)*10);
j=0;
while(1)
{
if(j>=count[i]) break;
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}
0165デフォルトの名無しさん2010/11/19(金) 21:36:07
よし、マイナスの値を入力して結果を見てみようか。
0166デフォルトの名無しさん2010/11/19(金) 21:37:57
範囲外の値を入力したらエラーで落ちた orz
0167デフォルトの名無しさん2010/11/19(金) 21:41:39
こういうのを勇み足といいます
0168デフォルトの名無しさん2010/11/19(金) 21:49:20
入力された値をもとに配列の添え字を指定するのは思いついたが
範囲外の対処が甘かったか。
0169デフォルトの名無しさん2010/11/19(金) 21:49:34
>>162の者ですが、「分散」のプログラムはこれで合ってますか?

ave=sum/n;
for(i=0;i<n;i++){
gokei+=(sum*((array[i]-heikin)*(array[i]-heikin)));
}
var=gokei/(n-1);
0170デフォルトの名無しさん2010/11/19(金) 21:50:58
>>169
いいえ
0171デフォルトの名無しさん2010/11/19(金) 21:56:25
>>169
どこが違うのか教えてください
0172デフォルトの名無しさん2010/11/19(金) 22:45:54
>>169ですが、書き直しました。

ave=sum/N;
for(i=0;i<N;i++){
sum2+=((array[i]-ave)*(array[i]-ave));
}
var=sum2/(N-1);
return var;
}

これで合ってますか?間違っているのなら指摘をお願いします。
0173デフォルトの名無しさん2010/11/20(土) 00:05:58
>>172
sum2=0;
をforの前に入れればOK
0174デフォルトの名無しさん2010/11/20(土) 00:07:40
安部
0175デフォルトの名無しさん2010/11/20(土) 00:09:48
分散は、
(二乗の平均) - (平均の二乗)
に等しい、という公式がありますので(http://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3)
平均を求めるときに二乗の平均もあわせて計算すると、1 pass ですみます。参考までに。
0176デフォルトの名無しさん2010/11/20(土) 01:35:23
>>173>>175
ありがとうございます!
0177デフォルトの名無しさん2010/11/20(土) 01:46:27
[1] 授業単元:プログラミング
[2] 問題文
http://imepita.jp/20101120/039760
図の左のプログラム(○つけてある方です)の30行目〜32行目を消して、デストラクタを作って31行目の処理を実装して動作確認をしてください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010/11/22
0178デフォルトの名無しさん2010/11/20(土) 01:51:07
>>177
読みづらい
それにSeiseki.hはどこにあるの?
面倒でもcodepadかどこかに上げてくれ
0179デフォルトの名無しさん2010/11/20(土) 01:53:29
>>177
そのページを打ち込んだテキストファイルをアップする
それが最低限のマナーだと思うぞ
0180デフォルトの名無しさん2010/11/20(土) 01:53:42
>>132
これって、printfはcoutにする事は不可能でしょうか
01811772010/11/20(土) 02:02:03
http://imepita.jp/20101120/070540
ごめんなさい。全体を貼ったほうがいいですね…
0182デフォルトの名無しさん2010/11/20(土) 02:05:13
だからimepitaはやめろっつーに
それもデジカメじゃなくて携帯で撮ったろ
ボケて読めない
テキストで打ち込め
0183デフォルトの名無しさん2010/11/20(土) 02:20:24
なんでわざわざ紙に印刷した上にデジカメで撮影した画像をアップするんだよw
もとのテキストをアップすりゃ済むことだろw
0184デフォルトの名無しさん2010/11/20(土) 02:26:49
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):平均値:μ,分散:σ^2の分布がn個与えられているとする。
この分布が何であろうと、nの数が多きなるにつれてこの分布の合計は平均:nμ,分散:nσ^2の正規分布に近づくとされる。
要素数n個をもつx個の乱数系列を発生させるプログラムを作れ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010
 [3.3] 言語: C++
[4] 期限:2010年11月22日
[5] その他の制限:�@キーボードから入力すること
�A乱数は配列で保存すること
�B#include <stdio.h>#include <stdlib.h>にしてはじめること
01851772010/11/20(土) 02:27:17
>>183
紙に印刷したんじゃなくて配布のプリントなんです…
0186デフォルトの名無しさん2010/11/20(土) 02:28:16
宿題をくれているのに生意気なこと言うなよ
とっとと宿題をやれ
0187デフォルトの名無しさん2010/11/20(土) 02:42:25
野良猫にえさを与えないで下さい
0188デフォルトの名無しさん2010/11/20(土) 02:44:02
>>185
だから、それを一字一句間違いなく打ち込んでアップするのが出題者の最低限のマナーだ
コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
0189デフォルトの名無しさん2010/11/20(土) 02:47:11
にゃおおおおー、にゃおーーーー

 ヾヽヽ
 (,, ・∀・)チュンチュン
  ミ_ノ
  ″″
0190デフォルトの名無しさん2010/11/20(土) 02:48:51
>>188
>コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
これどうやるんですか?
0191デフォルトの名無しさん2010/11/20(土) 03:14:56
まさかパソコン持ってないとか言うなよ・・・・
0192デフォルトの名無しさん2010/11/20(土) 03:26:10
>>190
君に言うべき言葉が見つからない、ゴメン
0193デフォルトの名無しさん2010/11/20(土) 03:30:47
いや、あるよ
>>190
君はこのスレに来る前にしなければならない事が山ほどある
0194デフォルトの名無しさん2010/11/20(土) 03:35:42
PCなくてもネカフェ行けばいいんでないの
0195デフォルトの名無しさん2010/11/20(土) 03:40:16
いまの学生は携帯は持っているけど、PCは持ってないの多そうだな
宿題の解答は学校のPCでダウソかな
時代は携帯中心になり、モビリティのないPCはおっさん時代の中心ねだろうな
0196デフォルトの名無しさん2010/11/20(土) 03:45:36
だが、PCが一人1台すらない詐欺学校で
全て机上のペーパープログラミング授業だとしたらどうだろう?
0197デフォルトの名無しさん2010/11/20(土) 03:45:56
>>177
よく分からないんだけど、これでいいの?
Seiseki.h http://codepad.org/pD9ELv8a
Seiseki.cpp http://codepad.org/eHbTlLw3
main.cpp http://codepad.org/EosY2r9A
0198902010/11/20(土) 03:50:57
>>106
亀レスでごめんなさい。
256色で出力しようと思ってたのですが。
求める画像ができるならどの形式でも問題ありません。

codepad重いみたいなのでおかしいと思ったところを書き直して貼ってみます。
どなたか>>90をお願いします。


#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
FILE *fp = NULL;

int inwidth,inheight,insize;


RGBQUAD eq[256];
for(a=0; a<256; a++)
{
eq[a].rgbBlue = a;
eq[a].rgbGreen = a;
eq[a].rgbRed = a;
eq[a].rgbReserved = 0;
}

0199デフォルトの名無しさん2010/11/20(土) 03:52:02
fopen_s(&fp, "赤rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
inwidth = bmih.biWidth;
inheight = bmih.biHeight;
insize = inwidth * inheight;
unsigned char* red;
red = new unsigned char[insize];
fread( &eq , sizeof(RGBQUAD)*256, 1 , fp );
fread(red, insize, 1, fp);
fclose(fp);

fopen_s(&fp, "緑rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
unsigned char* green;
green = new unsigned char[insize];
fread( &g , sizeof(RGBQUAD)*256, 1 , fp );
fread(green, insize, 1, fp);
fclose(fp);
0200デフォルトの名無しさん2010/11/20(土) 03:52:44
fopen_s(&fp, "青rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
unsigned char* blue;
blue = new unsigned char[insize];
fread( &eq , sizeof(RGBQUAD)*256, 1 , fp );
fread(blue, insize, 1, fp);
fclose(fp);


unsigned char* rgbrec;
rgbrec = new unsigned char[insize];
RGBQUAD rgb[256*128];
for (a=0; a<insize; a++)
{
rgb[a].rgbBlue = blue[a];
rgb[a].rgbGreen = green[a];
rgb[a].rgbRed = red[a];
rgb[a].rgbReserved = 0;

rgbrec[a] = a;
}

0201デフォルトの名無しさん2010/11/20(土) 03:53:25

bmfh.bfType = 0x4D42;
bmfh.bfSize = 54+insize+(4*256*128);
bmfh.bfReserved1 = 0;
bmfh.bfReserved2 = 0;
bmfh.bfOffBits = 54+4*256*128;

bmih.biSize = 40;
bmih.biWidth = inwidth;
bmih.biHeight = inheight;
bmih.biPlanes = 1;
bmih.biBitCount = 8;
bmih.biCompression = 0;
bmih.biSizeImage = insize;
bmih.biXPelsPerMeter = 0;
bmih.biYPelsPerMeter = 0;
bmih.biClrUsed = 256;
bmih.biClrImportant = 0;

fopen_s(&fp, "rec「RGB」.bmp" , "wb" );
fwrite( &bmfh , sizeof(BITMAPFILEHEADER) , 1 , fp );
fwrite( &bmih , sizeof(BITMAPINFOHEADER) , 1 , fp );
fwrite( &rgb , sizeof(RGBQUAD)*256*128 , 1 , fp );
fwrite( rgbrec , 1 , insize , fp );
fclose( fp );

return 0;
}
0202デフォルトの名無しさん2010/11/20(土) 03:54:05
長々と失礼しました。
0203デフォルトの名無しさん2010/11/20(土) 04:25:28
>>181
君がアンカーをミスらなければもっと早く答えたんだけどね

void Matrix::disp( void )
{
    if( m_Mat ) {
        int i, j;
        for( i = 0; i < m_row; i++ ) {
            cout << "|\t";
            for( j = 0; j < m_column; j++ )
                cout << m_Mat[i][j] << "\t";
            cout << "|" << endl;
        }
    }
}
これの話だと思う、別にC++だからprintf() を使ってはいけない理由は無いと思うんだけどな
02042032010/11/20(土) 04:27:58
× >>181
○ >>180

そして俺がアンカーをミスるのは何故だ....
0205デフォルトの名無しさん2010/11/20(土) 05:38:00
>>90
全部書き直したいくらいのソースだけど
一応可能な限り残して修正
てか、これ色々エラー処理入れたほうがいいんじゃないか?

吐き出しフォーマットは24bitビットマップ

http://codepad.org/9jTAUdhP
0206デフォルトの名無しさん2010/11/20(土) 10:27:17
>>184
http://codepad.org/VbJwxmH3

C標準関数rand()の質が悪いのでもっと良いrand()を使えば
いい結果が得られると思う
0207デフォルトの名無しさん2010/11/20(土) 10:31:37
>>184
ごめん乱数は配列に保存すると題意にあったのでarray[]に保存している
表示はしていない

http://codepad.org/Piz4GErK
0208デフォルトの名無しさん2010/11/20(土) 12:53:14
>>203
ごめんなさい。これを>>129のプログラムのprintfの所に代わりに入れてあげればいいんですか?
0209デフォルトの名無しさん2010/11/20(土) 14:10:20
>>184ですが、書き間違えていました。

正しくは、

�A乱数は配列で保存すること → �A乱数は「動的確保された」配列に保存すること

ごめんなさい。
0210デフォルトの名無しさん2010/11/20(土) 14:21:25
>>209の続きです。

�C乱数係数xはキーボードから入力するようにプログラムすること

を追加してください。
0211デフォルトの名無しさん2010/11/20(土) 14:33:26
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):赤い領域と白い領域が隣り合っているところを抽出せよ。
[3] 環境
 [3.1] OS:Windows、visual studio2005
 [3.3] 言語:どちらでも可。
[4] 期限:今日か明日には完成させたいです。
[5] その他の制限:できるだけわかりやすいと嬉しいです。

とりあえず赤い領域は抽出できたのですが隣り合う白い領域を抽出するのができないです。
ラスタスキャンし、赤い画素を見つけたら4近傍を探索し、白い画素だったら抽出…という方向で組んでいるのですが
白い画素を見つけたとき、その白い画素の4近傍もまた探索しないといけないのでここでつまづいています。
よろしくお願いします。
0212デフォルトの名無しさん2010/11/20(土) 14:36:19
>>209>>210
乱数は動的確保された配列に保存されています

乱数係数xの意味がよくわかりません
具体的に説明をお願いします
もしかしてsrand()に与える値ですか?
02132112010/11/20(土) 14:43:00
// (1)画素値(R,G,B)を順次取得し,変更する
// 赤色領域の4近傍を探索し、白色であった場合抽出する
for (y = 0; y < hsvImage->height; y++) {
for (x = 0; x < hsvImage->width; x++) {
cnt++;
p[0] = hsvImage->imageData[hsvImage->widthStep * y + x * 3]; //座標(x,y)のH(色相)値を取得
p[1] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1]; //座標(x,y)のS(彩度)値を取得
p[2] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2]; //座標(x,y)のV(輝度)値を取

//赤い画素を見つけたら
if(((p[0] >= THRESH_BOTTOM1) && (p[0] <= THRESH_TOP1)) || ((p[0] >= THRESH_BOTTOM2) && (p[0] <= THRESH_TOP2))){
if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){

//// 4近傍を探索し、白色の画素があれば抽出(とりあえず左だけ)
x = x - 1;
if((p[2] >= THRESH_BOTTOM3) && (p[2] <= THRESH_TOP3)){
p[0] = cvRound(255);
p[1] = cvRound(255);
p[2] = cvRound(255);
flag=1;
}x=x+1;
02142112010/11/20(土) 14:44:08
}
}
if((p[0] >= THRESH_BOTTOM1 && p[0] <= THRESH_TOP1) || p[0] >= THRESH_BOTTOM2 && p[0] <= THRESH_TOP2){
if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(255);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(255);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(255);
}
}else if((p[0] == THRESHOLD_MAX_VALUE) && (p[1] == THRESHOLD_MAX_VALUE) && (p[2] == THRESHOLD_MAX_VALUE)){
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(100);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(100);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(100);

}else{
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(0);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(0);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(0);
}
//printf("flag:%d\n",y);
if(flag==1){
y = y -1;
flag=0;
}
}
}
今のところこんな感じです。
赤い画素をH,S,V全てに255をセットし、みつけた白い画素をH,S,V全てに100をセットしています
0215デフォルトの名無しさん2010/11/20(土) 14:44:18
>>211
サンプル画像も貼らずに質問とな?
説明の意味が分からんのだが、赤い領域と白い領域の境界を見るのなら
「白い画素の4近傍もまた探索」は必要ないのではないか?
とりあえず赤い領域と白い領域が何をさしてるのかちゃんと説明してくれ
0216デフォルトの名無しさん2010/11/20(土) 14:52:32
>>209
>>210
奇特な >>129 がせっかく書いてくれてるのに、
理解する能力もなければ(ホントに全くないよね)、
理解する気持ちもない。
君は単位落とすべきでは?
02172112010/11/20(土) 14:55:50
>>215
http://www1.axfc.net/uploader/Img/link.pl?dr=4588966666&file=Img_100662.jpg
画像用意しました。
この中からエビの部分だけを抽出したいんです。
0218デフォルトの名無しさん2010/11/20(土) 16:08:51
jpegかよ
0219デフォルトの名無しさん2010/11/20(土) 16:12:39
>>212

乱数係数ではなく「乱数系列」でした。
0220デフォルトの名無しさん2010/11/20(土) 16:13:40
>>217
CDC MemDC1,MemDC2;を用意し、
MemDC1は白い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC2は赤い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC1とMemDC2のCOLORREF≠0の部分を縦横4ドットずつ広げる。
MemDC1とMemDC2のandを取る。

こんな感じでだめか?

0221デフォルトの名無しさん2010/11/20(土) 16:15:16
>>216
>>122は私が書いたのものではないのですが…
0222デフォルトの名無しさん2010/11/20(土) 16:17:52
>>14
http://codepad.org/Z4Tdf8rM
0223デフォルトの名無しさん2010/11/20(土) 16:56:39
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):双方向リストを使って、複数行を読み込み、読み込んだ行をそのままの順に出力するプログラムを完成させなさい。
[3] 環境
 [3.1] OS: Windows7(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0
 [3.3] 言語:_C
[4] 期限:今日中
[5] その他の制限: 特になし
0224デフォルトの名無しさん2010/11/20(土) 17:06:52
IT会社の経営者なんて、自社製品を何も持たず技術者をよその会社にぶちこんでピンはねで利益を上げてるだけだぞ?
従業員のやりがいとか成長とか全く興味がないからな。ビジネスモデルがピンはねなんだからやつらの考えることは
如何に従業員をこき使うかしか考えてない。それでしか利益を上げられないんだから。
普通会社の存在理由って、世の中に新しい価値を提供したいとかそういうことじゃん?
でもITの経営者のやることは技術者を売ってピンはねで金儲けすることだけだから。
技術者の命より金の方が優先度が高い世界だぞ?そりゃ精神病んで自殺に追い込まれるよ。
0225デフォルトの名無しさん2010/11/20(土) 17:20:49
[1] 授業単元:集合知プログラミング
[2] 問題文(含コード&リンク):http://hibari.2ch.net/test/read.cgi/tech/1289913298/224 はどこか
のスレからの誤爆である。このスレを探し、何に対するレスであるか示すプログラムを書きなさい。
[3] 環境
 [3.1] OS: Windows7(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0
 [3.3] 言語:_C
[4] 期限:今日中
[5] その他の制限: 特になし
0226デフォルトの名無しさん2010/11/20(土) 17:43:07
>>217
画像ファイルの扱いは不慣れなので、変なところがあるかもしれませんが、
取りあえずエビっぽいのが抽出できたんで。
http://www1.axfc.net/uploader/Sc/so/175292.zip
0227デフォルトの名無しさん2010/11/20(土) 17:46:04
>>222
すごいシンプルだな、参考にさせてもらうよ
俺もがんばって解いたが発狂しそうになった
http://codepad.org/BsfWdhLl
0228デフォルトの名無しさん2010/11/20(土) 17:53:22
>>227
問題読んですらないけど51-98行の圧迫感にワロタw
力作おつです。
0229デフォルトの名無しさん2010/11/20(土) 17:58:13
>>219
出掛けていて遅くなった

http://codepad.org/3mIpUOYz

これでいいのかな
ちなみにcodepadには上げてないけど、自前のもっと質の良い乱数発生
ルーチンを使ったら発生個数を上げると平均、分散ともに桁数の一致が
良くなりました

でも宿題用ならこれで十分でしょう
02302262010/11/20(土) 18:01:15
>>226
ごめん。↓ここがおかしいわ。
gAnd[y][x] = 0;
int xx,yy;
for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) {
for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) {
if (gW[y][x] && gR[y][x]) {
gAnd[y][x] = 1;
}
}}

正しくは、というより俺がイメージしたのは↓。
/* "3ドット広げて、W,Rともドットがあったら"って処理のつもり */
gAnd[y][x] = 0;
int xx,yy;
int flag = 0;
for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) {
for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) {
if (gW[y][x]) flag |= 1;
if (gR[y][x]) flag |= 2;
if (flag==3) gAnd[y][x] = 1;
}}
0231デフォルトの名無しさん2010/11/20(土) 18:19:43
>>229
ありがとうございます。
ところで、このプログラムは、#include <math.h>と#include <time.h>を使わずにつくれますか?
できればなしのプログラムも欲しいんです。
何度も注文つけてしまってすいません。
02322112010/11/20(土) 18:21:31
>>230
ありがとうございます!
キレイに抽出できてますね…
ソースが難しいので頑張って解読してみます。
0233デフォルトの名無しさん2010/11/20(土) 18:39:43
>>231
できるけどsinとかcosとかを自分で作らないといけないよ?
もともとあるものを自分で作るのは全く無意味だし
問題の本質ではないからこのままでいいんじゃない?
math.hとtime.hを使いたくない理由が分からないけど
もし習ってないとか言うバカげた理由なら考えを改めたほうがいいよ
0234デフォルトの名無しさん2010/11/20(土) 18:39:46
>>232
スケルトンから変えたのはほぼ View の40〜120行目あたりだけ。
ソースがみずらくてすまんが、やってることは大したことない。
 1.白と赤の部分だけを取り出す。gW , gR
 2.白と赤のORを作る。gOr
 3.白と赤を3ドット広げて、重なり部分を取り出す。gAnd
 4.gOrの島の中から,gAndが含まれる部分を抽出する。gMsk
おそらく君にとって、Fillだけがキモだと思うが、
gOr && gAnd を見つけたら gMsk を1にし、
その上下左右にgOrが続いていたら、xy座標を更新してFillを再起する。
最初の基点からジワーッとgOrをあぶりだしていく感じ。
0235デフォルトの名無しさん2010/11/20(土) 18:40:32
>>231
あ、>>229は<time.h>はもう不要なので取り忘れました
<math.h>はlog()とsqrt()とsin()とcos()を呼び出すのに必要なので、
やるとすれば疑似的な発生法しかありません

それで作ってみます
02362112010/11/20(土) 18:49:05
>>234
スケルトンをまず知らないのでww
c言語でお願いすればよかったと後悔してます\(^o^)/
0237デフォルトの名無しさん2010/11/20(土) 18:54:45
>>231
http://codepad.org/Z7lv5P4I

floor()もsqort()も使えなくなったので、分散を求める事が出来ないので
発生した正規分布の乱数を表示するようにしました
0238デフォルトの名無しさん2010/11/20(土) 19:52:14
糞スレ
0239デフォルトの名無しさん2010/11/20(土) 20:21:00
>>237
無理なお願いを聞いて頂きありがとうございます。
0240デフォルトの名無しさん2010/11/20(土) 21:09:33
>>205
ありがとうございます。
RGBTRIPLEなんて構造体があったのですね。
0241デフォルトの名無しさん2010/11/20(土) 21:13:01
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
問題1
1から10までの整数の表示をするプログラムを、 do-while 文とを使用して作成しなさい。
< 実行例 >
1 2 3 4 5 6 7 8 9 10
問題2
10から1までの整数の表示をするプログラムを、 while 文を使用して作成しなさい。
< 実行例 > 
10 9 8 7 6 5 4 3 2 1
問題3
キーボードから 読み込ん だ整数が1〜9の範囲内の場合は 繰返し、それ以外の場合は終了するプログラムを作成しなさ い。
< 実行例 >

整数: 8
範囲内です

整数: 3

範囲内です

整数: 11

範囲外です。

終了します。
  [3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月21日
[5] その他の制限: なし
よろしくお願いします。
0242デフォルトの名無しさん2010/11/20(土) 21:43:31
>>241
http://codepad.org/DE6gfYRT
0243デフォルトの名無しさん2010/11/20(土) 21:45:35
>>223
http://hibari.2ch.net/test/read.cgi/tech/1289715349/80
0244デフォルトの名無しさん2010/11/20(土) 21:46:58
>>243
おいおい問題があるスレに誘導するなよ
今運営に報告してきた所だぞ
0245デフォルトの名無しさん2010/11/20(土) 21:55:53
>>244
報告先の URL を教えてください。
回答がありしだい、誘導を停止します。
0246デフォルトの名無しさん2010/11/20(土) 21:57:50
>>245
その前にどうして誘導するのかその理由を聞かせてくれないか?
ここが宿題スレだろうに
誘導するのなら確固とした理由が必要だろ
0247デフォルトの名無しさん2010/11/20(土) 22:03:49
◆QZaw55cn4c本人でしょ
いいかげん他スレにちょっかい出すのやめればいいのに
自分が立てたスレに責任が持てないなら削除依頼だしてこいよ
0248デフォルトの名無しさん2010/11/20(土) 22:05:32
と言う事で◆QZaw55cn4cは自分のスレに書き込まれた問題のみに解答しろ
このスレから誘導すんな
このスレの意味が無くなる
02492262010/11/20(土) 22:19:01
あまり落とす人もいないでしょうが・・・
ちょっといじるとスタックオーバーフロー起こすので消しました。>>226
一応スタックオーバーフローの暫定対策版を↓に置いときます。
http://www1.axfc.net/uploader/Sc/so/175392.zip
0250デフォルトの名無しさん2010/11/20(土) 22:21:48
サーバ用途じゃないツールだったら、
思う存分落とせばいいじゃん。
0251デフォルトの名無しさん2010/11/20(土) 22:23:10
あ、サーバ用途ってのは、それ自身が動き続けることが使命になってるプログラムのことね。
ツールってのは、コマンドとして実行させて、終了とともに結果を得るもの、ってつもり。
0252デフォルトの名無しさん2010/11/21(日) 00:34:14
言わんとするところは伝わるような気がするが、
ツールだから落ちてもいいという根拠は何も出ていない。
■ このスレッドは過去ログ倉庫に格納されています