Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Моля за едно рамо за курсовата ми по програмиране!

Моля за едно рамо за курсовата ми по програмиране!

Мнениеот Гост » 17 Яну 2022, 16:10

Това е условието за създаването на програмата.

За група студенти са зададени име, ЕГН, фак. №, оценките по 10 дисциплини, среден успех. Да се създаде програма, която избира от меню и използва функции за:
• създаване на файл с информация за групата студенти, без да се въвежда ср. успех;
• изчисляване на средния успех на всеки един от студентите;
• намиране и извеждане броя на мъжете с повече от две двойки.
Благодаря предварително за насоките ! :!: :roll:
Гост
 

Re: Моля за едно рамо за курсовата ми по програмиране!

Мнениеот peyo » 11 Фев 2022, 06:37

Гост написа:Това е условието за създаването на програмата.

За група студенти са зададени име, ЕГН, фак. №, оценките по 10 дисциплини, среден успех. Да се създаде програма, която избира от меню и използва функции за:
• създаване на файл с информация за групата студенти, без да се въвежда ср. успех;
• изчисляване на средния успех на всеки един от студентите;
• намиране и извеждане броя на мъжете с повече от две двойки.
Благодаря предварително за насоките ! :!: :roll:


Намиране и извеждане броя на мъжете с повече от две двойки ще е трудно само по тези данни.
Как програмата ще определи дали даден студент е мъж или жена само по име, ЕГН, факултетен номер и оценки? Някой знае ли дали в ЕГН-то е кодиран пола на човека? Съмнявам се да е кодиран във факултетния номер?! По име предполагам ще стане, но няма да е 100% сигурно и трябва да ползваме елементи на изкуствен интелект. Сложна задача...
peyo
Математик
 
Мнения: 1768
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 664

Re: Моля за едно рамо за курсовата ми по програмиране!

Мнениеот Какаши Сенсей » 24 Фев 2022, 13:47

Не знам за другите, но само на мене ли объркват условията на задачите по информатика. Смисъл, никога не сами били ясни.
Най-важно е душата да бъде извисена .
Какаши Сенсей
Фен на форума
 
Мнения: 119
Регистриран на: 05 Май 2021, 10:26
Рейтинг: 28

Re: Моля за едно рамо за курсовата ми по програмиране!

Мнениеот ammornil » 26 Фев 2022, 02:02

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

Не мога да кажа нищо за C++, но в C# ще изглежда горе долу така (не съм добавил само цикъл за записване на резултатите във файл и умишлено съм изпуснал ЕГН-то)

Student.cs
Код: Избери целия код
using System;
using System.Collections.Generic;
using System.Text;

namespace CSharpConsoleApp_Students
{
    internal class Student
    {
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string facultyNumber { get; set; }
        public char gender { get; set; }

        public IDictionary<string, int> examsResults { get; set;  }
       
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="fName"></param>
        /// <param name="lName"></param>
        /// <param name="fNo"></param>
        /// <param name="sex"></param>
        public Student(string fName, string lName, string fNo, char sex)
        {
            //дефинирай основните характеристики
            this.firstName = fName;
            this.lastName = lName;
            this.facultyNumber = fNo;
            this.gender = sex;
            this.examsResults = new Dictionary<string, int>();
            //задай стойности на оценките от изпити
            this.SetExamsResults();           
        }

        /// <summary>
        /// задай произволни стойности от 2 до 6 за всички релултати от изпити
        /// </summary>
        internal void SetExamsResults()
        {
            examsResults.Clear();
            Random rnd = new Random();
            examsResults.Add("Calculus", rnd.Next(2, 6));
            examsResults.Add("Analitical Geometry", rnd.Next(2, 6));
            examsResults.Add("Linear Algebra", rnd.Next(2, 6));
            examsResults.Add("Introductiory Statistics", rnd.Next(2, 6));
            examsResults.Add("Advanced Statistics", rnd.Next(2, 6));
            examsResults.Add("Discrete Mathematics", rnd.Next(2, 6));
            examsResults.Add("Physics", rnd.Next(2, 6));
            examsResults.Add("Programming Fundamentals", rnd.Next(2, 6));
            examsResults.Add("Complex Analysis", rnd.Next(2, 6));
            examsResults.Add("Topology", rnd.Next(2, 6));
        }

        internal int AverageScore()
        {
            int TttlScore = 0;
            foreach (string key in this.examsResults.Keys)
            {
                TttlScore += this.examsResults[key];
            }
            return TttlScore / this.examsResults.Count;
        }
    }
}



Program.cs
Код: Избери целия код
using System;

namespace CSharpConsoleApp_Students
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //създай лист за съхранение на студентите
            Student[] students = new Student[25];
            //създай брояч за броя на студентите
            int stCount = 0;
           
            //създай нов студент
            Student st1 = new Student("Toma", "Petrov", "2265497",'m');
            //добави нов студент в списъка
            students[stCount] = st1;
            //прехвърли на следващ ред в списъка
            stCount++;

            st1 = new Student("Georgi", "Stamov", "2265498", 'm');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Dimitar", "Ganchev", "2265499", 'm');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Diana", "Velkova", "2265500", 'f');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Yordanka", "Hristova", "2265501", 'f');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Danail", "Peev", "2265502", 'm');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Zdravko", "Sarmov", "2265503", 'm');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Desislava", "Nikolova", "2265504", 'f');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Violeta", "Temelkova", "2265505", 'f');
            students[stCount] = st1;
            stCount++;

            st1 = new Student("Petar", "Vasilev", "2265506", 'm');
            students[stCount] = st1;
            stCount++;

            //отпечатай лист на студентите
            foreach (Student stnd in students)
            {
                if (stnd != null)
                {
                    Console.WriteLine("{0, -25} {1, -25}", stnd.firstName, stnd.lastName);
                }               
            }
            Console.WriteLine("\n");
            //отпечатай списък с резултатите за всеки студент по изпитни предмети
            Console.WriteLine("{0, 20} {1, 20} {2, 30} \t {3, 4}", "first name", "last name", "subject", "score");
            //брояч на редове
            int rcnt = 1;
            foreach (Student stnd in students)
            {
                if (stnd != null)
                {
                    foreach (string key in stnd.examsResults.Keys)
                    {
                        Console.WriteLine("{0, 20} {1, 20} {2, -30} \t {3, 4}", stnd.firstName, stnd.lastName, key, stnd.examsResults[key]);
                        rcnt++;
                        if (rcnt == 11)
                        {
                            rcnt = 1;
                            Console.WriteLine("{0, 20} {1, 20} {2, -30} \t {3, 4}", stnd.firstName, stnd.lastName, "AVERAGE SCORE:", stnd.AverageScore());
                            Console.Write("\n\n  Press any key to continue... ");
                            Console.ReadKey(false);
                            Console.WriteLine("{0, 20} {1, 20} {2, 30} \t {3, 4}", "first name", "last name", "subject", "score");
                        }
                    }
                }               
            }

            //друг начин за публикуване на резултатите по студент
            //отпечатай списък с резултатите за всеки студент по изпитни предмети           
            //брояч на редове
            rcnt = 1;
            foreach (Student stnd in students)
            {
                if (stnd != null)
                {
                    Console.WriteLine("{0, 20} {1, 20} {2, 20}", stnd.facultyNumber, stnd.firstName, stnd.lastName);
                    Console.WriteLine("{0, 25} {1, -30} \t {2, 4}", " ", "subject", "score");
                    foreach (string key in stnd.examsResults.Keys)
                    {
                        Console.WriteLine("{0, 25} {1, -30} \t {2, 4}", rcnt , key, stnd.examsResults[key]);
                        rcnt++;
                        if (rcnt == 11)
                        {
                            rcnt = 1;
                            Console.WriteLine("{0, 25} {1, -30} \t {2, 4}", " ", "AVERAGE SCORE:", stnd.AverageScore());
                            Console.Write("\n\n  Press any key to continue... ");
                            Console.ReadKey(false);
                        }
                    }
                }
            }

            //преброй мъжете с повече от две двойки
            rcnt = 0;
            foreach (Student stnd in students)
            {
                if (stnd != null)
                {
                    if (stnd.gender != 'm')
                    {
                        continue;
                    }
                    int chk = 0;
                    foreach (string key in stnd.examsResults.Keys)
                    {
                        if (stnd.examsResults[key] == 2)
                        {
                            chk++;
                        }
                    }
                    if (chk >= 2)
                    {
                        rcnt++;
                    }
                }
            }
            Console.WriteLine("There are {0} males with 2 or more scores of 2", rcnt);

            Console.ReadKey(false);
        }
           
    }
}


В класа студент може да се добави метод, с който да се определя пола.
Код: Избери целия код
internal char DetermineGender()
        {
            if (this.lastName[this.lastName.Length - 1] == 'a')
            {
                return 'f';
            }
            else
            {
                return 'm';
            }
        }

Тогава в основната прграма вместо
Код: Избери целия код
...
                    if (stnd.gender != 'm')
                    {
                        continue;
                    }
...

ще имаме
Код: Избери целия код
...
                   if (stnd.DetermineGender() != 'm')
                    {
                        continue;
                    }
...
Прикачени файлове
CSharpConsoleApp_Students2.zip
(200.97 KiB) 97 пъти
CSharpConsoleApp_Students.zip
(196.65 KiB) 58 пъти
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3767
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1779

Re: Моля за едно рамо за курсовата ми по програмиране!

Мнениеот ammornil » 26 Фев 2022, 19:08

Проверих с национална служба ЕСГРАОН (Единна система за гражданска регистрация и административно обслужване) и наистина ЕГН-то съдържа пола. Това е предпоследната цифра на ЕГН-то: нечетна за жените и четна за мъжете.
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3767
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1779


Назад към C, C++



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)