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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2009, 22:15   #11
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

я бы предложил немного другой алгоритм
ваш имеет сложность O(n^2) =))
NiCola999 вне форума Ответить с цитированием
Старый 07.12.2009, 22:22   #12
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

NiCola999
Слушаю ваше предложение=)
Базиля вне форума Ответить с цитированием
Старый 07.12.2009, 22:38   #13
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

завести массив из 10 элементов, изначально заполнить нулями. Он будет служить счетчиком кол-ва повторений каждой цифры

Код:
b = [0,0,0,0,0,0,0,0,0,0]
потом просто берем исходное число и в зависимости от цифры , увеличиваем элемент b на 1
напишу пример на Си
допустим есть число a
Код:
a = 12345665;
for(i=a; i>0; i/=10)
      b[ i%10 ] ++;
проходимся по этому массиву и считаем сколько элементов имеет повторений больше 1. Вернее надо
просто просуммировать элементы которые больше 1

Последний раз редактировалось NiCola999; 07.12.2009 в 22:55.
NiCola999 вне форума Ответить с цитированием
Старый 07.12.2009, 23:43   #14
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Код:
var
  X: Longint;
  A: Array[0..9] of Byte;
  C, I: Byte;
begin
  ReadLn(X);
  FillChar(A, SizeOf(A), 0);
  while X <> 0 do
  begin
    Inc(A[X mod 10]);
    X := X div 10;
  end;
  WriteLn('Повторяются: ');
  C := 0;
  for I := 0 to 9 do
    if A[I] > 1 then
    begin
      WriteLn(I, ' - ', A[I], ' раз');
      Inc(C);
    end;
  WriteLn; WriteLn;
  WriteLn('Всего повторяющихся цифр: ', C);
  ReadLn;
end.
Alex_FF вне форума Ответить с цитированием
Старый 07.12.2009, 23:47   #15
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

угу именно так =), только ему вроде надо посчитать кол-во одинаковых цифр
т.е для числа
1333555677 = 8

а ваша программа я предполагаю выдаст 3

т.е надо примерно так

Код:
var
  X: Longint;
  A: Array[0..9] of Byte;
  C, I: Byte;
begin
  ReadLn(X);
  FillChar(A, SizeOf(A), 0);
  while X <> 0 do
  begin
    Inc(A[X mod 10]);
    X := X div 10;
  end;
  WriteLn('Повторяются: ');
  C := 0;
  for I := 0 to 9 do
    if A[i] > 1 then
    begin
      WriteLn(I, ' - ', A[i], ' раз');
      С = С+A[i];
    end;
  WriteLn; WriteLn;
  WriteLn('Всего повторяющихся цифр: ', C);
  ReadLn;
end.

Последний раз редактировалось NiCola999; 07.12.2009 в 23:57.
NiCola999 вне форума Ответить с цитированием
Старый 07.12.2009, 23:55   #16
Banderas123
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 14
По умолчанию

Спасибо, я пока что только начинаю изучать паскаль самостоятельно, в коледже учим бейсик. Так что, вопросов будет много.... xD
Banderas123 вне форума Ответить с цитированием
Старый 08.12.2009, 06:31   #17
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Код:
readln(n);
for i:=0 to 9 do
 A[i]:=0;

while n<>0 do
 begin
 k:=n mod 10;
 n:=n div 10;
 inc(A[k]);
 end;
for i:=0 to 9 do
 if A[i]<>0 then writeln('Цифра ',i,' встречается в записи числа ', A[i],' раз')
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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