需要开发一个程序来执行Matrix运算。程序使用 定义的字符串格式来表示用户输入和输出中的矩阵 部分。对于以下矩阵: examplee:用户输入Matrix的字符串表示形式: 例如:[10 2.13 3; -5 0 4; 16.5 1 8] 在程序中,用户以定义的字符串格式输入矩阵,然后 要求输入操作员
所以我无法将此字符串转换为数组以求和或乘运算
using namespace std;
int main() {
int i, j, n;
string s1;
float m1[100][100];
getline(cin, s1);
for (int i = 0; i < 100; i++) {
for (n = 0; n < s1.length(); n++) {
if (isspace(s1.at(i)));
}
}
}
答案 0 :(得分:1)
一种解析/读取矩阵的算法,例如
[10 2.13 3;-5 0 4;16.5 1 8]
可能是:
索引col
和row
用0
初始化。
一个循环,该循环跳过输入字符串的字符,直到找到'['
。
一个循环,通过以下处理读取字符的输入字符串
'0'
,'1'
,...,'9'
,'+'
,'-'
,'.'
,'e'
,{ {1}}:收集字符(它是数字的一部分。)'E'
:如果收集了字符,请将它们转换为' '
(例如,使用float
),并将结果存储在矩阵元素(strtod()
,{{1 }}),然后再增加row
。col
:如果收集了字符,请将它们转换为col
(例如,使用';'
),并将结果存储在矩阵元素(float
,{{1 }})。strtod()
并将row
重置为col
。 row
:如果收集了字符,请将其转换为col
(例如,使用0
),将结果存储在矩阵元素(']'
中, float
。
读取完此矩阵。
其他所有内容都是语法错误。
注意:
strtod()
有第二个参数,该参数返回指向第一个不可接受字符的指针。应该检查它是否指向收集的字符的结尾。 (否则,该算法可能会接受strtod()
作为row
,而不会注意到col
上的语法错误。
上述算法还可以/还应该返回收集的行数和列数。
无论何时开始新行,都应该/可以在前一行是否已满之前检查这些列。 (这不包括实际上定义了多少列的第一行。)
应考虑最大可能的行数和列数以及二维。使用了C数组。