int Element::read (Scanner &scanner) { char str[3] = {0, 0, 0}; str[0] = scanner.readChar(); if (islower(scanner.lookNext())) str[1] = scanner.readChar(); return fromString(str); }
void GrossFormula::fromString (Scanner &scanner, Array<int> &gross) { gross.clear_resize(ELEM_MAX); gross.zerofill(); scanner.skipSpace(); while (!scanner.isEOF()) { int elem = Element::read(scanner); scanner.skipSpace(); int counter = 1; if (isdigit(scanner.lookNext())) { counter = scanner.readUnsigned(); scanner.skipSpace(); } gross[elem] += counter; } }