OpenedList::OpenedList( const Location& location, const QString& hint ) : sty( Bullet ), ini( 1 ) { QRegExp hintSyntax( "(\\W*)([0-9]+|[A-Z]+|[a-z]+)(\\W*)" ); if ( hintSyntax.exactMatch(hint) ) { bool ok; int asNumeric = hint.toInt( &ok ); int asRoman = fromRoman( hintSyntax.cap(2) ); int asAlpha = fromAlpha( hintSyntax.cap(2) ); if ( ok ) { sty = Numeric; ini = asNumeric; } else if ( asRoman > 0 && asRoman != 100 && asRoman != 500 ) { sty = ( hint == hint.toLower() ) ? LowerRoman : UpperRoman; ini = asRoman; } else { sty = ( hint == hint.toLower() ) ? LowerAlpha : UpperAlpha; ini = asAlpha; } pref = hintSyntax.cap( 1 ); suff = hintSyntax.cap( 3 ); } else if ( !hint.isEmpty() ) { location.warning( tr("Unrecognized list style '%1'").arg(hint) ); } nex = ini - 1; }
int main(){ FILE *file = fopen("roman.txt", "r"); if(!file){ return 1; } int saved = 0; { char buf[26];//Maximum number is MMMMCMDCCCCXCLXXXXIXVIIII, 25 letters long int value, len; for(;fscanf(file, "%25s", buf) > 0;){//poor abused for loop value = fromRoman(buf, &len); saved += len - lenRoman(value); } } printf("%i\n", saved); fclose(file); }