Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на файлы *

Автор: Димас 12.03.2007 16:47

вот сегодня по информатике начали файлы изучать...

Учитель задал такую задачку blink.gif :

Заполнить файл последовательного доступа f целыми числами, получеными с помщью генератора случайных чисел. Получить в файле g:
б.) те компоненты файла f, которые делятся на m и не делятся n .


Меня интересует что это за "генератор случайных чисел" ??

и как приблизительно можно решить б) ?

wacko.gif

Автор: Perfez 12.03.2007 17:50


const
k=1000;
var
m,n,f,i:longint;
g:text;
Begin
Assign(g,'output.txt');
ReWrite(g);
Read(f,m,n);
Randomize;
For i:=1 to f do
If (Random(k) mod m=0) and (Random(k) mod n<>0) then WriteLn(g,Random(k));
Close(g);
End.



По-моему должно быть так. smile.gif А
Цитата
генератор случайных чисел
это просто Randomize & Random(n) вроде... smile.gif

Автор: Perfez 12.03.2007 18:40

А на счёт

Цитата
генератор случайных чисел
смотри ещё: yes2.gif http://forum.pascal.net.ru/index.php?showtopic=12853&st=0&p=74975&#entry74975

Автор: volvo 12.03.2007 18:54

Цитата
По-моему должно быть так.
А по-моему, вот так:
const k=1000;
var
m,n,i:longint;
f, g:text;
begin
Randomize;
assign(f, 'input.txt'); rewrite(f);
for i := 1 to k do writeln(f, Random(200));
reset(f);

assign(g, 'output.txt'); rewrite(g);
ReadLn(m,n);
While not eof(f) do begin
readln(f, i);
if (i mod m = 0) and (i mod n <> 0) then WriteLn(g, i);
end;
close(g);
close(f);
end.
(все-таки сначала, по условию, заполняется один файл, а потом из него определенные числа переносятся в другой...)

Автор: Димас 12.03.2007 19:34

Так-с вроде разобрался:)

но только не понял одного:


Randomize; {Это для чего надо тут ?}
assign(f, 'input.txt'); rewrite(f);{<<Это ясно!}
for i := 1 to k do writeln(f, Random(200)); {ну цыкл перебирает от 1 до k, а что в нем делает Random(200)?}


так приблизиттельно понял, что Randomize (от англ. random-произвольный ) , так у tp это что функция такая чтоль?


Автор: volvo 12.03.2007 19:36

Цитата
а что в нем делает Random(200)?
А кто по-твоему сами случайные числа генерирует? Вот этот Random и генерирует...

Автор: klem4 12.03.2007 19:36

Цитата
Randomize; {Это для чего надо тут ?}


Подключение генератора СВ, для того, чтобы псевдослучайная последовательность не повторялась.

Цитата
for i := 1 to k do writeln(f, Random(200)); {ну цыкл перебирает от 1 до k, а что в нем делает Random(200)?}


Ну догадаться помоему можно из твоего задания

Цитата
Заполнить файл последовательного доступа f целыми числами, получеными с помщью генератора случайных чисел.


добавено: опоздал smile.gif

Цитата
так у tp это что функция такая чтоль?


Да, а еще у tp есть замечательный Help.

Автор: Димас 12.03.2007 19:49

так а почему имено Random с значением 200, а не другим ?

Цитата(klem4)
Да, а еще у tp есть замечательный Help.


Да у tp7 действительно только сейчас открыл глаза, что там есть help, но жаль он на English, может где то русик к нему можно качнуть?

Автор: volvo 12.03.2007 20:25

Цитата
жаль он на English, может где то русик к нему можно качнуть?

Был тут:
http://forum.pascal.net.ru/index.php?s=&showtopic=779&view=findpost&p=49698
?