Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
 Аватар для CovCek
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212

Описать функцию, определяющую минимальное или максимальное из значений X и Y в зависимости от значения Z

05.10.2014, 00:23. Показов 5902. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
есть такое задание:
Кликните здесь для просмотра всего текста
Описать функцию Minmax(X,Y,Z), определяющую минимальное или максимальное из значений X и Y в зависимости от значения Z. Используя четыре вызова этой функции, найти минимальное и максимальное из данных чисел A, B,C, D.


как я понял нужно из 4 чисел найти минимальное и максимальное за 4 вызова функции. НО! вот почему в функции Minmax(X,Y,Z) всго 3 переменные. это получаеться за 4 вызова можно успеть проверить только 3 числа, посчитав, я понял что 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Задание_3__A7_
{
    class Program
    {
        static void Minmax(int X, int Y, int Z )
        {
            //int max = Math.Max(Math.Max(A, B),Math.Max(C, D));
            //int min = Math.Min(Math.Min(A, B), Math.Min(C, D));
            return;
        }
 
        static void Main(string[] args)
        {
            double A, B, C, D;
            Console.WriteLine("Введите A:");
            A = double.Parse(Console.ReadLine());
            Console.WriteLine("Введите B:");
            B = double.Parse(Console.ReadLine());
            Console.WriteLine("Введите C:");
            C = double.Parse(Console.ReadLine());
            Console.WriteLine("Введите D:");
            D = double.Parse(Console.ReadLine());
            Console.ReadKey();
        }
    }
}



Что доскажите? как лучше будет сделать.
И еще вопрос можно будет ли за 1 вызов все проверить, и выдать результат?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2014, 00:23
Ответы с готовыми решениями:

Описать функцию Minmax(X,Y,Z), определяющую минимальное или максимальное из значений X и Y
Описать функцию Minmax(X,Y,Z), определяющую минимальное или максимальное из значений X и Y в зависимости от значения Z. Используя четыре...

Создать программу, определяющую максимальное и минимальное значения массива.
Создать программу, определяющую максимальное и минимальное значения массива.

Создать программу, определяющую максимальное и минимальное значения массива.
Создать программу, определяющую максимальное и минимальное значения массива. с помощью функций

33
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
05.10.2014, 01:49
Студворк — интернет-сервис помощи студентам
RefSol, Дело в том, что я предлагаю дословно решить задачу. Не уверен в решении, но идея такая (использовать Z):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int minmax(int a, int b, int z)
{
   if (z>=0) return a > b ? a : b;
   return a > b ? b : a;
}
 
далее
int m1 = minmax(a,  b, c-d);
int m2 = minmax(a,  b, d-c);
 
int M1 = minmax(m1, c, true);
int M2 = minmax(m1, d, false);
Console.WriteLine("Минимум и максимум: " + M1 + " " + M2);
Неопределенность в порядке вывода, но не противоречит условию. Возможно неправильное решение, сейчас проверю, мозги уже не варят - ночь)
2
 Аватар для CovCek
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
05.10.2014, 01:50  [ТС]
Цитата Сообщение от RefSol Посмотреть сообщение
для определения максимума 3 вызова, для определения минимума 3 вызова.
Но по условию то нужно 4, значит как то можно используя 4 вызова.
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
05.10.2014, 02:00
Лучший ответ Сообщение было отмечено CovCek как решение

Решение

Цитата Сообщение от RefSol Посмотреть сообщение
что является минимальной функциональной конструкцией и упрощению не подлежит что и требовалось доказать.
Серьезно?) ну ok. А вдруг, например, сравнивая суммы или какие другие функции (как на весах с гирями, но без гирь ... ) можно добиться желаемого за четыре minmax ? Ну ok, ладно, это не важно в принципе, не заморачивайтесь.

Добавлено через 8 минут
CovCek, Вот, проверьте еще раз, два случая
Пусть c > d, тогда c-d > 0

