Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116

Помочь принцессе выбрать наилучший вариант из n числа женихов

07.12.2012, 11:48. Показов 4133. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, привет! Помогите мне, пожалуйста, составить алгоритм и написать программу для следующей задачи:

Принцесса выбирает себе женихов. Нужно помочь принцессе выбрать наилучший вариант из n числа женихов. Составить алгоритм и написать программу.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2012, 11:48
Ответы с готовыми решениями:

Найти наилучший вариант распределения ресурсов (на основании метода иерархии)
Если есть возможность, помогите с решением задачи .(условие в картинке), буду благодарен.

Выбрать вариант не имеющий ошибки и к каждому написать почему этот вариант правильный/неправильный
Прошу помогите, я плохо понимаю c++, да и простите если не в той теме, в общем, дали задание: Выбрать вариант не имеющий ошибки и к...

Наилучший алгоритм вывода числа на консоль (например из регистра)
У меня масса вариантов как сделать вывод числа на консоль, но я никак не могу определиться хотя бы с одним. Хотелось бы чтобы этот алгоритм...

33
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
07.12.2012, 12:10
Что из себя должен представлять обьект жених?
Какие критерии нужно учитывать при выборке?
Тут телепатов нет.
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
07.12.2012, 12:58  [ТС]
Я объясню на примере из 3х женихов:
первый жених - А
второй жених - В
третий жених - С
A>B>C, то есть А красивее В, В красивее С.
Принцесса женихов не видела, и если она выберет 1го, то не увидит 2го и 3го и т.п.
Вот какой алгоритм мы составили:
1ому отказать
если 2ой лучше первого, то ему говорит "да"
если 2ой хуже первого , то говорим "да" третьему.
Вот, но мне нужно для n количества женихов.
Вот варианты как могут заходить женихи:
АВС выберет самого не красивого
ВСА выберет самого красивого
СВА выберет среднего по красоте
САВ выберет самого красивого
АСВ выберет среднего по красоте
ВАС выберет самого красивого
Т.о. получается, что наилучших исходов 3/6
удачных исходов 2/6
неудачных исходов 1/6
Отсюда можно сделать вывод, что алгоритм составлен верно.
0
22 / 22 / 0
Регистрация: 30.11.2012
Сообщений: 54
07.12.2012, 17:21
Цитата Сообщение от Алёнчик Посмотреть сообщение
Отсюда можно сделать вывод, что алгоритм составлен верно
Ну так, для n женихов алгоритм неверный.
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
07.12.2012, 19:06  [ТС]
Так это для 3х женихов я привела пример, а не для n!!!
0
9 / 9 / 4
Регистрация: 18.10.2012
Сообщений: 48
08.12.2012, 02:57
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int max = 0;
            int now;
            int nom = 0;
            Console.WriteLine("Введите количество принцев: \n");
            string b = Console.ReadLine();
            int g = Convert.ToInt32(b);
            Console.WriteLine("Количество принцев : "+ b + "\n");
            Random rand = new Random();
            int i = rand.Next(0, 100);
            Dictionary<int, int> dict = new Dictionary<int, int>();
            for (int j = 0; j < g; j++)
            {
                dict.Add(j, rand.Next(0, 100));
            }
            ICollection<int> keys = dict.Keys;
            ICollection<int> val = dict.Values;
            foreach (int d in keys)
            {
                Console.WriteLine(" Жених -> {0}  Принцесса оценила на -> {1}", d, dict[d]);
                Console.WriteLine("Красота: " + dict[d]);
                now = dict[d];
                if (now > max)
                {
                    max = now;
                    nom = d;
                }
                
            }
            Console.WriteLine("Наибольшая Красота: " + max);
            Console.WriteLine("Наиболее понравившийся принц под номером: " + nom + "\n" + " Его оценила принцесса на: " +max );
        }
    }
}
1
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
08.12.2012, 12:27  [ТС]
А можете, пожалуйста написать алгоритм для этой программы, а то я запуталась?)) Заранее спасибо))
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
08.12.2012, 12:36  [ТС]
Помогите пожалуйста составить на эту задачу алгоритм написать программу:
Невеста ищет себе жениха (существует единственное вакантное место).
Есть известное число n претендентов.
О каждом претенденте можно сказать, лучше он или хуже другого.
Невеста общается с претендентами в случайном порядке.
В результате общения с каждым женихом невеста должна ему отказать либо принять его предложение.
Решение принимается только исходя из оценки претендента по сравнению с предыдущими.
Отвергнутые женихи не возвращаются.
Цель: выбрать лучшего претендента. Критерий выбора: красота.
0
9 / 9 / 4
Регистрация: 18.10.2012
Сообщений: 48
08.12.2012, 15:07
Цитата Сообщение от Алёнчик Посмотреть сообщение
А можете, пожалуйста написать алгоритм для этой программы, а то я запуталась?)) Заранее спасибо))
на счет алгоритма не знаю, поставил Коментарии может помогут, а суть примерно - создаем справочник dict заполняем его принцами, каждому номеру принца соответствует некая случайная переменная rand, потом просто перебираем все записи справочника через foreach и проверяем условие на большее значение красоты)

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int max = 0; //задаем переменную для хранения лучшего бала
            int now; // переменная для хранения оценки текущего принца
            int nom = 0; //переменная номера принца
            Console.WriteLine("Введите количество принцев: \n"); //запрашиваем количество принцев
            string b = Console.ReadLine();//переменная b количество принцев - считываем с ввода
            int g = Convert.ToInt32(b);// b преобразуем в int
            Console.WriteLine("Количество принцев : "+ b + "\n"); // выводим сообщение о введеных принцах
            Random rand = new Random(); //создаем случайное число
            int i = rand.Next(0, 100);
            Dictionary<int, int> dict = new Dictionary<int, int>();//создаем справочник для хранения номера принца и его оценки
            for (int j = 0; j < g; j++)
            {
                dict.Add(j, rand.Next(0, 100));//цикл на заполнение справочника где j = g = количеству принцам. rand.Next(0, 100) - случайно выбранный параметр красоты
            }
            ICollection<int> keys = dict.Keys;
            foreach (int d in keys)//просматриваем все ключи справочника (номер принци, красота)
            {
                Console.WriteLine(" Жених -> {0}  Принцесса оценила на -> {1}", d, dict[d]);// d - номер принца, dict[d] - красота
                Console.WriteLine("Красота: " + dict[d]);
                now = dict[d];
                if (now > max)//проверяем красоту и заполняем переменные, после перебора 1 строки заполняем now, затем проверяем не является ли это максимум если да то задаем значение max
                {
                    max = now;
                    nom = d;
                }
                
            }
            Console.WriteLine("Наибольшая Красота: " + max);// как прошел перебор выводим сообщение с max красотой
            Console.WriteLine("Наиболее понравившийся принц под номером: " + nom + "\n" + " Его оценила принцесса на: " +max );//тут вроде тоже все логично
