Другие языки программирования и технологии
Нужно сделать прогу в Паскале, чтобы вводилось число и если есть повторяющиеся цифры, то ответ "Да", иначе"Нет"
Например: 1234 "Нет", А 12234 "Да"
Переворачивать массив необязательно было, ведь последовательность цифр не играет роли.
var n:longint;
a:array[1..10] of byte;
i,k,x,j:byte;
begin
write('n=');
readln(n);
n:=abs(n);
k:=0;
while n>0 do
begin
k:=k+1;
a[k]:=n mod 10;
n:=n div 10;
end;
x:=0;
for i:=1 to k do
for j:=i+1 to k do
if a[i]=a[j] then
begin
x:=x+1;
Break;
end;
if x=0 then Writeln('No') else Writeln('Yes');
END.
А строкой еще проще
var n:string;
i,x,j:byte;
begin
write('n=');
readln(n);
x:=0;
for i:=1 to Length(n) do
for j:=i+1 to Length(n) do
if n[i]=n[j] then
begin
x:=x+1;
Break;
end;
if x=0 then Writeln('No') else Writeln('Yes');
END.
Если смущает Break, то можно и без него обойтись. Просто в некоторых случаях цикл будет вхолостую работать
var n:longint;
a:array[1..10] of byte;
i,k,x,j:byte;
begin
write('n=');
readln(n);
n:=abs(n);
k:=0;
while n>0 do
begin
k:=k+1;
a[k]:=n mod 10;
n:=n div 10;
end;
x:=0;
for i:=1 to k do
for j:=i+1 to k do
if a[i]=a[j] then
begin
x:=x+1;
Break;
end;
if x=0 then Writeln('No') else Writeln('Yes');
END.
А строкой еще проще
var n:string;
i,x,j:byte;
begin
write('n=');
readln(n);
x:=0;
for i:=1 to Length(n) do
for j:=i+1 to Length(n) do
if n[i]=n[j] then
begin
x:=x+1;
Break;
end;
if x=0 then Writeln('No') else Writeln('Yes');
END.
Если смущает Break, то можно и без него обойтись. Просто в некоторых случаях цикл будет вхолостую работать
Со строками всё можно сделать НАМНОГО проще
var
n:string;
s:string[2];
i:0..9;
begin
ReadLn(n);
s:='xx'; // любые 2 символа, чтобы длина была правильной
for i:=Low(i) to High(i) do begin
// s состоит из двух одинаковых ЧИСЛОВЫХ символов = i // можно было Str(i, s); s := s+s;
s[1] := Chr(Ord('0') + i); s[2] := s[1];
// собственно проверка
if Pos(s, n) > 0 then begin
WriteLn('Да - ', s);
Exit; // выход из программы после вывода
end;
end;
WriteLn('Нет');
end.
А без строк массивы не нужны:
var
n: longint;
digit, last: -1..9;
begin
ReadLn(n);
last := -1; // признак, что не было предыдущей цифры
while (n > 0) do begin
digit := n mod 10; n := n div 10;
if last = digit then begin
WriteLn('Да - ', digit);
Exit; // выход из программы после вывода
end;
last := digit;
end;
WriteLn('Нет');
end.
var
n:string;
s:string[2];
i:0..9;
begin
ReadLn(n);
s:='xx'; // любые 2 символа, чтобы длина была правильной
for i:=Low(i) to High(i) do begin
// s состоит из двух одинаковых ЧИСЛОВЫХ символов = i // можно было Str(i, s); s := s+s;
s[1] := Chr(Ord('0') + i); s[2] := s[1];
// собственно проверка
if Pos(s, n) > 0 then begin
WriteLn('Да - ', s);
Exit; // выход из программы после вывода
end;
end;
WriteLn('Нет');
end.
А без строк массивы не нужны:
var
n: longint;
digit, last: -1..9;
begin
ReadLn(n);
last := -1; // признак, что не было предыдущей цифры
while (n > 0) do begin
digit := n mod 10; n := n div 10;
if last = digit then begin
WriteLn('Да - ', digit);
Exit; // выход из программы после вывода
end;
last := digit;
end;
WriteLn('Нет');
end.
Похожие вопросы
- Паскаль. Дано натуральное число. Верно ли , что цифра А встречается в нем более К раз.
- Помогите составить прогу в паскале: А в степени N, чтобы высчитывала ответ при вводе числа и её степени.Заранее спасиб
- СРОЧНО ! Напишите прогу на Паскале
- паскаль - Дано натуральное число п. Переставить его цифры так, чтобы образовалось наименьшее число
- Помогите!! C ++ Вводится число от 1...999. Вывести данное число на естественном языке. Например, 52 – пятьдесят два.
- Помогите написать прогу на Паскале, экзамен горит, очень нужно..
- С клавиатуры вводятся числа, пока не будет введен ноль, вывести числа в обратно порядке. С++ Голову сломал !!!
- Помогите написать прогу на паскале
- напишите проги в ПАСКАЛЕ плиз!!!очень надо.
- люди помогите написать прогу в паскале чтоб она запрашивала число и потом писала простое оно или нет, всю голову сломал