Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2009, 18:45   #1
Banderas123
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 14
По умолчанию Сколько одинаковых цифр в числе

Задача:
Цитата:
Дано число N>=0. Проверить его цифры и определить сколько одинаковых цифр.
Не могу придумать проверку цифр на идентичность =(((

Последний раз редактировалось Banderas123; 07.12.2009 в 19:50.
Banderas123 вне форума Ответить с цитированием
Старый 07.12.2009, 19:19   #2
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

создай массив от 0 до 9.
Затем отделяеш одну цифру, смортишь какая она и соответственно записываешь, т.е. например если цивра 9, то inc(A[9]);

затем выводишь этот масив:
Код:
for i:=0 to 9
Writeln('Цифра ',i,' встречается в записи числа ', A[i],' раз' )
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 07.12.2009, 19:48   #3
Banderas123
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 14
По умолчанию

мне надо что бы программа делала все самостоятельно. Я уже написал делитель числа на цифры:
Код:
s:=string;
N:=integer;
begin
readln(N);
str(N, s);
теперь при вводе числа 3242 s[1] = 3, s[2]=2, s[3]=4, s[4]=2. Мне теперь надо написать код, что бы узнать есть ли в этом массиве одинаковые цифры. Вот это я не могу написать =(
Banderas123 вне форума Ответить с цитированием
Старый 07.12.2009, 20:25   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
теперь при вводе числа 3242 s[1] = 3, s[2]=2, s[3]=4, s[4]=2. Мне теперь надо написать код, что бы узнать есть ли в этом массиве одинаковые цифры. Вот это я не могу написать =(
Код:
for j:=1 to n do
for i:=1 to n-1 do
if s[j]=s[i+1] then
writeln('числа ',s[j],'и',s[i+1],' равны');
че-то типа того
Базиля вне форума Ответить с цитированием
Старый 07.12.2009, 20:47   #5
Banderas123
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 14
По умолчанию

Базиля, не то... =( когда j стает 2, то второе число не может сравнится с первым. Тоесть s[2] никак не сравнится с s[1], потому что s[2] = s[i+1]
Banderas123 вне форума Ответить с цитированием
Старый 07.12.2009, 20:51   #6
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Базиля, не то... =( когда j стает 2, то второе число не может сравнится с первым. Тоесть s[2] никак не сравнится с s[1], потому что s[2] = s[i+1]
......
А когда j=1 разве первое число не сравнивается со 2-ым?
s[j]=s[i+1]
1=2
Там недочетик один, цикл
Код:
for i:=1 to n-1 do
замени на
Код:
for i:=j to n-1 do

Последний раз редактировалось Базиля; 07.12.2009 в 20:54.
Базиля вне форума Ответить с цитированием
Старый 07.12.2009, 21:03   #7
Banderas123
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 14
По умолчанию

ага, точно =)
но программа выводит все значение, тоисть все цифры. Не знаю как посчитать и вывести те, что повторяются.
Banderas123 вне форума Ответить с цитированием
Старый 07.12.2009, 21:11   #8
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Banderas123
кинь текст программы.
а вообще я же тебе написал, как вывести те что повторяются
Код:
writeln('числа ',s[j],'и',s[i+1],' равны');
Цитата:
Не знаю как посчитать
в цикл засунь счетчик переменной К который увеличивает ее на 1.:
Код:
for j:=1 to n do
for i:=j to n-1 do
if s[j]=s[i+1] then
begin
writeln('числа ',s[j],'и',s[i+1],' равны');
k:=k+1;
потом за циклом выводишь K это и есть кол-во повторяющихся чисел
Базиля вне форума Ответить с цитированием
Старый 07.12.2009, 21:21   #9
Banderas123
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 14
По умолчанию

Код:
program 111;
uses CRT;
var
s : string;
N, i, j, l : integer;

begin ClrScr;
readln(N);
str(N,s);

for j:=1 to 5 do begin
    for i:=1 to 4 do  begin
        if s[j] = s[i+1] then begin
            writeln(s[j], ' = ', s[i+1]);
            l:=l+1;
        end;
    end;
    readln;
end;
end.
Banderas123 вне форума Ответить с цитированием
Старый 07.12.2009, 22:01   #10
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

че то я вообще не понял, прогрмма твоя бред выводила полный.
Код:
program 111;
Название программы не может начинаться с числа.
--------------------------------------------------------
В общем я тебе написал прогу с использованием одномерного массива:
Код:
program zad1;
type mas=array[1..10] of integer;
var a:mas;
j,k,i,n:integer;
begin
writeln('введите кол-во цифр в числе');
readln(n);
for i:=1 to n do
begin
read(a[i]);
end;
k:=0;
for j:=1 to n do
for i:=j to n-1 do
if a[j]=a[i+1] then
begin
writeln('цифры ', a[j],' и ', a[i+1],' равны ');
k:=k+1;
end;
writeln('кол-во повторяющихся цифр = ',k);
end.
Все работает, только не стоит вводишь все одинаковые цифры=) Глаза на лоб налезут от вывода)) Ума не привожу что с этим сделать, не могу сейчас сообразить... голова уже не варит

Последний раз редактировалось Базиля; 07.12.2009 в 22:08.
Базиля вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal - Задано число n неизвестной разрядности. Вычислить сколько цифр в этом числе Виолетта Помощь студентам 2 18.03.2009 07:17
Узнать кол-во цифр в числе при помоци for и if MAKEDON Общие вопросы C/C++ 3 23.02.2009 10:30
Найти количество цифр в числе immor Помощь студентам 4 14.02.2009 22:30
Перестановка цифр в целом числе. Паскаль. Cheetah Помощь студентам 5 16.10.2008 21:07