Как работать с массивом в структуре? - C#
Формулировка задачи:
На основе данных входного файла составить список студентов,
включающий фамилию, факультет, курс, группу, 5 оценок. Вывести в новый файл
информацию о тех студентах, которые имеют хотя бы одну двойку, отсортировав их по
курсу.
Проблема с массивом оценок,можно было бы конечно отдельно каждую оценку,но это не круто.Вот,подскажите плз,как работать с массивом в структуре.
class Program
{
private static void Main()
{
// Читаем из файла
string[] allLines = File.ReadAllLines("input.txt");
// Преобразуем в массив студентов
Student[] students = new Student[allLines.Length];
for (int index = 0; index < allLines.Length; index++)
{
string line = allLines[index];
string[] fields = line.Split(';');
Student student = new Student(fields[0], fields[1], Convert.ToInt32(fields[2]),/* тут надо бы инициализировать массив */);
students[index] = student;
}
// Сортируем
Array.Sort(students);
// Выводим данные
foreach (Student student in students)
{
Console.WriteLine(student);
Console.WriteLine();
}
// Преобразуем в удобный для записи вид
string[] linesToSave = new string[students.Length];
for (int i = 0; i < students.Length; i++)
{
Student student = students[i];
linesToSave[i] = student.ToString();
}
// Сохраняем в файл
File.WriteAllLines("output.txt", linesToSave);
Console.ReadKey();
}
}
public struct Student : IComparable
{
public Student(string surname, string fac, int course, int [] mas)
: this()
{
Surname = surname;
Fac = fac;
Course = course;
Mas = mas;
}
// Фамилия
public string Surname { get; private set; }
// Факультет
public string Fac { get; private set; }
// Курс
public int Course { get; private set; }
// Оценки
public int [] Mas
{
get
{
return //Массив
}
private set
{
for (int i = 0; i < 5; i++)
{
}
}
}
public override string ToString()
{
return string.Format("{0}; {1}; {2}; {3}",
Surname, Fac, Course, Mas);
}
}Иванов ; Фак1; 111; 2 3 4 4 5; Петров ; Фак2; 211; 3 3 3 3 3; Сидоров; Фак3; 311; 4 4 5 4 4; Пупкин ; Фак4; 411; 4 3 4 3 4; Таратайкин ;Фак5; 511; 5 5 5 5 5;
Решение задачи: «Как работать с массивом в структуре?»
textual
Листинг программы
#include <iostream>
#include <string>
#include <list>
#include <map>
using namespace std;
class Student
{
public:
Student(string firstName, string lastName, string group, map<string, int> * balls)
{
this->firstName = firstName;
this->lastName = lastName;
this->group = group;
this->balls = balls;
}
string getFirstName() const
{
return this->firstName;
}
string getLasttName() const
{
return this->lastName;
}
string getGroup() const
{
return this->group;
}
void getAllBalls()
{
for (auto iterator = this->balls->begin(); iterator != this->balls->end(); ++iterator)
{
cout << "\tПредмет: #" << (*iterator).first << " - оценка: " << (*iterator).second << endl;
}
}
private:
string firstName;
string lastName;
string group;
map<string, int> * balls;
};
int main()
{
setlocale(LC_ALL, "russian");
list<Student*> students;
students.push_back(new Student("Перепечкин", "Роман", "РПЗ 14-01", new map<string, int>{
{ "Математика", 2 },
{ "ООП", 5 },
{ "Сети", 4 }
}));
students.push_back(new Student("Ромашкин", "Анатолий", "РПЗ 14-01", new map<string, int>{
{ "Математика", 5 },
{ "ООП", 5 },
{ "Сети", 5 }
}));
students.push_back(new Student("Трампыч", "Мария", "РПЗ 14-01", new map<string, int>{
{ "Математика", 4 },
{ "ООП", 4 },
{ "Сети", 5 }
}));
for (auto iterator = students.begin(); iterator != students.end(); ++iterator)
{
cout << "Студент: " << (*iterator)->getFirstName() << " " << (*iterator)->getLasttName();
cout << ", группа #" << (*iterator)->getGroup() << ", имеет такие оценки:" << endl;
(*iterator)->getAllBalls();
cout << endl;
}
system("pause");
}