|
Исправить ошибки в коде 🠗 (Волшебник 26.08.2022 17:29) | ☑ | ||
---|---|---|---|---|
0
Andreik113
26.08.22
✎
12:33
|
Всем привет. Помогите решить тестовое задание на стажера-программиста 1С. Почему дали из другого языка - не пойму
Функция AllNames() возвращает массив с произвольными именами. int function FindPetya() { Ar_names = AllNames(); Number = 0; while (Ar_names.count() > 0) { if (Ar_names[0] == “Петя”) { Number = counter; } else { counter++; Ar_names.Delete(Ar_names[0]); } } return 100 / Number * 25; } |
|||
1
H A D G E H O G s
26.08.22
✎
12:37
|
Вам в этой организации делать нечего да и не стоит.
|
|||
2
Kassern
26.08.22
✎
12:37
|
(0) Бред конечно таким способом стажеров проверять. Задания для стажёров проверяют ваш уровень знаний и сообразительность, а не форумчан.
|
|||
3
Фрэнки
26.08.22
✎
12:39
|
это ему в таком виде тест дают на стрессовую устойчивость
|
|||
4
alarm2020
26.08.22
✎
12:39
|
(0) Деление на ноль обойди, вот и все задание
|
|||
5
Kassern
26.08.22
✎
12:39
|
Мне просто интересно, а как вы его решать собираетесь? Вам дают массив имен, а вы должны ответ этой функции сказать?
|
|||
6
alarm2020
26.08.22
✎
12:39
|
(5) Надо исправить ошибку в коде.
|
|||
7
Kassern
26.08.22
✎
12:43
|
(6) Понял. Но вообще функция бредово написана. Зачем удалять данные из массива, почему просто не обойти сам массив? И что будет, когда несколько петей будет в массиве? Если нужен только один, тогда зачем дальше цикл гонять? В общем переписать надо эту функцию
|
|||
8
Фрэнки
26.08.22
✎
12:43
|
там еще нет начального значения
counter Но может оно и не нужно. Не помню уже обязательные требования к коду, но похоже, что переменные Number и counter здесь без вызова конструкторов |
|||
9
Фрэнки
26.08.22
✎
12:45
|
while (Ar_names.count() > 0)
тоже какой-то неведомый кусок |
|||
10
alarm2020
26.08.22
✎
12:45
|
(8) Точно. И counter инициализировать
|
|||
11
Kassern
26.08.22
✎
12:46
|
(9) ага, такое ощущение, что это бесконечный цикл, типа Пока Количество в массиве больше 0 цикл
|
|||
12
Kassern
26.08.22
✎
12:46
|
Вот он срезает данные, если пети нет, но если есть петя, тогда он строчку не удалить и будет бесконечный цикл
|
|||
13
СеменовСемен
26.08.22
✎
12:47
|
Counter не инициализировпн
|
|||
14
Kassern
26.08.22
✎
12:48
|
Вердикт -> цикл в топку, как и саму функцию. Если функция называется НайтиПетю, то она и должна возвращать Петю (его идентификатор), а не какую-то кривую формулу с потолка.
|
|||
15
Kassern
26.08.22
✎
12:53
|
Вашим работодателям нужно было переписать эту функцию на язык 1с. Тогда было бы более приемлемо:
Процедура НайтиПетю() МассивИмен=ПолучитьМассивСлучайныхИмен(); Номер=0; Пока МассивИмен.Количество()>0 Цикл Если МассивИмен[0]="Петя" Тогда Номер=Индекс; Иначе Индекс=Индекс+1; МассивИмен.Удалить(МассивИмен[0]); КонецЕсли; КонецЦикла; Возврат 100/Номер*25 КонецПроцедуры |
|||
16
Kassern
26.08.22
✎
12:54
|
Вот теперь любитесь с функцией этой)
|
|||
17
Kassern
26.08.22
✎
12:58
|
(15) в место процедуры ->функция конечно, очепятался)
|
|||
18
Andreik113
26.08.22
✎
13:02
|
(17) Легче не стало)
{МодульУправляемогоПриложения(145,19)}: Переменная не определена (Индекс) Номер=<<?>>Индекс; (Проверка: Тонкий клиент) {МодульУправляемогоПриложения(141,16)}: Процедура или функция с указанным именем не определена (ПолучитьМассивСлучайныхИмен) МассивИмен=<<?>>ПолучитьМассивСлучайныхИмен(); (Проверка: Тонкий клиент) |
|||
19
Serg_1960
26.08.22
✎
13:03
|
(16) А на что любоваться? Если Петя будет среди имён - мы вечно будем на это любоваться :))
|
|||
20
H A D G E H O G s
26.08.22
✎
13:09
|
(18) Воспрянь! Каста Эфирилов укажет дорогу.
|
|||
21
Andreik113
26.08.22
✎
14:34
|
так что мне с этим делать? коллеги, помогите)
|
|||
22
Kassern
26.08.22
✎
14:36
|
(21) Прочитать задание еще раз и хорошо подумать. Найти нестыковки в коде и дать развернутый ответ. Напоминаю, что проверяются именно ВАШИ знания. Здесь итак уже много, что написали в плане подсказок.
|
|||
23
alarm2020
26.08.22
✎
14:36
|
(21) Исправлять ошибки. Тебе их уже все нашли. Что еще надо?
|
|||
24
H A D G E H O G s
26.08.22
✎
15:07
|
(21) Слушай и запоминай, мой воин, учись методам войны не у тех, кто воюет для развлечения или получения удовольствия, а у тех, кто воюет во имя общей цели. Это - предостерегающий рассказ, который вдохновит многих на благотворный труд во имя Высшего Блага.
|
|||
25
СеменовСемен
26.08.22
✎
15:08
|
(24) ты запас грибов с волги привез что-ли?
|
|||
26
Serg_1960
26.08.22
✎
15:09
|
(23) "Что еще надо?" - осталось только правильно определить язык программирования примера :) Чтобы удалить синтаксические ошибки.
Мне, например, кажется что строка "while (Ar_names.count() > 0)" написана с ошибкой и должно быть "while (Ar_names.count() -gt 0)"... |
|||
27
H A D G E H O G s
26.08.22
✎
15:10
|
(25) "Я многое пережил не для того, чтобы смеяться над действиями чужих или ненавидеть их, а для того чтобы понимать их". Аун’Ши
|
|||
28
Kassern
26.08.22
✎
15:12
|
(26) это все ерунда, хотя бы логические ошибки пусть ТС озвучит. Не думаю, что на стажера 1с, нужно знать синтаксис жабыскрипт и еже с ними.
|
|||
29
Kassern
26.08.22
✎
15:12
|
*иже
|
|||
30
Serg_1960
26.08.22
✎
15:13
|
(25) Съедобные грибы, под воздействием высоких температур, могут мутировать до состояния галлюциногенных...
|
|||
31
Eiffil123
26.08.22
✎
15:26
|
Переписать так:
int function FindPetya() { Ar_names = AllNames(); Number = Ar_names.Find("Петя"); if (Number > 0) return 100 / Number * 25; return 0; } |
|||
32
Kassern
26.08.22
✎
15:28
|
(31) А если несколько "Петя" будет в массиве?)
|
|||
33
Kassern
26.08.22
✎
15:30
|
В любом случае, мне не верится, что ТС понял, что в коде написано и какие были ошибки. Банальный вопрос на собеседовании по этому коду и все - приплыли.
|
|||
34
VladZ
26.08.22
✎
15:45
|
(0) Православный код должен быть на русском языке.
Так и скажи: Это дичь какая-то! Дайте нормальный код! |
|||
35
Фрэнки
26.08.22
✎
15:49
|
а откуда известно, что Ar_names можно указать с методом Find ?
Или параметр она разрешает использовать именно в виде строки "Петя" ? Тут даже не известно на каком языке программирования этот код был написан. Только примерно можно догадаться, что это С++ или что-то к нему близкое, но я не удивлюсь, если не угадал |
|||
36
Eiffil123
26.08.22
✎
16:03
|
(32) значит первого выводим. только вопрос, а что вообще функция должна возвращать?
|
|||
37
Kassern
26.08.22
✎
16:06
|
(36) "а что вообще функция должна возвращать?" - сферического коня в вакууме конечно. Это задачка имхо, чтобы определить насколько ТС в программировании разбирается, может какие-то языки изучал ранее, либо на институтском уровне, что-то помнит. Скорее всего ему нужно было озвучить, что примерно эта функция делает и какие у него основные ошибки.
|
|||
38
Andreik113
26.08.22
✎
16:14
|
Прошу прощения в коде была у меня ошибка, вместо > 0 знак ">"
Ar_names = AllNames(); Number = 0; while (Ar_names.count() > 0) { if (Ar_names[0] == “Петя”) { Number = counter; } else { counter++; Ar_names.Delete(Ar_names[0]); } } return 100 / Number * 25; } |
|||
39
Eiffil123
26.08.22
✎
16:45
|
(37) я вот это до сих пор не понимаю: return 100 / Number * 25;
|
|||
40
Eiffil123
26.08.22
✎
16:45
|
(39) судя по тому, что эту строку никто не трогает в своих решениях - ее никто не понимает
|
|||
41
Andreik113
26.08.22
✎
16:54
|
(40) это выражение не 0 возвращает?
|
|||
42
Kassern
26.08.22
✎
16:55
|
(41) 100/x*25 при каких x сможет 0 вернуть?
|
|||
43
Фрэнки
26.08.22
✎
16:57
|
Летело Х гусей.
не... Х будет мало Летело 2Х гусей |
|||
44
Arbuz
26.08.22
✎
17:22
|
(43) Не мало, гусей было Δ₀XY∛A
|
|||
45
alarm2020
26.08.22
✎
17:27
|
(39) Просто замаскировали потенциальное деление на ноль. Так оно не сразу в глаза бросается
|
|||
46
Kassern
26.08.22
✎
17:32
|
(45) могли бы по изящней это сделать, например: процент заполнения Петями в массиве и тому подобное. Да и функцию бы обозвали в этом ключе.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |