Имя: Пароль:
IT
 
Задача с массивом
0 GrandOpera
 
06.08.16
14:50
Дан целочисленный массив из 50 элементов. Элементы массива могут принимать значения от 100 до 150-сведения о сборе пшеницы с одного гектара земли.
Опишите  на  языке программирования алгоритм, который находит максимальную разницу между порядковыми номерами гектаров, с которых собрали одинаковое количество пшеницы. Гарантируется, что есть по крайней мере одна пара элементов с одинаковыми значениями. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные не объявленные ниже, но разрешается не использовать часть них.

Const N=50;
Var
      A: array [1..n] of integer;
    I, j, max: integer;
1 Lexey_
 
06.08.16
15:01
(0) прикольно
2 Garykom
 
гуру
06.08.16
15:17
if A[1]=A[50] then max := 49;

if A[1]=A[49] then max := 48;
if A[2]=A[50] then max := 48;

if A[1]=A[48] then max := 47;
if A[2]=A[49] then max := 47;
if A[3]=A[50] then max := 47;

if A[1]=A[47] then max := 46;
if A[2]=A[48] then max := 46;
if A[3]=A[49] then max := 46;
if A[4]=A[50] then max := 46;

//... дальше сами...
3 mkalimulin
 
06.08.16
15:18
(0) Школьная задача. Зачем это здесь?
4 mkalimulin
 
06.08.16
15:18
(2) По-мужски.
5 Garykom
 
гуру
06.08.16
15:25
По умному это кто заметил что в (0) еще дали 50 дополнительных переменных для "хранения"?
6 Garykom
 
гуру
06.08.16
15:33
(4) Да причем у меня в коде ошибка, найдет минимальную разницу а не максимальную. Нужно все строчки с конца выполнять, т.е. перевернуть их наоборот.
7 Кирпич
 
06.08.16
20:23
(2)А в чем подвох? Циклы нельзя использовать что ли или чо?
8 youalex
 
06.08.16
21:06
запрос нельзя использовать?
9 mkalimulin
 
06.08.16
21:15
(8) Надо "описать алгоритм"
10 Кирпич
 
06.08.16
21:15
(8) после (2) ничего смешнее уже не нашутишь
11 Кирпич
 
06.08.16
21:22
Это задача из ЕГ. Представляю, ученик сдает решение на пяти листах как (2). Сочинение по информатике "Почему я люблю паскаль" :)
12 Garykom
 
гуру
06.08.16
21:26
(11) Зато все четко по ТЗ, включая "Запрещается использовать переменные не объявленные ниже, но разрешается не использовать часть них. "
13 youalex
 
06.08.16
21:28
(10) это не шутка. Просто эта задача решается простейшим запросом.
14 Кирпич
 
06.08.16
21:31
(13) дети в школе на паскале пишут и на си. Какие нафиг запросы
15 Кирпич
 
06.08.16
21:32
(12) так можно по тз и в 3 строчки уложиться, а не в 50 :)
16 youalex
 
06.08.16
21:32
(13) + то есть понятно, что первым и самым очевидным решением будет два цикла и использование max(). Но это же банально)
17 Кирпич
 
06.08.16
21:36
(16) ну придумай не банально. Наверное можно. В задаче вроде намекают, что можно.
18 youalex
 
06.08.16
21:39
(17) я - уже придумал. Правда - вышел  за рамки бредового условия.
19 Asmody
 
06.08.16
21:40
цикл в цикле, внутри условие. я такого добра с дочкой нарешал в том году на две общие тетради.
20 Кирпич
 
06.08.16
21:42
(18) за рамки условия нельзя выходить, тогда смысла нету
21 Кирпич
 
06.08.16
21:43
(19) да мы в курсе. Garykom только чота психанул
22 Garykom
 
гуру
06.08.16
21:47
(17) Ну можно "Неравенством о средних" попытаться воспользоваться
23 youalex
 
06.08.16
21:48
(20) мне кажется, смысла нет в этом условии. Ну разве что, подтолкнуть молодой пытливый разум в единственно верном направлении. Или - контекст задания, о котором мы ничего не знаем.
В данном контексте - возможна сортировка массива, например?
24 Garykom
 
гуру
06.08.16
21:50
(23) "Элементы массива могут принимать значения от 100 до 150" - толстый намек
25 youalex
 
06.08.16
21:50
(23) + если мы можем отсортировать массив - то можно будет обойтись одним циклом вместо двух.
26 Garykom
 
гуру
06.08.16
21:50
(24)+ 150-100=?
27 Кирпич
 
06.08.16
21:52
(23) нафиг его сортировать, если нужно получить разницу между индексами массива
28 Garykom
 
гуру
06.08.16
21:53
Пока вижу уже чтук 6 различных алгоритмов решения задачки и это не считая вариантов оптимизации как
if (A[1]=A[49]) or (A[2]=A[50]) then max := 48;
29 Garykom
 
гуру
06.08.16
21:56
(27) Можно транспонировать значения и индексы, тогда в ячейке значения будет 0, 1 или более индексов
30 youalex
 
06.08.16
21:57
(26) наибольшая разница = макс. индексу массива?
(27) ага, то есть сортировать точно нельзя (номер участка = индекс, точно бред)
31 Garykom
 
гуру
06.08.16
21:57
(30) >наибольшая разница = макс. индексу массива?

без комментариев ;)
32 youalex
 
06.08.16
21:59
(31) просто брутфорс условия)
33 Кирпич
 
06.08.16
22:01
Максимальная разница между одинаковыми значениями
34 youalex
 
06.08.16
22:04
(24) + для меня толстый намек это имена переменных: I, j, max ))
35 Кирпич
 
