Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 11
1

Есть ли одинаковые цифры во введенном числе

18.04.2015, 15:08. Показов 7275. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
проверить есть ли одинаковые цифры в введенном числе, нужно составить с помощью 1)цикла с предусловием 2) цикл по параметру. Помогите пожалуйста, вообще ничо в голову не идет. Толькр чтобы не сильно сложно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2015, 15:08
Ответы с готовыми решениями:

Есть ли в числе 2 одинаковые цифры
Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры. Пример:...

Определить, есть ли в числе одинаковые цифры
Задание такое: в массиве найти сумму всех нечетных чисел и вывести это число, после этого проверить...

Определить, есть ли в числе рядом стоящие одинаковые цифры
Уважаемые программисты,нуждаюсь в помощи....в общем задание выглядит так.... Вашему варианту....

Определить, есть ли в числе N рядом стоящие одинаковые цифры
1)В диалоговом режиме вводится некоторое число N (В диапазоне от 1 до 2000). . Все числа от 1 до N...

23
112 / 100 / 13
Регистрация: 18.04.2015
Сообщений: 813
Записей в блоге: 2
18.04.2015, 15:19 2
если на пальцах, то число надо разбить на разряды (целочисленное деление на 10, 100, 1000 и так далее), цифры эти запомнить, например в массив, затем найти одинаковые простым перебором, может быть можно проще, пока не соображу как
0
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
19.04.2015, 08:56 3
Dominik988,
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var a:array[1..100]of integer;
    n,m,digit,i,j:integer;
    flag:boolean;
begin
     writeln('Введите число: ');
     readln(n);
     i:=1;
     while(n<>0) do
     begin
          digit:=n mod 10;
          a[i]:=digit;
          n:=n div 10;
          inc(i);
     end;
     m:=i;
     flag:=false;
     for i:=1 to m do
         for j:=1 to m do
             if (i<>j) and (a[i]=a[j]) then
                flag:=true;
     if (flag) then writeln('Есть одинаковые цифры')
     else writeln('Нет одинаковых цифр');
end.
0
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 11
19.04.2015, 10:29  [ТС] 4
а можно ли как-то без использования массивов?

Добавлено через 1 минуту
ivaska, Nickolay0512, а можно ли как- то без использование массивов?
0
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
19.04.2015, 10:30 5
Dominik988, можно
0
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 11
19.04.2015, 10:32  [ТС] 6
Nickolay0512, напишите пожалуйста если не сложно два кода, с циклом предусловием и с циклом по параметру, а то на практике 2 недели ничего придумать не могу, только с постусловием сделал
0
58 / 40 / 41
Регистрация: 26.09.2013
Сообщений: 341
Записей в блоге: 1
19.04.2015, 10:34 7
Dominik988, Я показал один из вариантов решения данной задачи. Давайте ваш код с постусловием, переделаю на с предусловием
0
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 11
19.04.2015, 10:52  [ТС] 8
(Ссылки на сторонний ресурс с фотографиями текста удалены, контет перенесён на форум, фотографии текста заменены текстом)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses crt;
var
 N : integer;
 i, j, k, z : integer;
 q : boolean;
Begin
clrscr;
writeln(' определить все ли цифры натурального числа различны');
writeln;
Write('Введите натуральное число: ');
Readln(n);
if abs(n) >= 10 then
begin
k := n;
q := false;
repeat
z := k mod 10;
k := k div 10;
n := k;
repeat
j := n mod 10;
n := n div 10;
if j = z then
q := TRUE;
until (n mod 10 = 0);
until (k div 10 = 0);
if q=TRUE then Writeln('Есть одинаковые цифры') else
Writeln('Все цифры числа различны')
end else
writeln('Единственная цифра в числе');
 readln;
END.
Nickolay0512,
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
20.04.2015, 14:54 9

Не по теме:

