湘南工科大学 2014年1月14日 情報理論2 湘南工科大学情報工学科 准教授 小林 学 [前回の課題1解答] 連続一致文字数の最大値と,最大値の位置(i)を 出力しなさい Page 2 #include<stdio.h> int Dat[16]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1}; int Icchicho(int n){ int i, count=0; } // n 番目と8番目から連続一致する長さを返す for(i=0; i<8; i++){ if(Dat[i+n] == Dat[i+8]) count++; else break; void main(void){ } int ans, i, max, pos; return(count); } max=0; pos=0; for(i=0; i<8; i++){ ans = Icchicho(i); if(ans > max){ max = ans; pos = i; } } printf("pos:%d, max:%d\n",pos,max); [用紙の課題1] 以下のプログラムの出力を書きなさい. Page 3 #include<stdio.h> int Dat[16]={0,1,2,0,2,0,0,1,2,0,0,2,1,-1}; int Icchicho(int n){ int i, count=0; } // n 番目と8番目から連続一致する長さを返す for(i=0; i<8; i++){ if(Dat[i+n] == Dat[i+8]) count++; else break; } return(count); void main(void){ int ans, i, max, pos; } max=0; pos=0; for(i=0; i<8; i++){ ans = Icchicho(i); if(ans > max){ max = ans; pos = i; } printf(“i:%d, pos:%d, max:%d\n",i, pos,max); } [前回の課題2解答] Shift関数を用いて「最大連続一致文字数+1」だけ 配列Dat を Shift させなさい. #include<stdio.h> int Dat[16]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1}; int Icchicho(int n){ ・・同じ・・ } void Shift(int n){ int i; for(i=0; i<16-n; i++) Dat[i] = Dat[i+n]; } void main(void){ int ans, i, max, pos; } max=0; pos=0; for(i=0; i<8; i++){ ・・同じ・・ } printf("pos:%d, max:%d\n",pos,max); Shift(max+1); Page 4 [用紙の課題2]以下のプログラムの出力を書きなさい. #include<stdio.h> int Dat[16]={0,1,2,0,2,0,0,1,2,0,0,2,1,-1}; int Icchicho(int n){ ・・同じ・・ } void Shift(int n){ int i; for(i=0; i<16-n; i++) Dat[i] = Dat[i+n]; } void main(void){ int ans, i, max, pos; } max=0; pos=0; for(i=0; i<8; i++){ ・・同じ・・ } Shift(max+1); for(i=0;i<16;i++) printf("%d ",Dat[i]); Page 5 [前回の課題3解答] (最大連続一致位置,最大連続一致数,一致しなかった数値)」 を画面に出力すること.一致しなかった数値が「-1」の場合,出力して終了とすること. #include<stdio.h> int Dat[16]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1}; int Icchicho(int n){ ・・同じ・・ } void Shift(int n){ ・・同じ・・ } void main(void){ int ans, i, max, pos; } while(1){ max=0; pos=0; for(i=0; i<8; i++){ ・・同じ・・ } printf("(%d,%d,%d)\n",pos,max,Dat[8+max]); if(Dat[8+max]==-1) break; Shift(max+1); } [用紙の課題3]以下のプログラムの出力を書きなさい. #include<stdio.h> int Dat[16]={0,1,2,0,2,0,0,1,2,0,0,2,1,-1}; int Icchicho(int n){ ・・同じ・・ } void Shift(int n){ ・・同じ・・ } void main(void){ int ans, i, max, pos; } while(1){ max=0; pos=0; for(i=0; i<8; i++){ ・・同じ・・ } printf("(%d,%d,%d)\n",pos,max,Dat[8+max]); if(Dat[8+max]==-1) break; Shift(max+1); } [プログラミング課題1] 以下のプログラムを作成しなさい Page 8 #include<stdio.h> #define MADO 8 int Dat[2*MADO]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1}; int Icchicho(int n){ int i, count=0; } // n 番目と8番目から連続一致する長さを返す for(i=0; i<MADO; i++){ if(Dat[i+n] == Dat[i+MADO]) count++; else break; } void main(void){ return(count); int ans, i, max, pos; } max=0; pos=0; for(i=0; i<MADO; i++){ ans = Icchicho(i); if(ans > max){ max = ans; pos = i; } printf("i:%d, pos:%d, max:%d\n",i, pos,max); } [プログラミング課題2] 以下のプログラムを作成しなさい Page 9 #include<stdio.h> #define MADO 8 int Dat[2*MADO]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1}; int Icchicho(int n){ ・・同じ・・ } void Shift(int n){ int i; for(i=0; i<2*MADO-n; i++) Dat[i] = Dat[i+n]; } void main(void){ int ans, i, max, pos; } max=0; pos=0; for(i=0; i<MADO; i++){ ・・同じ・・ printf("pos:%d, max:%d\n",pos,max); Shift(max+1); } [プログラミング課題3] 以下のプログラムを作成しなさい #include<stdio.h> #define MADO 8 int Dat[2*MADO]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1}; int Icchicho(int n){ ・・同じ・・ } void Shift(int n){ ・・同じ・・ } void main(void){ int ans, i, max, pos; } while(1){ max=0; pos=0; for(i=0; i<MADO; i++){ ・・同じ・・ } printf("(%d,%d,%d)\n",pos,max,Dat[MADO+max]); if(Dat[MADO+max]==-1) break; Shift(max+1); }
© Copyright 2024 ExpyDoc