将字符串转换为矩阵数组
Convert string into array of 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)));
}
}
}
一种解析/读取矩阵的算法,例如
[10 2.13 3;-5 0 4;16.5 1 8]
可能是:
-
索引
col
和row
使用0
初始化。 -
跳过输入字符串的字符直到找到
'['
的循环。 -
一个循环,它使用以下处理方式读取字符的输入字符串字符
'0'
、'1'
、...、'9'
、'+'
、'-'
、'.'
、'e'
、'E'
:收集字符(它是数字的一部分。' '
:如果有收集的字符,将它们转换为float
(例如使用strtod()
),将结果存储在矩阵元素(row
,col
),然后递增col
。';'
:如果有收集到的字符,将它们转换为float
(例如使用strtod()
),将结果存储在矩阵元素中(row
,col
)。
递增row
并将col
重置为0
。-
']'
:如果有收集到的字符,将它们转换为float
(例如使用strtod()
),将结果存储在矩阵元素中(row
,col
)。
此矩阵的读取已完成。 -
其他一切都是语法错误。
笔记:
-
strtod()
有第二个参数,该参数返回指向第一个不接受的字符的指针。应检查它是否指向收集字符的末尾。(否则,算法可能会接受例如"1.23+1"
1.23
,没有注意到+
处的语法错误。 -
上述算法也可以/应该返回收集的行数和列数。
-
每当启动新行时,都应该/可以在前一行是否完整之前检查列。(这不包括实际定义有多少列的第一行。
-
应考虑最大可能的行数和列数以及双暗数。使用 C 数组。
相关文章:
- 使用 jsoncpp 解析 json 数组字符串
- C++ 对象数组字符串输入在控制台上不起作用
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 无法区分 JSON 对象/数组/字符串
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何使用数组字符串进行输入验证
- (C++) 打印字符数组字符串的单词时出现问题
- 使用Back_inserter从任何位置的输入字符中使用Back_inserter进行过滤数组字符串
- C 函数反转字符数组字符串
- 如何在 c++ 中创建数组(字符串 [] )的向量
- 如何返回数组字符串的指针
- char数组字符串混淆
- 如何从字符数组字符串中提取空格
- 是否可以将 Bitset<8> 的值复制到数组字符串而不转换它们?
- C++数组字符串函数
- 如何在函数中操作字符数组(字符串)的指针,该指针在C / C ++中作为参数传递
- visual将音频文件存储到数组/字符串流C++中
- c++在char数组(字符串)上将what替换为
- 将数组字符串转换为intger c++(初学者)
- 需要设置数组字符串长度,使其恰好为13