分からなくて困ってます…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
とっぴー
記事: 2
登録日時: 9年前

分からなくて困ってます…

#1

投稿記事 by とっぴー » 9年前

分からなくて困ってます…
課題なのですがこれまでC言語に触れたこともほぼないのに出題されて困ってます…

どうしたいのかというと
-------------ここから------
int x1, y1, x2,x3,y3,r=100;

gwinsize(600,400);
ginit(1);
gsetorg(300,100);

x1=-0.5*r; y1=r*(1-sqrt(3)/4.);
x2= 0.5*r; y2=r*(1-sqrt(3)/4.);
x3= 0.5*r; y3=r*(1-sqrt(3)/4.);

gcolor(0,255,0);
gcirc(x1,y1,r);
gcolor(0,0,255);
gcirc(x2,y2,r);
gcolor(255,0,0);
gcirc(x3,y3,r);
-------------------ここまで-------

多分これであってると思うのですが
これで三つの円が描写されると思います
これを加法混色っていうんですかね。重なってるところの色を混ぜるやつです。
あれをやった状態にしなさいということらしいのですが
上記のとおり当方一度もC言語を触ったことがないためわからなくて困ってます。
ちなみにこれを参考にしろということらしいのですが…
-----ここから---
for(iy = y0-r; iy<=(y0+r); iy++) {
for(ix=x0-r;ix<=(x0+r); ix++){
gcolor(50,50,50);
if((ix-x0)*(ix-x0)+(iy-y0)*(iy-y0)-r*r<0) gcolor(255,255,255);
gpnt(ix,iy);
}
----ここまで---

大学の課題で講義ではC言語について触れてなかったのに
こんな課題が出て困ってます…
C言語に明るい方、お願いします。

non
記事: 1097
登録日時: 14年前

Re: 分からなくて困ってます…

#2

投稿記事 by non » 9年前

C言語の問題と言うより、数学の問題です。
絵を描いてみて考えて下さい。
参考プログラムのように、ix,iyの座標が3つの円のどの範囲になるかチェックして、その範囲の色をセットして点を打てばよいと思います。
non

とっぴー
記事: 2
登録日時: 9年前

Re: 分からなくて困ってます…

#3

投稿記事 by とっぴー » 9年前

レスありがとうございます。
なにぶんやったことがないものでどの命令文?が何を表しているのかとかがよくわからないもので…

ix,iyの部分をたぶんx1やy1というように最初のintのところで書いてあるやつに変えればいいということでしょうか?
それとちょっとだけ参考プログラムのところで抜けているところがありました

-----ここから----
int ix,iy,r=100,x0=0,y0=100;

gwinsize(600,400); //画面のサイズを指定
ginit(1);
gsetorg(300,100); //スクリーン内の原点座標を指定

for(iy = y0-r; iy<=(y0+r); iy++) {
for(ix=x0-r;ix<=(x0+r); ix++){
gcolor(50,50,50);
if((ix-x0)*(ix-x0)+(iy-y0)*(iy-y0)-r*r<0) gcolor(255,255,255);
gpnt(ix,iy);
}
}
}
-------------------------ここまで-------------------
こんなのでした。
そのまま実行してみたら灰色の正方形の中に真っ白な円が現れるというようなものだそうです
みたところ

for(iy = y0-r; iy<=(y0+r); iy++) {
for(ix=x0-r;ix<=(x0+r); ix++){
gcolor(50,50,50);
if((ix-x0)*(ix-x0)+(iy-y0)*(iy-y0)-r*r<0) gcolor(255,255,255);
gpnt(ix,iy);
      
これの for?のところからgcolor(50,50,50)までがたぶん灰色の正方形で
それでもってifがたぶん範囲の条件ということでいいんですよね?
gpntはよくわからないです・・・・

気になる点は

1.No1の記事の上のほうのプログラムのx1=-0.5*r; y1=r*(1-sqrt(3)/4.);とかなってるところは変える必要があるかどうか
 このレスの上記の参考プログラムではfor(のところからgcolor(50,50,50);のところで灰色の正方形を多分つくってて
そのあとすぐにIF~で範囲を設定しているけど、このNO1の記事のx1=-0.5*r; y1=r*(1-sqrt(3)/4.);のところを
for(x1=-0.5*r; ) {
for(y1=r*(1-sqrt(3)/4.); ) {
gcolor(0,255,0);とかこんな感じ?にして続けて
if(( ・・・というようにやるのか、
そのまますぐどこかに参考プログラムのやつを変えたものを入れればいいのか…。


2.このレスの上記の参考プログラムのforからgpntのどこからどこまでが必要なのか。forのところからgpntのところまで全部追加する必要があって
その中でixやiyのようなところを変える必要があるということなのか、それともifのところからが必要なのか。
それとgpntとは何でしょうか…それとiy++とかix++も…

分からないことばかりですみません。
初めての試みではありますが頑張ってみようと思うので何卒お願いします

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 分からなくて困ってます…

#4

投稿記事 by usao » 9年前

>なにぶんやったことがないものでどの命令文?が何を表しているのかとかがよくわからないもので…

forとは何なのか? ++とは? あたりの事柄は
「C言語 入門」とかなんとか適当に検索するなりして調べた方が確実かつ早いのではないでしょうか.

(>みたところ…
 的な推測だけでどうにかクリアするという取り組み方も有り得るかもしれませんが)


gwinsize, ginit, gsetorg, gcolor, gcirc, gpnt とかいう先頭にgが付いてるシリーズについては
全く想像がつかないのであれば,課題を出した人に尋ねてください.

オフトピック
>灰色の正方形の中に真っ白な円が現れるというようなものだそうです

「ようなものだそうです」とはどういう状況なのでしょう?
実際に実行して結果を確認する手段が存在していないのでしょうか.

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 分からなくて困ってます…

#5

投稿記事 by みけCAT » 9年前

オフトピック
前に似た質問がありましたね。
課題 • C言語交流フォーラム ~ mixC++ ~
有効な答えは得られていませんが…
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
little
記事: 44
登録日時: 13年前
連絡を取る:

Re: 分からなくて困ってます…

#6

投稿記事 by little » 9年前

とっぴー さんが書きました: -------------ここから------
int x1, y1, x2,x3,y3,r=100;

gwinsize(600,400);
ginit(1);
gsetorg(300,100);

x1=-0.5*r; y1=r*(1-sqrt(3)/4.);
x2= 0.5*r; y2=r*(1-sqrt(3)/4.);
x3= 0.5*r; y3=r*(1-sqrt(3)/4.);

gcolor(0,255,0);
gcirc(x1,y1,r);
gcolor(0,0,255);
gcirc(x2,y2,r);
gcolor(255,0,0);
gcirc(x3,y3,r);
-------------------ここまで-------

多分これであってると思うのですが
これで三つの円が描写されると思います
これで三つの円が描画される環境を私は知りません。

とっぴー さんが書きました:ちなみにこれを参考にしろということらしいのですが…
-----ここから---
for(iy = y0-r; iy<=(y0+r); iy++) {
for(ix=x0-r;ix<=(x0+r); ix++){
gcolor(50,50,50);
if((ix-x0)*(ix-x0)+(iy-y0)*(iy-y0)-r*r<0) gcolor(255,255,255);
gpnt(ix,iy);
}
----ここまで---
nonさんのいう通り、その範囲の色をセットして点を打てばよいと思います。



実際にやってみました。警告等は無視しています。
► スポイラーを表示
百聞は~

閉鎖

“C言語何でも質問掲示板” へ戻る