Предмет: Информатика,
автор: slyg1213
Напечатать на экране N различных целых чисел из интервала [1..99], используя функцию Random. Помогите срочно плиз!
Ответы
Автор ответа:
0
Ну держи с функцией Random.
ЗАДАЧА Random(): ЦЕЛ;
УКАЗ
ВОЗВРАТ УЗК(ВШИРЦЕЛ(Матем.случ() * 98)) + 1
КОН Random;
ОТ сч := 1 ДО N ВЫП
Вывод.ЧЦел("%d ", Random(), 0, 0, 0)
КОН
ЗАДАЧА Random(): ЦЕЛ;
УКАЗ
ВОЗВРАТ УЗК(ВШИРЦЕЛ(Матем.случ() * 98)) + 1
КОН Random;
ОТ сч := 1 ДО N ВЫП
Вывод.ЧЦел("%d ", Random(), 0, 0, 0)
КОН
Автор ответа:
0
Не просил. Зато он просил РАЗЛИЧНЫЕ n чисел, а Ваше решение их НЕ ГАРАНТИРУЕТ
Автор ответа:
0
Да, но в таком случае, я думаю, он бы написал "n неповторяющихся случайных чисел". Хотя, строго говоря, "различные" это и подразумевают, согласен.
Автор ответа:
0
Можно написать так:
Автор ответа:
0
ПЕР
уже_было: РЯД N ИЗ ЦЕЛ;
ЗАДАЧА Random(счётчик: ЦЕЛ): ЦЕЛ;
ПЕР
случ_число, сч: ЦЕЛ;
было: КЛЮЧ;
УКАЗ
случ_число := УЗК(ВШИРЦЕЛ(Матем.случ() * 98)) + 1;
ПОВТОРЯТЬ
было := ОТКЛ;
КОЛЬЦО
ОТ сч := 0 ДО счётчик - 1 ВЫП
ЕСЛИ уже_было[сч] = число ТО было := ВКЛ; ВЫХОД КОН
КОН
КОН;
ЕСЛИ было ТО
УВЕЛИЧИТЬ(число);
ЕСЛИ число > 99 ТО число := 1 КОН
КОН
ДО НЕ было;
ВОЗВРАТ число
КОН Random;
ЕСЛИ N > 99 ТО СТОП(0) КОН;
ОТ сч := 0 ДО N - 1 ВЫП
Вывод.ЧЦел("%d ", Random(сч), 0, 0, 0)
КОН
уже_было: РЯД N ИЗ ЦЕЛ;
ЗАДАЧА Random(счётчик: ЦЕЛ): ЦЕЛ;
ПЕР
случ_число, сч: ЦЕЛ;
было: КЛЮЧ;
УКАЗ
случ_число := УЗК(ВШИРЦЕЛ(Матем.случ() * 98)) + 1;
ПОВТОРЯТЬ
было := ОТКЛ;
КОЛЬЦО
ОТ сч := 0 ДО счётчик - 1 ВЫП
ЕСЛИ уже_было[сч] = число ТО было := ВКЛ; ВЫХОД КОН
КОН
КОН;
ЕСЛИ было ТО
УВЕЛИЧИТЬ(число);
ЕСЛИ число > 99 ТО число := 1 КОН
КОН
ДО НЕ было;
ВОЗВРАТ число
КОН Random;
ЕСЛИ N > 99 ТО СТОП(0) КОН;
ОТ сч := 0 ДО N - 1 ВЫП
Вывод.ЧЦел("%d ", Random(сч), 0, 0, 0)
КОН
Автор ответа:
0
В последнем цикле опечатка, надо:
уже_было[сч] := Random(сч);
Вывод.ЧЦел("%d ", уже_было[сч], 0, 0, 0)
уже_было[сч] := Random(сч);
Вывод.ЧЦел("%d ", уже_было[сч], 0, 0, 0)
Автор ответа:
0
const N = 99;
var i, j, t: integer;
flag: boolean;
mas: array[1..N]of integer;
begin
randomize;
i := 0;
while i < N do
begin
t := Random(1, 99);
flag := true;
for j := 1 to i do
if t = mas[j] then
begin
flag := false;
Break
end;
if flag then begin
i := i + 1;
mas[i] := t
end
end;
for i := 1 to N do
write(mas[i], ' ')
end.
var i, j, t: integer;
flag: boolean;
mas: array[1..N]of integer;
begin
randomize;
i := 0;
while i < N do
begin
t := Random(1, 99);
flag := true;
for j := 1 to i do
if t = mas[j] then
begin
flag := false;
Break
end;
if flag then begin
i := i + 1;
mas[i] := t
end
end;
for i := 1 to N do
write(mas[i], ' ')
end.
Автор ответа:
0
Ваше решение их НЕ ГАРАНТИРУЕТ, что все числа будут РАЗЛИЧНЫМИ
Автор ответа:
0
Опечатка: "их" - вычеркнуть
Похожие вопросы
Предмет: Английский язык,
автор: Lastik15
Предмет: Другие предметы,
автор: sanyanosov20
Предмет: Русский язык,
автор: sezim4838
Предмет: Математика,
автор: mirexkate
Предмет: Химия,
автор: yana15661975