求助
查看原帖
求助
667452
Null_in_null楼主2023/9/24 21:32

求助,看了题解改过还不对

离谱:输出nan

#include<bits/stdc++.h>
using namespace std ;

double num = 0  , x = 0 ;

char c , ps ;

int a[100] = { 0 } , l = 1 , mid , p ;

int main () {
	int ch ;
	p = 1 ;
	while( ( ch = getchar() ) != '=' ) {
		c = ch ;
		if ( c == '-' ) {
			l++ ;
			p = -1 ;
		}
		else if ( c == '+' ) {
			l++ ;
			p = 1 ;
		}
		else if ( isdigit(c) ) {
			if ( !a[l] ) {
				a[l] = 0 ;
			}
			else {
				a[l] *= 10 ;
			}
			a[l] += ( c - 48 ) * p ;
		}
		else if ( ( c - 97 ) < 26 || ( c - 0x61 < 0x1A ) || ( c - 65 < 26 ) || ( c - 0x41 < 0x1A ) ) {
			ps = c ;
			if ( a[l] ) {
				x += a[l] ;
				a[l] = 0 ; 
			}
			else {
				x += p ;
			}
			--l ;
		}
	}
	mid = l , l++ , p = 1 ;
	while( ( ch = getchar() ) != EOF ) {
		c = ch ;
		if ( c == '-' ) {
			l++ ;
			p = -1 ;
		}
		else if ( c == '+' ) {
			l++ ;
			p = 1 ;
		}
		else if ( isdigit(c) ) {
			if ( !a[l] ) {
				a[l] = 0 ;
			}
			else {
				a[l] *= 10 ;
			}
			a[l] += ( c - 48 ) * p ;
		}
		else if ( ( c - 97 ) < 26 || ( c - 0x61 < 0x1A ) || ( c - 65 < 26 ) || ( c - 0x41 < 0x1A ) ) {
			ps = c ;
			if ( a[l] ) {
				x -= a[l] ;
				a[l] = 0 ; 
			}
			else {
				x -= p ;
			}
			--l ;
		}
	}
	for ( int i = 0 ; i < l ; i++ ) {
		if ( i < mid ) {
			num -= a[i] ;
		}
		else {
			num += a[i] ;
		}
	}
	if ( ( num / x ) ) {
		printf( "%c=%.3lf" , ps , num / x ) ;
	}
	else {
		printf( "%c=0.000" , ps ) ;
	}
	return 0 ;
}

2023/9/24 21:32
加载中...