【问题标题】:GPA calculator/ adding outside a loopGPA 计算器/在循环外添加
【发布时间】:2010-09-06 03:27:45
【问题描述】:

您好,

我只是在这里寻求一点帮助。提示如下:

出于研究目的,您当地大学的招生官想了解女性和男性学生在某些课程中的表现如何。用户输入要考虑的课程数量。每门课程的学生数据以 GPA 后跟表示学生性别的字母代码的形式提供;米(男学生)。 每门课程的条目(学生)数量未知,数字 0.0 后跟字母 O 表示特定课程的数据结束。

话虽如此,这是对 c++ 的介绍;基本上不允许使用数组、字符串以及 int、float、double 和 char 之外的任何其他内容。在代码中,需要能够以任何顺序输入各种条目(男性输入后女性输入,反之亦然。)

我遇到的问题是,在程序结束时,需要提供按女性和男性排序的“一般学校平均数”的输出。我了解如何获得划分问题的总数,但我似乎无法得到总和。每当我尝试获得总和时,第一门课程的价值(第一次通过循环)都不会保留,所以我一生都无法弄清楚如何去做。任何提示或帮助将不胜感激。我知道代码很长而且有点“野蛮”,所以请耐心等待。这是代码

//GPA calculator for Ghemri
//dealing with gpa range 0.0-4.0, set cap?
//try a do while loop

#include <iostream>



using namespace std;


int main(void)
{


 int size, counter;
 //int studentTotal= 0;
 char gender;
 double studentInfo,total,sum, avg;
 double minRange = 0.0, maxRange = 4.0;
 double maxGpa=0,gpaAvg,gpaSum;
 double femaleSum, femaleAvg, femaleTotal;
 double maleSum, maleAvg, maleTotal;
 int femaleNumber,maleNumber, gpaNumber;
 double sumFemaleAvg;// femaleGeneralAvg;//sumMaleAvg, maleGeneralAvg;


 cout << "\nPlease enter the number of courses you want considered: ";

 cin >> size;

 while(size <=0)
 {
  cout << "\nInvalid entry, number of course must be greater than zero\n";

  cin >> size;

 }

 //sumFemaleAvg+=femaleAvg;

 for(int course =1; course <= size; course++)
 {
  maleTotal = 0;
  femaleTotal=0;
  total = 0;
  femaleNumber = 0;
  maleNumber = 0;
  gpaNumber = 0;
  maxGpa= 0;
  gpaSum = 0;


  //double  doubleArray[course] = {femaleAvg};
   cout << "\nEnter student information(0.0 O to end):\t";

   cin >> studentInfo >> gender;

  while(studentInfo < minRange || studentInfo > maxRange)
  {
   cout << "\nInvalid entry, try again...\n";

   cout << "Enter student's information(0.0 O to end): \t";

   cin >> studentInfo >> gender;
  }
  if(studentInfo > maxGpa)
  {
   maxGpa=studentInfo;
  }
  if(studentInfo > 3.00)
  {
   gpaSum=studentInfo;
   gpaNumber=1;
  }

  if(gender == 'f' && studentInfo > minRange && studentInfo < maxRange)
  {
   femaleNumber=1;
   femaleSum = studentInfo;
   maleSum=0;

  }
  if(gender == 'm' && studentInfo > minRange && studentInfo < maxRange)
  {
   maleNumber=1;
   maleSum = studentInfo;
   femaleSum=0;
  }

  sum =studentInfo;
  counter = 0;
  counter++;


  while(studentInfo != 0.0 && gender != 'O')
  {

   cout << "Enter student information(0.0 O to end):\t";

   cin >> studentInfo >> gender;

   if(studentInfo > maxGpa)
   {
    maxGpa=studentInfo;
   }

   if(studentInfo < minRange || studentInfo > maxRange)
    {
     cout << "\nInvalid entry, try again...\n";

     cout << "Enter student's information(0.0 O to end): \t";

     cin >> studentInfo >> gender;
    }

   if(gender != 'm' && gender !='f'&& gender != 'O')
    {
     cout << "Invalid entry, enter m for male or f for female\n";

     cout << "Enter student's information(0.0 O to end): \t";

     cin >> studentInfo >> gender;
    }

    sum +=studentInfo;
    total+=counter;
    avg = sum/total;

    if(studentInfo > 3.00)
    {
     gpaSum+=studentInfo;
     gpaNumber++;
     gpaAvg= gpaSum/gpaNumber;
    }

    if(gender == 'f' || gender =='F')
    {
     femaleSum+=studentInfo;
     femaleNumber++;
     //femaleTotal+=femaleNumber;
     femaleAvg = femaleSum/femaleNumber;
     //sumFemaleAvg = femaleAvg;
    }

    if(gender == 'm' || gender == 'M')
    {
     maleSum+=studentInfo;
     maleNumber++;
     //maleTotal+=maleNumber;
     maleAvg = maleSum/maleNumber;
    }

   if(studentInfo == 0 && gender == 'O')
   {
    cout << "\nResults for course "<< course<<":\n";
    cout << "Female Student Average\t Male Student Average\n";
    cout << "\t";
    if(femaleNumber==0)
    {
     cout<< "N/A" << "\t\t\t";
    }
    else
    {
     cout<< femaleAvg <<"\t\t\t";//femaleAvg

    }
    if(maleNumber==0)
    {
     cout << "N/A\n";
    }
    else
    {
     cout<<maleAvg << endl;
     //sumMaleAvg = maleAvg;
    }

    cout << "\nHighest GPA: " << maxGpa<<endl;
    cout <<  "Highest average GPA for course "<< course << ": "<< gpaAvg<< endl;
   }
  }
  sumFemaleAvg = femaleAvg;

 }

 /*double genAvg[]={femaleAvg};

 result+=genAvg[course];*/

 sumFemaleAvg+=femaleAvg;

 cout<< "this is a test for the value sum " << sumFemaleAvg<<endl;
 //cout<< "this is another test " << result <<endl;

    //maleGeneralAvg = sumMaleAvg/course;
  /*cout << "the sum is " << sumFemaleAvg<<endl;
  cout << "the other sum is "<< sumFemaleAvg2<<endl;
  cout << "the other other sum is " << femaleAvg;*/

 return 0;
}

【问题讨论】:

    标签: c++


    【解决方案1】:

    尽量避免极端重复,将常用操作分解为函数。我现在会“忍受你”,但真的没有理由我应该这样做。这是作为程序员需要学习的第一件事。

    看起来变量sumFemaleAvg 应该在循环迭代中求和。然而,sumFemaleAvg = femaleAvg; 行每次都会覆盖变量。做

      sumFemaleAvg += femaleAvg;
    

    对于您希望在多次迭代中累加的其他变量也是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多