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

Напишите программу, которая в последовательнсти целых чисел определяет количество нечетных чисел, кратных 3. Программа получает на выход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введеные числа по модулю не превышают 30 000. Программа должна вывести два числа: длину последовательности (завершающий 0 не учитывается) и количество нечетных чисел, кратных 3. ПОЖАЛУУУЙСТА!)
Гость
Ответ(ы) на вопрос:
Гость
var a:array[1..1000] of integer; i,j:integer; begin repeat i:=i+1; read(a[i]); if (a[i] mod 2<>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.
Гость
Из условия нам известно, что ввод завершается числом ноль. Информация о количестве чисел требуется только если их запоминать в массиве, но у нас однопроходный алгоритм, массив не нужен, поэтому про "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 <> 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы