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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2008, 08:01   #1
deu4er
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 18
По умолчанию Задача по одномерному массиву, сделать с процедурами

Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.
deu4er вне форума Ответить с цитированием
Старый 12.11.2008, 08:43   #2
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

на каком языке?
Slicker вне форума Ответить с цитированием
Старый 12.11.2008, 09:57   #3
deu4er
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 18
По умолчанию

на паскале

процедуры не понимаю( не могу её сделать

Последний раз редактировалось Stilet; 12.11.2008 в 12:21.
deu4er вне форума Ответить с цитированием
Старый 12.11.2008, 10:20   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Смысл процедуры проверки в том, что недолжно быть одинаковых чисел и чисел вне диапазона [1..n].
Код:
const
  n = 6;
var
  mas: array[1..n] of word;
  i, j, d: word;
procedure proverka(var k: word);
begin
  for i := 1 to n do
  if (mas[i] < 1) or (mas[i] > n) then
  begin
    k := i;
    break
  end else
  for j := i + 1 to n do
  if (mas[i] = mas[j]) or (mas[j] < 1) or (mas[j] > n) then
  begin
    k := j;
    exit
  end;
end;
begin
  for i := 1 to n do
  begin
    write('el ', i, ' = ');
    readln(mas[i])
  end;
  proverka(d);
  writeln(d);
  readln
end.
eoln вне форума Ответить с цитированием
Старый 12.11.2008, 10:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, в задании про процедуру ни слова ни сказано.. это, во-первых.
А во-вторых, задание не совсем некорректно поставлено - я предполагаю, что в задании должно быть оговорено, что все элементы массива являются числами от 1 до N
иначе, "вывести номер первого недопустимого элемента." будет невозможно!

хотя, можно отсортировать массив и в цикле проверять, как только следущий элемент массива не равен предыдущий элемент + 1 - то выдавать этот элемент, как неправильный. Если дошли до конца - то значит массив получен перестановкой...

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

Код:
const N = 5; {размер массива}
type MyArray = array[1..N] of integer; {описываем свой тип массива}

function IsCombinationArray( A : MyArray) : integer;
var i,j : integer;
begin
  ... проверяем ...
  если "неправильный" нашли:
    IsCombinationArray := A[i]
  иначе
    IsCombinationArray := 0;
end; {конец функции}

{основная программа}
var Massiv : MyArray;
  i, j : integer;

begin 
  Randomize;
  {заполняем массив случайными числами
    это просто для примера.
   вообще лучше запрашивать оператора вводить элементы массива - т.к. 
   в случае случайного заполнения вероятность того, что все цифры 
будут разные практически нулевая. 
т.е. всегда будем получать, что массив не получен перестановкой!}
  for i:=1 to N do Massiv[i] := Random(N)+1;

  WriteLn( IsCombinationArray(Massiv) );
end.

Последний раз редактировалось Serge_Bliznykov; 12.11.2008 в 10:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.11.2008, 10:29   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

eoln, сорри!!
ну вот... опять я опоздал...
хоть на работу не отвлекайся ;-)))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2008, 13:59   #7
deu4er
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 18
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по PASCAl. Помогите сделать. Waia Помощь студентам 1 08.12.2008 13:20
Помогите по работе с процедурами... ЕвгениуS Помощь студентам 1 28.05.2008 15:52
Оформить задачу процедурами Anita_i Паскаль, Turbo Pascal, PascalABC.NET 2 12.05.2008 12:37
FastReport с 2-я процедурами Abay БД в Delphi 2 20.09.2007 06:23