Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

minor fixes and refactoring #7

Merged
merged 4 commits into from
Apr 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions data_new.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Атаманенко Бодя Степанович Ж 02.01.1996 5 3 5 4319
Атаманенко Саша Степанович F 23.06.1996 2 1 - 1285
Атаманенко Софія Степанович Ж 26.11.2004 4 5 4 1630
Конопленко Бодя Степанович Ж 04.01.1998 2 1 1 3078
Атамась Софія Сергійович Ж 02.08.2000 3 2 2 2506
Katleho Ömür Jensen F 07.05.2004 2 3 3 2103
Narcisse Céleste Albani F 24.08.1999 4 5 3 4139
Атаманенко Софія Степанович Ж 06.03.2001 4 1 - 1918
Єрмоленко Софія Степанович Ж 21.03.1997 4 5 3 1365
Єрмоленко Ніка Сергійович F 02.01.2004 - 1 3 3514
Атамась Саша Сергійович F 01.11.1996 2 5 3 3451
Конопленко Саша Георгійович F 11.08.2003 1 1 5 2374
Конопленко Бодя Романович Ч 12.06.1998 4 4 5 3538
Атамась Бодя Сергійович M 21.07.2001 2 1 3 2401
Aytaç Nzinga Nevin F 12.11.1999 4 5 4 3392
Атаманенко Ніка Сергійович F 04.02.2004 4 1 3 3593
Єрмоленко Софія Степанович F 14.07.1996 4 5 4 2592
Атаманенко Софія Сергійович Ч 01.02.1996 2 4 1 4157
Claude Ange-Giusi Leoni F 02.03.2004 - 1 _ 1514
Єрмоленко Ніка Георгійович F 19.01.1999 3 5 2 2346
Атаманенко Софія Степанович M 28.01.2003 - 4 1 1473
Атамась Саша Георгійович Ч 20.08.1998 - 5 1 2504
Єрмоленко Саша Георгійович Ч 19.09.1995 1 4 2 1599
Єрмоленко Ніка Степанович Ч 26.11.2001 1 - 4 2074
10 changes: 5 additions & 5 deletions gen.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import random

surnames = ['surname1', 'surname2', 'surname3', 'surname4']
firstnames = ['firstname1', 'firstname2', 'firstname3', 'firstname4']
patronymics = ['patronymic1', 'patronymic2', 'patronymic3', 'patronymic4']
sexes = ['M', 'F']
surnames = ['Атаманенко', 'Конопленко', 'Атамась', 'Єрмоленко']
firstnames = ['Бодя', 'Саша', 'Софія', 'Ніка']
patronymics = ['Сергійович', 'Романович', 'Степанович', 'Георгійович']
sexes = ['M', 'F', 'Ж', 'Ч']
marks = [1, 2, 3, 4, 5, '-']
scholarships = list(range(1234, 4322))

Expand All @@ -22,6 +22,6 @@
line = f"{surname} {firstname} {patronymic} {sex} {date_of_birth} {mark1} {mark2} {mark3} {scholarship}"
lines.append(line)

with open('input.txt', 'w') as file:
with open('input.txt', 'w', encoding='utf-8') as file:
for line in lines:
file.write(line + '\n')
44 changes: 24 additions & 20 deletions input.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
surname2 firstname3 patronymic3 F 06.12.1995 - 3 5 4756
surname4 firstname2 patronymic3 F 10.09.1995 2 - 1 3291
surname2 firstname4 patronymic4 F 07.05.2004 2 3 3 2103
surname1 firstname1 patronymic2 F 05.05.1998 1 - - 2766
surname3 firstname2 patronymic3 M 03.02.2001 - 3 1 2260
surname1 firstname1 patronymic2 F 12.04.2002 2 3 - 4495
surname4 firstname1 patronymic3 F 04.09.2005 3 2 4 4183
surname3 firstname1 patronymic2 F 08.07.2004 5 5 2 4345
surname2 firstname2 patronymic1 M 22.01.1999 2 1 5 3870
surname1 firstname1 patronymic1 M 04.05.2005 4 3 4 3302
surname2 firstname3 patronymic3 F 16.12.1995 1 3 5 2801
surname3 firstname2 patronymic3 F 24.08.1999 4 5 3 4139
surname4 firstname3 patronymic4 M 26.07.1998 2 3 4 2548
surname1 firstname3 patronymic1 M 23.06.1998 1 4 - 1092
surname1 firstname3 patronymic2 F 15.10.2000 5 3 3 1577
surname2 firstname2 patronymic2 M 08.12.2004 3 5 2 4394
surname4 firstname1 patronymic3 M 05.08.1998 2 - 2 1404
surname3 firstname4 patronymic3 F 15.12.1998 1 3 4 1133
surname3 firstname3 patronymic2 M 06.09.2000 2 3 3 1118
surname4 firstname2 patronymic3 F 22.12.2003 3 4 3 2677
Атаманенко Бодя Степанович Ж 02.01.1996 5 3 5 4319
Атаманенко Саша Степанович F 23.06.1996 2 1 - 1285
Атаманенко Софія Степанович Ж 26.11.2004 4 5 4 1630
Конопленко Бодя Степанович Ж 04.01.1998 2 1 1 3078
Атамась Софія Сергійович Ж 02.08.2000 3 2 2 2506
Katleho Ömür Jensen F 07.05.2004 2 3 3 2103
Narcisse Céleste Albani F 24.08.1999 4 5 3 4139
Атаманенко Софія Степанович Ж 06.03.2001 4 1 - 1918
Єрмоленко Софія Степанович Ж 21.03.1997 4 5 3 1365
Єрмоленко Ніка Сергійович F 02.01.2004 - 1 3 3514
Атамась Саша Сергійович F 01.11.1996 2 5 3 3451
Конопленко Саша Георгійович F 11.08.2003 1 1 5 2374
Конопленко Бодя Романович Ч 12.06.1998 4 4 5 3538
Атамась Бодя Сергійович M 21.07.2001 2 1 3 2401
Aytaç Nzinga Nevin F 12.11.1999 4 5 4 3392
Атаманенко Ніка Сергійович F 04.02.2004 4 1 3 3593
Єрмоленко Софія Степанович F 14.07.1996 4 5 4 2592
Атаманенко Софія Сергійович Ч 01.02.1996 2 4 1 4157
Claude Ange-Giusi Leoni F 02.03.2004 - 1 _ 1514
Єрмоленко Ніка Георгійович F 19.01.1999 3 5 2 2346
Атаманенко Софія Степанович M 28.01.2003 - 4 1 1473
Атамась Саша Георгійович Ч 20.08.1998 - 5 1 2504
Єрмоленко Саша Георгійович Ч 19.09.1995 1 4 2 1599
Єрмоленко Ніка Степанович Ч 26.11.2001 1 - 4 2074
2 changes: 1 addition & 1 deletion src/main.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ static void RunMenu(List<Student> students)
}
} while (match != 0);
}

static void Main()
{
Console.OutputEncoding = UTF8Encoding.UTF8;
Expand Down
54 changes: 17 additions & 37 deletions src/methods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,23 @@ public partial class Program
{
static void Var9(List<Student> students)
{
WriteData(ProcessData(students), "data_new.txt");
Console.WriteLine("Дані були успішно записані у файл data_new.txt");
WriteData(ProcessData(students), "../data_new.txt");
Console.WriteLine("\nДані збережено у data_new.txt");
}

static void Var10(List<Student> students)
{
Console.WriteLine("\nСписок студентів з відмінними оцінками з фізики:");
foreach (var student in Filter(students, IsTalentedPhysician))
Console.WriteLine($"{student.surName} {student.firstName} {student.patronymic} {EvalAverage(student):0.0} {student.scholarship}");
}

static void Var24(List<Student> students)
{
Console.WriteLine("\nСписок студентів, які народились влітку:");
var summer_kids = Filter(students, IsSummer);
foreach (var dude in summer_kids)
Console.WriteLine($"{dude.surName} {dude.firstName} {EvalAverage(dude)}");
Console.WriteLine($"{dude.surName} {dude.firstName} {EvalAverage(dude):0.0}");
}

static List<Student> ProcessData(List<Student> students)
Expand All @@ -27,57 +29,35 @@ static List<Student> ProcessData(List<Student> students)

foreach (var student in students)
{
char sex = student.sex;
if (sex == 'M' || sex == 'м' || sex == 'Ч')
sex = 'Ч';
else if (sex == 'F' || sex == 'ж' || sex == 'Ж')
sex = 'Ж';

Student processedStudent = new()
{
surName = student.surName,
firstName = student.firstName,
patronymic = student.patronymic,
sex = sex,
dateOfBirth = student.dateOfBirth,
Marks = student.Marks,
scholarship = student.scholarship
};

processedStudents.Add(processedStudent);
var newStudent = student;
processedStudents.Add(newStudent);
newStudent.sex = (student.sex == 'M' || student.sex == 'Ч') ? 'Ч' : (student.sex == 'F' || student.sex == 'Ж') ? 'Ж' : '?';
}

return processedStudents;
}

static void WriteData(List<Student> students, string filename)
{
try
{
StreamWriter writer = new(filename);
var max_len = students.Max(s=>s.surName.Length);
using (StreamWriter writer = new(filename)) {
foreach (var student in students)
{
foreach (var student in students)
{
writer.WriteLine($"{student.surName,-20} {student.firstName,-20} {student.patronymic,-20} " +
$"{student.sex,-5} {student.dateOfBirth,-12} {student.Marks[0],-5} {student.Marks[1],-5} {student.Marks[2],-5} " +
$"{student.scholarship}");
}
writer.WriteLine($"{student.surName.PadRight(max_len+2)} {student.firstName.PadRight(max_len+2)} {student.patronymic.PadRight(max_len+2)} " +
$"{student.sex,-3} {student.dateOfBirth,-12} {student.Marks[0],-3} {student.Marks[1],-3} {student.Marks[2],-3} " +
$"{student.scholarship}");
}
}
catch (IOException e)
{
Console.WriteLine($"Помилка запису у файл: {e.Message}");
}
}

public static IEnumerable<Student> Filter(List<Student> students, Func<Student, bool> Condition)
{
return students.Where(Condition);
}

private static bool IsSummer(Student student)
{
int month = int.Parse(student.dateOfBirth[3..4]);
int month = int.Parse(student.dateOfBirth[3..5]);
return month >= 6 && month <= 8;
}

Expand Down