Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Помощ за решаване на задача на C#


Michael M
 Сподели

Препоръчан отговор

Здравейте! Ще съм много благодарен ако някой може да ми помогне с решаването на задачата, която съм прикачил на C#. (насоки или примерни решения). =)

 

Екранна снимка (98).png

Линк към коментара
Сподели в други сайтове

На първо време може да започнеш с това:

https://www.google.com/search?q=C%23+lessons&num=20&source=lnms&tbm=vid&sa=X&ved=0ahUKEwij7Kv_lfbbAhXECSwKHQYtDQgQ_AUICigB&biw=1320&bih=903

След това, като стигнеш до някъде и нещо не ти се получава, даваш кода, който си написал и може и да получиш помощ.

Линк към коментара
Сподели в други сайтове

Благодаря за бързия отговор! Запознат съм с основните неща, но нямам практически опит с такива задачи. Според мен трябва да направя обект (структурата на служителя), след това list, където ще ги вкарвам. Затруднява ме сортирането и генерирането на имейли. :((

Линк към коментара
Сподели в други сайтове

Така ще е най-добре принципно. Потърси си в интернет има много подобни решения. За сортирането ще си направиш метод на обекта по кое поле да ти го сортира, а генерирането си е описано как става, добавяш нужните полета, ако съществуват - това става със съответните проверки дали има нещо записано в променливата/списъка и от стойността, на това което се търси, вземаш само първата буква, ако го има.

Линк към коментара
Сподели в други сайтове

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Employees
{
    class Program
    {
        static Action[] action = { InputEmployee, OutputEmployeeData, MissingCompulsoryFields, GenerateEmails, Fin };
        static Dictionary<string, Employee> dic = new Dictionary<string, Employee>();
        static void Main(string[] args)
        {
            for (; ; )
            {
                Console.WriteLine("\nМеню:");
                Console.WriteLine("1. Въведете служител");
                Console.WriteLine("2. Изведете всички данни");
                Console.WriteLine("3. Изведете служителите с непопълнени задължителни полета");
                Console.WriteLine("4. Генерирайте имейли");
                Console.WriteLine("5. Изход от програмата");
                string s = Console.ReadLine();
                int choice;
                if (int.TryParse(s, out choice) == false)
                {
                    Console.WriteLine("Невалиден избор");
                    continue;
                }
                if (choice < 1 || choice > 5)
                {
                    Console.WriteLine("Невалиден избор");
                    continue;
                }
                action[choice - 1]();
            }
        }
        static void InputEmployee()
        {
            string name, egn, latinName, country, postalCode, city;
            for (; ; )
            {
                Console.Write("Въведете име -> ");
                name = Console.ReadLine();
                if (name.Length > 50)
                {
                    Console.WriteLine("Дължината на името не трябва да е по - голяма от 50 символа.");
                    continue;
                }
                break;
            }
            for (; ; )
            {
                Console.Write("Въведете егн -> ");
                egn = Console.ReadLine();
                if (egn.Length > 15)
                {
                    Console.WriteLine("Дължината на ЕГН не трябва да е по - голяма от 15 символа.");
                    continue;
                }
                break;
            }
            for (; ; )
            {
                Console.Write("Въведете името на латиница -> ");
                latinName = Console.ReadLine();
                if (latinName.Length > 50)
                {
                    Console.WriteLine("Дължината на името не трябва да е по - голяма от 50 символа");
                    continue;
                }
                break;
            }
            for (; ; )
            {
                Console.Write("Въведете държава -> ");
                country = Console.ReadLine();
                if (latinName.Length > 50)
                {
                    Console.WriteLine("Дължината на държавата не трябва да е по - голяма от 30 символа");
                    continue;
                }
                break;
            }
            for (; ; )
            {
                Console.Write("Въведете пощенски код -> ");
                postalCode = Console.ReadLine();
                if (latinName.Length > 50)
                {
                    Console.WriteLine("Дължината на пощенския код не трябва да е по - голяма от 30 символа");
                    continue;
                }
                break;
            }
            for (; ; )
            {
                Console.Write("Въведете град -> ");
                city = Console.ReadLine();
                if (latinName.Length > 50)
                {
                    Console.WriteLine("Дължината на града не трябва да е по - голяма от 50 символа");
                    continue;
                }
                break;
            }
            dic[name] = new Employee();
            dic[name].name = name;
            dic[name].egn = egn;
            dic[name].latinName = latinName;
            dic[name].country = country;
            dic[name].postalCode = postalCode;
            dic[name].city = city;
        }
        static void OutputEmployeeData()
        {
            List<string> order = dic.Keys.OrderBy(x => dic[x].country).ThenBy(x => dic[x].name).ToList();
            foreach (var x in order)
            {
                Console.WriteLine($"{dic[x].name}, {dic[x].egn}, {dic[x].latinName}, {dic[x].country}, {dic[x].city}");
            }
        }
        static void MissingCompulsoryFields()
        {
            List<string> order = dic.Keys.Where(x => dic[x].name == "" || dic[x].egn == ""
                  || dic[x].latinName == "" || dic[x].country == "").OrderBy(x => dic[x].egn).ToList();
            Console.WriteLine("Списък на служителите с непопълнени задължителни полета:");
            foreach (var x in order)
            {
                Console.WriteLine($"{dic[x].name}");
            }
        }
        static void GenerateEmails()
        {
            List<string> emails = dic.Keys.Where(x => dic[x].latinName != "").ToList();
            foreach (var x in emails)
            {
                string[] sa = dic[x].latinName.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
                if (sa.Length == 3)
                {
                    string email = sa[2] + "_" + sa[0] + "_" + sa[1].Substring(0, 1) + "@nncomputers.com";
                    dic[x].email = email;
                }
                else if (sa.Length == 2)
                {
                    string email = sa[1] + "_" + sa[0] + "@nncomputers.com";
                    dic[x].email = email;
                }
                else
                {
                    string email = sa[0] + "@nncomputers.com";
                }
                Console.WriteLine($"{dic[x].name}, email: {dic[x].email}");
            }
        }
        static void Fin()
        {
            Environment.Exit(0);
        }
    }
    class Employee
    {
        public string name;
        public string egn;
        public string latinName;
        public string country;
        public string postalCode;
        public string city;
        public string email = null;
    }
}

 

Линк към коментара
Сподели в други сайтове

  • 3 години по-късно...

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Публикацията ви съдържа термини, които не допускаме! Моля, редактирайте съдържанието си и премахнете подчертаните думи по-долу. Ако замените букви от думата със звездички или друго, за да заобиколите това предупреждение, профилът ви ще бъде блокиран и наказан!
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

 Сподели

×
×
  • Добави ново...