サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
1: 2009-01-12 (月) 11:22:12 ソース
Line 1: Line 1:
 +* ぐいぐい01に関するメモ-24
 +-(by [[K]], 2009.01.12)
 +-メモのうち重要な部分をそのうちまとめてまともなページを作る
 +*** (37) GOで「ぐいぐい01」アプリを作る(2)
 +-[[GUIGUI01/memo19]]の続きです。仕様変更ももうそんなにはないと思うので、書いても問題はないかなと。
 +----
 +-最初のお題は0から9までの数字の表示です。ex0007.cです。
 + #include <guigui01.h>
 + void G01Main()
 + {
 +     int i;
 +     for (i = 0; i <= 9; i++) {
 +       g01_putc('0' + i);
 +       g01_putc(' ');
 +     }
 +     return;
 + }
 +-これだけです。これをmakeすれば72バイトになります。実行すると以下のような表示が得られます。
 + 0 1 2 3 4 5 6 7 8 9
 +----
 +-さてそれではもう少し桁を増やします。でもsprintfは使いたくないので、setdecを作りました。ex0008.cです。
 + #include <guigui01.h>
 +
 + void setdec(char *s, int i, int n)
 + {
 +     int j;
 +     for (j = n - 1; j >= 0; j--) {
 +         s[j] = '0' + (i % 10);
 +         i /= 10;
 +     }
 +     return;
 + }
 +
 + void G01Main()
 + {
 +     int i;
 +     char s[5];
 +     for (i = 0; i <= 999; i++) {
 +       setdec(s, i, 3);
 +       s[3] = ' ';
 +       s[4] = 0; /* 終端に0を入れる */
 +       g01_putstr0(s);
 +     }
 +     return;
 + }
 +-これをmakeすれば146バイトになります。これを実行すると、以下のように表示されます。
 + 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
 + 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039
 +     (中略)
 + 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979
 + 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
 +----
 +-もしかしたら最初のほうで、0が000になっていたり、1が001になっているのが気にいらないかもしれませんね。じゃあそれを直しましょう。ex0009.cです。
 + #include <guigui01.h>
 +
 + void setdec(char *s, int i, int n)
 + {
 +     int j;
 +     for (j = n - 1; j >= 0; j--) {
 +         s[j] = '0' + (i % 10);
 +         i /= 10;
 +     }
 +     for (j = 0; j < n - 1; j++) {
 +         if (s[j] != '0')
 +             break;
 +         s[j] = ' ';
 +     }
 +     return;
 + }
 +
 + void G01Main()
 + {
 +     int i;
 +     char s[5];
 +     for (i = 0; i <= 999; i++) {
 +       setdec(s, i, 3);
 +       s[3] = ' ';
 +       s[4] = 0; /* 終端に0を入れる */
 +       g01_putstr0(s);
 +     }
 +     return;
 + }
 +-これをmakeすれば177バイトになります。これを実行すると、以下のように表示されます。
 +   0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19
 +  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39
 +     (中略)
 + 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979
 + 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
 +----
 +-ex0009は桁がそろっていてきれいだと僕は思うのですが、もしかしたら余計なスペースを表示しないほうがお好みかもしれませんね。じゃあそれも直せるようにしてみます。ex0010.cです。
 + #include <guigui01.h>
 +
 + void setdec(char *s, int i, int n)
 + {
 +     int j;
 +     for (j = n - 1; j >= 0; j--) {
 +         s[j] = '0' + (i % 10);
 +         i /= 10;
 +     }
 +     for (j = 0; j < n - 1; j++) {
 +         if (s[j] != '0')
 +             break;
 +         s[j] = ' ';
 +     }
 +     return;
 + }
 +
 + char *skip_space(char *s)
 + {
 +     while (*s == ' ') {  /* while (A) は for (; A;) と同じ意味 */
 +         s++;
 +     }
 +     return s;
 + }
 +
 + void G01Main()
 + {
 +     int i;
 +     char s[5];
 +     for (i = 0; i <= 999; i++) {
 +       setdec(s, i, 3);
 +       s[3] = ' ';
 +       s[4] = 0; /* 終端に0を入れる */
 +       g01_putstr0(skip_space(s));
 +     }
 +     return;
 + }
 +-これをmakeすれば?バイトになります。これを実行すると、以下のように表示されます。
 +* こめんと欄
 +
 +#comment

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。