C++程序函数数组

C++ program functions arrays

本文关键字:数组 函数 程序 C++      更新时间:2023-10-16

此程序应在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

大卫·吉尔摩,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

米克·泰勒,85 45 65 76 87

Robert Fripp,70 43 90 80 78

Peter Frampton,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

我会以以下方式声明函数

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 );
}

应该为double数组的每一行调用它。

函数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;
}