06.08.16
22:05
Щас дотнет подключится
36 youalex
 
06.08.16
22:05
(34) +собственно, это фактически описание алгоритма.
37 Кирпич
 
06.08.16
22:09
(36) вот я и обалдел от (2). Приходит же такое в голову людям :)
38 mkalimulin
 
06.08.16
22:11
(37) Он привык к почасовой оплате. Все правильно.
39 youalex
 
06.08.16
22:19
(37) это решение вполне соответствует условиям задачи. Представьте если бы в реале вам БЗ поставили условие какие переменные использовать...
40 Кирпич
 
06.08.16
22:20
(38) да скорее на сдельщине. От количества строк харчуется
41 Garykom
 
гуру
06.08.16
22:21
(38) Клиент за свое кол-во часов получает наиболее оптимальное решение.

Вариант (2):
1. Использует минимальные ресурсы (кол-во переменных)
2. Самый быстрый по скорости выполнения
42 youalex
 
06.08.16
22:25
(39) + вот смари - у меня здесь на экране список клиентов, которые мне должны. Но я хочу чтобы те кто уже попал на штраф подсвечивались голубым. Мне не важно, как ты это сделаешь. Но обязательно - ты должен использовать только три переменных с типом int. И не волнует.
43 Garykom
 
гуру
06.08.16
22:27
(42) Зачем нужны переменные в задачке определения просроченной дебиторки?
44 Кирпич
 
06.08.16
22:29
(41)что тут сказать. профессионал.
45 Garykom
 
гуру
06.08.16
22:34
(44) А ведь еще можно наваять "автоконструктор" типового кода типа (2) по заданным входным параметрам.
Чтобы эту простынку руками не набивать.

И тогда
3. Кол-во часов к оплате сравнимо с другими
46 Кирпич
 
06.08.16
22:37
(43) сегодня великий день. Я понял, что до этого дня меня напрягало в программировании. С сегодняшнего дня все будет по новому - никаких переменных и циклов! Боже как это просто и красиво. Почему я сам не смог до такого додуматься? Жалкий пленник стереотипов...
47 Кирпич
 
06.08.16
22:40
(45)автоконструктор тоже наваять таким же методом
48 youalex
 
06.08.16
22:40
(43) Ну, давай щас не будем умничать. Я тут посоветовался с племянником, он тоже программист, как и ты. Короче - если есть возможность не использовать эти переменные... ... с ним. Так даже лучше. Племянник говорит что нужно использовать выборку.  Вот, короче. Должны подсвечиваться голубым. Но ты обязательно должен использовать выборку.
49 Garykom
 
гуру
06.08.16
22:43
(48) Передай племяннику что разница между "ценой с обязательной выборкой" и "ценой без выборки" составляет 2 раза. Не в пользу племянника. Вы согласны делать "с выборкой"?
50 youalex
 
06.08.16
22:44
(46) да, это выглядит как то так:

http://kinopostery.my1.ru/_ph/44/348161248.jpg
51 Garykom
 
гуру
06.08.16
22:48
(50) Не забыть бы делать "пол" периодическим реквизитом как и ФИО... спасибо что напомнили ))
52 youalex
 
06.08.16
22:50
(49) Это интересный вопрос. Да, конечно, я согласен делать с выборкой - да вот племянник рядом стоит, я ему доверяю. Чего? Большую выборку нельзя? Понял, не дурак. В общем пусть будет выборка максимум двадцать элементов, но в списке я должен видеть всех.
53 Garykom
 
гуру
06.08.16
22:53
(52) Не вопрос... передайте выполнение вашей задачки, вашему племяннику который имеет видимо все задатки для этого и свободное время. Об оплате сами с ним по родственному договоритесь.

А я пошел, мне другие заказчики у которых племянников к сожалению нет уже звонили и попросили "срочно".
54 youalex
 
06.08.16
22:54
(51) само понятие "периодические реквизиты" пол - подразумевают сами собой))
55 youalex
 
06.08.16
23:05
(53) а, да нет, все нормально. С задачей справились. Племянника отправили на стажировку в США, договариваться конечно пришлось, но все в порядке в итоге. Ну а чё? Пацан грамотный, пусть отучится, потом приедет обратно уже  помощником зам. министра. Задания в школы будет раздавать.
56 Garykom
 
гуру
06.08.16
23:08
(55) Ко мне на стажировку отправили? Нюню ))
57 youalex
 
06.08.16
23:20
(56) ну а собственно, а почему бы и нет. Может хоть научится посылать БЗ с откровенно тупыми задачами. А то зам. министра, честно скажем, не получилось. И в итоге - ему, после Йелля - задачи ставит технический персонал, у которого швабры между стеллажами не проходят.
58 Asmody
 
06.08.16
23:37
(46) "никаких переменных и циклов" – тоже подсел на haskell? Это ничего,это пройдет.
59 b_ru
 
07.08.16
00:09
В бытность школотой, если бы столкнулся с таким заданием, я бы как-нить изъебнулся с
I = reinterpret_cast<int>(malloc(2 * n))
и дальнейшей сортировкой массива структур (вес-индекс). Ну чтоб у проверяющего точно шары на лоб полезли.

Но, к счастью, я давным давно забыл черную Си++ магию, да и нет на мой код проверяющих, которых надо любить в мозг.
60 Кирпич
 
07.08.16
08:17
(59) вы с Garykom одноклассники похоже. Тот тоже легких путей не ищет нифига. Ваш учитель информатики оказал на вас нехорошее влияние, какое порой оказывает на девочек учитель физкультуры.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой