
Вопрос задан 29.07.2023 в 11:12.
Предмет Информатика.
Спрашивает Брицъкий Владислав.
Дана последовательность из N вещественных чисел. Первое число в последовательности нечетное. Найти
сумму всех идущих подряд в начале последовательности нечетных чисел. Условный оператор не использовать.Qbasic

Ответы на вопрос

Отвечает Радченко Никита.
О четности или нечетности вещественного числа можно говорить лишь если оно не имеет дробной части. В этом случае оно приводится к целому числу. Я не знаю, зачем дано абсолютно глупое требование не использовать условный оператор, но выполнить его можно. Надо умножать число на абсолютную величину остатка от его деления на 2. Если число четное, остаток будет нулевым, нечетное - единичным. Поэтому результатом умножения будет или само нечетное число, или ноль. И можно все подряд складывать.
CLS
DIM n AS INTEGER
INPUT "n=", n
DIM i AS INTEGER, k AS INTEGER, x AS SINGLE, s AS SINGLE, i AS INTEGER
s = 0
FOR i = 1 TO n
INPUT "->", x
s = s + x * (ABS(INT(x)) MOD 2)
NEXT i
PRINT "s = ", s
CLS
DIM n AS INTEGER
INPUT "n=", n
DIM i AS INTEGER, k AS INTEGER, x AS SINGLE, s AS SINGLE, i AS INTEGER
s = 0
FOR i = 1 TO n
INPUT "->", x
s = s + x * (ABS(INT(x)) MOD 2)
NEXT i
PRINT "s = ", s





Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для нахождения суммы всех идущих подряд в начале последовательности нечетных чисел без использования условного оператора, можно воспользоваться циклом и проверкой на нечетность числа. В языке QBasic это может выглядеть следующим образом:
qbasicDECLARE SUB FindSumOfFirstOddNumbers (N AS INTEGER, Numbers() AS SINGLE) DIM Numbers(100) ' Задаем массив для хранения вещественных чисел. Максимальный размер массива - 100. INPUT "Введите количество чисел в последовательности (N): ", N INPUT "Введите первое число: ", Numbers(1) IF Numbers(1) MOD 2 = 0 THEN PRINT "Первое число должно быть нечетным!" ELSE FOR i = 2 TO N INPUT "Введите следующее число: ", Numbers(i) IF Numbers(i) MOD 2 = 0 THEN EXIT FOR ' Если число четное, прерываем ввод последовательности END IF NEXT i CALL FindSumOfFirstOddNumbers(N, Numbers) END IF SUB FindSumOfFirstOddNumbers (N AS INTEGER, Numbers() AS SINGLE) DIM sum AS SINGLE sum = Numbers(1) ' Инициализируем сумму значением первого нечетного числа FOR i = 2 TO N IF Numbers(i) MOD 2 = 0 THEN EXIT FOR ' Если число четное, прерываем подсчет суммы END IF sum = sum + Numbers(i) ' Добавляем текущее нечетное число к сумме NEXT i PRINT "Сумма первых " + STR(i - 1) + " нечетных чисел: "; sum END SUB
Обратите внимание, что в коде предполагается, что пользователь будет вводить числа в правильном порядке (сначала нечетные, затем четные). Если вам необходимо реализовать проверку на правильность ввода, то придется добавить дополнительные проверки.


Похожие вопросы

Информатика 75

Информатика 92

Информатика 43

Информатика 344

Информатика 94

Информатика 18

Информатика 37
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili