Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
1

Подсчет максимальной суммы баллов оценок на соревновании

14.01.2011, 22:46. Просмотров 1015. Ответов 6
Метки нет (Все метки)

Некое соревнование (выступление) оценивают 5 судей. Каждый судья ставит оценку каждому участнику (тут видимо нужен массив с фамилиями для последующего вывода на консоль результатов и генератор случайных чисел для проставления оценок, оценки от 1-5 балла). Количество участников соревнования от 3 до 5 (пользователь задает это число с консоли).
После генерации оценок (ее результаты вывести на консоль), нужно отбросив минимальные и максимальные оценки вывести на консоль фамилию участника с наибольшим количеством баллов и соответственно это число баллов.

заранее спасибо за любую помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2011, 22:46
Ответы с готовыми решениями:

Подсчет суммы баллов для каждого студента
студент выполнил 5 тестов по информатике. за каждый тест можно получить от 0 до 5 баллов. если...

Распределение занятых мест в соревновании с учетом набранных баллов
Здравствуйте. Подскажите, можно ли сделать программку в VBA, чтобы она автоматически распределяла и...

Вычислить среднее, мин и макс значение оценок от 1 до 12 баллов
Всем привет, помогите с формулой! Для задачи: В диапазон А1:А10 введены значения, которые...

Вычислить общую сумму баллов, наихудшую и наилучшую оценку по списку оценок
Оператор цикла:for, while Известны оценки студента по 10 дисциплинам. Вычислить общую сумму...

6
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
15.01.2011, 00:14 2
Вывести имя участника у которого наибольше в сумме баллов и эту же сумму баллов?

Цитата Сообщение от murus Посмотреть сообщение
нужно отбросив минимальные и максимальные оценки
А здесь не понял.То есть оценку 1 и 5 не учитывать при подсчете наибольшей суммы балов?
0
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
15.01.2011, 00:34  [ТС] 3
не совсем... отбрасывать не 1 и 5, а минимальные из тех, что сгенерятся случайным образом... т.е. из массива случайных оценок найти минимальную и максимальную и не учитывать эти цифры при суммировании остальных оценок.

а вывести да - фамилию и макс. сумму баллов (посчитанную без учета отброшенных цифр)
0
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
15.01.2011, 00:37 4
Ну смотри, сделал все кроме того что нужно отбросить, думаю сам доделаешь)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class Member
    {
        public string Name { get; set; }
        public int[] Marks { get; set; }
 
        public Member(string name, int[] marks)
        {
            Name = name;
            Marks = marks;
        }
 
        public void DrawInfoMember()
        {
            Console.WriteLine("\n\t" + Name); 
            for (int i = 0; i < Marks.Length; i++)
            {
                Console.WriteLine((i + 1) + " referee - " + Marks[i]);
            }
        }
 
        public int GetAllMarks()
        {
            return Marks.Sum();
        }
 
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            var listMembers = new List<Member>();
 
            Console.Write("How many members? - ");
            int countMembers = int.Parse(Console.ReadLine());
 
            SetInfoMembers(listMembers, countMembers);
            DrawAllInfo(listMembers, countMembers);
            SearchWinner(listMembers, countMembers);
        }
 
        #region Function with Members
 
        public static void SetInfoMembers(List<Member> listMembers, int countMembers)
        {
            var rand = new Random();
 
            for (int i = 0; i < countMembers; i++)
            {
                Console.Write("Enter name : ");
                listMembers.Add(new Member(Console.ReadLine(), new[] { rand.Next(1, 5), 
                                                                       rand.Next(1, 5),
                                                                       rand.Next(1, 5),
                                                                       rand.Next(1, 5),
                                                                       rand.Next(1, 5) }));
            }
        }
 
        public static void DrawAllInfo(List<Member> listMembers, int countMembers)
        {
            for (int i = 0; i < countMembers; i++)
            {
                listMembers[i].DrawInfoMember();
            }
        }
 
        public static void SearchWinner(List<Member> listMembers, int countMembers)
        {
            int index = 0;
            int maxMark = listMembers[0].GetAllMarks();
 
            for (int i = 0; i < countMembers; i++)
            {
                if (listMembers[i].GetAllMarks() > maxMark)
                {
                    maxMark = listMembers[i].GetAllMarks();
                    index = i;
                }
            }
 
            Console.WriteLine("\n\n\nWinner : " + listMembers[index].Name + ". With sum marks : " + maxMark);
        }
 
        #endregion
 
    }
1
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
15.01.2011, 02:02  [ТС] 5
кстати а почему когда в рендоме числа от 1 до 5 указаны он выдает любые числа кроме 5... а если указать промежуток (1, 6) тогда все правильно генериться...

пока ждала, написала вот такой кусочег сама:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
namespace соревнования
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
 
            Console.Out.WriteLine("Введите количество участников от 3 до 5:");
            try
            {
                n = Convert.ToInt32(Console.In.ReadLine());
            }
            catch (System.Exception e)
            {
                Console.Out.WriteLine("это не число");
            }
 
            string[] allfam = { "Иванов", "Петров", "Сидоров", "Васильев", "Денисов" }; //массив с фамилиями
 
            string[] fam; //массив для хранения фамилий случайного выбора
 
            int[] ch1;
            ch1 = new int[n];
 
            int[] ch2;
            ch2 = new int[n];
 
            int[] ch3;
            ch3 = new int[n]; //массивы с оценками судей
 
            int[] ch4;
            ch4 = new int[n];
 
            int[] ch5;
            ch5 = new int[n];
 
            int i;
 
            System.Random r = new Random(); //случайный выбор 
 
            fam = new string[n]; //массив для хранения случайного выбора
 
            for (i = 0; i < n; i++)
            {
                fam[i] = allfam[r.Next(0, 5)]; //случайный выбор фамилий
 
            }
            for (i = 0; i < n; i++)
            {
                ch1[i] = r.Next(1, 6); //случайное заполнение оценок
                ch2[i] = r.Next(1, 6);
                ch3[i] = r.Next(1, 6);
                ch4[i] = r.Next(1, 6);
                ch5[i] = r.Next(1, 6);
 
            }
            for (i = 0; i < n; i++)
            {
                Console.Out.WriteLine("{0} {1} {2} {3} {4} {5}", fam[i], ch1[i], ch2[i], ch3[i], ch4[i], ch5[i] );
            }
        }
    }
}
если знаете, скажите как сделать так чтобы случайно генерящиеся фамилии не повторялись? подозреваю что надо добавить условие в генератор фамилий, да?
0
73 / 73 / 10
Регистрация: 15.04.2009
Сообщений: 126
15.01.2011, 12:20 6
Цитата Сообщение от murus Посмотреть сообщение
если знаете, скажите как сделать так чтобы случайно генерящиеся фамилии не повторялись? подозреваю что надо добавить условие в генератор фамилий, да?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string[] allfam = { "Иванов", "Петров", "Сидоров", "Васильев", "Денисов" };
string newMember;
 
do
{     
     Console.Write("Enter surname of new member - ");
     newMember = Console.ReadLine();
 
     if (allfam.Contains(newMember))
     {
           Console.WriteLine("Такая фамилия уже зарегистировано в этом конкурсе!");
     }
 
} while (allfam.Contains(newMember));
По этому примеру можешь сделать и генерацию имен, такая же будет проверка.
0
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
15.01.2011, 19:09  [ТС] 7
спасибо, это поняла)
решила-таки сама помучать задачку, чтобы окончательно понять... но у нас на занятиях пока дается минимум функций, и самые основы языка... поэтому пытаюсь писать все, пользуясь только понятиями массивов, циклов, переменных и простейших операций.

вот например дошла до поиска максимума по массивам с оценками, вроде ошибок не выдает, но считает не верно (или выводит неверно) что я делаю не так?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
namespace соревнования
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
 
            Console.Out.WriteLine("Введите количество участников от 1 до 5:");
            try
            {
                n = Convert.ToInt32(Console.In.ReadLine());
            }
            catch (System.Exception e)
            {
                Console.Out.WriteLine("это не число");
            }
 
            string[] allfam = { "Иванов", "Петров", "Сидоров", "Денисов", "Александров" }; //массив с фамилиями
 
            string[] fam; //массив для хранения фамилий случайного выбора
 
 
            int[] fam1; //массив для хранения оценок 1-го участника
            fam1 = new int[5];
 
            int[] fam2;
            fam2 = new int[5];
 
            int[] fam3;
            fam3 = new int[5]; 
 
            int[] fam4;
            fam4 = new int[5];
 
            int[] fam5;
            fam5 = new int[5];
 
            int i;
            i = 0;
 
            System.Random r = new Random(); //случайный выбор 
 
            fam = new string[n]; //массив для хранения случайного выбора
 
            for (i = 0; i < n; i++)
            {
                fam[i] = allfam[i]; //случайный выбор фамилий
 
            }
            for (i = 0; i < n; i++)
            {
                fam1[i] = r.Next(1, 6); //случайное заполнение оценок
                fam2[i] = r.Next(1, 6);
                fam3[i] = r.Next(1, 6);
                fam4[i] = r.Next(1, 6);
                fam5[i] = r.Next(1, 6);
 
            }
            for (i = 0; i < n; i++)
            {
                Console.Out.WriteLine("{0} {1} {2} {3} {4} {5}", fam[i], fam1[i], fam2[i], fam3[i], fam4[i], fam5[i]);
            }
 
            int max1 = 0;
            int max2 = 0;
            int max3 = 0;
            int max4 = 0;
            int max5 = 0;
          
            for (i = 1; i < n; i++)
            {
                if (fam1[i] > fam1[max1])
                {
                    max1 = i;
                }
                if (fam2[i] > fam2[max2])
                {
                    max2 = i;
                }
                if (fam3[i] > fam3[max3])
                {
                    max3 = i;
                }
                if (fam4[i] > fam4[max4])
                {
                    max4 = i;
                }
                if (fam5[i] > fam5[max5])
                {
                    max5 = i;
                }
 
            }
 
            int[] max; //массив максимумов
            max = new int[5];
 
            max[0] = max1;
            max[1] = max2;
            max[2] = max3;
            max[3] = max4;
            max[4] = max5;
 
 
            for (i = 0; i < n; i++)
            {
                Console.Out.WriteLine("Максимум {0} {1}", fam[i], max[i]);
            }
 
                
            }
            
        }
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2011, 19:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Программа для ввода и вывода фамилий и оценок студентов. Отберите тех, у которых сумма баллов вторая по вел
Программа для ввода и вывода фамилий и оценок студентов. Отберите тех, у которых сумма баллов...

Выбрать студента с максимальной суммой баллов за сессию
Создать программу для обработки сведений о студентах. Сведения предоставить в виде таблицы,...

если балл выше 85, то выводится отметка «5», 84 – 70 баллов – «4», 69 – 35 баллов – «3», ниже 35 баллов – «2»
если балл выше 85, то выводится отметка «5», 84 – 70 баллов – «4», 69 – 35 баллов – «3», ниже 35...

Подсчет баллов
Всем добрый день! Работаю над тестом. Первая форма является меню, где можно выбрать тип задания....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.