Ю4.22

Задача

Плюсы и минусы. В массиве [latex] Z(m) [/latex] найти число чередований знака, то есть число переходов с минуса на плюс или с плюса на минус. Например в последовательности 0, -2, 0, -10, 2, -1, 0, 0, 3, 2, -3  четыре чередования (как известно нуль не имеет знака).

Код С++

 

Код С++ на Ideone: http://ideone.com/qEJL9Z

Код Java

Код Java на Ideone: Ю 4.22

Комментарии

Задаем массив и делаем проверку: находим первый член массива не равный нулю, запоминаем его знак, находим следующий, проверяем если знаки совпадают ищем следующий член массива, в противном случае к сумме прибавляем единицу и запоминаем новый знак .

Тесты

Размер массива (m) Массив (Z[m]) Результаты Комментарии
11 0 -2 0 -10 2 -1 0 0 3 2 -3 4 Пройден
1 1 0 Пройден
5 1 -2 3 -4 5 4 Пройден

Related Images:

4 thoughts on “Ю4.22

  1. На самом деле, Вам повезло, что тесты пройдены. Данный код является Undefined Behavior и на моем компьютере на первом тесте выдает 4.
    Не знаю, принято ли здесь подсказывать, так что оставлю это решение на преподавателей. 🙂
    Со своей стороны задам вопрос: а не является ли -1 0 1 сменой знака (с «-» на «+», но длиной 2)? В такой формулировке задача несколько интереснее.

    • Вам, как ментору, подсказывать можно.
      Вы совершенно правы. Надя немного схитрила изменив условие задачи. Автор считал число переходов через ноль.

  2. Зачтено, но:
    — Поправьте, пожалуйста, отступы.
    — Добавьте в метки «чередование знака», «числовая последовательность»
    — Цикл в строке 17 ищет первый ненулевой элемент? Напишите комментарий в программе.
    — Цикл в строке 20 должен начинаться не с 0, а с того места на котором остановился предыдущий цикл. Зачем повторно проверять?

Добавить комментарий