1024 Notación científica (20 puntos) (implementación C++) Puntos de prueba 2, 3, 4

enlace de tema


Análisis de puntos de prueba

  • Los puntos de prueba 2, 3 y 4 están juzgando la situación en la que 0 se coloca detrás (la pregunta sigue siendo bastante complicada)
  • El ejemplo del juicio del punto de prueba 4 es  +1.234564E+2    la salida debe ser  123.4564
  • El ejemplo del juicio de los puntos de prueba 2 y 3 es  +1.23E+2   y la salida debe ser  123

adjuntar código

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>
using namespace std;

int main(){
	string str;
	string strNumber="";
	int numE,i,number;
	char type;
	int count;
	int temp,t;
	
	cin>>str;
	if(str[0]=='-'){//正负 
		cout<<str[0];
	}
	
	numE=str.find('E');
	type=str[numE+1];
	strNumber=str.substr(numE+2,str.length()-1);//截取字符串 
	count=0;
	temp=1;
	for(i=strNumber.length()-1;i>=0;i--){//截取字符串转为int 
		count+=(strNumber[i]-'0')*temp;
		temp*=10;
	}
	
	if(type=='+'){//0放后面 
		cout<<str[1];

		for(i=3,t=0;i<numE;i++,t++){
			cout<<str[i];
			if(t==count-1&&i!=numE-1){//小数点后还有数字 
				cout<<'.';
			}
		}
		
		for(i=0;i<count-(numE-3);i++){
			cout<<0;
		}
		cout<<endl;
	}
	else{//0放前面 
		for(i=0;i<count;i++){
			cout<<0;
			if(i==0){
				cout<<'.';
			}
		}
		cout<<str[1];
		for(i=3;i<numE;i++){
			cout<<str[i];
		}
		cout<<endl;
	}
	
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_44789957/article/details/123637459
Recomendado
Clasificación