Dominik988, рекомендую Вам ознакомиться с правилами форума. Ссылки на сторонние ресурсы, тем более, на файлопомойки, запрещены, во избежание потери контента на этих ресурсах. Будьте щедрым: вдруг кому-нибудь пригодится ваша программа? А если это - фотка на файлопомойке, так её через полгодика уже может и не быть. Всё выкладывается на форум (прикрепление вложений: расширенный режим редактора сообщений, в шапке редактора есть кнопка со скрепкой. Дальше сами разберётесь). Фотографии текста запрещены. Неоткуда скопипастить - будьте добры печатать врукопашную. Подсказка: найдите Ваш турбопаскалевский файл (обычно - <что-то там>\TP\Bin\<такойсякой>.pas), откройте его с помощью блокнота, и вставляйте текст на форум. Правда, в турбо паскале используется DOSовская кодовая страница, и могут быть проблемы с отображением русских букв. Это дело можно подрихтовать текстовым редактором поматерее блокнота: Notepad++, BrEd, можно для исправления кодовой страницы использовать и MS Word, но аккуратно: после достижения результата в плане читаемости русского текста, файл требуется сохранить как текст с разбиением на строки.

Ещё раз выложите фотографию с текстом, я приду к Вам домой и переломаю всю фототехнику.



Добавлено через 25 минут
Правильно решать подобные задачи через множество. Цикл с предусловием:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var digit : set of byte;
    d, n : integer;
    b : boolean;
begin
  write('n = ');
  readln(n);
  n := abs(n); {на всякий случай, вообще по заданию числа натуральные}
  digit := [];
  b := false;
  while n > 0 do
    begin
      d := n mod 10;
      n := n div 10;
      b := d in digit;
      if b
        then break
        else include(digit, d)
    end;
  if b
    then writeln('Есть одинаковые цифры')
    else writeln('Одинаковых цифр нет');
  readln
end.
Применять в данной задаче цикл с параметром есть индусство и дуроломство, но надо, значит, надо. Цикл с параметром:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var digit : set of byte;
    d, n, i : integer;
    b : boolean;
begin
  write('n = ');
  readln(n);
  n := abs(n); {на всякий случай, вообще по заданию числа натуральные}
  digit := [];
  b := false;
  for i := 0 to maxint do
    begin
      if n = 0 then break;
      d := n mod 10;
      n := n div 10;
      b := d in digit;
      if b
        then break
        else include(digit, d)
    end;
  if b
    then writeln('Есть одинаковые цифры')
    else writeln('Одинаковых цифр нет');
  readln
end.
Можно заранее вычислить количество цифр в числе (немного более грамотный вариант, однако, ноль приходится обрабатывать отдельно, так как ln(0) не определён):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var digit : set of byte;
    d, n, i : integer;
    b : boolean;
begin
  write('n = ');
  readln(n);
  n := abs(n); {на всякий случай, вообще по заданию числа натуральные}
  digit := [];
  b := false;
  if n > 0
    then
      for i := 0 to trunc(ln(n) / ln(10)) do
        begin
          d := n mod 10;
          n := n div 10;
          b := d in digit;
          if b
            then break
            else include(digit, d)
        end;
  if b
    then writeln('Есть одинаковые цифры')
    else writeln('Одинаковых цифр нет');
  readln
end.
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
20.04.2015, 16:24 10
Может не в тему...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Var ss : Set of Byte;
    n  : Longint;
    fl : Boolean;
Begin
  Readln(n);
  ss:=[]; fl:=False;
  While n>0 do
  Begin
    fl:=fl or ((n mod 10) in ss);
    Include(ss,n mod 10);
    n:=n div 10;
  end;
  Writeln(fl);
