【掲示板ご利用上の注意】
※題名は具体的に! ※学校の課題の丸投げ禁止! ※ソースの添付は「HTML変換ツール」で字下げ! ※返信の引用は最小限に! ※環境(OSとコンパイラ)や症状は具体的に詳しく! ※マルチポスト(多重投稿)は謹んで! 詳しくはこちら
本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。 守ってくださいね。お願いします。(by管理人)
C言語ソース⇒HTML形式ツール 掲示板2はこちら
if (D > 0) {return (-B-sqrt(D));} /*交点あり*/ else {printf("交点なし\n"); continue;}
if (D > 0) { /*交点あり*/ return ( -B-sqrt(D) ); } else { printf("交点なし\n"); break; } なんじゃないの? continueとbreakは違う。
void main() { SetEnvironment(); for(p=0;p<15;p++){ for(q=0;q<15;q++){ for(k=1;k<l;k++){ for(i=1;i<n;i++){ Ray(); cos1Cal(); cos2Cal(); pass(); } Screen(); } } } } void Ray() { t = RayCast(); if (t < INFINITY){ for(j=0;j<m;j++){ kouten[k][i][j]=a[k][i][j]*t+b[k][i][j]; } } Normal(); } double RayCast() /*距離パラメタtを求める*/ { double B,C,D; B=a[k][i][0]*(b[k][i][0]-c[k][0])+a[k][i][1]*(b[k][i][1]-c[k][1])+a[k][i][2]*(b[k][i][2]-c[k][2]); C=(b[k][i][0]-c[k][0])*(b[k][i][0]-c[k][0])+(b[k][i][1]-c[k][1])*(b[k][i][1]-c[k][1]) +(b[k][i][2]-c[k][2])*(b[k][i][2]-c[k][2])-r*r; D=B*B-C; if (D > 0) {return (-B-sqrt(D));} /*交点あり*/ else {printf("交点なし\n"); continue; } /*return (INFINITY); 交点なし、無限遠 */ }
main(){ RayCast(); }
> No19865の私の投稿のところに書いてあるなかで、 コンパイルもできないソースで考えてもしようがないので、 簡単なサンプルを書きました。 実行してみれば、iがどうなるか理解できると思います。 #include <stdio.h> int main( void ) { int a[10] = { 0,2,4,6,8,10,12,14,16,18 }; int i; for( i = 0; i < 10; i++ ){ if( 5 < a[i] ){ break; } else{ printf( "a[%d] = %d : 5以下\n", i, a[i] ); } } printf( "a[%d] = %d : 5を超えた\n", i, a[i] ); return 0; }
ごめんなさい。こっちの方が適当です。 #include <stdio.h> int main( void ) { int a[10] = { 0,2,4,6,8,10,12,14,16,18 }; int i; for( i = 0; i < 10; i++ ){ if( 5 < a[i] ){ break; } else{ printf( "a[%d] = %d : 5以下\n", i, a[i] ); } } if( i < 10 ){ printf( "a[%d] = %d : 5を超えた\n", i, a[i] ); } return 0; }
>配列に順々に値を代入していく・・・ >break文を用いて条件に合わなかったときの計算を止めたら >中身のない配列ができる。ということであっていますか? 「breakで止めるまで代入した値」は配列に残るでしょう。 #define N (10) #define STOP (5) int i; int array[N]={0}; for(i = 0; i < N; i++) { array[i] = i; if(i==STOP) break; } for(i = 0; i < N; i++) { printf("%d ", array[i]); }