C#
1
2
3
4
5
int m1 = minmax(a,  b, c-d);  // максимум a и b
int m2 = minmax(a,  b, d-c);  // минимум a и b 
 
int M1 = minmax(m1, c, c-d); // сравниваем максимумы - максимум 4х чисел
int M2 = minmax(m2, d, d-c); // сравниваем минимумы- минимумы 4х чисел

Пусть c < d, тогда c-d < 0

C#
1
2
3
4
5
int m1 = minmax(a,  b, c-d)  // минимум a и b
int m2 = minmax(a,  b, d-c) //  максимум a и b 
 
int M1 = minmax(m1, c, c-d); // сравниваем минимумы- - минимум 4х чисел
int M2 = minmax(m2, d, d-c); // сравниваем максимумы - максимум 4х чисел
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int minmax(int a, int b, int z)
{
   if (z>=0) return a > b ? a : b;
   return a > b ? b : a;
}
 
далее
int m1 = minmax(a,  b, c-d);
int m2 = minmax(a,  b, d-c);
 
int M1 = minmax(m1, c, c-d);
int M2 = minmax(m2, d, d-c);
Console.WriteLine("Минимум и максимум: " + M1 + " " + M2);
1
504 / 247 / 75
Регистрация: 31.10.2010
Сообщений: 747
05.10.2014, 02:00
Цитата Сообщение от rRczZZ Посмотреть сообщение
Неопределенность в порядке вывода, но не противоречит условию. Возможно неправильное решение, сейчас проверю, мозги уже не варят - ночь)
в коде есть ошибки, во первых int и bool это разные типы, кроме того формально и true и false вместе удовлетворяют условию >= 0.

В связи с неопределённостью разности c-d и d-c вы не будете знать что у вас в m1 m2 мин или мах,
далее есть вероятность потери истинного минимума и истинного максимума.
C#
1
2
int m1 = minmax(a,  b, c-d);
int m2 = minmax(a,  b, d-c);
1
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
05.10.2014, 02:03
RefSol, да, посмотрите последний вариант, я исправил bool на int и если z >= 0 функция вернет максимум, если z< 0 - вернет минимум.

Добавлено через 1 минуту
т.е. еще раз - в конечном счете мы не знаем где в M1 и M2 именно максимум а где минимум, но значем точно, что это крайние значения, как и нужно в условии
Цитата Сообщение от CovCek Посмотреть сообщение
Описать функцию Minmax(X,Y,Z), определяющую минимальное или максимальное из значений X и Y в зависимости от значения Z. Используя четыре вызова этой функции, найти минимальное и максимальное из данных чисел A, B,C, D.
1
504 / 247 / 75
Регистрация: 31.10.2010
Сообщений: 747
05.10.2014, 02:09
rRczZZ, да, согласен идея с разностью интересна.
2
 Аватар для CovCek
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
05.10.2014, 02:09  [ТС]
Цитата Сообщение от rRczZZ Посмотреть сообщение
Пусть c > d, тогда c-d > 0
int m1 = minmax(a, b, c-d); // максимум a и b
int m2 = minmax(a, b, d-c); // минимум a и b
int M1 = minmax(m1, c, c-d); // сравниваем максимумы - максимум 4х чисел
int M2 = minmax(m2, d, d-c); // сравниваем минимумы- минимумы 4х чисел
Пусть c < d, тогда c-d < 0
int m1 = minmax(a, b, c-d) // минимум a и b
int m2 = minmax(a, b, d-c) // максимум a и b
int M1 = minmax(m1, c, c-d); // сравниваем минимумы- - минимум 4х чисел
int M2 = minmax(m2, d, d-c); // сравниваем максимумы - максимум 4х чисел
M1 и M2, как я понял взаимо заменяемые максимумы и минимумы, верно?
Изображения
  
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
05.10.2014, 02:13
CovCek, ну смысл что в том, что в моем решении ищутся крайние значения 1 и 4, не обязательно сначала минимум, а потом максимум - в условии, не сказано, что сначала нужно вывести минимум, ведь так? Если хотите иначе - используйте решение RefSol с 6ю вызовами.
1
 Аватар для CovCek
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
05.10.2014, 02:17  [ТС]
Цитата Сообщение от rRczZZ Посмотреть сообщение
Если хотите иначе - используйте решение RefSol с 6ю вызовами.
Тогда быдет нарушено условие 4-х вызовов.

Спасибо вам.

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

Ведь в условии не сказано использовать именно 1 функцию.
0
504 / 247 / 75
Регистрация: 31.10.2010
Сообщений: 747
05.10.2014, 02:19
Проверил с разностью работает, только не определяет где min а где max.
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
05.10.2014, 02:20
CovCek, Но, кстати, есть еще один вариант - с сортировкой
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static int minmax(ref int x, ref int y, bool z)
{
    if (z)
    {
        if (x > y) x = y + 0 * (y = x);
        return y;
    }
    if (y < x) x = y + 0 * (y = x);
    return x;
}
 
static void Main(string[] args)
{
    int a = 4, b = 3, c = 1, d = 2;
    minmax(ref a, ref b, true);
    minmax(ref c, ref d, true);
 
    Console.WriteLine("Максимум: " + minmax(ref b, ref d, true));
    Console.WriteLine("Минимум: " + minmax(ref a, ref c, false));
 
    Console.ReadLine();
}
1
 Аватар для CovCek
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
05.10.2014, 02:26  [ТС]
Цитата Сообщение от RefSol Посмотреть сообщение
Проверил с разностью работает, только не определяет где min а где max.
По идее этого и не надо делать.

Добавлено через 5 минут
Цитата Сообщение от rRczZZ Посмотреть сообщение
ref
В двух словах что ref делает? что то вроде ссылки на значение, или передача значения по ссылке?
как работает?
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
05.10.2014, 02:31
CovCek, поменяются значения в вызывающем коде, т.е. в переменных метода Main(). например
C#
1
2
3
4
int a = 2; // В а лежит двойка
int b=1;
minmax (ref a, ref b, true); //сортируем по возрастанию
Console.WriteLine("В а лежит " + a); // уже единица
Добавлено через 2 минуты
передает аргумент по ссылке (а не по значению).
1
 Аватар для CovCek
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
05.10.2014, 02:35  [ТС]
Цитата Сообщение от rRczZZ Посмотреть сообщение
передает аргумент по ссылке (а не по значению).
Понятно, Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2014, 02:35

Описать процедуру Minmax(X, Y), записывающую в X минимальное из значений X и Y, а в переменную Y — максимальное
Описать процедуру Minmax(X, Y), записывающую в переменную X минимальное из значений X и Y, а в переменную Y — максимальное из этих...

Описать процедуру Minmax(x,y) записывающую в переменную Х минимальное из значений Х и Y, а в переменную Y – максимальное из этих значений.
Описать процедуру Minmax(x,y) записывающую в переменную Х минимальное из значений Х и Y, а в переменную Y – максимальное из этих значений...

Описать процедуру Minmax(A,B), записывающую в переменную A минимальное из значений A и B, а в переменную B — максимальное из этих значений
В заданиях данной подгруппы требуется реализовать процедуры или функции с числовыми параметрами типа integer и real. Входные параметры этих...

Используя очередь или стек, описать процедуру или функцию, определяющую число вхождений элемента Е в дерево Т
Народ помогите пожалуйста! Проблема в том, что не понимаю суть задания. Прошу не код, а объяснения принципа реализации. С чего начать? как...

Найти и выделить цветом минимальное или максимальное (в зависимости от установленного переключателя) из введенных чисел
Зраствуйте )))я не знаю как решить задачку(((помогите пожалуйста((( Написать программу решения задачи. В текстовые поля вводятся три...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru