C/C++の宿題を片付けます 40代目
■ このスレッドは過去ログ倉庫に格納されています
0620デフォルトの名無しさん
05/02/20 02:24:22[2] 問題文(含コード&リンク): 以下
[3] 環境
[3.1] OS: Windows XP pro
[3.2] コンパイラ(バージョン):bcc
[3.3] 言語:C
[4] 期限:2月21日昼
[5] その他の制限: 必要な標準関数は適宜使用すること.
ただし,関数を作る問題ではその関数を使ったmain関数も考えること.
4.3次元ベクトルを表す構造体(タグ名「Vector3D」)を定義し,
この構造体を使ったベクトルの外積を計算する関数「Cross_Product」を作りなさい.
ただし,引数は2つの3次元ベクトル,戻り値は外積ベクトルとする.
なお,外積は以下の式で計算できる.
c = a×b = ( ay bz – az by, az bx – ax bz, ax by – ay bz )
この関数を使って以下の2つのベクトルの外積を求めなさい.
a = ( 0.1, -0.8, -1.3 )
b = ( 1.7, 2.2, -3.1 )
2.標準関数の「strlen」は半角文字の字数を数える関数なので全角文字1字を2字と数えてしまう.
一般に「DOS/V」と呼ばれる機種のパソコンでは漢字コードとして「シフトJISコード」が使われている.
シフトJISでは全角文字(2バイト)の第1バイトは 0x81(129)〜0x9f(159) および 0xe0(224)〜0xfc(252) の範囲の値をとる.
そこで,文字列を先頭から1バイト毎にチェックし,この範囲であればその文字は全角文字の第1バイトであることになり,
範囲外であれば半角文字ということになる.このことを利用して,
シフトJISコードの全角文字と半角文字が混在した文章の字数を正確に数えられる関数「strlen_sjis」を作りなさい.
なお,この関数の引数は「文字列」,戻り値はその字数とする.
【注意】上にあげた第1バイトの値はすべて127より大きく先頭ビットが反転しているので,
そのままでは負号をもちます.
そこで,文字列は「unsigned char」として宣言する必要があります.
5つ問題があって、これ以外のものは解けたんですがこの2つが解けません。
よろしくお願いします!
■ このスレッドは過去ログ倉庫に格納されています