C ++程序函数数组

时间:2014-04-14 19:34:53

标签: c++ arrays

这个程序应该在microsoft visual studio中运行

功能 - > void inputScores(string [],double [] [5]);

此函数使用文件中的名称填充字符串数组。

此函数使用与每个名称相关联的5个分数填充二维2D数组。

功能 - > void computeAverage(double [] [5],double&);

功能 - > void computeLetterGrade(double,char&);

功能 - > void printGrades(double [] [5],string [],double,char);

printGrades应调用computeAverage和computeLetterGrade。

使用void返回类型的函数原型只是建议。

创建程序总有不同的方法。

如果需要,您可以更改功能行为或权宜之计

学生数据是:

Ritch Blackmore,85 95 57 78 56

Jimmy Page,89 78 45 69 98

Pete Townsend,93 56 67 67 45

Alvin Lee,93 67 89 90 45

Pete Green,89 34 56 78 98

Jeff Beck,85 34 67 87 65

Eric Clapton,95 34 56 65 87

David Gilmour,90 67 89 90 98

Tony Iommi,86 45 67 87 98

Carlos Santana,95 56 78 96 56

Mark Knopfler,75 54 67 76 87

Alex Lifeson,80 56 76 87 98

Frank Zappa,80 65 76 56 98

Mick Taylor,85 45 65 76 87

Robert Fripp,70 43 90 80 78

彼得弗兰普顿,83 45 65 76 54

Ry Cooder,95 34 56 78 87

Keith Richards,95 45 67 89 67

Joe Walsh,95 45 78 90 45

Steve Hackett,95 34 56 54 76

1 个答案:

答案 0 :(得分:0)

我会按以下方式声明这些功能

const size_t SCORE_NUM = 5;
const size_t STUDENT_NUM = 100; // at least not less than the number of records in the file

size_t inputScores( std::ifstream &, std::string[], double[][SCORE_NUM], size_t );

double computeAverage( const double[], size_t );

char computeLetterGrade( double );

void printGrades( const std::string[], const double[][SCORE_NUM], size_t );

例如,函数computeAverage可以定义为

double computeAverage( const double scores[], size_t n )
{
   double sum = 0.0;

   for ( size_t i = 0; i < n; i++ ) sum += scores[i];

   return ( n == 0 ? sum : sum / n );
}

应该为双精度数组的每一行调用它。

函数inputScores的定义可能看起来像(没有测试):

size_t inputScores( std::ifstream &in, 
                    std::string students[], 
                    double scores[][SCORE_NUM], 
                    size_t n )
{
   std::string record;
   size_t i = 0;

   while ( i < n && std::getline( in, record ) )
   {
      std::istringstream is( record );

      std::string lastName;

      if ( is >> students[i] && is >> lastName )
      {
         students[i] += ' ';
         students[i] += lastName;
      }

      std::memset( scores[i], 0, SCORE_NUM * sizeof( double ) );

      size_t j = 0;

      while ( j < SCORE_NUM && is >> scores[i][j] ) ++j; 

      ++i;
   }

   return i;
}