首页 > 解决方案 > C++ 从结构中调用字符串会停止程序

问题描述

我是 C++ 的初学者。我感谢任何可以改进我的代码的建议,但我真正想要的是解释为什么我当前的代码没有返回我想要的。

#include <iostream>
#include <string>
using namespace std;


struct MATRIX {
  float values[1][1];
  string names;
};

MATRIX get_matrix(string name, MATRIX m){
  m.names = name;
  cout << "Enter values of 2x2 Matrix:" << endl;
  cin >> m.values[0][0];
  cin >> m.values[0][1];
  cin >> m.values[1][0];
  cin >> m.values[1][1];
  return m;
}
// end get_matrix1

MATRIX get_matrix2(string name2, MATRIX m2){
  m2.names = name2;
  cout << "Enter values of 2x2 Matrix:" << endl;
  cin >> m2.values[0][0];
  cin >> m2.values[0][1];
  cin >> m2.values[1][0];
  cin >> m2.values[1][1];
  return m2;
}


int main(){

string testname;
MATRIX matrixtest;
string testname2;
MATRIX matrixtest2;
cout << "Name 1st Matrix:" << endl;
cin >> testname;
MATRIX result = get_matrix(testname, matrixtest);




cout << "Name 2nd Matrix:" << endl;
cin >> testname2;
MATRIX result2 = get_matrix2(testname2, matrixtest2);



cout << "[" << result.values[0][0] << "," << result.values[0][1] << "]" << endl;
cout << "[" << result.values[1][0] << "," << result.values[1][1] << "]" << endl << endl;

cout << "[" << result2.values[0][0] << "," << result2.values[0][1] << "]" << endl;
cout << "[" << result2.values[1][0] << "," << result2.values[1][1] << "]" << endl << endl;

}





它应该返回矩阵的名称及其值。每当它在结果中遇到名称成员时,它就会停止程序。

编辑:更新到当前代码

标签: c++matrix

解决方案


您必须指定元素的数量,而不是最大索引,才能在 C++ 中声明数组。

有了这个声明

  float values[1][1];

只有values[0][0]可用。

声明应该是

  float values[2][2];

推荐阅读