¡Urgente! ! ! Preguntas de programación C, ¡puedes aumentar la recompensa si es necesario! ! !
//Sin depuración, ¡depuralo tú mismo! Perdí horas. . .
//student.hpp
#includelt;iostreamgt;
#include?lt;stringgt;
#include?lt; mapgt;
usando?namespace?std;
enum?ESex
{
ESex_male?=?0,
ESex_female
};
clase?estudiante
{
público:
estudiante() :m_number(0),?m_strName(""),?m_ESex(ESex_female),?m_total(0)
{
}
virtual?~ estudiante()
{
//NULL
}
int?getNumber()
{ retorno ?m_number;
}
cadena?getName()
{ return?m_strName;
}
virtual?void?changeStudentInfo()?=?0;
virtual?double?getAverageScores()?=?0;
virtual?double?getOneCourseScores(ECourseB?courseType)?= ?0;
virtual?void?showAllinfo()?=?0;
void?showBaseInfo()
{ printf("num: d,? nombre: s,?sexo:s,?\n\ttotalScores:f\n\t", m_number,?m_strName.c_str(),?(m_ESex)??"female":"male",?m_total); p>
}
int?m_number;
cadena?m_strName;
ESex?m_ESex;
doble?m_total;
};
enum?ECourseA
{ ECourseA_english, ECourseA_math, ECourseA_chinese, ECourseA_physics, ECourseA_chemistry, ECourseA_biology, ECourseA_Num
};
string?strCourseA[ECourseA_Num]?=?
{ "inglés",?"matemáticas",?"chino",?"física",?"química",?"biología "
};
enum?ECourseB
{ ECourseB_english, ECourseB_math, ECourseB_chinese, ECourseB_Num
};
string?strCourseB[ECourseB_Num]?=?
{ "e
inglés",?"matemáticas",?"chino"
};
clase?estudianteA: público?estudiante
{
público: estudianteA() {
memset(m_scores,?0,?sizeof(m_scores)); } ~studentA() {
cout?lt;lt;?"Esto? procedimiento?codificación?por?Un?tipo?estudiante: "?lt;lt;?m_strName?lt;lt;?endl; } void?changeStudentInfo(); double?getAverageScores(); double?getOneCourseScores(ECourseB?courseType); void?showAllinfo(); privado:
doble?m_scores[ECourseA_Num];
};
clase?estudianteB: público?estudiante
{
público: estudianteB() {
memset(m_scores,?0,?sizeof(m_scores) } ~studentB() {
cout?lt;lt;?"Este?procedimiento?codificación?por?B?tipo?estudiante:?"?lt;lt;?m_strName?lt;lt;?endl; } void?changeStudentInfo(); ); /student.cpp
#include?"student.hpp"
void?studentA::changeStudentInfo()
{ cout?lt;lt;?" entrada?estudiante?número: "; cin?gt;gt;?m_número; cout?lt;lt;?" entrada?estudiante?sexo(0?es?masculino,?1?es?femenino): "; cin?gt ;gt;?m_ESex; cout?lt;lt;?"input?student?name:"; cin?gt;gt;?m_strName; para?(int?i?=?0;?i?lt;?ECourseA_Num; ? i) {
cout?lt;lt;?"entrada?estudiante?"?lt;lt;?strCourseA[i]?lt;lt;?"puntuaciones:";
cin?gt;gt;?m_scores[i];
m_total? =?m_scores[i]; }
}
doble?estudianteA: : obtener puntuaciones promedio
()
{ double?totalScores?=?0; for?(int?i?=?0;?i?lt;?ECourseA_Num;? i) {
totalScores? =?m_scores[i]; } return?totalScores?/?ECourseA_Num;
}
doble?studentA::getOneCourseScores(ECourseA?courseType)
{ return?m_scores[tipo de curso];
}
void?studentA::showAllinfo()
{ showBaseInfo() for?(int?i?= ?0;?i?lt;?ECourseA_Num;? i) {
printf("s: f\n",?strCourseA[i],?m_scores[i]); >
}
void?studentB::changeStudentInfo()
{ cout?lt;lt;?"input?student?number:"; ?m_number; cout?lt;lt;?"entrada?estudiante?sexo(0?es?masculino,?1?es?femenino): "; cin?gt;gt;?m_ESex; input?estudiante?nombre: "; cin?gt;gt;?m_strName; for?(int?i?=?0;?i?lt;?ECourseA_Num;? i) {
cout?lt ;lt;?"entrada?estudiante?"?lt;lt;?strCursoA[i]?lt;lt;?"scores:";
cin?gt;gt;?m_scores[i];
m_total? =?m_scores[i]; }
}
doble?studentB::getAverageScores()
{ doble? puntuaciones totales?=?0; para?(int?i?=?0;?i?lt;?ECourseB_Num;? i) {
puntuaciones totales? =?m_scores[i]; /?ECourseB_Num;
}
doble?studentB::getOneCourseScores(ECourseB?courseType)
{ return?m_scores[courseType];
}
void?studentB::showAllinfo()
{ showBaseInfo(); para?(int?i?=?0;?i?lt;?ECourseB_Num;? i) {
printf("s:f\n",?strCourseB[i],?m_scores[i] }?
}
); //oneClass.hpp
#include?"estudiante.h
pp"
#define?NUM_OF_STUDENT_A?2?//El número de estudiantes A en una clase
#define?NUM_OF_STUDENT_B?3?//El número de estudiantes B en una clase Número de estudiantes en la clase
clase?OneClass
{
público: OneClass(); ~OneClass(); void?CalculateEveryCourseAverageScores(); ( ); void?ShowAllStudentInfo(); void?findStudent(int?num); void?findStudent(cadena?nombre);
privado: maplt?, ?student*gt; ; agitando,?estudiante*gt;?m_nameMap; estudiante*?m_studentA[NUM_OF_STUDENT_A]; estudiante*?m_studentB[NUM_OF_STUDENT_B];
};
//oneClass.cpp p >
#include?"oneClass.hpp"
OneClass::OneClass()
{ for?(int?AIndex?=?0;?AIndex?lt; ? NUM_OF_STUDENT_A;?AIndex ) {?
m_studentA[AIndex]?=?new?studentA();
m_studentA[AIndex]-gt;
m_numberMap[m_studentA[AIndex].getNumber()]?=?m_studentA[AIndex];
m_nameMap[m_studentA[AIndex].getName()]?=?m_studentA[AIndex] }; ? (int?BIndex?=?0;?BIndex?lt;?NUM_OF_STUDENT_B;?BIndex) {
m_studentB[BIndex]?=?new?studentB();
m_studentB [ BIndex]-gt; changeStudentInfo();
m_numberMap[m_studentB[BIndex].getNumber()]?=?m_studentB[BIndex];
m_nameMap[m_studentB[BIndex]. getName ()]?=?m_studentB[BIndex]; }
}
~OneClass::OneClass()
{ para?(int?AIndex? = ?0;?AIndex?lt;?NUM_OF_STUDENT_A;?AIndex ) {?
eliminar?m_studentA[AIndex] } para?(int?BIndex?=?0;?BIndex?lt;?NUM_OF_STUDE;
NT_B;?BIndex) {
eliminar?m_studentB[BIndex] }
}
void?OneClass::CalculateEveryCourseAverageScores()
{ para?(int?i?=?0;?i?lt;?ECourseA_Num;? i) {
doble?total?=?0.0;
doble?promedio ?=?0.0;
doble?maxScores?=?0;
doble?minScores?=?100;
para?(int?AIndex?= ?0;?AIndex?lt;?NUM_OF_STUDENT_A;?AIndex )
{ double?tempScores?=?m_studentA[AIndex]-gt; getOneCourseScores(i); total? (tempScores?gt;?maxScores)?tempScores:maxScores; minScores?=?(tempScores?lt;?minScores)?tempScores:minScores;
}
if?(i? lt;=?ECourseA_chinese)
{ for?(int?BIndex?=?0;?BIndex?lt;?NUM_OF_STUDENT_B;?BIndex ) {?
doble?tempScores?= ?m_studentB[BIndex]-gt;getOneCourseScores(i)
total? =?tempScores;
maxScores?=?(tempScores?gt;?maxScores)?tempScores: maxScores;
minScores?=?(tempScores?lt;?minScores)?tempScores:minScores; } promedio?=?total/(NUM_OF_STUDENT_A? ?NUM_OF_STUDENT_B);
}
else
{ promedio?=?total/(NUM_OF_STUDENT_A);
}
cout?lt;lt;?strCourseA[i]?lt; lt;?"?¿puntajes?promedio?es?"?lt;lt;?promedio?lt;lt;?endl;
cout?lt;lt;?strCourseA[i]?lt;lt; ?"?max?puntuaciones?es?"?lt;lt;?promedio?lt;lt;?endl;
cout?lt;lt;?strCourseA[i]?lt;lt;?" ?min?scores?is?"?lt;lt;?average?lt;lt;?endl; }
}
void?OneClass::calculateEveryStudentAverageScores()
{ para?(int?AInde
x?=?0;?AIndex?lt;?NUM_OF_STUDENT_A;?AIndex) {
cout?lt;lt;?m_studentA[AIndex]-gt;getName?lt;lt;?"average?is ?"?lt;lt;?()m_studentA[AIndex]-gt;getAverageScores()?lt;lt;?endl; } para?(int?BIndex?=?0;?BIndex?lt;?NUM_OF_STUDENT_B;? BIndex ) {
cout?lt;lt;?m_studentB[BIndex]-gt;getName?lt;lt;?"promedio?es?"?lt;lt;?()m_studentB[BIndex]-gt ;getAverageScores()?lt;lt;?endl; }
}
void?OneClass::changeOneStudentInfo(int?num)
{ si?( m_numberMap.find(num)?==?m_numberMap.end()) {
cout?lt;lt;?"¿no?puede?encontrar?este?estudiante:?"?lt;lt;? num?lt;lt;?endl;?
return; } m_numberMap[num]-gt;changeStudentInfo();
}
void?OneClass: :changeOneStudentInfo(int?name)
{ if?(m_nameMap.find(name)?==?m_nameMap.end()) {
cout?lt;lt;?" ¿no?puedes?encontrar?este?estudiante:?"?lt;lt;?name?lt;lt;?endl;?
return; } m_nameMap[name]-gt;changeStudentInfo() p> p>
}
void?OneClass::ShowAllStudentInfo()
{ for?(int?AIndex?=?0;?AIndex?lt;?NUM_OF_STUDENT_A; ?AIndex ) {
m_studentA[AIndex]-gt;showAllinfo(); } para?(int?BIndex?=?0;?BIndex?lt;?NUM_OF_STUDENT_B;?BIndex) {
m_studentB[BIndex]-gt; showAllinfo(); }
}
void?OneClass::findStudent(int?num)
{ si ?( m_numberMap.find(num)?==?m_numberMap.end()) {
cout?lt;lt;?"¿no?puede?encontrar?este?estudiante:?"?lt;lt ;? num?lt;lt;?endl;?
return; } m_numberMap[num]-gt;showA
llinfo();
}
void?OneClass::findStudent(string?nombre)
{ if?(m_nameMap.find(nombre)?== ?m_nameMap.end()) {
cout?lt;lt;?"¿no?puede?encontrar?este?estudiante:?"?lt;lt;?nombre?lt;lt;?endl; ?
return; } m_nameMap[nombre]-gt; showAllinfo();
}
//main.cpp
# incluir?"oneClase.hpp"
int?main()
{ OneClass?myClass; myClass.changeOneStudentInfo("gougou"); ;
}