C++ C++;基于用户输入字符串长度创建二维数组
我的任务是创建一个块转置密码程序。用户需要输入自己选择的短语,程序需要在读取短语长度并创建一个二维数组(大小为最接近的正方形,可容纳变异字符串中的所有字符),并用随机字母填充剩余空间之前,将短语中的空格、标点符号去掉,并使其小写 问题是,我在创建那个正方形时遇到了问题 到目前为止,我有:C++ C++;基于用户输入字符串长度创建二维数组,c++,multidimensional-array,C++,Multidimensional Array,我的任务是创建一个块转置密码程序。用户需要输入自己选择的短语,程序需要在读取短语长度并创建一个二维数组(大小为最接近的正方形,可容纳变异字符串中的所有字符),并用随机字母填充剩余空间之前,将短语中的空格、标点符号去掉,并使其小写 问题是,我在创建那个正方形时遇到了问题 到目前为止,我有: int main() { string input; cout << "Please enter message to cipher." << endl; get
int main()
{
string input;
cout << "Please enter message to cipher." << endl;
getline(cin, input);
/* do punctuation removal/mutation */
int strLength = input.length(); //after mutation
/* need to find the square here before applying sizes and values to arrays */
char * original = new char[][]; // sizes pending
char * transposed = new char[][]; // sizes pending
for (int i = 0; i <= /* size pending */ ; i++)
{
for (int j = 0; j <= /* size pending */ ; j++)
{
transposed[j][i] = original[i][j];
}
}
/* do more stuff here */
}
intmain()
{
字符串输入;
cout你可以取长度的平方根,四舍五入为整数,再加一得到新的长度
int len = (int)(sqrt(strLength) + 1e-9) + 1;
然后,你可以使用len
来malloc
正方形,然后像平常一样填充
char * original = new char[][];
首先,您试图创建一个数组数组(或指针指针数组)并将其分配给一个指针。您需要分两步执行:
分配“外部”数组:
分配“内部”字符串:
我相信您不需要“新建”来创建存储。以下代码应该可以完成这项工作:
char buf[size][size]; // size is a variable
... // populate your buf
char tmp;
for(int i = 0; i < size; i++) {
for(int j = 0; j < i; j++) {
tmp = buf[i][j];
buf[i][j] = buf[j][i];
buf[j][i] = tmp;
}
}
char buf[size][size];//size是一个变量
…//填充您的buf
char-tmp;
对于(int i=0;i
这会进行适当的转置。您不需要另一个数组来存储字符。它不是char**original
?
for (int i = 0; i < size; i++)
original[i] = new char [other_size];
std::vector< std::vector< std::string > > original;
char buf[size][size]; // size is a variable
... // populate your buf
char tmp;
for(int i = 0; i < size; i++) {
for(int j = 0; j < i; j++) {
tmp = buf[i][j];
buf[i][j] = buf[j][i];
buf[j][i] = tmp;
}
}