![]() |
#2
rjsp2017-08-17 16:10
起码你要告诉别人 要实现什么功能、你输入的数据、实际输出数据,你期待的输出数据
比如 输入: 1 2 -1 3 输出:运行时错误 期待输出: 3 6 ![]() #include <iostream> #include <iterator> #include <algorithm> #include <vector> #include <limits> using namespace std; template<typename T> bool input_from_console( T& value ) { while( !(cin>>value) ) { if( cin.eof() ) return false; cin.clear(); cin.ignore( std::numeric_limits<streamsize>::max(), '\n' ); } return true; } int main( void ) { typedef double valuetype; std::vector<valuetype> va; for( ; ; ) { cout << "Enter value # " << (va.size()+1) << ": "; valuetype value; if( !input_from_console(value) ) return 1; if( value < 0 ) break; va.push_back( value ); } double factor; cout << "Enter revaluation factor: "; if( !input_from_console(factor) ) return 1; cout << "raw data:\n"; std::copy( va.begin(), va.end(), std::ostream_iterator<valuetype>(cout,"\n") ); std::for_each( va.begin(), va.end(), [=](auto& e){e*=factor;} ); cout << "processed data:\n"; std::copy( va.begin(), va.end(), std::ostream_iterator<valuetype>(cout,"\n") ); } 运行结果 Enter value # 1: 1 Enter value # 2: 2 Enter value # 3: 3 Enter value # 4: 4 Enter value # 5: 5 Enter value # 6: 6 Enter value # 7: -1 Enter revaluation factor: 2 raw data: 1 2 3 4 5 6 processed data: 2 4 6 8 10 12 |
#include <iostream>
const int Max = 5;
double * fill_array( double * begin, double * end);
void show_array(const double * begin, const double * end);
void revalue(double r, double * begin, double * end);
using namespace std;
int main()
{
double str[Max];
double * strp = fill_array(str, str+Max);
show_array(str, strp+1);
if (*strp > 0)
{
cout << "Enter revaluation factor: ";
double factor;
while (!(cin >> factor))
{
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Bad input; Please enter a number: ";
}
revalue(factor, str, strp+1);
show_array(str, strp+1);
}
cout << "Done!\n";
return 0;
}
double * fill_array( double * begin, double * end)
{
double * pb;int i;
for (pb = begin,i = 0; pb != end; pb++,i++)
{
int temp;
cout << "Enter value # " << i+1 << ": ";
cin >> temp;
if (!cin)
{
cin.clear();
while (cin.get() != '\n')
continue;
break;
}
else if (temp < 0)
break;
*pb = temp;
}
return pb;
}
void show_array(const double * begin, const double * end)
{
const double * pb;
for (pb = begin; begin != end; pb++)
{
cout << *pb << endl;
}
}
void revalue(double r, double * begin, double * end)
{
double * pb;
for (pb = begin; pb != end; pb++)
*pb = *pb * r;
}
大神帮忙看看!