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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2010, 20:29   #1
SkuLLL
Пользователь
 
Аватар для SkuLLL
 
Регистрация: 13.11.2010
Сообщений: 28
Вопрос найти все четырехзначные числа, в которых ровно две одинаковые цифры (турбо паскаль)

Ребят помогите начинающему программисту(второй курс), объясните как найти все четырехзначные числа, в которых ровно две одинаковые цифры. Буду вам очень признателен.
SkuLLL вне форума Ответить с цитированием
Старый 13.11.2010, 20:31   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что есть много способов решить эту задачу.
предложу Вам не самый эффективный, зато самый (на мой взгляд) понятный и простой.
заводите массив из десяти элементов (например: CountDigit)
с идексами от нуля до девяти. В каждом элементе хранить, сколько раз встречается данная цифра.
примерно так:
Код:
var i,Num,OneDigit : integer; 
    CountDigit : array[0..9] of integer;

begin
  WriteLn;
  Write('Vvedite chislo: ');
  Readln(Num);

  {занулим массив с счётчиками}
  for i:=0 to 9 do CountDigit[i] := 0;

  while Num>0 do begin
      OneDigit := Num mod 10; {берём очередную цифру из числа}
      Num := Num div 10; {отбрасываем эту цифру, число "сдвигаем" }
      inc(CountDigit[OneDigit]); {увеличиваем счётчик этой цифры}
  end;
А теперь всего лишь нужно проверить.
чтобы в массиве CountDigit
1) не было цифр больше 2-ки
2) 2-ка встречалась РОВНО один раз.
Оставляю это на самостоятельную работу!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2010, 22:10   #3
SkuLLL
Пользователь
 
Аватар для SkuLLL
 
Регистрация: 13.11.2010
Сообщений: 28
По умолчанию

Спасибо большое ,но мы еще не изучали массивы(((
но начало у меня есть, может кто-нибудь сможет продолжить?

Program Ex_1;
var a, b, c, d, e: integer;
begin
writeln('Введите число');
readln(a);
b:= a mod 10;{Тысячи}
c:= a div 10;{Сотни}

А вот десятки и еденицы не знаю как вывести

Последний раз редактировалось SkuLLL; 13.11.2010 в 22:14.
SkuLLL вне форума Ответить с цитированием
Старый 13.11.2010, 22:50   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
b:= a mod 10;{Тысячи}
c:= a div 10;{Сотни}
неправильно.

ну, можно и так решить эту задачу:
Код:
var 
 a,b,c,d, N : integer; 
begin
 WriteLn('Введите число:');
 Readln(N);


 a:= N div 1000;
 b:= N div 100 mod 10;
 c:= N mod 100 div 10;
 d:= N mod 100 mod 10;

 WriteLn('Тысяч: ', a);
 WriteLn('Сотен: ', b);
 WriteLn('Десяток: ', c);
 WriteLn('Единиц: ', d);

 if ((a=b) and (a<>c) and (a<>d) and (c<>d))
   or
    ((a=c) and (a<>b) and (a<>d) and (b<>d))
   or
    ((a=d) and (a<>b) and (a<>c) and (b<>c))
   or
    ((b=c) and (b<>a) and (b<>d) and (a<>d))
   or
    ((b=d) and (b<>a) and (b<>c) and (a<>c))
   or
    ((c=d) and (c<>a) and (c<>b) and (a<>b))
    then Writeln('Есть ровно две одинаковые цифры')
    else Writeln('Условие не выполняется!');

 ReadLn;
end.
p.s. плохому Вас учат.
Мой пример и короче. И без проблем сработает, например, с шестизначными числами (только тип integer заменить на longint) и всё.. А представляете, сколько нужно переменных и сколько проверок надо в этом случае писать для решения по Вашему алгоритму?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2010, 13:02   #5
SkuLLL
Пользователь
 
Аватар для SkuLLL
 
Регистрация: 13.11.2010
Сообщений: 28
По умолчанию

Спасибо за помощь, Просто мы только начинаем изучать паскаль, массивы еще не проходили наверно недели через две начнем их изучать
SkuLLL вне форума Ответить с цитированием
Старый 23.01.2012, 19:23   #6
Apakov
Новичок
Джуниор
 
Регистрация: 23.01.2012
Сообщений: 5
По умолчанию

Спасибо парни) мне тоже помогло) только я не второй курс, а 9 класс) хаха)
Apakov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все числа в диапазоне от 0 до 100, квадраты которых заканчиваются той же цифрой, что и само число (Delphi) 'studentka' Помощь студентам 5 29.11.2011 17:10
найти одинаковые цифры в столбце Технолог27 Microsoft Office Excel 0 17.05.2011 18:14
даны натуральные трехзначные числа, нужно выбрать такие, запись которых содержит два одинаковые цифры. TuuuZ Помощь студентам 2 28.12.2009 16:18
найти все симметричные четырехзначные числа , например 7667, 1331 V I K T O R I Y A Паскаль, Turbo Pascal, PascalABC.NET 6 03.05.2009 15:47
Найти все целые числа,у которых ровно 6 делителей; jenja Общие вопросы C/C++ 3 03.10.2008 20:32