Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;基于用户输入字符串长度创建二维数组_C++_Multidimensional Array - Fatal编程技术网

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;
      }
    }