diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 119d2a6..bc7a58e 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -2,7 +2,7 @@ name: PR Agent for NUWM on: pull_request: - types: [ opened, reopened ] + types: [ opened, reopened, synchronize, edited ] jobs: pr_agent_job: @@ -12,13 +12,13 @@ jobs: - name: pr-agent-nuwm uses: EzGrade/Pr-Agent-NUWM@main env: - APP_ID: ${{ secrets.APP_ID }} + GIT_APP_ID: ${{ secrets.GIT_APP_ID }} + GIT_PRIVATE_KEY: ${{ secrets.GIT_PRIVATE_KEY }} + GIT_INSTALLATION_ID: ${{ secrets.GIT_INSTALLATION_ID }} + GIT_REPOSITORY: ${{ github.repository }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_REPOSITORY: ${{ github.repository }} - PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} OPENAI_MODEL: ${{ secrets.OPENAI_MODEL }} - INSTALLATION_ID: ${{ secrets.INSTALLATION_ID }} GOOGLE_CREDENTIALS_CONTENT: ${{ secrets.GOOGLE_CREDENTIALS_CONTENT }} - SPREADSHEET_URL: ${{ secrets.SPREADSHEET_URL }} - SHEETS_NAMING: ${{ secrets.SHEETS_NAMING }} + GOOGLE_SPREADSHEET_URL: ${{ secrets.GOOGLE_SPREADSHEET_URL }} + GOOGLE_SHEETS_NAMING: ${{ secrets.GOOGLE_SHEETS_NAMING }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Program.cs b/Program.cs index bea9748..919c932 100644 --- a/Program.cs +++ b/Program.cs @@ -1,24 +1,96 @@ using System; +using System.Linq; -namespace LabWork +namespace PhoneDirectory { - // Даний проект є шаблоном для виконання лабораторних робіт - // з курсу "Об'єктно-орієнтоване програмування та патерни проектування" - // Необхідно змінювати і дописувати код лише в цьому проекті - // Відео-інструкції щодо роботи з github можна переглянути - // за посиланням https://www.youtube.com/@ViktorZhukovskyy/videos - - class Result - { - // TODO: do it ! + public class Abonent + { + public string Name { get; } + public string PhoneNumber { get; } + + public Abonent(string name, string phoneNumber) + { + if (string.IsNullOrWhiteSpace(name)) + throw new ArgumentException("Name cannot be null or empty.", nameof(name)); + if (string.IsNullOrWhiteSpace(phoneNumber)) + throw new ArgumentException("PhoneNumber cannot be null or empty.", nameof(phoneNumber)); + + Name = name; + PhoneNumber = phoneNumber; + } + + // Метод для обчислення суми цифр номера телефону + public int CalculatePhoneNumberDigitsSum() + { + if (string.IsNullOrEmpty(PhoneNumber)) + return 0; + + int sum = 0; + foreach (char c in PhoneNumber) + { + if (char.IsDigit(c)) + sum += c - '0'; // арифметичне перетворення символа в число + } + return sum; + } } - - class Program + + internal class Program { - static void Main(string[] args) + static void Main() { - - Console.WriteLine("Hello World!"); + // Замість жорстко закодованого масиву можна ввести розмір масиву + Console.Write("Введіть кількість абонентів: "); + if (!int.TryParse(Console.ReadLine(), out int n) || n <= 0) + { + Console.WriteLine("Некоректна кількість."); + return; + } + + Abonent[] abonents = new Abonent[n]; + + for (int i = 0; i < n; i++) + { + Console.Write($"Введіть ім'я абонента #{i + 1}: "); + string name = Console.ReadLine(); + + Console.Write($"Введіть номер телефону абонента #{i + 1}: "); + string phone = Console.ReadLine(); + + try + { + abonents[i] = new Abonent(name, phone); + } + catch (ArgumentException ex) + { + Console.WriteLine($"Помилка при створенні абонента: {ex.Message}"); + i--; // повторити введення для цього індексу + } + } + + if (abonents.Length == 0) + { + Console.WriteLine("Масив абонентів пустий."); + return; + } + + Abonent maxAbonent = abonents[0]; + int maxSum = maxAbonent.CalculatePhoneNumberDigitsSum(); + + foreach (var ab in abonents) + { + int sum = ab.CalculatePhoneNumberDigitsSum(); + Console.WriteLine($"Абонент: {ab.Name}, Номер: {ab.PhoneNumber}, Сума цифр: {sum}"); + + if (sum > maxSum) + { + maxSum = sum; + maxAbonent = ab; + } + } + + Console.WriteLine($"\nАбонент з найбільшою сумою цифр номера телефону: {maxAbonent.Name}, Сума: {maxSum}"); + Console.WriteLine("Завершення програми..."); } } } diff --git a/README.md b/README.md index 8743ae6..c934430 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/EBr0CZ_K) [![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/wgWXpqsn) # Методичні вказівки до виконання лабораторної роботи ## Тема: Масиви об’єктів