problemscpp
A collection of my answers to algorithm problems in c++.
函数
pat::b::b1024 命名空间参考

1024 科学计数法 更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (b1024, case1)
 
 TEST (b1024, case2)
 

详细描述

1024 科学计数法

函数说明

◆ main()

int pat::b::b1024::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp790 行定义.

790 {
791 string str;
792 cin >> str;
793 const char op = str[0];
794 const char num1 = str[1];
795 const auto pos_e = str.find('E');
796 const string num2 = str.substr(3, pos_e - 3);
797 const string num3_str = str.substr(pos_e + 1);
798 stringstream ss;
799 ss << num3_str;
800 int num3;
801 ss >> num3;
802 if(op == '-') {
803 cout << op;
804 }
805 if(num3 < 0) {
806 cout << 0 << '.';
807 for(int i = 1; i < abs(num3); i++) {
808 cout << 0;
809 }
810 cout << num1 << num2;
811 } else {
812 cout << num1;
813 int i = 0;
814 for(; i < num3 && i < num2.length(); i++) {
815 cout << num2[i];
816 }
817 if(i < num2.length()) {
818 cout << '.';
819 for(; i < num2.length(); i++) {
820 cout << num2[i];
821 }
822 }
823 if(i < num3) {
824 for(; i < num3; i++) {
825 cout << 0;
826 }
827 }
828 }
829 return 0;
830 }

被这些函数引用 TEST().

◆ TEST() [1/2]

pat::b::b1024::TEST ( b1024  ,
case1   
)

在文件 pat_test.cpp353 行定义.

353 {
354 istringstream in("+1.23400E-03");
355 auto out = ostringstream();
356 main(in, out);
357 const auto ans = out.str();
358 ASSERT_EQ("0.00123400", out.str());
359 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/2]

pat::b::b1024::TEST ( b1024  ,
case2   
)

在文件 pat_test.cpp361 行定义.

361 {
362 istringstream in("-1.2E+10");
363 auto out = ostringstream();
364 main(in, out);
365 const auto ans = out.str();
366 ASSERT_EQ("-12000000000", out.str());
367 }

引用了 main().