#include #include "lexer.h" #include "list.h" using namespace std; void readMatrix (Lexer & f) { List table; f.checkSeparator('{'); while (! f.isSeparator ('}')) { f.checkSeparator ('['); Item * line = new Item; table.linkLast (line); Item * cell = new Item; cell->value = f.readNumber(); line->inner.linkLast (cell); while (f.isSeparator (',')) { f.nextToken(); Item * cell = new Item; cell->value = f.readNumber(); line->inner.linkLast (cell); } f.checkSeparator (']'); if (f.isSeparator(',')) f.nextToken (); } f.checkSeparator('}'); int h = table.count (); int w = -1; Item * p = table.getFirst(); while (p != nullptr) { int n = p->inner.count (); if (w == -1) w = n; else if (w != n) f.error ("Bad line size"); p = p->getNext(); } cout << "Matice " << h << " x " << w << endl; double * * m = new double* [h]; { int i = 0; Item * a = table.getFirst(); while (a != nullptr) { double * line = new double [w]; m [i] = line; i ++; Item * b = a->inner.getFirst(); int k = 0; while (b != nullptr) { line [k] = b->value; k ++; b = b->getNext(); } a = a->getNext(); } } for (int i = 0; i < h; i++) { for (int k = 0; k < w; k++) cout << m[i][k] << " "; cout << endl; } } int main() { Lexer f ("../matice/abc.txt"); readMatrix (f); return 0; }