C/C++の宿題を片付けます 40代目
■ このスレッドは過去ログ倉庫に格納されています
0623デフォルトの名無しさん
05/02/20 03:40:24#include <stdio.h>
struct Vector3D { double x,y,z; };
void vec(const struct Vector3D *in1, const struct Vector3D *in2, struct Vector3D *out) {
out->x = in1->y*in2->z - in1->z*in2->y;
out->y = in1->z*in2->x - in1->x*in2->z;
out->z = in1->x*in2->y - in1->y*in2->x;
}
#define ISLEAD(c) ((c)>=0x81 && (c)<=0x9f)
#define ISTAIL(c) ((c)>=0xe0 && (c)<=0xfc)
size_t strlen_sjis(const unsigned char *string) {
size_t len = 0;
const unsigned char *ptr = string;
while(*ptr){
if (ISLEAD(*ptr) && ISTAIL(*(ptr+1))) ptr++;
ptr++; len++;
}
return len;
}
int main() {
const struct Vector3D a = { 0.1, -0.8, -1.3 };
const struct Vector3D b = { 1.7, 2.2, -3.1 };
struct Vector3D c;
const char d[] = "...";
vec(&a, &b, &c); printf("c = ( %f, %f, %f )\n", c.x, c.y, c.z);
printf("%s = %u\n", d, strlen_sjis((unsigned char *)d));
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています