PAT Clase B 1024 notación científica

La notación científica es un método conveniente utilizado por los científicos para representar números muy grandes o muy pequeños. Satisface la expresión regular [+ -] [1-9] .[0-9] + E [+ -] [0-9] +, es decir, la parte entera del número tiene solo 1 dígito y la parte decimal tiene al menos 1 dígito. El signo del número y su parte exponente deben estar claramente dados incluso para números positivos.

Ahora, el número real A se da en formato de notación científica. Escriba un programa para la salida A de acuerdo con la representación numérica ordinaria y asegúrese de que todos los dígitos válidos estén reservados.

Formato de entrada:

Cada entrada contiene 1 caso de prueba, que es un número real A expresado en notación científica. La longitud de almacenamiento de este número no supera los 9999 bytes y el valor absoluto de su exponente no supera los 9999.

Formato de salida:

Para cada caso de prueba, envíe A en una línea de acuerdo con la notación numérica ordinaria y asegúrese de que todos los bits válidos estén reservados, incluido el 0 al final.

Ejemplo de entrada 1:

+1.23400E-03

Muestra de salida 1:

0.00123400

Ejemplo de entrada 2:

-1.2E+10

Muestra de salida 2:

-12000000000


 

#include<stdio.h>
#include<iostream>
using namespace std;
int main() {
    string s;
    int k,kk;
    while(getline(cin,s)) {
        int e=0,t;
        string shu="";
        if(s[0]=='+')k=1;
        else k=-1;

        for(int i=1; i<s.size(); i++) {
            if(s[i]=='E') {
                t=i;
                break;
            } else if(s[i]=='.'){
                continue;
            }else {
                shu+=s[i];
            }
        }
        if(s[t+1]=='+')kk=1;
        else kk=-1;
        for(int i=t+2; i<s.size(); i++) {
            e=e*10+s[i]-48;
        }
        //t-3就是点到e中有几个
        if(k==-1){
            cout<<"-";
        }
        if(kk==1){
            if(t-3<e){
                cout<<shu;
                e=e-t+3;
                while(e--){
                cout<<"0";    
                }
            }else if(t-3==e){
                cout<<shu;
            }
            else{
                for(int i=0;i<=e;i++){cout<<shu[i];}
                cout<<".";
                for(int i=e+1;i<shu.size();i++){cout<<shu[i];}
            }
            cout<<endl;
        }
        else if(kk==-1){
            cout<<"0"<<".";
            e=e-1;
            while(e--){
            cout<<"0";    
            }
            for(int i=0;i<shu.size();i++){cout<<shu[i];}
            cout<<endl;
        }
    }



}

 

Supongo que te gusta

Origin blog.csdn.net/paycho/article/details/84555990
Recomendado
Clasificación