예제 #1
0
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;
}
예제 #2
0
파일: p89.c 프로젝트: hacatu/project-euler
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);
}