end.
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
20.04.2015, 16:38 11
Цитата Сообщение от APALoff Посмотреть сообщение
Может не в тему...
Отчего же. Нормальная реализация для цикла с предусловием. Ещё и лаконичная.
0
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 11
23.04.2015, 15:25  [ТС] 12
Cyborg Drone, спасибо большое) а [ ] значат пустой массив?
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
23.04.2015, 17:20 13
Dominik988, Вы мне повысили настроение, спасибо. Это всё равно, как если бы Вы спросили, что в непонятной записи "100" обозначают две буквы "о" в конце. Ну и вопросики Вы задаёте, кэп. Думаете, если, похоже на запись массива, так сразу и массив? Запись "[]" обозначает пустое множество. Не разбирали программу, да? Потому что, если бы разбирали, то заметили бы, что это [] приравнивается ко множеству, а не к никакому массиву. Рекомендую, прочитайте хотя бы сотню страниц любой нижки по любому паскалю. Тогда у Вас появится возможность не веселить меня, а писать такие пустяковые программы самому.
0
112 / 100 / 13
Регистрация: 18.04.2015
Сообщений: 813
Записей в блоге: 2
24.04.2015, 10:43 14
последний вариант мне нравится, идея использовать множество лежала на поверхности, нужно было только суметь взять
0
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 11
03.05.2015, 15:59  [ТС] 15
Cyborg Drone, мне учитель сказал сделать без множеств, поможете?
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.05.2015, 20:46 16
Цитата Сообщение от Dominik988 Посмотреть сообщение
сделать без множеств
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Var ss : array[0..9] of Byte;
    n  : Longint;
    i  : Byte;
Begin
  Readln(n);
  For i:=0 to 9 do ss[i]:=0;
  While n>0 do
  Begin
    Inc(ss[n mod 10]);
    n:=n div 10;
  end;
  For i:=0 to 9 do
    If ss[i]>1 then
    Begin
      Writeln('Есть одинаковые цифры.');
      Halt;
    end;
  Writeln('Нет одинаковых цифр.');
end.
0
SuperKir
04.05.2015, 21:15
  #17

Не по теме:

APALoff, сейчас скажет: "И без массивов".

0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.05.2015, 22:00 18

Не по теме:

Цитата Сообщение от SuperKir Посмотреть сообщение
сейчас скажет: "И без массивов".
В принципе, можно и без массивов ))



Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function Check(n : Longint) : Boolean;
Var fl : Boolean;
  Function EQ(nn : Longint; t : Byte) : Boolean;
  Begin
    If nn>0 then EQ:=(t=(nn mod 10)) or EQ(nn div 10,t)
    else EQ:=False;
  end;
Begin
  fl:=False;
  While n>9 do
  Begin
    fl:=fl or EQ(n div 10,n mod 10);
    n:=n div 10;
  end;
  Check:=fl;
end;
 
Begin
  Writeln(Check(1234456));
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
04.05.2015, 23:56 19
Цитата Сообщение от APALoff Посмотреть сообщение
В принципе, можно и без массивов ))
В принципе - можно и без массивов и без функций и без множеств:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  n, bit : longint;
  L : longint;
  uniq : boolean;
begin
  L := 0;
  uniq := true;
  n := 1231458;
  while n > 0 do
  begin
    bit := $1 shl (n mod 10);
    uniq := uniq and ((L and bit) = 0);
    L := L or bit;
    n := n div 10;
  end;
  writeln(not uniq);
end.
1
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
05.05.2015, 00:11 20
volvo, это что то вроде флагового массива на битовом уровне. Оригинально. =)
0
05.05.2015, 00:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2015, 00:11
Помогаю со студенческими работами здесь

Написать программу, которая генерирует четырехзначное число и определяет, есть ли в числе одинаковые цифры
Написать программу, которая генерирует четырехзначное число и определяет, есть ли в числе...

Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры. Найти сумму, среднее арифметическое и количество цифр в числе
Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры. Найти сумму,...

В каждом введенном числе удалить цифры 5 если они находятся в конце числа
Ввести пять чисел. В каждом числе удалить «хвостовые» цифры 5. (например, дано 2355, результат...

Функция, которая во введенном числе типа longint оставляет только нечетные цифры
Написать функцию, которая для выеденного числа типа longint, оставляет только нечетные цифры.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru