【问题标题】:error in storing elements in array在数组中存储元素时出错
【发布时间】:2016-09-05 12:37:15
【问题描述】:

我正在尝试将字符串类型的数字存储到二维数组中。将字符串存储为数字时,它根本不存储它,而是显示0000

while(m<sm)             /*storing string into integer array */
 {
    if(isdigit(input4[m]))      /* string to 2D array conversion*/
    {
        K=input4[m]-'0';
        K1=input4[m+2]-'0'; // changed from m+1 to m+2
        cout<<K<<"\t"<<K1;
       arr[K][K1]=2;
    cout<<"\n";
    }

    m++;

 }

 for(int i =0; i<input1 ;i++){
    for(int j =0;j<input2;j++){
        cout<<arr[i][j];
    }
    cout<<endl;
 }

输入: 2,1,2,2,3,2,2,2,2,3,2,3,3,3,1,3

输出: 2 1 1 -4 2 2 2 -4 3 2 2 -4 2 2 2 -4 2 3 3 -4 2 3 3 -4 3 3 3 -4 1 3 3 -7 0000 0001 0111 0011

我的问题是第二列是什么?它应该是: 2 1 2 2 3 2 依此类推,因为这些是 K 和 K1 的值。我想将字符串形式的元素存储到二维数组中,方法是将两个常规元素与矩阵的坐标进行对话,然后我想将 1 存储在坐标 K 和 K1 处。它仅在 6 个坐标上存储 1,但根据输入必须在 8 个坐标上。

【问题讨论】:

  • 你有没有逐句调试你的程序?我也无法重现。请发帖minimal reproducible example
  • @FirstStep: isdigit 是一个标准的 C 函数。
  • 是的。我使用了 bits/stdc++.h 一个头文件,isdigit 工作得非常好我已经调试它没有问题,但我不知道为什么它不在坐标位置存储 1
  • @DeepakMalhotra:这不是标准标题,isdigit 来自&lt;cstdlib&gt;。但这是一个不相关的问题(这就是为什么这是评论,而不是答案)
  • @DeepakMalhotra 不是检查编译器错误的编译器,而是允许您遍历执行代码的调试器。听起来您可能需要学习如何使用调试器来逐步执行代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs

标签: c++ arrays string c++11


【解决方案1】:

问题是 K1 是负数(如您所见),这意味着您拥有arr[K][K1] 的越界访问权限。显然 input4[m + 1] 不是数字,它似乎是分隔数字的逗号。

【讨论】:

  • 我已对代码进行了更改。我已将 m+1 更改为 m+2。
  • 是的,在商店 1 处的坐标,但只有 6 个坐标,但坐标总数为 8。
  • @DeepakMalhotra:我将把它留给您自己解决,很高兴看到您的 C++ 问题已解决。
  • 没有坐标的总数是 8 但它只在 6 个坐标上存储 1。其他两个坐标呢?
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2018-06-14
相关资源
最近更新 更多