将字符串转换为矩阵数组

Convert string into array of matrix

本文关键字:数组 字符串 转换      更新时间:2023-10-16

需要开发一个程序来执行矩阵操作。程序使用 定义的字符串格式,用于表示用户输入和输出中的矩阵 部分。对于以下矩阵: 示例:用户输入矩阵的字符串表示: 例:[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]

可能是:

  1. 索引colrow使用0初始化。

  2. 跳过输入字符串的字符直到找到'['的循环。

  3. 一个循环,它使用以下处理方式读取字符的输入字符串字符

    • '0''1'、...、'9''+''-''.''e''E':收集字符(它是数字的一部分。
    • ' ':如果有收集的字符,将它们转换为float(例如使用strtod()),将结果存储在矩阵元素(rowcol),然后递增col
    • ';':如果有收集到的字符,将它们转换为float(例如使用strtod()),将结果存储在矩阵元素中(rowcol)。
      递增row并将col重置为0
    • ']':如果有收集到的字符,将它们转换为float(例如使用strtod()),将结果存储在矩阵元素中(rowcol)。
      此矩阵的读取已完成。

    • 其他一切都是语法错误。

笔记:

  • strtod()有第二个参数,该参数返回指向第一个不接受的字符的指针。应检查它是否指向收集字符的末尾。(否则,算法可能会接受例如"1.23+1"1.23,没有注意到+处的语法错误。

  • 上述算法也可以/应该返回收集的行数和列数。

  • 每当启动新行时,都应该/可以在前一行是否完整之前检查列。(这不包括实际定义有多少列的第一行。

  • 应考虑最大可能的行数和列数以及双暗数。使用 C 数组。