我不知道它为什么不起作用。更有甚者,我甚至不能说出什么是错误; / any1可以解释什么是错误吗?
代码适用于: 用像妈妈这样的单词创建一个字符串。 然后创建2d数组以按字符串填充它。自由空间填充_.So mom box =
[m] [o]
[m] [_]
现在使用colums后面的文本填充下一个数组。 mom_填充到新数组将看起来像mmo_。然后我cout加密文本。我希望你明白我在那里做了什么:D
这是代码
//wal = kolumny=wiersze
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
void pole(int &a,const int &l);
void tab(const char &s[],char &d[], char &f[],const int a);
int main(){
string code;
cin >> code;
int wall=1;
int d=code.length();
char tekst[d];
pole(wall,d);
strcpy(tekst,code);
char kw[wall][wall];
char szyfr[d];
tab(tekst,kw,szyfr,wall);
for (int i=0;i<d;i++)
cout << szyfr[i] << endl;
system("PAUSE");
return 0;
}
void pole(int &a,const int &l){
if (a*a < l)
pole(a+=1,l);
}
void tab(const char &s[],char &d[], char &f[],const int a){
int i=0;
for (int x=0;x<a;x++,i++){
for (int y=0;y<a;y++,i++){
if(s[i])
d[x][y]=s[i];
else d[x][y]=='_';
f[i]=d[x][y];
}
}
}
答案 0 :(得分:2)
d[x][y]
在tab
中没有任何意义.d是单维数组。您必须将第一个维度作为参数传递,并在索引时使用它。类似的东西:
void tab(const char &s[],char* &d, char &f[],const int a, int d_num_cols){
int i=0;
for (int x=0;x<a;x++,i++){
for (int y=0;y<a;y++,i++){
if(s[i])
d[x*d_num_cols + y]=s[i];
else d[x*d_num_cols + y]=='_';
f[i]=d[x*d_num_cols + y];
}
}
}