PASCAL Напишите программу: Дана последовательность из N элементов. Найти количество двузначных чисел, в которых одна и только одна из цифр 3ка.
Answers & Comments
d514вариант решения, если элементы вводятся var n, i, x, s : integer; t: string; begin writeln('количество чисел'); readln(n); s := 0; for i := 1 to n do begin writeln(i,' число:'); readln(x); if (x > 9) and (x<100)) then begin t := IntToStr(x); if (((t[1] = '3') and (t[2] <> '3')) or (t[1] <> '3') and (t[2] = '3')) then s := s+1; end; end; writeln('Ответ ',s) end.
вариант решения, если элементы заданы массивом const n=50 var i, x, s : integer; t: string; m1: array [1..n] of integer; begin s := 0; for i := 1 to n do begin x := m1[i]; if (x > 9) and (x<100)) then begin t := IntToStr(x); if (((t[1] = '3') and (t[2] <> '3')) or (t[1] <> '3') and (t[2] = '3')) then s := s+1; end; end; writeln('Ответ ',s) end.
0 votes Thanks 1
deafol
Даю совет, если ты работал через строку ты мог использовать: условие if pos('3',s)>0
d514
все равно потребуется проверять на второе вхождение.
deafol
Смотри это получается без массива, считывай число в виде строки. Выполняй условие if pos('3',st)>0, т.е. если в числе есть символ '3', позиция будет либо 2 либо 3, это больше 0, условие соблюдается и прибавляй к счётчику 1
d514
с массивом - необязательная опция)). эт так, в виде разминки. Позиция будет либо 1 либо 2. Опять же - 33 попадет в разряд допустимых - косяк. Но за реакцию спасибо))
deafol
Вот вариант попроще var n, i, s, x : integer; begin n := 0; writeln('kolichestvo chisel'); readln(n); for i := 1 to n do begin writeln(i,' chislo'); readln(x); if ((x mod 3 = 0) and (x div 10 <> 3)) or ((x mod 3 <> 0) and (x div 10 = 3)) then s := s +1; end; writeln('otvet: ',s); end.
Answers & Comments
var
n, i, x, s : integer;
t: string;
begin
writeln('количество чисел');
readln(n);
s := 0;
for i := 1 to n do
begin
writeln(i,' число:');
readln(x);
if (x > 9) and (x<100)) then
begin
t := IntToStr(x);
if (((t[1] = '3') and (t[2] <> '3')) or (t[1] <> '3') and (t[2] = '3')) then s := s+1;
end;
end;
writeln('Ответ ',s)
end.
вариант решения, если элементы заданы массивом
const
n=50
var
i, x, s : integer;
t: string;
m1: array [1..n] of integer;
begin
s := 0;
for i := 1 to n do
begin
x := m1[i];
if (x > 9) and (x<100)) then
begin
t := IntToStr(x);
if (((t[1] = '3') and (t[2] <> '3')) or (t[1] <> '3') and (t[2] = '3')) then s := s+1;
end;
end;
writeln('Ответ ',s)
end.
var
n, i, s, x : integer;
begin
n := 0;
writeln('kolichestvo chisel');
readln(n);
for i := 1 to n do
begin
writeln(i,' chislo');
readln(x);
if ((x mod 3 = 0) and (x div 10 <> 3)) or ((x mod 3 <> 0) and (x div 10 = 3)) then
s := s +1;
end;
writeln('otvet: ',s);
end.