1
310 / 206 / 44
Регистрация: 15.02.2012
Сообщений: 605
08.12.2012, 15:34
массив int, где каждый элемент - показатель красоты конкретного претендента. Находим максимальный элемент. Радуемся
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
08.12.2012, 15:39  [ТС]
А можно конкретнее?? и с программным кодом?))) Пожалуйста...
0
 Аватар для Cheshire94
3 / 3 / 2
Регистрация: 05.11.2012
Сообщений: 110
08.12.2012, 15:47
C#
1
2
3
4
Console.WriteLine("Введите число претедетнов: ");
            int pretend = Convert.ToInt32(Console.ReadLine());
            int[] N;
            N = new int[pretend];
Дальше просто невеста должна будет обращаться к каждому элементу(претеденту) массива и выбирать Y / N
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
08.12.2012, 16:20  [ТС]
Ну пожалуйста, напишите программу целиком...
0
 Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
08.12.2012, 17:39
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            int[] parameters;
            Console.WriteLine("Введите числовые значения красоты женихов через пробел:");
            while (true)
            {
                try
                {
                    parameters = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(s => Convert.ToInt32(s)).ToArray();
                    if (parameters.Length != 0)
                        break;
                    else
                        Console.WriteLine("Вы ничего не ввели, повторите попытку:");
                }
                catch
                {
                    Console.WriteLine("Неверный ввод, повторите попытку:");
                }
            }
            int best = 0;
            for (int i = 1; i < parameters.Length; i++)
                if (parameters[i] > parameters[best])
                    best = i;
            Console.WriteLine("Лучший жених — {0}.", best);
1
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
11.12.2012, 00:16  [ТС]
Эта программа правильная, только мне нужно её сделать с учетом того, что принцесса не может вернуть того,кто же прошел. Отсюда следует, что в выводе результат нужно показывать не наибольшую красоту, а количество наилучших, удачных и неудачных исходов. Пожалуйста, помогите немножко изменить!!! Заранее спасибо!!!!
0
 Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
