Подсчитать количество чётных цифр, неравных 6 в введённом числе с помощью массива в паскале ( Пример 1213 - кол-во цифр =1) срочноо пожалуйста


alexprogrammer: Массив обязательно использовать?
vlu96: да желательно, если не получится то можно через while

Ответы

Ответ дал: alexprogrammer
1

Ответ:

Программа без использования массива, так как смысла его использовать нет.

var x,rem,cnt:integer;

begin

 readln(x);

 cnt:= 0;

 while x > 0 do

 begin

   rem:= x mod 10;

   if (rem mod 2 = 0) and (rem <> 6) then

       inc(cnt);

   x:= x div 10

 end;

 writeln (cnt);

end.


pinguinbird: Очень элегантно, только 0 тоже чётное число. Поэтому если ввести 0, то программа выдаст неверное значение. Поэтому предлагаю ветвление:
pinguinbird: var x,rem,cnt:integer;
begin
readln(x);
cnt:= 0;
if x <> 0 then
while x > 0 do
begin
rem:= x mod 10;
if (rem mod 2 = 0) and (rem <> 6) then
inc(cnt);
x:= x div 10
end;
else cnt := 1;
writeln (cnt);
end.
pinguinbird: Да, и для x лучше лонгинт использовать:
var x:longint;
var rem,cnt:integer;
begin
readln(x);
cnt:= 0;
if x <> 0 then
while x > 0 do
begin
rem:= x mod 10;
if (rem mod 2 = 0) and (rem <> 6) then
inc(cnt);
x:= x div 10
end
else cnt := 1;
writeln (cnt);
end.
pinguinbird: Но вообще мне Ваш подход очень понравился
pinguinbird: намного лучше моего
Ответ дал: pinguinbird
0

Ответ:

program HomeWork;

 var c,i,si:integer;

 var ss:longint;

 var s:string;

begin

 c:=0;

 write('Введите число: '); readln(ss);

 str(ss,s);

 for i:=1 to length(s) do

   begin

     val(s[i],si);

     if (si mod 2 = 0) and (si <> 6) then c:=c+1;

   end;

 writeln('Количество чётных цифр в ведённом числе (исключая цифру 6): ', c);

end.


vlu96: прога не запускается, ошибка в val c параметрами указанных типов
pinguinbird: странно, у меня компилится...я там строковый символ в интеджер перевожу
pinguinbird: но вот ответ от AlexProgrammer прям чёткий, я там неболшие комменты добавил, но у него алгоритм намного лучше
Вас заинтересует