Top.Mail.Ru
Ответы

Pascal, задача 1 курса

1. Составить программу, которая формирует одномерный массив из 100 элементов, заполненный случайными неповторяющимися числами из отрезка [50,200].
Не знаю как даже самым легким способом сделать проверку, чтоб числа не повторялись

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
3мес

>Не знаю как даже самым легким способом сделать проверку, чтоб числа не повторялись
А нахрена это делать вообще о_О? Какой-то странный у тебя подход. Просто бери случайно числа из гарантированно уникального набора и адью:

1234567891011121314151617
 var 
  tgt: array[0..99] of integer; 
  src: array[50..200] of integer; 
  i, k: integer; 
begin 
  randomize; 
  for i:=50 to 200 do 
    src[i] := i; 
  for i:=0 to 99 do 
  begin 
    k := random (151-i)+50; 
    tgt[i] := src[k]; 
    src[k] := src[200-i]; 
    write(tgt[i], ' '); 
  end; 
  readln; 
end.   
Аватар пользователя
Высший разум
3мес

У нас всего 151 число. Берём массив из 151 числа от 50 до 200, перемешиваем его, выводим (или копируем в другой массив) первые 100 элементов.

1234567891011121314151617
 program q;
  var arr: array [0..150] of integer;
      i, j, k: integer;
begin
  randomize;

  for i := 0 to 150 do arr[i] := i + 50; {инициализация}

  for i := 150 downto 1 do begin {перемешивание}
    j := random(i + 1);
    k := arr[i];
    arr[i] := arr[j];
    arr[j] := k
  end;

  for i := 0 to 99 do write(arr[i], ' ') {вывод}
end. 
Аватар пользователя
Гуру
3мес

На паскале не скажу, но алгоритмически: сравнивай новый элемент с существующими элементами массива, дальше через условие добавляй новый.

ЕСЛИ МАССИВ.СЧЕТ(ЧИСЛО)>0:
Берешь другое число
ИНАЧЕ:
МАССИВ.ДОБАВИТЬ(ЧИСЛО)