Другие языки программирования и технологии

Помогите плз с Паскаль прогой!!!

program ran15;
uses crt;
const n=100 ;
var a,b:integer;
begin
clrscr;

b:=1;
while b<16 do
begin
a:=random(n);
writeln(a);
b:=b+1;
end;
readkey;
end.

как проверить 4то переменная "а" будеет или не будет имет одинаковые елементы-без использование масивов и строк.. Только с помощью операторов??
Навскидку я вижу три варианта.

1. Производить чтение непосредственно из видеопамяти и смотреть, что отображено на мониторе. Тут потребуется знание ассемблера и, полагаю, требуется явно не это.

2. Не пользоваться массивами и строками, а делать запись в файл. То есть
var f:text;
...
assign(f,'temp.txt');
...
append(f);
writeln(f,x);
...
close(f);

Это для записи, а для чтения

reset(f);
repeat
readln(f,x);
...
until eof(f);

3. Вариант с использованием 16 переменных

Заводим 16 переменных типа byte. При каждой генерации записываем значение в конкретную переменную, навроде

...
if (b=5) then p5:=a;
if (b=6) then p6:=a;
...

Или можно через оператор case, не суть важно.

А потом проверяем все переменные на вопрос было ли уже такое число.

4. Вместо 16 переменных можно использовать 4 переменных типа longint. При этом нужно пользоваться бинарной записью. Т. е. , к примеру:

Пусть число x1 имеет значение 6. В двоичном виде это будет выглядеть как 110. Цифрами по порядку можно задать, было ли нужное нам число, или нет. Т. е. 110 - это значит, что выпадало число 2 и 3, а число 1 - не выпадало. Если выпадет число 1, то мы закодируем все 3 числа (1,2,3) как "111". Если, к примеру, выпадет только одно число 4, то мы запишем это как "1000". В общем, на эту тему можно поискать информацию по запросу "бинарная запись".
Даниил Карцев
Даниил Карцев
4 971
Лучший ответ
Я не вижу способа, но задача интересная! Попробуй задать вопрос тут http://delphikingdom.ru/. Он быстро попадет в раздел головоломок.
Рома Прокопюк
Рома Прокопюк
4 871