11.12.2012, 15:27
Алёнчик, не очень понял, приведи пример вывода на числах.
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
11.12.2012, 16:56  [ТС]
на счет алгоритма не знаю, поставил Коментарии может помогут, а суть примерно - создаем справочник dict заполняем его принцами, каждому номеру принца соответствует некая случайная переменная rand, потом просто перебираем все записи справочника через foreach и проверяем условие на большее значение красоты)

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int max = 0; //задаем переменную для хранения лучшего бала
            int now; // переменная для хранения оценки текущего принца
            int nom = 0; //переменная номера принца
            Console.WriteLine("Введите количество принцев: \n"); //запрашиваем количество принцев
            string b = Console.ReadLine();//переменная b количество принцев - считываем с ввода
            int g = Convert.ToInt32(b);// b преобразуем в int
            Console.WriteLine("Количество принцев : "+ b + "\n"); // выводим сообщение о введеных принцах
            Random rand = new Random(); //создаем случайное число
            int i = rand.Next(0, 100);
            Dictionary<int, int> dict = new Dictionary<int, int>();//создаем справочник для хранения номера принца и его оценки
            for (int j = 0; j < g; j++)
            {
                dict.Add(j, rand.Next(0, 100));//цикл на заполнение справочника где j = g = количеству принцам. rand.Next(0, 100) - случайно выбранный параметр красоты
            }
            ICollection<int> keys = dict.Keys;
            foreach (int d in keys)//просматриваем все ключи справочника (номер принци, красота)
            {
                Console.WriteLine(" Жених -> {0}  Принцесса оценила на -> {1}", d, dict[d]);// d - номер принца, dict[d] - красота
                Console.WriteLine("Красота: " + dict[d]);
                now = dict[d];
                if (now > max)//проверяем красоту и заполняем переменные, после перебора 1 строки заполняем now, затем проверяем не является ли это максимум если да то задаем значение max
                {
                    max = now;
                    nom = d;
                }
                
            }
            Console.WriteLine("Наибольшая Красота: " + max);// как прошел перебор выводим сообщение с max красотой
            Console.WriteLine("Наиболее понравившийся принц под номером: " + nom + "\n" + " Его оценила принцесса на: " +max );//тут вроде тоже все логично
[/QUOTE]


Эта программа правильная, только мне нужно её сделать с учетом того, что принцесса не может вернуть того,кто же прошел. Отсюда следует, что в выводе результат нужно показывать не наибольшую красоту, а количество наилучших, удачных и неудачных исходов. Пожалуйста, помогите немножко изменить!!! Заранее спасибо!!!!
0
 Аватар для Necronomicron
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
11.12.2012, 17:49
Алёнчик, зачем тут вообще словарь?
Ты напиши какие-нибудь случайные входные данные и соответствующие выходные.
0
4 / 4 / 0
Регистрация: 14.05.2012
Сообщений: 116
11.12.2012, 18:55  [ТС]
В смысле?? Я не поняла
0
 Аватар для SVA
104 / 89 / 32
Регистрация: 12.07.2011
Сообщений: 623
11.12.2012, 18:55
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
       
        static void Main(string[] args)
        {
 
            Console.WriteLine(" Amount bridegrooms ");           //Количество  Женихов.     
            Random rand = new Random();
               int Namber_elements= Convert.ToInt32( Console.ReadLine());   //С клавиатуры вводим количество пришедших женихов.
               int[] A = new int[Namber_elements];                         
               for (int n=0; n < Namber_elements; n++)
               {
                   int c = rand.Next(1, Namber_elements);
                   A[n] = c;
               }
               Console.WriteLine("0chered' Genixov");
               for (int n = 0; n < A.Length; n++)
               {
                   Console.WriteLine("\t" + A[n]);
               }
 
               for (int i = 0; i < A.Length; i++)
               {
                   for (int j = 0; j < A.Length - 1; j++)
                   {
                       if (A[j] > A[j + 1])
                       {
                           int z = A[j];
                           A[j] = A[j + 1];
                           A[j + 1] = z;
                       }
                   }
               }
               Console.WriteLine("Princessa rasspologila genixov po krasate sledyuwim obrazom");
               for (int n = 0; n < A.Length; n++)
            Console.WriteLine("\t"+A[n]);
               Console.ReadKey();
        }
    }
}
Так?
Вложения
Тип файла: rar ConsoleApplication1.rar (2.2 Кб, 4 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2012, 18:55
Помогаю со студенческими работами здесь

Прошу помочь выбрать роутер
Драсте уважаемые. собсно сабж. есть выделенка, интернет в которой включается по впну, есть комп с материнкой асус со встроеной штукенцией...

Помочь вождю выбрать кучку с монетами
Всем привет. Я начал заниматься C(да, именно С) неделю назад. Нужно для ЕГЭ. Сижу, решаю задачки разные и тут наткнутся на такую. Главный...

Какой вариант выбрать ?
Avast free antivirus + Comodo Firewall или сразу установить Comodo Internet Security?

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

Какой вариант лучше выбрать?
Подскажите пожалуста. Пишу первый сайт. Движок на php. Если правильно разобрался, весь сайт можно сделать на php. Хочу сделать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru