樹心幽徑

20191125用DEV-C++設計各式資料型態的陣列
2019/11/25,09:48

REF: 20191023安裝Dev-C++來設計檔案內容讀取分析程式

 

(0)如沒有DEV-C++ C語言編譯開發環境(SDK),請先下載Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe(約49MB)並安裝之

(1)執行DEV-C++並按CTRL+N編寫如下程式碼並存為 d:\1.cpp

#include <stdio.h>
int main(void)
{
printf("大木大木\n========\n");
printf("上上上上\n堅持向上\n");
printf("撐撐撐撐\n撐以待變\n");
printf("慢行等候\n曲直而成\n");
}

(1b)按F11編譯並執行1.cpp,會於新視窗上輸出結果如下: 

大木大木
========
上上上上
堅持向上
撐撐撐撐
撐以待變
慢行等候
曲直而成

 

(2)按CTRL+N編寫如下程式碼並存為 d:\2.cpp

#include <stdio.h>
int main(void)
{
    int i;
    int a[] = {4, 5, 8, 1, 3, 2, 7, 3 , 3 };
    int sizea =sizeof(a)/sizeof(a[0]) ;
    printf("\n1:a數列長度=%d ,數列註標由0開始,最末數的註標為%d 總記憶量佔%d位元組 每個元素佔%d位元組\n a[]=",sizea,sizea-1,sizeof(a),sizeof(a[0]));
    for (i = 0; i < sizea; i++) printf("%3d ",a[i]);

    long b[] = {4, 5, 8, 1, 3, 2, 7 };
    int sizeb =sizeof(b)/sizeof(b[0]) ;
    printf("\n2:b數列長度=%d ,數列註標由0開始,最末數的註標為%d 總記憶量佔%d位元組 每個元素佔%d位元組\n b[]=",sizeb,sizeb-1,sizeof(b),sizeof(b[0]));
    for (i = 0; i < sizeb; i++) printf("%3d ",b[i]);

    float c[] = {4, 5, 8, 1, 3  };
    int sizec =sizeof(c)/sizeof(c[0]) ;
    printf("\n2:c數列長度=%d ,數列註標由0開始,最末數的註標為%d 總記憶量佔%d位元組 每個元素佔%d位元組\n c[]=",sizec,sizec-1,sizeof(c),sizeof(c[0]));
    for (i = 0; i < sizec; i++) printf("%2.1lf ",c[i]);

    double d[] = {4, 5, 8 };
    int sized =sizeof(d)/sizeof(d[0]) ;
    printf("\n2:d數列長度=%d ,數列註標由0開始,最末數的註標為%d 總記憶量佔%d位元組 每個元素佔%d位元組\n d[]=",sized,sized-1,sizeof(d),sizeof(d[0]));
    for (i = 0; i < sized; i++) printf("%2.1lf ",d[i]);
}

(2b)執行結果

1:a數列長度=9 ,數列註標由0開始,最末數的註標為8 總記憶量佔36位元組 每個元素佔4位元組
 a[]=  4   5   8   1   3   2   7   3   3
2:b數列長度=7 ,數列註標由0開始,最末數的註標為6 總記憶量佔28位元組 每個元素佔4位元組
 b[]=  4   5   8   1   3   2   7
2:c數列長度=5 ,數列註標由0開始,最末數的註標為4 總記憶量佔20位元組 每個元素佔4位元組
 c[]=4.0 5.0 8.0 1.0 3.0
2:d數列長度=3 ,數列註標由0開始,最末數的註標為2 總記憶量佔24位元組 每個元素佔8位元組
 d[]=4.0 5.0 8.0

 

(3) 按CTRL+N編寫如下程式碼並存為 d:\3.cpp

#include <stdio.h>
int main(void)
{
    int i;
    char  f[] ="catCAT+dogDOG!";
    int sizef =sizeof(f)/sizeof(f[0]) ;
    printf("\n f數列長度=%d ,數列註標由0開始,最末數的註標為%d 總記憶量佔%d位元組 每個元素佔%d位元組\n f[]=",sizef,sizef-1,sizeof(f),sizeof(f[0]));
    for (i = 0; i < sizef; i++) printf("%02X ",f[i]);
    printf("\n f[]=%s\n",f);
}

(3b) 執行結果(字串即字元陣列,皆以0值為結尾識別符號)


 f數列長度=15 ,數列註標由0開始,最末數的註標為14 總記憶量佔15位元組 每個元素佔1位元組
 f[]=63 61 74 43 41 54 2B 64 6F 67 44 4F 47 21 00
 f[]=catCAT+dogDOG!

 

 

(4a)按CTRL+N編寫如下程式碼並存為 d:\4.cpp

#include <stdio.h>
int main(void)
{
    int i,j;
    float  g[2][9] ;
       for (j=0;j<9;j++){
        g[0][j]=101+j;
        }
    g[1][0]=83.1; g[1][1]=56.0;  g[1][2]=85.7; g[1][3]=78.9; g[1][4]=57.3;
    g[1][5]=90.1; g[1][6]=98.8;  g[1][7]=45.9; g[1][8]=66.3; g[1][9]=74.5;
   
    int sizeg =sizeof(g)/sizeof(g[0][0]);
    printf("\n 二維陣列g元素總數=%d,總記憶量佔%d位元組 每個元素佔%d位元組\n g[][]=\n",sizeg,sizeof(g),sizeof(g[0][0]));
   
    for (j=0;j<10;j++) printf("%6.0f",g[0][j]);
    printf(" :第0列元素\n""");
   
    for (j=0;j<10;j++) printf("%6.1f",g[1][j]);
    printf(" :第1列元素\n""");
}
(4b) 執行結果 二維陣列g元素總數=18,總記憶量佔72位元組 每個元素佔4位元組
 g[][]=
   101   102   103   104   105   106   107   108   109    83 :第0列元素
  83.1  56.0  85.7  78.9  57.3  90.1  98.8  45.9  66.3   0.0 :第1列元素

20191123用DEV-C++設計可輸入拆碼來搜尋Boshiamy.cin文字檔的程式readbosh.cpp
2019/11/23,06:10

20191123用DEV-C++設計可輸入拆碼來搜尋Boshiamy.cin文字檔的程式readbosh.cpp

REF 1:#C++11:正規表達式(Regular Expression)的使用

REF2 : 讓Dev C++支援C++11

REF3 :http://rocksaying.tw/archives/3866523.html

REF4: http://tommyjswu-blog.logdown.com/posts/726230-cpp11-regex-expression

 

(1)程式碼:readbosh.cpp

#include <fstream>
#include <iostream>
#include <regex>
using namespace std;

int main(){
  FILE *infile;
  infile = fopen("ansiBoshiamy.cin", "r");
   
  string input;
  printf("請輸入要查的字串:");
  getline(cin, input);
  string s1= input + " (.*)(\\n)";
 
  regex reg(s1,regex_constants::icase);

  char ln[100];
  int c=0;
  while (!feof(infile)) {
      fgets (ln , 100 , infile);
    if( regex_match(ln, reg) ){
        cout << " 找到匹配" <<" c=" << c++ << ":"<< ln  << endl;
      }
   }
  fclose(infile);
  return 0;
}

 

(2)執行結果:

請輸入要查的字串:aaa
 找到匹配 c=0:aaa 鑫

 找到匹配 c=1:aaa 龘

 找到匹配 c=2:aaa 鑆


--------------------------------
Process exited after 3.438 seconds with return value 0
請按任意鍵繼續 . . .


 

20191122用DevC++來編寫循序搜尋法與二分搜尋法程式
2019/11/22,09:07

20191122用dev C++來編寫循序搜尋法,與二分搜尋法程式

(1) 在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\ssearch.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {4, 5, 8, 1, 3, 2, 7, 3 , 3 };
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,t,k;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:待搜尋陣列 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n3:請輸入待搜尋數字k=");
   
    scanf("%d",&k);
    printf("\n4:搜尋結果如下:");
    int c=0;
    for (i=0;i<size;i++){
        if (a[i]==k) {
            printf("\n找到一筆在 i=%3d a[i]=%3d  c=%d",i,a[i],c);
            c=c+1;
        }
    }
  
    printf("\n5:計找到%d個\n",c);
   
    return (0);
}

 

(2a)按F11編譯並執行,ssearch.cpp執行結果如下:

1:數列長度=9 ,數列註標由0開始,最末數的註標為8
2:待搜尋陣列 a[]=  4  5  8  1  3  2  7  3  3
3:請輸入待搜尋數字k=3

4:搜尋結果如下:
找到一筆在 i=  4 a[i]=  3  c=0
找到一筆在 i=  7 a[i]=  3  c=1
找到一筆在 i=  8 a[i]=  3  c=2
5:計找到3個

(2b)按F11編譯並執行,ssearch.cpp執行結果如下:


1:數列長度=9 ,數列註標由0開始,最末數的註標為8
2:待搜尋陣列 a[]=  4  5  8  1  3  2  7  3  3
3:請輸入待搜尋數字k=44

4:搜尋結果如下:
5:計找到0個

(3) 在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\bsearch.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {1, 3, 5, 7, 9, 10, 13, 29 , 25 };
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,k;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:待搜尋陣列 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n3:請輸入待搜尋數字k=");
   
    scanf("%d",&k);
    printf("\n4:搜尋結果如下:");
    int L=0;
    int R=size-1;
    int M=(L+R)/2;
   
   
    while (L<=R){
        printf("\n L=%d a[L]=%d , R=%d  a[R]= %d , M=%d a[M]=%d\n",L,a[L],R,a[R],M,a[M]);
        if (a[M]==k) {
            printf("\n找到一筆在 M=%3d a[M]=%3d ",M,a[M]);
            break;
        }
        else{
            if (k>a[M]) {
                L=M+1;
                printf("\n往大的那一半找");
                }
            else {
                R=M-1;
                printf("\n往小的那一半找");
            }
        }
        M=(L+R)/2;
    }
   
    if (L>=R) printf ("\n沒有找到k\n");
   
    return (0);
}

(4a)按F11編譯並執行,bsearch.cpp執行結果如下:


1:數列長度=9 ,數列註標由0開始,最末數的註標為8
2:待搜尋陣列 a[]=  1  3  5  7  9 10 13 29 25
3:請輸入待搜尋數字k=3

4:搜尋結果如下:
 L=0 a[L]=1 , R=8  a[R]= 25 , M=4 a[M]=9

往小的那一半找
 L=0 a[L]=1 , R=3  a[R]= 7 , M=1 a[M]=3

找到一筆在 M=  1 a[M]=  3

 

(4b)按F11編譯並執行,bsearch.cpp執行結果如下:


1:數列長度=9 ,數列註標由0開始,最末數的註標為8
2:待搜尋陣列 a[]=  1  3  5  7  9 10 13 29 25
3:請輸入待搜尋數字k=2

4:搜尋結果如下:
 L=0 a[L]=1 , R=8  a[R]= 25 , M=4 a[M]=9

往小的那一半找
 L=0 a[L]=1 , R=3  a[R]= 7 , M=1 a[M]=3

往小的那一半找
 L=0 a[L]=1 , R=0  a[R]= 1 , M=0 a[M]=1

往大的那一半找
沒有找到k

 

20191120用PYTHON設計可輸入拆碼來搜尋Boshiamy.cin文字檔的程式readb.py
2019/11/20,21:26

(1) 在windows開始功能表執行IDLE(python 3.7 64bit)並按CTRL+N在PYTHON文字編輯器編寫如下程式碼並存為d:\readb.py

程式碼:

key = input("請輸入無蝦米拆碼: ")
import re
f = open("Boshiamy.cin",'r',encoding = 'utf-8')
line = f.readline()
c=0
while line:
    line = f.readline()
    ROBJ = re.match( r'^%s'%key, line, re.M|re.I)
    if ROBJ:
       c=c+1
       print(c,line)

f.close()

 

(1b)以上程式碼說明:

(1b-1)自鍵盤取得輸入並記在key變數中   : key = input("請輸入無蝦米拆碼: ") 

(1b-2)匯入正則表示法程式庫模組 :   import re                                  

 (1b-3)以唯讀模式開啟以UTF8編碼的文字檔Boshiamy.cin並傳回檔案指標f:  

     f = open("Boshiamy.cin",'r',encoding = 'utf-8')

 (1b-4)自檔案讀取一行文字並記在line變數中:   line = f.readline()

(1b-5)設定計數變數c的初值為0  : c=0

(1b-6) 當line有值則進行如下WHILE迴路範圍的重覆動作:

while line:

(1b-7)自自檔案讀取一行文字並記在line變數中:    

line = f.readline()

(1b-8)用re.match函式比對line字串的開頭是否有剛輸入的key:

re.M表示有支援^行首定位符號,re.I表示大、小寫字元被視為一致。 

ROBJ = re.match( r'^%s'%key, line, re.M|re.I)

(1b-9)假如ROBJ有值(表示有查到)則進行IF範圍的動作

  if ROBJ:

(1b-10)將計數變數c的值累加1
       c=c+1

(1b-11)印出目前的c及line
       print(c,line)

(1b-12)關閉檔案

f.close()

 

(2)按F5儲存編寫的程式並執行:(資料檔Boshiamy.cin要和本程式檔擺在同一個目錄下)

請輸入無蝦米拆碼: LTK
1 ltk 新

2 ltkg 㜪

 

請輸入無蝦米拆碼: okd
1 okd 吳

2 okd 吴

3 okdv 吴

請輸入無蝦米拆碼: ehi
1 ehi 肅

2 ehi 歗

3 ehi 粛

4 ehi 肃

5 ehir 粛

6 ehiv 歗

(3)Boshiamy.cin文字檔截圖如下:(資料檔Boshiamy.cin要和readb.py程式檔擺在同一個目錄下)

alt

(4)參考:

REF 1: Python FILE readline

REF 2: Python Regular Expressions

 

20191119在WINDOWS安裝PIME新酷音輸入程式並使用蝦米輸入法
2019/11/19,22:09

1、自新酷音輸入法PIME官網(http://chewing.im)下載PIME新酷音輸入程式  PIME-1.1.0-setup.exe  (約24mb), 詳如https://github.com/EasyIME/PIME/releases

 

2、下載 liu-uni.tab(136K),此檔可由嘸蝦米輸入法安裝目錄或網路下載取得。

 

3-0、執行PIME-1.1.0-setup.exe (WIN10要關閉應用程式防護管控才可執行),安裝過程中勾選蝦米輸入法並提供liu-uni.tab檔案所在處。

3-1 勾選蝦米輸入法模組:

alt

3-2勾選停用IE受保護模式:

alt

3-3要有輸入法表格檔才行:

alt

3-4選取輸入法表格檔:

alt

 3-5安裝完成: 在WIN10 用WIN鍵+空白鍵 可切換輸入法,請試試看新裝的蝦米輸入法是否可順利打出如下七個中文字:
鑫(AAA)、森(TTT)、淼(WWW)、焱(FFF3)、垚(YYY2)、品(OOO)、晶(DDD)

 

4a:拆碼練習的CAI程式下載點: http://boshiamy.com/dl/LiuEasyLearn.exe

4b:  嘸蝦米輸入法字根拆碼規則:無瞎米輸入法(行易有限公司) 、拆字規則字根總表

 

4c、 嘸蝦米輸入法密笈:http://tea.wfsh.tp.edu.tw/amin/pc/exe/liu.htm

4c1、形:命(AOP)、 州(YYY)、品(OOO)

4c2、音:防(BFY) 八(B) 皮(PX)

4c3、義:森(TTT)、焱(FFF)、晶(DDD)、轟(CCC)

4c4、截長:腳(UBBP)、靈(UOOW)

4c5、補短:木(TN)、不(BA)、寸(AA)、互(DEE)、音(LDO)


4d、嘸蝦米中文輸入法拆碼範例

4d1、範例拆碼檔案 20141227liu命AOP.doc

4d2、20170109範例拆碼檔案 下載 (35 KB)

4d3、20170110範例拆碼檔案下載 (18 KB)

4d4、20170729範例拆碼檔案下載 (515 KB) jpg

4d5、20170728範例拆碼檔案下載 (42 KB)

4d6、20170729範例拆碼檔案下載 (1 KB) txt

20191120安裝並使用LibreOffice 來製作ODF文件檔
2019/11/19,21:10

 

20191120安裝並使用LibreOffice 來製作ODF文件檔

(1)20191120安裝並使用LibreOfficeCALC.ods

下載 (118 KB) | created 19 十一月, 2019
(2)20191120安裝並使用LibreOfficeWriter.odt
下載 (200 KB) | created 19 十一月, 2019
20191119設定DNS伺服器的CNAME(機器別名)
2019/11/19,13:34

(1)用PIETTY連上主機

(2)# ls -l /var/named
總計 44
:

-rw-r--r--  1 root  root   808 11月 15 17:50 named.20.25.163
-rw-r-----. 1 root  named 2076  1月 28  2013 named.ca
-rw-r-----. 1 root  named  152 12月 15  2009 named.empty
-rw-r--r--  1 root  root  1481 11月 18 16:50 named.kmvs.km.edu.tw
:

(3)# cat named.20.25.163 |more
$TTL 1D

@       IN      SOA     dns.kmvs.km.edu.tw. rname.invalid. (
                        2019111501      ;serial
                        3H              ;refresh
                        1H              ;retry
                        1W              ;expire
                        3H )            ;minimum

2       IN      PTR     web.kmvs.km.edu.tw.
:

 

(4)#  cat named.kmvs.km.edu.tw |more
$TTL 1D

kmvs.km.edu.tw.         IN      SOA     dns.kmvs.km.edu.tw. rname.invalid. (
                                        2019111801      ;serial
                                        3H              ;refresh
                                        1H              ;retry
                                        1W              ;expire
                                        3H )            ;minimum

:

mail                    IN      CNAME   ghs.googlehosted.com.
:
www                     IN      A       163.25.20.217
web                     IN      A       163.25.20.2
:

oldwww                  IN      A       163.25.20.2

 

20191116用dev C++來編寫氣泡、選擇、插入排序法
2019/11/16,08:47

ref 1: 20191023安裝Dev-C++來設計檔案內容讀取分析程式

ref 2: 20191111用python設計氣泡排序法(採升序排列,ascending)

ref 3:20191111用python編寫選擇排序法程式(採升序排列,ascending)

(1) 在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\bsort.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {4, 5, 8, 1, 3,2,7};
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,t,k;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:排序前 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
   
    printf("\n3:氣泡排序中…");
    for (i=0;i<size-1;i++){
        for (j=0;j<size-i;j++){
            if (a[j]>a[j+1]) {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;       
            }
        }
        printf("\n i=%3d a[]=",i);
        for (k = 0; k < size; k++) printf("%3d",a[k]);
    }
   
    printf("\n3:排序後 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n");

    return (0);
}

 

(2)按F11編譯並執行,bsort.cpp執行結果如下:


1:數列長度=7 ,數列註標由0開始,最末數的註標為6
2:排序前 a[]=  4  5  8  1  3  2  7
3:氣泡排序中…
 i=  0 a[]=  4  5  1  3  2  7  8
 i=  1 a[]=  4  1  3  2  5  7  8
 i=  2 a[]=  1  3  2  4  5  7  8
 i=  3 a[]=  1  2  3  4  5  7  8
 i=  4 a[]=  1  2  3  4  5  7  8
 i=  5 a[]=  1  2  3  4  5  7  8
3:排序後 a[]=  1  2  3  4  5  7  8

 

(3)在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\ssort.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {9, 5, 8, 1, 3,2,7};
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,k,t;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:排序前 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
   
    printf("\n3:選擇排序中…");
    for (i=0;i<size-1;i++){
        int mini=i;
        for (j=i+1;j<size;j++){
            if (a[j]<a[mini]) mini=j;
        }
        printf("\n i=%d 交換前a[%d]=%d , a[%d]=%d mini=%d 交換後a[]=",i,i,a[i],mini,a[mini],mini);
        t=a[mini];
        a[mini]=a[i];
        a[i]=t;
        for (k = 0; k < size; k++) printf("%3d",a[k]);

    }
   
    printf("\n4:排序後 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n");

    return (0);
}

 

(4)按F11編譯並執行,ssort.cpp執行結果如下:

1:數列長度=7 ,數列註標由0開始,最末數的註標為6
2:排序前 a[]=  9  5  8  1  3  2  7
3:選擇排序中…
 i=0 交換前a[0]=9 , a[3]=1 mini=3 交換後a[]=  1  5  8  9  3  2  7
 i=1 交換前a[1]=5 , a[5]=2 mini=5 交換後a[]=  1  2  8  9  3  5  7
 i=2 交換前a[2]=8 , a[4]=3 mini=4 交換後a[]=  1  2  3  9  8  5  7
 i=3 交換前a[3]=9 , a[5]=5 mini=5 交換後a[]=  1  2  3  5  8  9  7
 i=4 交換前a[4]=8 , a[6]=7 mini=6 交換後a[]=  1  2  3  5  7  9  8
 i=5 交換前a[5]=9 , a[6]=8 mini=6 交換後a[]=  1  2  3  5  7  8  9
4:排序後 a[]=  1  2  3  5  7  8  9

 

(5)在DEV-C++中按CTRL+N編寫如下程式碼並存為d:\isort.cpp (按CTRL+S可存檔)

#include <stdio.h>
int main(void)
{
    int a[] = {9, 5, 8, 1, 3 , 2 , 7};
    int size =sizeof(a)/sizeof(a[0]) ;
    int i,j,k,t;
    printf("\n1:數列長度=%d ,數列註標由0開始,最末數的註標為%d",size,size-1);
    printf("\n2:排序前數列 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
   
    printf("\n3:插入排序中…");
    for (i=0;i<size-1;i++){
        printf("\n i=%d 待插入元素為a[%d]=%d 插入後 a[]=",i,i+1,a[i+1]);
        for (j=i+1;j>0;j--){
            if (a[j]>a[j-1]) break;
            else{
                t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }
        }
        for (k = 0; k < size; k++) printf("%3d",a[k]);
    }
   
    printf("\n4:排序後數列 a[]=");
    for (i = 0; i < size; i++) printf("%3d",a[i]);
    printf("\n");

    return (0);
}

(6)按F11編譯並執行,isort.cpp執行結果如下:

1:數列長度=7 ,數列註標由0開始,最末數的註標為6
2:排序前數列 a[]=  9  5  8  1  3  2  7
3:插入排序中…
 i=0 待插入元素為a[1]=5 插入後 a[]=  5  9  8  1  3  2  7
 i=1 待插入元素為a[2]=8 插入後 a[]=  5  8  9  1  3  2  7
 i=2 待插入元素為a[3]=1 插入後 a[]=  1  5  8  9  3  2  7
 i=3 待插入元素為a[4]=3 插入後 a[]=  1  3  5  8  9  2  7
 i=4 待插入元素為a[5]=2 插入後 a[]=  1  2  3  5  8  9  7
 i=5 待插入元素為a[6]=7 插入後 a[]=  1  2  3  5  7  8  9
4:排序後數列 a[]=  1  2  3  5  7  8  9

 

20191115用python編寫插入排序法程式(採升序排列,ascending)
2019/11/15,09:19

(一)編寫isort.py 程式碼如下:

a= [-1, 4, 8, 6, 5]
print ("\n1:插入排序前: \n a=",a)

print ("\n2:排序過程…")
for i in range(1,len(a)-1):
    print ("\nStep i=", i, "\n a=",a)
    waiti=i+1
    print ("a[waiti]=", a[waiti]," at " ,waiti)


   
print ("\n3:插入排序之後 \n a=",a)

未成待續

 

(二)初步執行結果

1:插入排序前:
 a= [-1, 4, 8, 6, 5]

2:排序過程…

Step i= 1
 a= [-1, 4, 8, 6, 5]
a[waiti]= 8  at  2

Step i= 2
 a= [-1, 4, 8, 6, 5]
a[waiti]= 6  at  3

Step i= 3
 a= [-1, 4, 8, 6, 5]
a[waiti]= 5  at  4

3:插入排序之後
 a= [-1, 4, 8, 6, 5]


20191113延伸標示語言(XML)和gpx航跡檔
2019/11/13,21:21

(一a)請下載 20190805-10喀西帕南山東南稜未成d4.gpx

下載 (385 KB) | created 13 八月, 2019

(一b)用notepad記事本開啟(一a)下載的gpx檔

alt

(二a)下載並安裝firefox

(二b)用firefox 開啟(一a)下載的gpx檔

alt

 

alt

(三a)下載並安裝google earth

(三b)用google earth 開啟(一a)下載的gpx檔

alt

(四a)下載並安裝BaseCamp(安裝完成重開機才會生效)。

2019/10/30

BaseCamp 4.7.1版軟體更新下載

Download下載軟體(61.58 MB)

(四b)用BaseCamp 開啟(一a)下載的gpx檔

(四c)在 魯地圖 Taiwan TOPO 下載Install_MOI_Taiwan_TOPO_camp.exe([mirror Rex])並安裝Taiwan TOPO 魯地圖

(四d)重啟BaseCamp 並開啟(一a)下載的gpx檔

alt

(五)在android手機安裝綠野遊蹤APP並開啟(一a)下載的gpx檔

alt

(六)在android手機安裝oruxmap APP並開啟(一a)下載的gpx檔

alt

 

參考:


20191111用python編寫選擇排序法程式(採升序排列,ascending)
2019/11/11,20:09

(一)編寫ssort.py 程式碼如下:

cs= [-1, 5, 8, 1, 3]
print ("\n1:選擇排序前: \ncs=",cs)

print ("\n2:排序過程…")
for i in range(1,len(cs)-1):
    print ("\nStep i=", i, "\ncs=",cs)
    mini=i
    print ("mini=", mini)
    for j in range(i+1,len(cs)):
            if cs[j] < cs[mini] :
                mini=j
                print ("j=",j,"mini 調整為",mini)
            else:
                print ("j=",j,"mini 仍為",mini)
    
    print ("swap(",cs[i],",", cs[mini],") at i=",i, "mini=", mini)
    t=cs[mini]
    cs[mini]=cs[i]
    cs[i]=t
    print ("=>cs=",cs)

print ("\n3:選擇排序之後 \ncs=",cs)

(二)執行結果如下: $ python3.7 ssort.py
1:選擇排序前:
cs= [-1, 5, 8, 1, 3]

2:排序過程…

Step i= 1
cs= [-1, 5, 8, 1, 3]
mini= 1
j= 2 mini 仍為 1
j= 3 mini 調整為 3
j= 4 mini 仍為 3
swap( 5 , 1 ) at i= 1 mini= 3
=>cs= [-1, 1, 8, 5, 3]

Step i= 2
cs= [-1, 1, 8, 5, 3]
mini= 2
j= 3 mini 調整為 3
j= 4 mini 調整為 4
swap( 8 , 3 ) at i= 2 mini= 4
=>cs= [-1, 1, 3, 5, 8]

Step i= 3
cs= [-1, 1, 3, 5, 8]
mini= 3
j= 4 mini 仍為 3
swap( 5 , 5 ) at i= 3 mini= 3
=>cs= [-1, 1, 3, 5, 8]

3:選擇排序之後
cs= [-1, 1, 3, 5, 8]

 

20191111用python設計氣泡排序法(採升序排列,ascending)
2019/11/11,09:25

(一)編寫bsort.py 程式碼如下:   bsort.py下載 (484 bytes) | created 11 十一月, 2019

cs = [-1,5,8,1,3]
print ("1:Before bubble sort: cs=",cs)


print ("2: Sorting.........")
for i in range(1,len(cs)-1):
    print ("Step i=", i)
    for j in range(1,len(cs)-i):
            if cs[j] > cs[j+1] :
                print ("    swap at j=",j, "(",cs[j] ,",",cs[j+1],")")
                t=cs[j]
                cs[j]=cs[j+1]
                cs[j+1]=t
            else:
                print ("    no swap at j=",j, "(",cs[j] ,",",cs[j+1],")")

            print ("    =>cs=",cs, "j=",j)

    print
  
print ("3:After bubble sort: cs=",cs)

(二)執行結果如下:

1:Before bubble sort: cs= [-1, 5, 8, 1, 3]
2: Sorting.........
Step i= 1
    no swap at j= 1 ( 5 , 8 )
    =>cs= [-1, 5, 8, 1, 3] j= 1
    swap at j= 2 ( 8 , 1 )
    =>cs= [-1, 5, 1, 8, 3] j= 2
    swap at j= 3 ( 8 , 3 )
    =>cs= [-1, 5, 1, 3, 8] j= 3
Step i= 2
    swap at j= 1 ( 5 , 1 )
    =>cs= [-1, 1, 5, 3, 8] j= 1
    swap at j= 2 ( 5 , 3 )
    =>cs= [-1, 1, 3, 5, 8] j= 2
Step i= 3
    no swap at j= 1 ( 1 , 3 )
    =>cs= [-1, 1, 3, 5, 8] j= 1
3:After bubble sort: cs= [-1, 1, 3, 5, 8]

 

(三)執行結果2如下(修改第一行程式碼為 cs= [-1, 5, 8, 1, 3, 44, 33, 2, 21])

1:Before bubble sort: cs= [-1, 5, 8, 1, 3, 44, 33, 2, 21]
2: Sorting.........
Step i= 1
    no swap at j= 1 ( 5 , 8 )
    =>cs= [-1, 5, 8, 1, 3, 44, 33, 2, 21] j= 1
    swap at j= 2 ( 8 , 1 )
    =>cs= [-1, 5, 1, 8, 3, 44, 33, 2, 21] j= 2
    swap at j= 3 ( 8 , 3 )
    =>cs= [-1, 5, 1, 3, 8, 44, 33, 2, 21] j= 3
    no swap at j= 4 ( 8 , 44 )
    =>cs= [-1, 5, 1, 3, 8, 44, 33, 2, 21] j= 4
    swap at j= 5 ( 44 , 33 )
    =>cs= [-1, 5, 1, 3, 8, 33, 44, 2, 21] j= 5
    swap at j= 6 ( 44 , 2 )
    =>cs= [-1, 5, 1, 3, 8, 33, 2, 44, 21] j= 6
    swap at j= 7 ( 44 , 21 )
    =>cs= [-1, 5, 1, 3, 8, 33, 2, 21, 44] j= 7
Step i= 2
    swap at j= 1 ( 5 , 1 )
    =>cs= [-1, 1, 5, 3, 8, 33, 2, 21, 44] j= 1
    swap at j= 2 ( 5 , 3 )
    =>cs= [-1, 1, 3, 5, 8, 33, 2, 21, 44] j= 2
    no swap at j= 3 ( 5 , 8 )
    =>cs= [-1, 1, 3, 5, 8, 33, 2, 21, 44] j= 3
    no swap at j= 4 ( 8 , 33 )
    =>cs= [-1, 1, 3, 5, 8, 33, 2, 21, 44] j= 4
    swap at j= 5 ( 33 , 2 )
    =>cs= [-1, 1, 3, 5, 8, 2, 33, 21, 44] j= 5
    swap at j= 6 ( 33 , 21 )
    =>cs= [-1, 1, 3, 5, 8, 2, 21, 33, 44] j= 6
Step i= 3
    no swap at j= 1 ( 1 , 3 )
    =>cs= [-1, 1, 3, 5, 8, 2, 21, 33, 44] j= 1
    no swap at j= 2 ( 3 , 5 )
    =>cs= [-1, 1, 3, 5, 8, 2, 21, 33, 44] j= 2
    no swap at j= 3 ( 5 , 8 )
    =>cs= [-1, 1, 3, 5, 8, 2, 21, 33, 44] j= 3
    swap at j= 4 ( 8 , 2 )
    =>cs= [-1, 1, 3, 5, 2, 8, 21, 33, 44] j= 4
    no swap at j= 5 ( 8 , 21 )
    =>cs= [-1, 1, 3, 5, 2, 8, 21, 33, 44] j= 5
Step i= 4
    no swap at j= 1 ( 1 , 3 )
    =>cs= [-1, 1, 3, 5, 2, 8, 21, 33, 44] j= 1
    no swap at j= 2 ( 3 , 5 )
    =>cs= [-1, 1, 3, 5, 2, 8, 21, 33, 44] j= 2
    swap at j= 3 ( 5 , 2 )
    =>cs= [-1, 1, 3, 2, 5, 8, 21, 33, 44] j= 3
    no swap at j= 4 ( 5 , 8 )
    =>cs= [-1, 1, 3, 2, 5, 8, 21, 33, 44] j= 4
Step i= 5
    no swap at j= 1 ( 1 , 3 )
    =>cs= [-1, 1, 3, 2, 5, 8, 21, 33, 44] j= 1
    swap at j= 2 ( 3 , 2 )
    =>cs= [-1, 1, 2, 3, 5, 8, 21, 33, 44] j= 2
    no swap at j= 3 ( 3 , 5 )
    =>cs= [-1, 1, 2, 3, 5, 8, 21, 33, 44] j= 3
Step i= 6
    no swap at j= 1 ( 1 , 2 )
    =>cs= [-1, 1, 2, 3, 5, 8, 21, 33, 44] j= 1
    no swap at j= 2 ( 2 , 3 )
    =>cs= [-1, 1, 2, 3, 5, 8, 21, 33, 44] j= 2
Step i= 7
    no swap at j= 1 ( 1 , 2 )
    =>cs= [-1, 1, 2, 3, 5, 8, 21, 33, 44] j= 1
3:After bubble sort: cs= [-1, 1, 2, 3, 5, 8, 21, 33, 44]


20191109製作Ubuntu1604Linux安裝隨身碟並將之安裝到另一顆隨身碟中。
2019/11/06,21:34

(一)確定待裝電腦可以開機並記下重要硬體資訊及網路組態(如IP位址),如是Linux可以行lscpu、lsblk 及 uname -a、ifconfig,windows請在cmd命令提示字元下執行ipconfig查IP位址。

$ lscpu
Architecture:          x86_64
CPU 作業模式:    32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                12
On-line CPU(s) list:   0-11
每核心執行緒數:2
每通訊端核心數:6
Socket(s):             1
NUMA 節點:         1
供應商識別號:  GenuineIntel
CPU 家族:          6
型號:              158
Model name:            Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
製程:              10
CPU MHz:             800.024
CPU max MHz:           4600.0000
CPU min MHz:           800.0000
BogoMIPS:              6384.00
虛擬:              VT-x
L1d 快取:          32K
L1i 快取:          32K
L2 快取:           256K
L3 快取:           12288K
NUMA node0 CPU(s):     0-11

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk
├─sda1   8:1    0   100M  0 part
├─sda2   8:2    0    17G  0 part
├─sda3   8:3    0 178.9G  0 part
└─sda4   8:4    0 541.8G  0 part
sdb      8:16   0 931.5G  0 disk
├─sdb1   8:17   0 540.9G  0 part
└─sdb2   8:18   0 390.6G  0 part
sdc      8:32   1  57.9G  0 disk
├─sdc1   8:33   1 476.9M  0 part /boot
├─sdc2   8:34   1   4.7G  0 part /
├─sdc3   8:35   1     1K  0 part
├─sdc5   8:37   1   4.7G  0 part /home
├─sdc6   8:38   1   953M  0 part /tmp
├─sdc7   8:39   1   8.4G  0 part /usr
├─sdc8   8:40   1   4.7G  0 part /var
└─sdc9   8:41   1   1.9G  0 part [SWAP]
sr0     11:0    1  1024M  0 rom 

$uname -a
Linux hrt 4.4.0-166-generic #195-Ubuntu SMP Tue Oct 1 09:36:25 UTC 2019 i686 i686 i686 GNU/Linux

$ ifconfig
eno1      Link encap:Ethernet  HWaddr bc:ee:7b:d9:0c:a4 
          inet addr:163.25.20.90  Bcast:163.25.20.255  Mask:255.255.255.0
          inet6 addr: fe80::beee:7bff:fed9:ca4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:978134 errors:0 dropped:22188 overruns:0 frame:0
          TX packets:35915 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:207794943 (207.7 MB)  TX bytes:2750670 (2.7 MB)
          Interrupt:20 Memory:f7c00000-f7c20000

(二)自https://www.ubuntu-tw.org 下載ubuntu1604的iso檔(約1.6GB).Ubuntu 桌面版本、16.04.6 LTS、64 位元版本

(三)在windows下載rufus-3.8.exe

(四)用rufus製作ubuntu安裝隨身碟

(1)置入一顆32GB舊的usb隨身碟並執行rufus-3.8.exe,

(2)選取ubuntu-16.04.6-desktop-amd64.iso並按最下方的執行鈕

alt

(3)製作開機隨身碟中…

(4)製作完成

(五)重開機按DEL鍵進入BIOS設定畫面,置入已備妥的UBuntu1604安裝隨身碟,

(1)選boot/設定Boot Option 1為你剛製作的Ubuntu安裝隨身碟(SanDisk 29327MB)

(2)按F10寫入設定並重開機

(六)進入Ubuntu安裝首頁/挑第1選項TryUbuntuWithoutInstall/登入後設定左上角的網路連線來連上網路(如有DHCP服務則不用設定)/確認可上網

以下供參考Manual網路組態:

IPv4 位址: 10.10.10.8
子網路遮罩: 255.255.255.0
預設閘道 : 10.10.10.254

dns: 163.25.20.1

search domain: kmvs.km.edu.tw

(七)點選執行桌面上的InstallUbuntu16.04.06LTS圖示進入安裝畫面

(1)挑中文(繁體)

(2)勾「安裝Ubuntu並同時下載更新」及「裝第3方軟體」

(3)置入另一顆隨身碟(SanDisk 64GB)

(4-1)安裝類型挑「清除磁碟並安裝Ubuntu」

alt

(4-2) 選取scsi8 61.5GB SanDisk USB隨身碟:(sde),按「立即安裝」。

alt

(5)出現SCSI8(sde)的磁碟分割表有更動,接受進行如下格式化:

sde #1 分割區將格式化為 ESP

sde #2 分割區將格式化為 ext4

sde #3 分割區將格式化為 swap(虛擬記憶體用)

(6)選Taipei

(7)鍵盤配置選漢語

(8)您的名稱用fire,電腦名稱用firePC,用戶名稱firep,密碼用abc123,勾「需要密碼才可登入」

alt

(9)安裝中…拷備檔案中…以superuser來安裝中…裝音樂、相片軟体中…裝Firefox瀏覽器中…裝LibreOpenoffice中…任何人都可任意存取

(10)安裝完成。

(八)拔掉UBuntu1604安裝隨身碟並重開機

(九)選擇以Ubuntu開機,以用戶fire輸入密碼abc123來登入ubuntu成功

(十)在ubutun桌面用firefox連上樹心幽徑第526篇文章成功。

(十一)參考文章:

ref 1:20190225安裝Ubuntu1604Linux作業系統

ref 2:20191029用rufus-3.8製作win10 USB安裝碟

ref 3: 2018Win10 and Ubuntu 雙系統安裝筆記

ref 4: 將 Ubuntu Linux 安裝在 USB 隨身碟中(20151023)

 

 

20191101-13安裝並使用國家發展委員會的ODF文件應用工具(NDC ODF Application Tool即OpenOffice)
2019/11/01,13:27

 20191120安裝並使用NDC-ODF-APP-LibreOffice.odt

下載 (242 KB) | created 13 十一月, 2019

 

REF 1:20181205安裝並使用LibreOffice.odt

(1)自國家發展委員會網站下載ODF文件應用工具(32位元版)並安裝之

軟體下載網址1.0.3版本(32位元)安裝檔alt 1.0.3版本(32位元)MD

(2)自 https://zh-tw.libreoffice.org/download/下載最新的LibreOffice 6.3.3(64位元版)並安裝之

32位元版(280MB):下載 https://donate.libreoffice.org/home/dl/win-x86/6.3.3/zh-TW/LibreOffice_6.3.3_Win_x86.msi

64位元版(303MB):下載 https://donate.libreoffice.org/home/dl/win-x86_64/6.3.3/zh-TW/LibreOffice_6.3.3_Win_x64.msi

 

20191101-1108安裝NDC的LibreOpenoffice並使用calc電子試算表來處理「桃園市汽車竊盜點位csv檔」
2019/11/01,08:48

(0)自國家發展委員會網站下載ODF文件應用工具(Libre版的OpenOffice)並安裝之

軟體下載網址1.0.3版本(32位元)安裝檔alt 1.0.3版本(32位元)MD

(1)下載桃園市汽車竊盜點位如下:10806_2.csv下載 (221 KB) | created 31 十月, 2019

(2)將如上檔案以LibreOpeOffice 的Calc試算表軟體打開

(3)出現文字匯入交談視窗:字元集請選取UTF-8

alt

(4)存檔並選取ODS檔案格式,存為「d:\20191101你名你號.ods」

(5)在K1輸入dis,在L1輸入rank、O1輸入lat、p1輸入lon 

(6)在n2輸入待評估,O2輸入24.93、p2輸入121.26

(7-1)在k2輸入公式「 =SQRT((O$2-H2)*(O$2-H2)+(P$2-I2)*(P$2-I2))」

(7-2)把k2的公式拷給第k欄的其他所有儲存格(k3:k2844)

(8)在J2輸入BREAU2在J2輸入公式 =F2並把J2的公式拷給第J欄的其他所有儲存格(J3:J2844)

(9)選a1:j2844/資料/排序/排序第1鍵選BREAU:升序/排序第2鍵選TIME:降序

(10)在L2輸入公式 「=RANK(K2,K$2:K$2844,1) 」 並將此公式拷給其他L欄儲存格(L3:L2844)

(11)在M5輸入公式 「=COUNTIFS(J:J,"=" & N5,L:L,"<10") 」並將之拷給M6及M7

(12)在N5輸入「八德分局」,在N6輸入「大溪分局」,在N7輸入「桃園分局

(13)在M9輸入「最大值」,在M10輸入公式=MAX(M5:M7)

(14)在N10輸入公式「=VLOOKUP(M10,M5:N7,2)」

alt

(15-1)選取H1:H15(lat緯度資料欄)、再選取I1:I15(lon經度資料欄)、再選取K1:K15(dis:和評估點距離欄)。

(15-2)選取插入功能表/圖表/挑泡泡圖/資料範圍接受「以欄表示的資料列」、勾第一列作為標籤

        /「資料序列」接受預設值/完成。

(15-3)點選泡泡圖的泡泡,將其顏色改為橙色,如下圖。

alt

(16-1)篩選出最近前十名:

選取A1:L2844/資料/更多篩選/標準篩選/勾「範圍含有欄標籤」(如下圖)/設定條件為rank<10/確定

alt

(16-2)再次回存為「d:\20191108你名你號.ods」

(17-1) 將本檔上傳至google雲端硬碟,用google試算表打開。

(17-2) 在A2851 輸入 =query(A1:J2844,"select G,H,I where G='八德所'")

(17-3) 在H2851 輸入 =query(A1:J2844,"select G,avg(H),avg(I) group by G")

(17-4) 在L2851 輸入 =query(A1:J2844,"select G,avg(H),avg(I) where F='大溪分局' group by G")

查詢結果如下圖:

alt



 

 
Accessible and Valid XHTML 1.0 Strict and CSS Powered by LifeType