В виде блок-схемы : 1.решения задачи : Дана сторона а равностороннего треугольника. Найти площадь S этого треугольника. 2.нахождения значения функции Y=c2+2a-cosx
Если мы хотим вывести числа от 0 до 1, то мы пишем следующее :
1
2
3
var a : integer;
a := random;
Т.е. random без всего.
Бывают случаи когда хочется иметь промежуток(диапазон) чисел. Допустим от -23 до 5, как его задать ?
Для начала мы складываем 23 и 5 без учета знаков и прибавляем 1(всегда) , у нас будет 29. Теперь пишем
1
2
3
var a : integer;
a := random(29);
Но это вернет нам числа от 0 до 28, теперь просто надо вычесть 23, не учитывая знаков. Так для промежутка c отрицательными числами.
С двумя положительными числами всё наоборот, сначала вычитаем из второго первое и прибавляем 1, мы получаем число, затем к нему прибавляем первое число :
1
2
3
5 до 29 = 29 - 5 + 1 = random(25) + 5
-1 до 13 = 13 + 1 + 1 = random(15) - 1
Так же есть формула для всех случаев:
1
x := random(max-min+1)+min; // тут уже все знаки учитываются
Т.е. если нам нужен диапазон отрицательных чисел, например от -5 до -10, то мы пишем:
1
2
3
// -5 это максимальное значение, потому что оно больше -10, а -10 это минимальное
random(-5-(-10)+1)+(-10) // все знаки учитываются
В основном random и randomize в pascal используются вместе. Если использовать random отдельно, то у нас будут случайные числа постоянно одинаковы.
Допустим у нас есть код :
1
2
3
4
5
6
var a : integer;
begin
a := random(10);
writeln(a);
readln;
end;
И при запуске программы у нас выведется допустим 3. И если мы запустим заново, то у нас снова выведется 3 и так при каждом запуске.
Для этого и используется randomize, чтобы числа не повторялись :
1
2
3
4
5
6
7
var a : integer;
begin
randomize; // пишем до использование random()
a := random(10);
writeln(a);
readln;
end;
Если мы это напишем, то у нас функция random каждый раз при запуске программы будет выдавать разные числа.
1) Какой ответ будет выведен после выполнения цикла:
for x := 1 to 8 do Подставляем Х от 1 до 8
if x mod 7 = 0 Подставляем сюда Х=1 1 mod 7=0 нет так как mod это остаток от деления 1 mod 7 = 1 условие ложно и следующая строчка работать не будет, значит единственный Х который нам подходит это 7
7 mod 7 = 0 Да
then x := x + 1; Х:=7+1 X:=8
ответ: 8
2) Какой ответ будет выведен после выполнения цикла:
S := 0;
for x := 1 to 10 do
if x mod 3 = 0 Тут у нас снова mod и нам подходят только числа 3,6,9
Если мы хотим вывести числа от 0 до 1, то мы пишем следующее :
1
2
3
var a : integer;
a := random;
Т.е. random без всего.
Бывают случаи когда хочется иметь промежуток(диапазон) чисел. Допустим от -23 до 5, как его задать ?
Для начала мы складываем 23 и 5 без учета знаков и прибавляем 1(всегда) , у нас будет 29. Теперь пишем
1
2
3
var a : integer;
a := random(29);
Но это вернет нам числа от 0 до 28, теперь просто надо вычесть 23, не учитывая знаков. Так для промежутка c отрицательными числами.
С двумя положительными числами всё наоборот, сначала вычитаем из второго первое и прибавляем 1, мы получаем число, затем к нему прибавляем первое число :
1
2
3
5 до 29 = 29 - 5 + 1 = random(25) + 5
-1 до 13 = 13 + 1 + 1 = random(15) - 1
Так же есть формула для всех случаев:
1
x := random(max-min+1)+min; // тут уже все знаки учитываются
Т.е. если нам нужен диапазон отрицательных чисел, например от -5 до -10, то мы пишем:
1
2
3
// -5 это максимальное значение, потому что оно больше -10, а -10 это минимальное
random(-5-(-10)+1)+(-10) // все знаки учитываются
В основном random и randomize в pascal используются вместе. Если использовать random отдельно, то у нас будут случайные числа постоянно одинаковы.
Допустим у нас есть код :
1
2
3
4
5
6
var a : integer;
begin
a := random(10);
writeln(a);
readln;
end;
И при запуске программы у нас выведется допустим 3. И если мы запустим заново, то у нас снова выведется 3 и так при каждом запуске.
Для этого и используется randomize, чтобы числа не повторялись :
1
2
3
4
5
6
7
var a : integer;
begin
randomize; // пишем до использование random()
a := random(10);
writeln(a);
readln;
end;
Если мы это напишем, то у нас функция random каждый раз при запуске программы будет выдавать разные числа.
1) Какой ответ будет выведен после выполнения цикла:
for x := 1 to 8 do Подставляем Х от 1 до 8
if x mod 7 = 0 Подставляем сюда Х=1 1 mod 7=0 нет так как mod это остаток от деления 1 mod 7 = 1 условие ложно и следующая строчка работать не будет, значит единственный Х который нам подходит это 7
7 mod 7 = 0 Да
then x := x + 1; Х:=7+1 X:=8
ответ: 8
2) Какой ответ будет выведен после выполнения цикла:
S := 0;
for x := 1 to 10 do
if x mod 3 = 0 Тут у нас снова mod и нам подходят только числа 3,6,9
так как они при делении на 3 дают остаток 0
3 mod 3 = 0 да
6 mod 3 = 0 да
9 mod 3 = 0 да
then S := S + x;
S:=0+3 S:=3
S:=3+6 S:=9
S:=9+9 S:=18
ответ: 18
Объяснение: