C/C++の宿題片付けます 143代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/11/16(火) 22:14:58【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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その度数分布だと5等分なんじゃ?
0154デフォルトの名無しさん
2010/11/19(金) 19:44:05規格を解釈するとそうなる
0155デフォルトの名無しさん
2010/11/19(金) 19:48:48#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 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:03sizeof(int)
0158デフォルトの名無しさん
2010/11/19(金) 19:56:05sizeof(int)をどうすれば良いのですか?
0159デフォルトの名無しさん
2010/11/19(金) 20:12:30h=(double*)malloc(d*sizeof(int)); int型のサイズで確保してどーすんだと
0160デフォルトの名無しさん
2010/11/19(金) 20:13:200161デフォルトの名無しさん
2010/11/19(金) 20:20:25scanf("%d",d);
↓
scanf("%d",&d);
0162デフォルトの名無しさん
2010/11/19(金) 20:30:04ありがとうございます。
初歩的なミスでした。
実を言うと、もう一つ質問があります。
この合計から「分散」を計算したいのですが、どうすれば良いですか?
0163mery
2010/11/19(金) 20:57:47すいません、5等分でした。
正しい問題は、
「無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 」です。
0164デフォルトの名無しさん
2010/11/19(金) 21:23:30#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:070166デフォルトの名無しさん
2010/11/19(金) 21:37:570167デフォルトの名無しさん
2010/11/19(金) 21:41:390168デフォルトの名無しさん
2010/11/19(金) 21:49:20範囲外の対処が甘かったか。
0169デフォルトの名無しさん
2010/11/19(金) 21:49:34ave=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いいえ
0171デフォルトの名無しさん
2010/11/19(金) 21:56:25どこが違うのか教えてください
0172デフォルトの名無しさん
2010/11/19(金) 22:45:54ave=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:58sum2=0;
をforの前に入れればOK
0174デフォルトの名無しさん
2010/11/20(土) 00:07:400175デフォルトの名無しさん
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ありがとうございます!
0177デフォルトの名無しさん
2010/11/20(土) 01:46:27[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読みづらい
それにSeiseki.hはどこにあるの?
面倒でもcodepadかどこかに上げてくれ
0179デフォルトの名無しさん
2010/11/20(土) 01:53:29そのページを打ち込んだテキストファイルをアップする
それが最低限のマナーだと思うぞ
0180デフォルトの名無しさん
2010/11/20(土) 01:53:42これって、printfはcoutにする事は不可能でしょうか
0181177
2010/11/20(土) 02:02:03ごめんなさい。全体を貼ったほうがいいですね…
0182デフォルトの名無しさん
2010/11/20(土) 02:05:13それもデジカメじゃなくて携帯で撮ったろ
ボケて読めない
テキストで打ち込め
0183デフォルトの名無しさん
2010/11/20(土) 02:20:24もとのテキストをアップすりゃ済むことだろw
0184デフォルトの名無しさん
2010/11/20(土) 02:26:49[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>にしてはじめること
0185177
2010/11/20(土) 02:27:17紙に印刷したんじゃなくて配布のプリントなんです…
0186デフォルトの名無しさん
2010/11/20(土) 02:28:16とっとと宿題をやれ
0187デフォルトの名無しさん
2010/11/20(土) 02:42:250188デフォルトの名無しさん
2010/11/20(土) 02:44:02だから、それを一字一句間違いなく打ち込んでアップするのが出題者の最低限のマナーだ
コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
0189デフォルトの名無しさん
2010/11/20(土) 02:47:11ヾヽヽ
(,, ・∀・)チュンチュン
ミ_ノ
″″
0190デフォルトの名無しさん
2010/11/20(土) 02:48:51>コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
これどうやるんですか?
0191デフォルトの名無しさん
2010/11/20(土) 03:14:560192デフォルトの名無しさん
2010/11/20(土) 03:26:10君に言うべき言葉が見つからない、ゴメン
0193デフォルトの名無しさん
2010/11/20(土) 03:30:47>>190
君はこのスレに来る前にしなければならない事が山ほどある
0194デフォルトの名無しさん
2010/11/20(土) 03:35:420195デフォルトの名無しさん
2010/11/20(土) 03:40:16宿題の解答は学校のPCでダウソかな
時代は携帯中心になり、モビリティのないPCはおっさん時代の中心ねだろうな
0196デフォルトの名無しさん
2010/11/20(土) 03:45:36全て机上のペーパープログラミング授業だとしたらどうだろう?
0197デフォルトの名無しさん
2010/11/20(土) 03:45:56よく分からないんだけど、これでいいの?
Seiseki.h http://codepad.org/pD9ELv8a
Seiseki.cpp http://codepad.org/eHbTlLw3
main.cpp http://codepad.org/EosY2r9A
019890
2010/11/20(土) 03:50:57亀レスでごめんなさい。
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:02if(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:44if(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:25bmfh.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:050203デフォルトの名無しさん
2010/11/20(土) 04:25:28君がアンカーをミスらなければもっと早く答えたんだけどね
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() を使ってはいけない理由は無いと思うんだけどな
0205デフォルトの名無しさん
2010/11/20(土) 05:38:00全部書き直したいくらいのソースだけど
一応可能な限り残して修正
てか、これ色々エラー処理入れたほうがいいんじゃないか?
吐き出しフォーマットは24bitビットマップ
http://codepad.org/9jTAUdhP
0206デフォルトの名無しさん
2010/11/20(土) 10:27:17http://codepad.org/VbJwxmH3
C標準関数rand()の質が悪いのでもっと良いrand()を使えば
いい結果が得られると思う
0207デフォルトの名無しさん
2010/11/20(土) 10:31:37ごめん乱数は配列に保存すると題意にあったのでarray[]に保存している
表示はしていない
http://codepad.org/Piz4GErK
0209デフォルトの名無しさん
2010/11/20(土) 14:10:20正しくは、
�A乱数は配列で保存すること → �A乱数は「動的確保された」配列に保存すること
ごめんなさい。
0210デフォルトの名無しさん
2010/11/20(土) 14:21:25�C乱数係数xはキーボードから入力するようにプログラムすること
を追加してください。
0211デフォルトの名無しさん
2010/11/20(土) 14:33:26[2] 問題文(含コード&リンク):赤い領域と白い領域が隣り合っているところを抽出せよ。
[3] 環境
[3.1] OS:Windows、visual studio2005
[3.3] 言語:どちらでも可。
[4] 期限:今日か明日には完成させたいです。
[5] その他の制限:できるだけわかりやすいと嬉しいです。
とりあえず赤い領域は抽出できたのですが隣り合う白い領域を抽出するのができないです。
ラスタスキャンし、赤い画素を見つけたら4近傍を探索し、白い画素だったら抽出…という方向で組んでいるのですが
白い画素を見つけたとき、その白い画素の4近傍もまた探索しないといけないのでここでつまづいています。
よろしくお願いします。
0212デフォルトの名無しさん
2010/11/20(土) 14:36:19乱数は動的確保された配列に保存されています
乱数係数xの意味がよくわかりません
具体的に説明をお願いします
もしかしてsrand()に与える値ですか?
0213211
2010/11/20(土) 14:43:00// 赤色領域の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;
0214211
2010/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サンプル画像も貼らずに質問とな?
説明の意味が分からんのだが、赤い領域と白い領域の境界を見るのなら
「白い画素の4近傍もまた探索」は必要ないのではないか?
とりあえず赤い領域と白い領域が何をさしてるのかちゃんと説明してくれ
0216デフォルトの名無しさん
2010/11/20(土) 14:52:32>>210
奇特な >>129 がせっかく書いてくれてるのに、
理解する能力もなければ(ホントに全くないよね)、
理解する気持ちもない。
君は単位落とすべきでは?
0217211
2010/11/20(土) 14:55:50http://www1.axfc.net/uploader/Img/link.pl?dr=4588966666&file=Img_100662.jpg
画像用意しました。
この中からエビの部分だけを抽出したいんです。
0218デフォルトの名無しさん
2010/11/20(土) 16:08:510219デフォルトの名無しさん
2010/11/20(土) 16:12:39乱数係数ではなく「乱数系列」でした。
0220デフォルトの名無しさん
2010/11/20(土) 16:13:40CDC MemDC1,MemDC2;を用意し、
MemDC1は白い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC2は赤い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC1とMemDC2のCOLORREF≠0の部分を縦横4ドットずつ広げる。
MemDC1とMemDC2のandを取る。
こんな感じでだめか?
0221デフォルトの名無しさん
2010/11/20(土) 16:15:16>>122は私が書いたのものではないのですが…
0222デフォルトの名無しさん
2010/11/20(土) 16:17:52http://codepad.org/Z4Tdf8rM
0223デフォルトの名無しさん
2010/11/20(土) 16:56:39[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の経営者のやることは技術者を売ってピンはねで金儲けすることだけだから。
技術者の命より金の方が優先度が高い世界だぞ?そりゃ精神病んで自殺に追い込まれるよ。
0225デフォルトの名無しさん
2010/11/20(土) 17:20:49[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画像ファイルの扱いは不慣れなので、変なところがあるかもしれませんが、
取りあえずエビっぽいのが抽出できたんで。
http://www1.axfc.net/uploader/Sc/so/175292.zip
0227デフォルトの名無しさん
2010/11/20(土) 17:46:04すごいシンプルだな、参考にさせてもらうよ
俺もがんばって解いたが発狂しそうになった
http://codepad.org/BsfWdhLl
0228デフォルトの名無しさん
2010/11/20(土) 17:53:22問題読んですらないけど51-98行の圧迫感にワロタw
力作おつです。
0229デフォルトの名無しさん
2010/11/20(土) 17:58:13出掛けていて遅くなった
http://codepad.org/3mIpUOYz
これでいいのかな
ちなみにcodepadには上げてないけど、自前のもっと質の良い乱数発生
ルーチンを使ったら発生個数を上げると平均、分散ともに桁数の一致が
良くなりました
でも宿題用ならこれで十分でしょう
0230226
2010/11/20(土) 18:01:15ごめん。↓ここがおかしいわ。
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ありがとうございます。
ところで、このプログラムは、#include <math.h>と#include <time.h>を使わずにつくれますか?
できればなしのプログラムも欲しいんです。
何度も注文つけてしまってすいません。
0232211
2010/11/20(土) 18:21:31ありがとうございます!
キレイに抽出できてますね…
ソースが難しいので頑張って解読してみます。
0233デフォルトの名無しさん
2010/11/20(土) 18:39:43できるけどsinとかcosとかを自分で作らないといけないよ?
もともとあるものを自分で作るのは全く無意味だし
問題の本質ではないからこのままでいいんじゃない?
math.hとtime.hを使いたくない理由が分からないけど
もし習ってないとか言うバカげた理由なら考えを改めたほうがいいよ
0234デフォルトの名無しさん
2010/11/20(土) 18:39:46スケルトンから変えたのはほぼ 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あ、>>229は<time.h>はもう不要なので取り忘れました
<math.h>はlog()とsqrt()とsin()とcos()を呼び出すのに必要なので、
やるとすれば疑似的な発生法しかありません
それで作ってみます
0236211
2010/11/20(土) 18:49:05スケルトンをまず知らないのでww
c言語でお願いすればよかったと後悔してます\(^o^)/
0237デフォルトの名無しさん
2010/11/20(土) 18:54:45http://codepad.org/Z7lv5P4I
floor()もsqort()も使えなくなったので、分散を求める事が出来ないので
発生した正規分布の乱数を表示するようにしました
0238デフォルトの名無しさん
2010/11/20(土) 19:52:140239デフォルトの名無しさん
2010/11/20(土) 20:21:00無理なお願いを聞いて頂きありがとうございます。
0240デフォルトの名無しさん
2010/11/20(土) 21:09:33ありがとうございます。
RGBTRIPLEなんて構造体があったのですね。
0241デフォルトの名無しさん
2010/11/20(土) 21:13:01[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:31http://codepad.org/DE6gfYRT
0243デフォルトの名無しさん
2010/11/20(土) 21:45:35http://hibari.2ch.net/test/read.cgi/tech/1289715349/80
0244デフォルトの名無しさん
2010/11/20(土) 21:46:58おいおい問題があるスレに誘導するなよ
今運営に報告してきた所だぞ
0245デフォルトの名無しさん
2010/11/20(土) 21:55:53報告先の URL を教えてください。
回答がありしだい、誘導を停止します。
0246デフォルトの名無しさん
2010/11/20(土) 21:57:50その前にどうして誘導するのかその理由を聞かせてくれないか?
ここが宿題スレだろうに
誘導するのなら確固とした理由が必要だろ
0247デフォルトの名無しさん
2010/11/20(土) 22:03:49いいかげん他スレにちょっかい出すのやめればいいのに
自分が立てたスレに責任が持てないなら削除依頼だしてこいよ
0248デフォルトの名無しさん
2010/11/20(土) 22:05:32このスレから誘導すんな
このスレの意味が無くなる
0249226
2010/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ツールだから落ちてもいいという根拠は何も出ていない。
■ このスレッドは過去ログ倉庫に格納されています