Seehoon Jang Ответов: 2

Помогите мне кодировать, чтобы показать оценку студента с помощью visual C++


#include <iostream>
#include <stdlib.h>
using namespace std;

        class Sungjuk
        {
         private:
	    char* name[30];
	    int korean;
	    int english;
	    int math;

	    int sum = 0;
	    double average;

        public:
	    Sungjuk()
	    {
		for (int i = 0; i < 30; i++)
			name[i] = new char[12 * sizeof(char)];
	    }

	    void setName(char* name);
	    char* getName();

	    void setKorean(int kor);
	    int getKorean();

	    void setEnglish(int eng);
	    int getEnglish();

	    void setMath(int mat);
	    int getMath();

	    void compute(int korean, int english, int math)
	    {
		sum = korean + english + math;
		average = sum / 3;
	    }



	    void output()
	    {
		cout <<"Total: "<< sum << endl;
		cout << "Average: " << average << endl;

		if (average >= 90)
			cout << "Grade: A" << endl << "Result: Excellent..!" << endl;
		else if (average >= 80 && average < 90)
			cout << "Grade: B" << endl << "Result: Good..!" << endl;
		else if (average >= 70 && average < 80)
			cout << "Grade: C" << endl << "Result: Good..!" << endl;
		else if (average >= 60 && average < 70)
			cout << "Grade: D" << endl << "Result: Bad..!" << endl;
		else
			cout << "F : Bad..!" << endl;
	    }

	    ~Sungjuk()
	    {
		for (int i = 0; i < 4; i++)
			delete[] name[i];
	    }
        };

        void Sungjuk::setName(char* name)
        {
	    this->name = name;
        }
        char* Sungjuk::getName()
        {
	    return this->name;
        }

        void Sungjuk::setKorean(int kor)
        {
	    this->korean = kor;
        }
        int Sungjuk::getKorean()
        {
	    return this->korean;
        }

        void Sungjuk::setEnglish(int eng)
        {
	    this->english = eng;
        }
        int Sungjuk::getEnglish()
        {
	    return this->english;
        }

        void Sungjuk::setMath(int mat)
        {
	    this->math = mat;
        }
        int Sungjuk::getMath()
        {
	    return this->math;
        }




        int main()
        {
	    Sungjuk obj;

	    int kor, eng, mat, sum = 0;
	    double avg = 0;

	    cout << "input name: ";
	    cin >> name;
	    cout << "input korean, english, math: ";
	    cin >> kor >> eng >> mat;

	    obj.compute(kor, eng, mat);
	    obj.output();

	    system("PAUSE");
	    return 0;
        }


Что я уже пробовал:

выше всего то, что я устал..
Мне нужно показать результат одного студента для первого cpp

и показать три студенческих балла за второй cpp.

2 Ответов

Рейтинг:
13

Patrice T

Цитата:
Помогите мне кодировать, чтобы показать оценку студента с помощью visual C++

Вы забыли объяснить, что не так (не работает должным образом) в вашем коде.

Вы можете упростить каскад тестов
if (average >= 90)
    cout << "Grade: A" << endl << "Result: Excellent..!" << endl;
else if (average >= 80 && average < 90) // you reach this point because previous test failed, so you already know that average < 90
    cout << "Grade: B" << endl << "Result: Good..!" << endl;
else if (average >= 70 && average < 80) // you reach this point because previous test failed, so you already know that average < 80
    cout << "Grade: C" << endl << "Result: Good..!" << endl;
else if (average >= 60 && average < 70) // you reach this point because previous test failed, so you already know that average < 70
    cout << "Grade: D" << endl << "Result: Bad..!" << endl;
else
    cout << "F : Bad..!" << endl;
}

что дает
if (average >= 90)
    cout << "Grade: A" << endl << "Result: Excellent..!" << endl;
else if (average >= 80)
    cout << "Grade: B" << endl << "Result: Good..!" << endl;
else if (average >= 70)
    cout << "Grade: C" << endl << "Result: Good..!" << endl;
else if (average >= 60)
    cout << "Grade: D" << endl << "Result: Bad..!" << endl;
else
    cout << "F : Bad..!" << endl;
}

Совет: Научитесь правильно делать отступы в вашем коде, это покажет его структуру и поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
Стиль отступа - Википедия[^]

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]


Seehoon Jang

void Sungjuk::setName(char* name)
{
это->name = имя;
}
char* Sungjuk::getName()
{
верните это->имя;
}

он показывает красное подчеркивание на 'this'->name =name;

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Seehoon Jang

https://askavan.com/topic/113/how-to-show-up-student-s-score-c

Я не мог разместить изображение здесь..

Рейтинг:
0

Rick York

Каково значение чисел 30, 12 и 4 ? Вы используете этот код в конструкторе?

for (int i = 0; i < 30; i++)
    name[i] = new char[12 * sizeof(char)];
и это не имеет никакого смысла. Переменная объявляется как :
char* name[30];
Это тридцать указателей на характеры. Я серьезно сомневаюсь, что ты этого хочешь. Вы, кажется, просите одну строку, которая является именем. Зачем выделять 12 символов? Было бы более разумно объявить имя просто массивом символов, как это :
char name[ NameSize + 1 ];


Я спросил об этих трех числах, потому что это очень дурной тон. Это должны быть константы. Если вы используете это объявление, Вам нужна только одна константа, и вы можете избавиться от конструкции и удаления. Поскольку это C++, было бы лучше использовать строку std::для хранения имени. На самом деле, вы ничего не делаете с именем, так что вам это действительно не нужно.

Наконец, система вызова должна выполняться только в тех редких случаях, когда нет жизнеспособной альтернативы. Это не соответствует требованиям. Было бы гораздо лучше вызвать getchar() или аналогичную функцию, чтобы дождаться ввода с клавиатуры.


Rick York

Наверное, я опоздал. Ну что ж.