Напишите программу, которая определяет, верно ли, что введённое число содержит по крайней...

0 голосов
81 просмотров

Напишите программу, которая определяет, верно ли, что введённое число содержит по крайней мере две одинаковых цифры, возможно, не стоящие рядом


Информатика (19 баллов) | 81 просмотров
0

решение по проще ) тока с присваиванием переменных и while

Дан 1 ответ
0 голосов
Правильный ответ

Var
  s: string;
  i, j, n: integer;
  c: char;
  flag: boolean;

begin
  Write('Введите произвольное число: '); Readln(s);
  flag := false;
  n := length(s);
  i := 1;
  while (i <= n) and (not flag) do<br>  begin
    c := s[i];
    j := i + 1;
    while (j <= n) and (not flag) do<br>      if s[j] = c then flag := true else j := j + 1;
    if (not flag) then i := i + 1
  end;
  if flag then Writeln('Символ "', c, '" встречается больше одного раза')
  else Writeln('Все символы уникальны')
end.

Тестовое решение:
Введите произвольное число: 16379068
Символ "6" встречается больше одного раза


(142k баллов)
0

а можешь только через whele расписать. я остальное не проходил

0

Как это "только через "While"? Программа состоит из различных операторов, нельзя её написать с помощью только одного из них.

0

Да и вообще, нельзя эту задачу решить только при помощи оператора цикла ))

0

я решил

0

var x, y, z, g, e, i: integer ;
begin
writeln( 'введите число')
readln(x);
z:=x;
e:= x div 10;
i:=0;
while z>0 do begin ;
y:=z mod 10;
while e>0 do begin;
g:=e mod 10 ;
e:=e div 10;
if g=y then
i:=1;
end;
z:=z div 10;
end;
if i=1 then
writeln ('да') else
writeln ('нет');
end .

0

Так тут кроме оператора цикла и описание, и присваивание, и условный оператор и ввод-вывод... все, как и у меня - других операторов я тоже не использовал

0

И потом, Ваша программа врёт: дайте ей число 213456718 - она пишет, что одинаковых цифр НЕТ

0

верно. спасибо

0

Но врет она не потому, что неверно написано, а потому что число 213456718 выходит за пределы разрядной сетки, отведенной для integer, а паскаль по этому поводу молчит. Во избежание подобной ошибки я использовал строковое. а не числовое представление числа, поскольку Вы не указали, в каком диапазоне могут находиться вводимые числа. И еще, Вы не указали, что числа должны быть только целыми, на строке можно вводить любые.

0

Совет: ответ начинайте писать в форме "В числе xxxxx ..." - тогда будет видно, какое число на самом деле программа обрабатывала.