Имя: Пароль:
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 одноклассники похоже. Тот тоже легких путей не ищет нифига. Ваш учитель информатики оказал на вас нехорошее влияние, какое порой оказывает на девочек учитель физкультуры.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.