1 / 1 / 0
Регистрация: 21.05.2009
Сообщений: 4
1

Определить, есть ли среди цифр заданного числа одинаковые

21.05.2009, 17:17. Показов 8598. Ответов 5
Метки нет (Все метки)

Здравствуйте! Прошу помощи при написании одной программы на turbo pascal. Формулировка вопроса звучит так: "Составить программу решения задачи: Определить, есть ли среди цифр заданного числа одинаковые."

Поиском по форуму нашел схожую по смыслу программку, которая проверяет, есть ли во введенном с клавиатуры одномерном массиве элементы с одинаковыми значениями. Код написал человек под ником Puporev:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses crt;
const n=5;
var a:array[1..n]of integer;
i,j,k:integer;
begin
clrscr;
writeln('Vvedite ',n,' chisel:');
for i:=1 to n do
read(a[i]);//вводим числа через пробел
readln;  //жмем Enter
k:=0;
for i:=1 to n do
for j:=i to n do
if (a[i]=a[j])and(i<>j)then//если совпадабт, а номера разные
     begin
        k:=k+1;//считаем
     end;
if k>0 then writeln('Odinakovye chisla est!')
else if k=0 then writeln('Odinakovyh chisel net!');
readln
end.
Только мне нужно проверить одинаковые цифры в заданном (введенном с клавиатуры, я так понимаю) числе, а не в массиве.

Самому додумать время не позволяет - послезавтра экзамен. Кто может помочь - откликнитесь, буду очень благодарен. И если можно, с комментариями, чтобы каждое действие программы можно было преподу рассказать.

P.S. Можно ли в паскале использовать значение команды writeln кирилицей?
Например, вместо writeln('Odinakovye chisla est!') записать writeln('Одинаковые числа есть!')
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2009, 17:17
Ответы с готовыми решениями:

Выяснить, есть ли среди цифр заданного четырехзначного числа одинаковые
Задача: Выяснить, есть ли среди цифр заданного четырехзначного числа одинаковые. Заранее...

Определить, есть ли среди чисел такие, в которых сумма старшей и младшей цифр больше заданного числа
Помогите написать программу Определить, есть ли среди чисел диапазона, определяемого типом Byte,...

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

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

5
12 / 12 / 3
Регистрация: 01.04.2009
Сообщений: 27
21.05.2009, 17:22 2
Цитата Сообщение от netster Посмотреть сообщение
Можно ли в паскале использовать значение команды writeln кирилицей?
Например, вместо writeln('Odinakovye chisla est!') записать writeln('Одинаковые числа есть!')
Необходимо в реестре изменить значение ключа 00000409 в папке DosKeybCodes на "ru". Путь: HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> KeyboardLayout. Кроме этого, в файле "autoexec.nt", расположенном в Windows\system32, надо добавить строку "lh %SystemRoot%\system32\kb16.com ru". После перезагрузки, переключение раскладки клавиатуры в DOS-приложениях будет производиться комбинациями Ctrl+Left Shift (английская) и Ctrl+Right Shift (Русская). Данный метод нормально работает в том случае, если Language settings for the system (апплет Regional Options) в качестве Default стоит Cyrilic. Если Вас не устраивают возможности предоставляемые системой, можете поставить XP Tweaker или Neo Utilities
1
6 / 6 / 3
Регистрация: 21.05.2009
Сообщений: 17
21.05.2009, 17:39 3
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
program one;
                    uses crt;
                    var c:char; st:string; k,s,i:byte;
                    begin clrscr;
                    k:=0;
                    writeln('vvedite chislo');
                    while c<>#13 do begin
                     read(c); st:=st+c; end;
                    s:=length(st);
                    for i:=1 to s do
                        if st[i]=st[i+1] then k:=k+1;
                    if k>0 then writeln('est') else writeln('net');
                          readkey end.
ну как-то так.
1
1 / 1 / 0
Регистрация: 21.05.2009
Сообщений: 4
21.05.2009, 18:00  [ТС] 4
Спасибо ребята, даже не представлял что все здесь так быстро помогают - и 15 минут не прошло. Теперь давайте разбирать дальше. Начну я, а где ошибусь - поправте.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
program one; //это так понял название программы "one"?
uses crt; //подгрузка в оперативку модуля crt? 
var c:char; st:string; k,s,i:byte; //обявление переменных "с" с типом (не знаю), st с типом "строка" и k,s,i с каким типом тоже не знаю 
begin clrscr; //инициирующая часть (начало) с командой очистки экрана?
k:=0; //присвоение переменной k ноль
writeln('vvedite chislo'); //вывод на экран сообщения
while c<>#13 do begin //какой то цикл что-ли?
read(c); st:=st+c; end; //с этого места и дальше вообще все туманно:)
s:=length(st);
for i:=1 to s do
if st[i]=st[i+1] then k:=k+1;
if k>0 then writeln('est') else writeln('net');
readkey end.
0
6 / 6 / 3
Регистрация: 21.05.2009
Сообщений: 17
21.05.2009, 18:07 5
1. да
2. да
3. символьный тип
4. да
5. while... до тех пор, пока ты не нажмешь enter, из введенных цифр будет "собираться" число. дальше, length находит длину слова (числа). и дальше начиная с первой цифры по последнюю мы их сравниваем, найдя хоть одно совпадение наращиваем к. ну и если это к больше нуля, то в числе есть совпадение цифр.
1
0 / 0 / 1
Регистрация: 24.03.2010
Сообщений: 46
07.04.2010, 22:08 6
а как сделать ту же программу через функцию просто я сделал а у меня ошибку выдает:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
program laborat6;
 
uses crt;
 
var y:string;
    x,i,n,k:word;
    c,cd:char;
    chislo:array [1..100] of char;
 
 
function obr(i,x,n:word;y:string):word;
 var chislo:array[1..100] of char;
 begin
    for i:=1 to n do begin
      if (chislo[i])=y then x:=x+1;
     end;
 
procedure vvod(var y:string; var i,n,k:word; var c,cd:char; var chislo:array of char);
 begin
     clrscr;
    writeln('Добро пожаловать в программу, которая сможет определить,');
    writeln('есть ли среди первых N цифр заданного целого числа цифра К.');
      i:=1;
    write('Введите любое число: ');
      repeat
    read(cd);
    chislo[i]:=cd;
      i:=i+1;
       until  cd=#13;
    write('Введите цифру которую вы хотите проверить: ');
      read(k);
      str(k,y);
      write('Количство проверяемых первых цифр в заданном вами числе: ');
      readln(n);
 end;
 
 procedure vyvod(x,k,i,obr:word);
 begin
    obr:=k;
     writeln('Число ',k,' встречается ',x,' раз(а).');
    readln;
 end;
 
 
begin
vvod(y,i,n,k,c,cd,chislo);
vyvod(x,k,i,obr);
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2010, 22:08
Помогаю со студенческими работами здесь

Есть ли среди первых N цифр заданного целого числа цифра K.
Надо решить задачу линейно или хотя бы составить линейный алгоритм. Есть ли среди первых N цифр...

Определить, есть ли среди цифр заданного числа одинаковые
Помогите.. Есть код #include &lt;iostream.h&gt; #include &lt;conio.h&gt; int main(int argc, char* argv)...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru