刚才那个稍微修改了一下,错误还是一样的额
#include
#include
#include
#include
using namespace std;
const int maxrow=20;
const int maxelem=400;
template
class Triarray
{
public:
Triarray(int matsize);//构造函数
// void SeqString(char S[ ], char K[ ]);
~Triarray(){}//析构函数
void putele( T item,int i,int j);//将矩阵元素item存储到i行j列
void readmat();//矩阵元素输入
T getele(int i,int j);//取i行j列的元素
void out();//输出矩阵元素
bool getij(int i,int j);//判断是否越界
void BF(T s[],T t[]);//模式匹配
T arr[maxelem];//一维数组,用于储存矩阵元素
void print(T ch[]);
private:
int n;//矩阵阶数
int k;//
};
template
Triarray::Triarray(int matsize)
{
n=matsize;
}
template
bool Triarray::getij(int i,int j)
{
if((i<1||i>n)||(j<1||j>n))
{cout<
return true;
}
template
void Triarray::putele(T item,int i,int j)
{
if(getij(i,j))
{
k=(i-1)*n+j;
arr[k]=item;
}
cout<
}
template
void Triarray::readmat()
{
T item;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
{
cin>>item;
putele(item,i,j);
}
}
template
T Triarray::getele(int i,int j)
{
T item;int k1;
if(getij(i,j))
{
k1=(i-1)*n+j;
}
item=arr[k1];
return item;
}
template
void Triarray::out()
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
cout<
cout<
}
}
//模式匹配算法
template
void Triarray::BF(T arr[],T t[])
{
int i=0,j=0,n,m; n=strlen(arr); m=strlen(t);
while(i
{
if(arr[i]==t[j])
{
i++; j++;
}
else { i=i-j+1; j=0; }
}
if (j>=m)
{ print(t);cout<
else
{ print(t);cout<
}
template
void Triarray::print(T ch[] )
{
int n=strlen(ch);
for (int j=0;j
cout<
}
void main()
{
char s1[]="this";
char s2[]="two";
char s3[]="fat";
char s4[]="that";
int n;
cout<
cin>>n;
Triarraya(n);
a.readmat();
cout<
a.out();
a.BF(a,s1);
/* for(int k=0;k!=n;++k)
{
cout<
string t;
getline(cin,t);
cout<
if(t=="faus")
cout<
else
cout<
}
string filename;
cout<
cin>>filename;
ofstream fout(filename.c_str());
fout<
fout<
fout<
fout<
// fstream fin(filename.c_str());
/* int i,j;
for(i=1;i<=n;++i)//矩阵输出
{ for(j=1;j<=n;++j)
{
cout<
}
cout<
}
string t;
char line,h1;
cout<
cin>>h1;
for( i=1;i<=n;++i)//正对角元素输出
for( j=1;j<=n;++j)
{
if(j==i)
{
cout<
line=a.getele(i,j);
cout<
}
cout<
cout<
}
cout<
string h2;
cin>>h2;
for( i=n;i>=1;--i)//偏对角元素输出
for( j=1;j<=n;++j)
{
if(i==n+1-j)
cout<
}
cout<
}