این خطای زمان اجرا رو چطوری باید رفع کرد، من الان برای مساله faverage هر کاری می کنم میگه خطای زمان اجرا داری
ولی تو کامپیوتر خودم درسته، یعنی به نظر درست میاد. نمیدونم چه تستی روش انجام میشه این ایرادو میگیره:41:
این کدی گه نوشتم، البته یکم قرقاطیه :
کد:
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
int main()
{
vector< vector<int> > all_case;
vector<int> num_list;
string str_num;
size_t pos;
int case_count;
int num_count;
int num;
cin >> case_count;
while (case_count)
{
cin >> num_count;
if ( num_count >= 1 && num_count <= 30000)
{
cin.sync();
getline(cin, str_num);
str_num.push_back(' ');
pos = 0;
num_list.clear();
while (num_count)
{
num = atoi((str_num.substr(pos, str_num.find(' ', pos)).c_str()));
if ( num >= -30000 && num <= 30000 )
{
num_list.push_back( num );
pos = str_num.find(' ', pos) + 1;
num_count--;
}
else
return -1;
}
all_case.push_back(num_list);
}
else
return -1;
case_count--;
}
double ave, pave = 0;
int t = 0;
bool flag1 = true;
for ( size_t i = 0; i < all_case.size(); i++ )
{
while ( t < 2 )
{
ave = 0;
for ( size_t j = 0; j < all_case[i].size(); j++ )
ave += all_case[i][j];
ave /= all_case[i].size();
if ( all_case[i].size() == 1 )
break;
if ( ave == pave )
t++;
pave = ave;
for ( size_t j = 0; j < all_case[i].size(); j++ )
{
if ( flag1 )
{
if ( all_case[i][j] < ave )
{
all_case[i].erase(all_case[i].begin() + j);
j --;
pave = 0;
}
}
else
{
if ( all_case[i][j] > ave )
{
all_case[i].erase(all_case[i].begin() + j);
j --;
pave = 0;
}
}
}
if ( flag1 )
flag1 = false;
else
flag1 = true;
}
cout << "Case #" << i + 1 << ": " << setprecision(3) << fixed << ave << endl;
t = 0;
pave = 0;
}
return 0;
}
راستی این مساله جدید که ترجمه کردی هم بریم روش کار کنیم بنظر جالب میاد. :31: