Вопрос задан 05.07.2023 в 03:25. Предмет Информатика. Спрашивает Балаева София.

На выбранном вами языке программирования ( С#, Pascal) постройте три класса ( базовый и 2 потомка),

описывающих некоторых студентов. Студентам назначается стипендия, при этом правила ее назначения различны для парней ( один из потомков) и девушек ( второй потомок). Известны ФИО студентов, их пол, группа и средний балл. Парням выплачивается фиксированная стипендия, если их средний балл равен пороговому значению в 4 балла, а девушкам стипендия выплачивается всегда и рассчитывается она путем умножения среднего балла на фиксированный коэффициент. Создайте код, описывающий классы и их члены для моделирования этой ситуации. Представьте сигнатуру метода расчета стипендии (это имя метода, тип аргумента и последовательность).
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Стефанов Глеб.

Объяснения:

Описаны три класса: Student [Базовый],   MaleStudent, FemaleStudent.

Реализована логика расчета стипендии, учтена возможность смены параметров студентами (в том числе и пола).

Код:

using System;

namespace Durka

{

   class Program

   {

       static void Main(string[] args)

       {

           var male = Student.CreateMaleStudent("Cidodzy Ohlazhdai Blackjackovich", "1GT-b", 5f);

           var female = Student.CreateFemaleStudent("Viktoria Nya Victorovna", "1ZT-b", 4.8f);

           

           Console.WriteLine(male.GetPaymentAmount());

           Console.WriteLine(female.GetPaymentAmount());

       }

   }

   

   /// <summary>

   /// Class which describes students in general

   /// </summary>

   public abstract class Student

   {

       public string Names { get; set; }

       public string Group { get; set; }

       public float MeanGrade {

           get => _meanGrade;

           set

           {

               if (value > 5f || value < 0f)

               {

                   throw new ArgumentException("MeanGrade must be in [0; 5] range");

               }

               _meanGrade = value;

           }

       }

       private float _meanGrade;

       /// <summary>

       /// Method for calculating amount of students payment depending on inner class params such as sex, etc.

       /// </summary>

       /// <returns>double</returns>

       public abstract double GetPaymentAmount();

       

       /// <summary>

       /// Method for changing current sex to Male

       /// </summary>

       /// <returns>MaleStudent class object</returns>

       public abstract MaleStudent changeSexToMale();

       

       /// <summary>

       /// Method for changing current sex to Female

       /// </summary>

       /// <returns>FemaleStudent class object</returns>

       public abstract FemaleStudent changeSexToFemale();

       public static MaleStudent CreateMaleStudent(string names, string group, float meanGrade)

       {

           return new MaleStudent(names, group, meanGrade);

       }

       

       public static FemaleStudent CreateFemaleStudent(string names, string group, float meanGrade)

       {

           return new FemaleStudent(names, group, meanGrade);

       }

       

       /// <summary>

       /// Class which describes Male students

       /// </summary>

       public class MaleStudent : Student

       {

           protected internal MaleStudent(string names, string group, in float meanGrade)

           {

               Names = names;

               Group = group;

               MeanGrade = meanGrade;

           }

           public static float mul = 2000f;

           public override double GetPaymentAmount()

           {

               return MeanGrade > 4 ? mul : 0;

           }

           public sealed override MaleStudent changeSexToMale()

           {

               return this;

           }

           public sealed override FemaleStudent changeSexToFemale()

           {

               return new FemaleStudent(Names, Group, MeanGrade);

           }

       }

   

       /// <summary>

       /// Class which describes Female students

       /// </summary>

       public class FemaleStudent : Student

       {

           protected internal FemaleStudent(string names, string group, in float meanGrade)

           {

               Names = names;

               Group = group;

               MeanGrade = meanGrade;

           }

           

           public static float mul = 500f;

           public override double GetPaymentAmount()

           {

               return mul * MeanGrade;

           }

           public sealed override MaleStudent changeSexToMale()

           {

               return new MaleStudent(Names, Group, MeanGrade);

           }

           public sealed override FemaleStudent changeSexToFemale()

           {

               return this;

           }

       }

   }

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Ниже приведен пример реализации трех классов на языке программирования C#, описывающих студентов и расчет стипендии с учетом различных правил для парней и девушек:

csharp
using System; public class Student { public string FullName { get; set; } public string Gender { get; set; } public string Group { get; set; } public double AverageGrade { get; set; } public Student(string fullName, string gender, string group, double averageGrade) { FullName = fullName; Gender = gender; Group = group; AverageGrade = averageGrade; } } public class MaleStudent : Student { public double FixedScholarship { get; set; } public MaleStudent(string fullName, string group, double averageGrade) : base(fullName, "Male", group, averageGrade) { FixedScholarship = 1000; // Фиксированная стипендия для парней } public double CalculateScholarship() { if (AverageGrade >= 4.0) return FixedScholarship; else return 0.0; } } public class FemaleStudent : Student { public double ScholarshipCoefficient { get; set; } public FemaleStudent(string fullName, string group, double averageGrade) : base(fullName, "Female", group, averageGrade) { ScholarshipCoefficient = 500; // Коэффициент для расчета стипендии для девушек } public double CalculateScholarship() { return AverageGrade * ScholarshipCoefficient; } }

Сигнатура метода расчета стипендии для класса MaleStudent:

csharp
double CalculateScholarship()

Сигнатура метода расчета стипендии для класса FemaleStudent:

csharp
double CalculateScholarship()

Пример использования классов и расчета стипендии:

csharp
class Program { static void Main(string[] args) { MaleStudent maleStudent = new MaleStudent("John Smith", "Group A", 4.5); double maleScholarship = maleStudent.CalculateScholarship(); Console.WriteLine("Male Student Scholarship: $" + maleScholarship); FemaleStudent femaleStudent = new FemaleStudent("Jane Doe", "Group B", 3.8); double femaleScholarship = femaleStudent.CalculateScholarship(); Console.WriteLine("Female Student Scholarship: $" + femaleScholarship); } }

В данном примере создаются объекты классов MaleStudent и FemaleStudent, задаются их атрибуты (ФИО, группа, средний балл) и вызываются методы CalculateScholarship для расчета стипендии. Результаты расчета выводятся на экран.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос