「C-assign-2008-12-11」の編集履歴(バックアップ)一覧はこちら

C-assign-2008-12-11」(2008/12/18 (木) 12:30:22) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*12月11日の宿題 **問題1 #codehighlight(c++){{ #include <stdio.h> #define SIZE_OF_ARRAY(x) (sizeof(x) / sizeof((x)[0])) // 使っているだけで目をつけられかねないhackコード // これを見る前から知っていた人以外=素人にはお勧めできない int main() { //740000という学生証番号ということで int array[] = {10, 15, 23, 32, 24, 7, 9, 14, 74, 0, 00}; int array_even[SIZE_OF_ARRAY(array)]; int i, j; //ポインタを使えということで無茶して使った int *parray = array, *parray_even; for(parray_even = array_even; parray_even < array_even + SIZE_OF_ARRAY(array); ++parray_even) { parray_even[i] = 0; } for(i=0, j=0; i<SIZE_OF_ARRAY(array); ++i) { //この偶奇判定コードもトリッキーだ if(array[i] >> 1 << 1 == array[i]) array_even[j++] = array[i]; } printf("There are %d even numbers.\n", j); for(i=0; i<j; ++i) { printf("%d\n", array_even[i]); } } }} *課題2 大したポイントはない。 *課題3 文字列比較がポイント。正直丸ごとパクられるとこれも一発でばれると思うので、書きなおしてみた。とはいえ、よそで見た手法を無意識のうちに取り入れてはいる。ポインタを使うとこんなに綺麗になるんだね…string.hのstrstrの実装を読んでみるのは参考になるかも。 #codehighlight(c++){{ const char * strsearch( const char *const target, const char *const query) { const char *c_target, *c_query, *c_current; //queryが空文字列ならNULLを返す仕様にしている。 if(*query == '\0') return NULL; //targetが末尾に至るまで走査,whileのほうが分かりやすいがfor for(c_current = target; *c_current != '\0'; ++c_current) { for(c_query = query, c_target = c_current *c_target != '\0' && *c_target == *c_query; ++c_target, ++c_query) { if(c_query[1] == '\0') return c_target - strlen(query) + 1; } } return NULL; } }}
*12月11日の宿題 **問題1 #codehighlight(c++){{ #include <stdio.h> #define SIZE_OF_ARRAY(x) (sizeof(x) / sizeof((x)[0])) // 使っているだけで目をつけられかねないhackコード // これを見る前から知っていた人以外=素人にはお勧めできない int main() { //740000という学生証番号ということで int array[] = {10, 15, 23, 32, 24, 7, 9, 14, 74, 0, 00}; int array_even[SIZE_OF_ARRAY(array)]; int i, j; //ポインタを使えということで無茶して使った int *parray = array, *parray_even; for(parray_even = array_even; parray_even < array_even + SIZE_OF_ARRAY(array); ++parray_even) { parray_even[i] = 0; } for(i=0, j=0; i<SIZE_OF_ARRAY(array); ++i) { //この偶奇判定コードもトリッキーだ if(array[i] >> 1 << 1 == array[i]) array_even[j++] = array[i]; } printf("There are %d even numbers.\n", j); for(i=0; i<j; ++i) { printf("%d\n", array_even[i]); } } }} *課題2 大したポイントはない。 *課題3 文字列比較がポイント。正直丸ごとパクられるとこれも一発でばれると思うので、書きなおしてみた。とはいえ、よそで見た手法を無意識のうちに取り入れてはいる。ポインタを使うとこんなに綺麗になるんだね…string.hのstrstrの実装を読んでみるのは参考になるかも。 #codehighlight(c++){{ const char * strsearch( const char *const target, const char *const query) { const char *c_target, *c_query, *c_current; //queryが空文字列ならNULLを返す仕様にしている。 if(*query == '\0') return NULL; //targetが末尾に至るまで走査,whileのほうが分かりやすいがfor for(c_current = target; *c_current != '\0'; ++c_current) { for(c_query = query, c_target = c_current; *c_target != '\0' && *c_target == *c_query; ++c_target, ++c_query) { if(c_query[1] == '\0') return c_target - strlen(query) + 1; } } return NULL; } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー