Напишите программу, которая в последовательнсти целых чисел определяет количество нечетных

Напишите программку, которая в последовательнсти целых чисел определяет количество нечетных чисел, кратных 3. Программа получает на выход целые числа, количество введенных чисел неизвестно, последовательность чисел кончается числом 0 (0-признак окончания ввода, не заходит в последовательность). Количество чисел не превосходит 1000. Введеные числа по модулю не превосходят 30 000. Программка должна вывести два числа: длину последовательности (заканчивающий 0 не учитывается) и количество нечетных чисел, кратных 3.
ПОЖАЛУУУЙСТА!)

Задать свой вопрос
2 ответа
Из условия нам известно, что ввод заканчивается числом ноль. Информация о количестве чисел нужно только если их запоминать в массиве, но у нас однопроходный метод, массив не нужен, поэтому про "1000 чисел" благоприятно забываем. Числа целые, и по модулю не превосходят 30 000, как следует им надо отводить двухбайтный тип integer, в в котором диапазон представления чисел [-32 768 ; 32 767].
"Нечетные числа, кратные трем" - это такие, у которых остаток от разделения на два ненулевой, а остаток от деления на три нулевой. Так как числа целые, то и дробление, окончательно же, целочисленное.
Длина последовательности n - это просто счетчик количества прохождений цикла за вычетом единицы, потому что заключительный проход по циклу будет при вводе нуля, а его учесть не надобно. В другом счетчике k мы накапливаем количество чисел, для которых выполнилось осмотренное выше условие "нечетные числа, кратные трем".

var
  n,k,m: integer;
begin
  Writeln('Вводите целые числа, для окончания введите 0');
  n:=0; k:=0;
  repeat
    Read(m); Inc(n);
    if (m mod 2 lt;gt; 0) and (m mod 3 = 0) then Inc(k)
  until m=0;
  Writeln('Введено чисел- ',n-1);
  Writeln('Нечетных, кратных трем- ',k)
end.

Тестовое решение:
Вводите целые числа, для окончания введите 0
-5
12
8
27
-18
14
-33
7
0
Введено чисел- 8
Нечетных, кратных трем- 2

Kristina Vjazgina
Спасибо*)
Var a:array[1..1000] of integer;
i,j:integer;
begin
repeat
i:=i+1;
read(a[i]);
if (a[i] mod 2lt;gt;0) and (a[i] mod 3=0) then j:=j+1;
until (a[i]=0) or (i=1000);
writeln('Kolichestvo chisel - ',i-1);
writeln('Kolichestvo nechetnih chisel kotorie delatsa na 3 - ',j);
writeln;
end.
Элина Амотиева
Если что не так отпиши
Борхи Лариса
Громадное спасибо, но проверить теснее нет возможности, к раскаянью, поздно.(
Vjacheslav Chobanoglo
Вот только я не понял, для чего здесь массив
Baranskij Boris
Ты прав массив тут не обязателен , по повадке запилил , но я сомневаюсь что массив замедляет боту программки
Амелия Гольдинская
Во-первых, замедлит. Во-вторых, о замедлении или ускорении речи не шло, я написал о том, что массив не нужен. Это все одинаково, как сделать к автомобилю 5-ое колесо - оно несколько его замедлит, но главное - оно негодно.
Гришанов Вован
Да, не выгодно. Одно дело - занять память под одну переменную и совсем иное дело - под массив из 1000 элементов
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт