将字符串转换为矩阵数组

问题描述 投票:-4回答:1

需要开发一个程序来执行Matrix操作。该程序使用定义的字符串格式来表示用户输入和输出部分中的矩阵。对于以下矩阵:examplee:用户输入Matrix的字符串表示形式:ex:[10 2.13 3; -5 0 4; 16.5 1 8]在程序中,用户输入定义的字符串格式的矩阵,然后要求进入运营商

所以我无法将此字符串转换为数组以使操作为sum或multiply

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)));
        } 
    }
}
c++ arrays string matrix substring
1个回答
1
投票

一种解析/读取矩阵的算法

[10 2.13 3;-5 0 4;16.5 1 8]

可能:

  1. 指数colrow0初始化。
  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数组。
© www.soinside.com 2019 - 2024. All rights reserved.