Предмет: Информатика, автор: vanzik

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

Ответы

Автор ответа: Аноним
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
  begin
    c := s[i];
    j := i + 1;
    while (j <= n) and (not flag) do
      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" встречается больше одного раза


Автор ответа: Аноним
0
Так тут кроме оператора цикла и описание, и присваивание, и условный оператор и ввод-вывод... все, как и у меня - других операторов я тоже не использовал
Автор ответа: Аноним
0
И потом, Ваша программа врёт: дайте ей число 213456718 - она пишет, что одинаковых цифр НЕТ
Автор ответа: vanzik
0
верно. спасибо
Автор ответа: Аноним
0
Но врет она не потому, что неверно написано, а потому что число 213456718 выходит за пределы разрядной сетки, отведенной для integer, а паскаль по этому поводу молчит. Во избежание подобной ошибки я использовал строковое. а не числовое представление числа, поскольку Вы не указали, в каком диапазоне могут находиться вводимые числа. И еще, Вы не указали, что числа должны быть только целыми, на строке можно вводить любые.
Автор ответа: Аноним
0
Совет: ответ начинайте писать в форме "В числе xxxxx ..." - тогда будет видно, какое число на самом деле программа обрабатывала.
Похожие вопросы
Предмет: Алгебра, автор: Аноним
Предмет: История, автор: Аноним