情報科学1 演習問題11 氏名 学籍番号 第1問 xy平面上の3点A、B、Cで表される三角形ABCが原点を内部に含むかどうかを判定する プログラムを作りなさい。図1は原点を含み、図2は原点を含まない場合である。 A B 図1 A A B C 図2 B C 図3 Z A Z C 図4 B C 三角形が原点を含むとき、原点Zを頂点とする3つの三角形ZAB、ZAC、ZBCの面積の和はABCの面 積に等しいが、原点を含まない場合には三角形ZAB、ZAC、ZBCの面積の和はABCの面積より大きく なる。(図3,図4)4つの三角形の面積を変数Sabc、Szab、Szac、Szbcで表すとき、原点が三角 形ABCに含まれるかどうかを判定するif文を書きなさい。 if ( Sabc < Szab+Szac+Szbc ) printf("原点を内部に含まない\n"); else printf("原点を内部に含む\n"); xy平面上の3点A、B、Cのxy座標を変数Xa、Ya、Xb、Yb、Xc、Ycで表すとして、3つの座標 を入力するためのscanfを用いたC言語の文を書きなさい。ただし、6つの変数はdouble型とする。 %lg または %lf または %le scanf("%lg %lg %lg %lg %lg %lg",&Xa,&Ya,&Xb,&Yb,&Xc,&Yc); xy平面上の3点A、B、Cのxy座標を とするとき、三角形ABCの面積は以下の式で求めることが出来る。 Sabc、Szab、Szac、Szbcの値を求めるC言語の文(代入文が4つ必要)を書きなさい。ただし、 変数はすべてdouble型とする。(原点の座標は(0,0)であることに注意) Sabc=0.5*fabs((Xa-Xc)*(Yb-Yc)-(Ya-Yc)*(Xb-Xc)) ; Szab=0.5*fabs(Xa*Yb-Ya*Xb) ; Szac=0.5*fabs(Xa*Yc-Ya*Xc) ; Szbc=0.5*fabs(Xb*Yc-Yb*Xc) (double型の数の絶対値を求める関数はについては教科書を調べること。) ; 裏面に続く 第2問 書籍に付けられるISBN(International Standard Book Number)は13桁の整数であ らわされ、最後の一桁は残りの12桁から計算される0∼9の値のチェックデジットになってい る。このチェックデジットを計算し、正しいISBNであることを判定するプログラムを作りなさ い。(ISBNはハイフンまたはスペースで区切られているが、それが無いものとして13桁の整 数として扱う)講義で使用した教科書には978427064401という番号がついている。 チェックデジットの計算方法は次のようなものである。 チェックデジットを除いた一番左側の桁から順に1,3,1,3,...を書けてそれらの和をと る。和を10で割って出たあまりから10を10から引く。ただし、10で割って出たあまりが0 である場合は0とする。 ISBN 978-4-11-109215-□ のチェックディジット(□部分)を求めなさい。 9X1+7X3+8X1+4X3+1X1+1X3+1X1+0X3+9X1+2X3+1X1+5X3 = (1) (1) (1) mod 10 = (2) 86 (2) 10-(2)=(3) 6 (3) 4 (1)の値を変数nであらわした場合、チェックデジットcdを求めるC言語の文をif文を用いて書き なさい。(mod演算には%を使う) if (n%10==0) cd=0; else cd=10-(n%10); 13桁のISBNから13桁目のチェックデジットを取り出すためには、ISBNを10で割ったあまりを求 めればよい。同様に、12桁目の値はISBNを10で割った値をさらに10で割り、そのあまりを求 めればよい。ISBNを変数isbnであらわす場合、12桁目の値n12を求めるC言語の文で書きなさ い。また、同様な方法で11桁目の値n11、10桁目の値n10を求めるC言語の文で書きなさい。 n12 = (isbn/10)%10 ; n11 = (isbn/100)%10 ; n10 = (isbn/1000)%10 ; ISBNの一桁目から12桁目をそれぞれn1 n12であらわす場合、(1)の値を変数nであらわす場合、 nを求めるC言語の文を書きなさい。 n = n1+n2*3+n3+n4*3+n5+n6*3+n7+n8*3+n9+n10*3+n11+n12*3 ;
© Copyright 2024