Раздел: Домашние задания

В блог Подписаться на Дзен!

Отвечать в конференциях и заводить новые темы может любой участник, независимо от наличия регистрации на сайте 7я.ру.

Учителям информатики вопросик ))

Задача:
Дана последовательность из n различных чисел.
Найти сумму её членов, расположенных между максимальным и минимальным значениями
в сумму включить и оба этих числа)
Наша программа:
const n=10;
var
a:array[1..n] of integer;
i, imax, imin: byte;
max, min, sum: integer;
begin
for i:=1 to n do begin
a[i]:=random(100)-50;
write(a[i]:4)
end;
writeln;
max:=-10000; min:=10000; sum:=0;
for i:=1 to n do begin
if a[i]>max then begin max:=a[i]; imax:=i end;
if a[i] end;
{writeln('Максимальное значение = ',max:2, ', порядковый номер = ',imax:2);
writeln('Минимальное значение = ',min:2, ', порядковый номер = ',imin:2);}
if imax>imin then
for i:=imin to imax do
sum:=sum+a[i]
else for i:=imin downto imax do
sum:=sum+a[i];
writeln(' Сумма элементов = ',sum)
end.
Суть вопроса: учитель пишет замечание:
в сумме ошибка:
for i:=imin downto imax do должно быть for i:=imax to imin do
С замечанием я согласна, так тоже можно, но наш то вариант чем хуже, если программа работает правильно?
12.12.2016 00:31:39,

22 комментария

От кого: Настройки

Вы не авторизованы.

Если Вы отправите сообщение анонимно, то потеряете возможность редактировать и удалить это сообщение после отправки.

E-mail:
получать ответы на E-mail
показывать ссылки на изображения в виде картинок
Понятно, что алгоритм с ошибкой - вот в этом месте:
if a[i] end;

должно быть if a[i] < min ... end.

То, что вы сейчас написали вообще не компилируется, ибо синтаксически неверно. Может быть при вставке в форум часть кода потерялась?

Что касается конкретной замены "for i:=imin downto imax do должно быть for i:=imax to imin do" - это не ошибка, а вкусовщина. Думаю, что просто преподавателю не нравится цикл с шагом -1, он считает, что лучше цикл с шагом 1. Конкретно это место - совершенно глупая придирка, я бы за такое не стал бы даже замечание писать школьнику (у меня бывают варианты "принято", "принято, но с замечанием", "не принято").

А вот отсутствие фрагмента кода в начале - это уже серьёзно, это, конечно же, "не принято".
12.12.2016 23:16:35, dk
спасибо огромное за ответ! Действительно, часть программы потерялась при копировании, поскольку на работе паскаль не стоит, и пришлось танцы с бубнами совершать )) А шагом -1 хотела показать ребенку и такой вариант реализации, похоже, что перестаралась )) А вкусовщина это плохо, как я понимаю, в среде программистов?
Программа в сообщение действительно вставляется неправильно, попыталась еще раз, такая же ошибка с потерей части кода ((
13.12.2016 00:39:44, alina_akulina
Рискну предположить, что программа написана для частного случая.
Алгоритм поиска максимального и минимального значения не реализован.
Сначала присваиваете максимуму и минимуму первый элемент
max = a[1]; imax = 1;
min = a[1]; imin = 1;
и погнали по циклу, сравнивать если значение больше max обновляем значение мах и imax, если меньше min обновляем значение min и imin.

по окончанию цикла у вас max максимальное значение в imax его позиция. а в min -минимальное и в imin его позиция.

Ну а далее считаем еще одним циклом сумму между позициями.

Ошибка в том, что начальное значение вы проинициализировали каким-то числом. Можно подобрать последовательность чисел на которой программа не сработает. Но по-скольку, вы задаете ее сами и там есть ограничение на те числа которые попадают у вас в последовательность, ваша программа исправно работает для частного случая.
12.12.2016 16:23:42, кхм
вряд ли. По данным вопросам замечаний нет. Значит такая ограниченная реализация задачи ее устроила, я полагаю? Как будет выглядеть цикл суммирования в вашем варианте? 12.12.2016 17:33:54, alina_akulina
В вашей реализации есть ошибки. Допустим вы не точно ее набили, пропустив половину. Отсутствует часть кода про нахождения минимума.
Но ход мысли можно уловить. Потом вы легко соглашаетесь с замечанием, хотя оно мне как раз непонятно.
Я вам говорю, что алгоритм поиска максимума и минимума реализован для частного случая, и на мой взгляд это действительно то, что здесь имеет место быть. Вы говорите фигня у меня все работает.

Ваша программа не будет работать, если будет последовательность чисел -10001 -10002 -10003
Она просто не найдет максимум. И в переменной imax будет лежать мусор. и дальше когда попытаетесь найти сумму программа "упадет".
У вас все работает потому что вы заполняете массив числами в диапазоне -50 до 50.

Замечание учителя не принципиально: то что предлагает учитель эквивалентно тому, что написано у вас. допустим imax= 3 а imin = 5. Мы попадаем во оператор "else"
от 5 вниз до 3 (ваш вариант) эквивалентно от 3 вверх до 5 (предлагает учитель).

Если бы я была учителем информатики, а я им не являюсь, но имею представление о предмете далеко неповерхностное. Я бы не приняла такую программу
именно из-за того, что она работает только в частном случае. Когда диапазон чисел от -10000 до 10000. Для меня бы это
был нереализованные алгоритм поиска максимума и минимума на массиве чисел. К остальному я бы придираться не стала. Даже закрыла бы может глаза на пропуск части кода.

Что имеет в виду ваш учитель фиг его знает. Но алгоритм с недочетом. Достаточно принципиальным имхо.
12.12.2016 22:32:01, кхм
Если бы я легко согласилась, то этого топа бы здесь не было. Вариант учителя тоже правильный, почему я его должна оспаривать? Меня больше интересовало, что неправильно в моем. Мой уровень знаний по информатике находится на минимальном уровне, поэтому меня все время терзают сомнения. Но чем дальше я ее изучаю и контактирую с учителем посредством ребенка, тем больше у меня накапливается недоуменных вопросов. Я с вами согласна, что программа реализована для частного случая, когда значения не превышают диапазон плюс/минус 10000. Никакие данные пользователь вручную не вводит, массив заполняется рандомом, в диапазоне, заведомо меньшем чем максимальные и минимальные значения. И для этого случая программа работает. На их уровне обучения к ним не предъявляют таких высоких требований. Когда я в других программах пыталась реализовать защиту от дурака и вводила ряд дополнительных проверок на случай, а вдруг пользователь ошибется и введет не те значения, нам было сказано что это лишнее и тоже снижалась оценка. Поэтому теперь я стараюсь не извращаться, а снисхожу до уровня детей на данном этапе обучения, тем более что я сама еще чайник )) Хотя бы для того, чтобы учителю не пришла мысль в голову, что ребенок пишет программы не сам. И раз учитель ничего не написал по поводу ограниченного функционала, значит это ее вполне устроило, но ведь замечание то относилось к другому. Другой разговор, что в процессе копирования кода, когда я его вставляла в сообщение, произошла какая то ерунда и программа вставилась искаженно (( 13.12.2016 00:50:03, alina_akulina
Странные у Вас игры с учителями, ей-богу. Этому тоже объяснять будете, как математику и физику, как детей правильно учить? 13.12.2016 09:15:23, тупик
я не знала, что это политика у мамы такая. Не стала бы ввязываться тогда и что-то пытаться объяснить. 13.12.2016 10:22:39, кхм
Это приблизительно как вас просят доказать теорему для всех прямоугольных треугольников, а вы ее доказываете для треугольника со сторонами 3,4,5. А потом говорите ну доказано ж. 12.12.2016 22:43:17, кхм
Странное исправление, правда. Я не учитель информатики, но рискну предположить, что downto "ещё не проходили", а учитель требует использовать то, что объясняли на уроке... 12.12.2016 14:13:43, Пецилия
проходили. Цикл for проходят в связке to/downto 12.12.2016 14:58:22, alina_akulina
Я не учитель информатики. Но между максимальным и минимальным и членами последовательности, особенно если включить в сумму эти значения, находятся ВСЕ члены последовательности... 12.12.2016 12:37:12, AleXXX
Напрасно Вы придираетесь. Написано же, что найти сумму элементов, РАСПОЛОЖЕННЫХ между максимумом и минимумом. По-моему, всё абсолютно ясно. 12.12.2016 14:07:09, Пецилия
4,5 и 6 расположены между 2 и 9. 13.12.2016 00:25:07, AleXXX
:)) Я тоже очень долго втыкалась в условие задачи. У максимального и минимального значения есть порядковый номер в массиве. Просуммировать надо все элементы, стоящие в массиве между макс и мин 12.12.2016 13:01:31, alina_akulina
Им сначала русский изыг освоить надо, а потом за информатику брацца. Это школьная задачка? 12.12.2016 13:32:14, AleXXX
я тоже бешусь порой от формулировок задач по информатике. Иной раз на осознание условий задачи уходит столько же времени, сколько и на написание программы )) Наверное надо иметь специфическое мышление в этой сфере. 9 класс 12.12.2016 13:43:52, alina_akulina
Правильно поставленная задача - уже на 70% созданный алгоритм. Поэтому они и извращаются. 12.12.2016 13:51:22, AleXXX
Один из уважаемых в среде хакеров человек, Эрик Реймонд, как-то написал текст "Как правильно задавать вопросы". Текст годится не только для технических обсуждений.

Один из пунктов этого текста - "Не просите людей отвечать вам на личный адрес электронной почты"

[ссылка-1]
12.12.2016 09:45:23, dk
Люба С.
Прелестно :) 12.12.2016 12:03:49, Люба С.
Я встречался ещё с одной интерпретацией того же.

Обсуждение проблемы в форуме, конференции - это форма самовыражения (Эрик Реймонд называет это "получение вознаграждения").

Ответ "в личку" - это техподдержка. Техподдержка, в отличии от самовыражения, стоит денег. Ибо это помощь лично вам в решении лично ваших проблем.
12.12.2016 23:48:11, dk
Замечание принято )) Не хотела засорять конфу программными кодами и специфичными беседами. Здесь все больше по общим вопросам образования общаются. насколько я заметила. А кибер-форум я пока не тяну, желающих помочь много, а понять у кого оптимальный вариант мне пока тяжело (( Да и предлагаемые зачастую варианты решения совсем не на уровне 9 класса. 12.12.2016 09:58:04, alina_akulina


Материалы сайта носят информационный характер и предназначены для образовательных целей. Мнение редакции может не совпадать с мнениями авторов. Перепечатка материалов сайта запрещена. Права авторов и издателя защищены.



Рейтинг@Mail.ru
7я.ру - информационный проект по семейным вопросам: беременность и роды, воспитание детей, образование и карьера, домоводство, отдых, красота и здоровье, семейные отношения. На сайте работают тематические конференции, ведутся рейтинги детских садов и школ, ежедневно публикуются статьи и проводятся конкурсы.
18+

Если вы обнаружили на странице ошибки, неполадки, неточности, пожалуйста, сообщите нам об этом. Спасибо!