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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2012, 14:11   #1
Rikoshet
Пользователь
 
Регистрация: 08.10.2012
Сообщений: 11
По умолчанию Одномерные массивы поиск чисел(Pascal)

Вот задачка. В массиве целых чисел найти все числа, в десятичной записи которых нет повторяющихся цифр.
Вот мое решение, но где-то не вяжется, подскажите где?(Я не сильно понимаю в паскале, возможно ошибки будут примитивные)
Код:
program massive;

uses
  crt;

const
  n = 20;

var
  m, b: array[1..n] of integer;
  i, j, a, k, c, e, d, t: integer;

begin
  clrscr;
  randomize;
  writeln('ishodniy massive:');
  for i := 1 to n do
  begin
    m[i] := random(100);
    write(m[i], ' ');
  end;
  writeln;
  writeln('ubiraem s odinakovimi ciframi...');
  writeln('stalo:');
  for i := 1 to n do
  begin
    j := 0;a := m[i];
    repeat
      d := a mod 10;
      inc(j);b[j] := d;
      a := a div 10;
    until a = 0;
  end;
  t := 0;
  for e := 1 to j do 
  begin
    k := b[e];
    for c := e to j do
      if k = b[c] then t := t + 1
  end;
  if t = 0 then 
    write(m[i], ' ');
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 08.10.2012 в 15:09.
Rikoshet вне форума Ответить с цитированием
Старый 08.10.2012, 15:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

две ошибки проверку надо выполнять в том же цикле, где вы разбираете число на отдельные цифры.
и вторая - вложенный цикл поиска цифры нужно начинать со следующего индекса (иначе вы само число с самим собой же сравниваете, разумеется, число b[e] = b[e])

Код:
  for i := 1 to n do
  begin
    j := 0;a := m[i];
    repeat
      d := a mod 10;
      inc(j);b[j] := d;
      a := a div 10;
    until a = 0;

    t := 0;
    for e := 1 to j do
    begin
      k := b[e];
      for c := e+1 to j do
        if k = b[c] then t := t + 1
    end;
    if t = 0 then
      write(m[i], ' ');

  end;
p.s. да и переменная d избыточна - сразу в массив b сохраняйте очередную цифру:
Код:
   repeat
      inc(j);
      b[j] := a mod 10;
      a := a div 10;
    until a = 0;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.10.2012, 15:31   #3
Rikoshet
Пользователь
 
Регистрация: 08.10.2012
Сообщений: 11
По умолчанию

Огромное спасибо!
Rikoshet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Одномерные массивы и сложный поиск prodsgn Помощь студентам 0 14.12.2010 00:20
одномерные массивы. (pascal) Диляра - новичок Помощь студентам 7 01.12.2010 20:42
одномерные массивы. (pascal) Диляра - новичок Помощь студентам 7 16.11.2010 21:17
Pascal Одномерные массивы Repz1992 Помощь студентам 3 23.12.2009 20:22