C ++ структурирует упражнение - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь выполнить упражнение на структуру;

  1. a. В этом курсе вы определите и объявите данные структуры со следующими 3 гипотетическими сведениями об ученике. Предположим, что лабораторный балл составляет 70%, а тестовый балл - 30% от всех оценок.
First name (string)   :   John            Alisa           Mike    
Last name (string)    :   White           Brown           Green
Course Grade (char)   :   0 (to be calculated)    “           “
Test score (int)      :   88          90          75
Lab score (int)       :   70          64          97

b. Выполните следующие задачи:

  • Инициализируйте / объявите каждого учащегося в типе данных struct. Обратите внимание на функцию IntelliSense в MVS.
  • Рассчитать оценку курса с помощью вызова функции (т.е. getGrade). Это может быть передача по ссылке через функцию void или соответствующая функция char для возврата оценки за курс. Входными данными будут оценка теста и оценка лаборатории. Проценты (30% и 70%) могут быть определены как глобальные двойные константы. Используйте пошаговый пошаговый подход для разработки своего кода.
  • Отображение информации об ученике обратно пользователю. Попробуйте использовать вызов функции для распечатки этого вывода (см. Стр. 620). И спросите меня о том, как поступить. Пример вывода может быть следующим:
John    White   Grade is: C     Test Score is: 88       Lab Score is: 70
Alisa   Brown   Grade is: C     Test Score is: 90       Lab Score is: 64
Mike    Green   Grade is: A     Test Score is: 75       Lab Score is: 97
Press any key to continue . . .

Вот что я собрал до сих пор и застрял - Не уверен, почему я не получаю желаемый результат. (любая помощь будет принята с благодарностью!):

//
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;

const double testweight = 0.30;
const double labweight = 0.70;
char getGrade(int testScore, int labScore) {
    if ((testweight * testScore) + (labweight * labScore) >= 90)
        return 'A';
    else if ((testweight * testScore) + (labweight * labScore) >= 80)
        return 'B';
    else if ((testweight * testScore) + (labweight * labScore) >= 70)
        return 'C';
    else if ((testweight * testScore) + (labweight * labScore) >= 60)
        return 'D';
    else return 'F';
}


struct studentType
{
    string studentFName;
    string studentLName;
    int testScore;
    int labScore;
    char grade;

};


void printstudent(studentType student)
{
    cout << student.studentFName << " " << student.studentLName
        << "" << student.testScore
        << "" << student.labScore
        << "" << student.grade << endl;
}
int main()
{

    studentType student1;
    studentType student2;
    studentType student3;

    student1.studentFName = "John";
    student1.studentLName = "White";
    student1.testScore = 88;
    student1.labScore = 70;
    student1.grade = getGrade(student1.testScore, student1.labScore);

    student2.studentFName = "Alisa";
    student2.studentLName = "Brown";
    student2.testScore = 90;
    student2.labScore = 64;
    student2.grade = getGrade(student2.testScore, student2.labScore);

    student3.studentFName = "Mike";
    student3.studentLName = "Green";
    student3.testScore = 75;
    student3.labScore = 97;
    student3.grade = getGrade(student3.testScore, student3.labScore);

    void printstudent(studentType student);
}

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

Это ..

void printstudent(studentType student);

- это не то, как вы вызываете функцию (это объявление функции).

После замены этой строки на

printStudent(student3);
// ^^ name of the function to call
//           ^^ parameter(s) passed to the function

я получаю следующий вывод:

Mike Green7597A

Возможно, вы захотите добавить несколько пробелов и напечатать также других студентов. Я предлагаю вам изучить std::vector и циклы, чтобы сделать ваш код проще.

1 голос
/ 05 февраля 2020

Последняя строка вашего кода - это объявление функции. Это должен быть вызов функции. Замените его одной или всеми строками из кода ниже:

printstudent(student1);
printstudent(student2);
printstudent(student3);

Для вызова функции вам понадобится имя_функции, скобка, в которой вы ставите аргумент, и точка с запятой в конце.

function_name(argument);
...