Показ дописів із міткою Pascal. Показати всі дописи
Показ дописів із міткою Pascal. Показати всі дописи

29 березня 2011 р.

Перевірка знань з теми "Команди розгалуження та повторення"

Задания.
1. Как выглядит полная форма команды ветвления?
a) if ...else...; б) if... then ... else...; в) while... than ..; г) if... then ...
2. Какие из приведенных ниже операторов ветвления записаны не правильно?
a) if х><0 then y:=x-2 else у:=х+2;
б) if x=0 then у:=1024 else y:=x-1024;
в) if x<>0 then y:=x-2; else y:=x+2;
г) if (x<5) and (y>3) then s:=s+1; else s:=s-1;
д) if a
е) if a<>b then b:=a;
ж) if 9 then k:=k+1;3. Какое значение будет иметь переменная a в результате выполнения команды ветвления:
if a4. Какое значение будет иметь переменная d, если после выполнения команды
if d<=4 then c:=5 else c:=10; значение переменной c=5?
А) d=4; Б) d=10; В) d=2;
5. После служебного слова While пишется:
а) условие б) оператор
6. Выход из цикла Repeat происходит при истинности логического выражения (условия):
а) Да б) Нет
7. Цикл While называется с предусловием, т.к. сначала идет условие, затем тело цикла:
а) Да б) Нет
8. В цикле For заранее известно число повторений цикла:
а) Да б) Нет
9. В каком из циклов вначале выполняется тело цикла, а затем проверяется условие выхода из цикла?
a) while; б) for; в) repeat.
10. В каких командах повторения увеличение (уменьшение) счетчика цикла на 1 предусмотрено автоматически:
А) while … do Б) for … to … do В) repeat … until
11. В каком случае, при k=3, тело цикла не будет выполняться ни разу:
А) for i:=k to 10 do s:=s+k; В) for i:=k downto 10 do s:=s+k;
Б) for i:=k to 2 do s:=s+k; Г) for i:=k downto 2 do s:=s+k;
12. Сколько раз будет выполняться цикл? Каким будет значение переменной а после выполнения заданного фрагмента программы?
а:=9; repeat S:=S dіv 2; а:=а+3; until a>18.
13. Указать значение переменной s после выполнения фрагмента программы:
s:=1; for i:=2 downto 2 do s:=s+1;
14. Указать значение переменной s после выполнения фрагмента программы:
s:=1; for i:=5 to 9 do s:=s+1;
15. Указать значение переменной s после выполнения фрагмента программы:
s:=2; i:=0; while i<5 do i:=i+1; s:=s+1/i;
16. Указать значение переменной s после выполнения фрагмента программы:
s:=5; i:=1; while i>1 do begin s:=s+1/i; i:=i-1; end;
17. Указать значение переменной s после выполнения фрагмента программы:
s:=4; i:=1; repeat s:=s+1/i; i:=i-1; until i<=1;
18. Указать значение переменной s после выполнения фрагмента программы:
s:=2; i:=1; repeat s:=s+1/(i+1); i:=i+3; until i>=5;
19. Вычислить сумму n чисел, вводимых с клавиатуры (кратных 3).

Ответы.
1. б
2. а,в,г,ж
3. а=1,7
4. а,в
5. а
6. а
7. а
8. а
9. в
10. б
11. б,в
12. 4 раза, а=21
13. 2
14. 6
15. 2,2
16. 5
17. 5
18. 2,7
19. program z1;
      var a,n,s,i:integer;
      begin
      writeln('введите количество чисел');
      readln(n);
     s:=0;
     for i:=1 to n do
     begin
     writeln('введите поочерёдно n чисел');

     readln(a);
     if a mod 3=0 then s:=s+a;
     end;
     writeln(s);
     end.

29 листопада 2009 р.

Циклы (подготовка к олимпиаде)

Задача. Дано число х. Найти все его делители.
Решение.
1) Вспоминаем определие делителя числа.
2) Определяем тип переменных.
3) Вспоминаем свойство натурального ряда чисел.
Итак, нам нкжно найти такие натуральные числа р на которые число х будет делиться без остатка.
program deliteli;
var x,p:integer;
begin
readln(x);
for p:=1 to x do
if x mod p=0 then writeln(p,' ');
end.
Попробуйте решить задачу, в которой необходимо проверить, является ли введенное пользователем число простым.

23 листопада 2009 р.

Цикли (підготовка до олімпіади)

Задача 2.  Скласти алгоритм, що підраховує кількість трицифрових цілих чисел із сумою цифр, яка дорівнює S.
Розв'язання.
Використовуючи розв'язання задачі 1 (викладеної у повідомленні "Цикли (підготовка до олімпіади)" від 22.11.2009), легко скласти алгоритм:
...
k:=0;
for i:=0 to 9 do
begin
s:=sum-i;
if (s>=0) and (s<10) then k:=k(s+1);
if (s>9) and (s<19) then k:=k(19-s);
...

22 листопада 2009 р.

Цикли (підготовка до олімпіади)

Задача 1. Скласти алгоритм, що підраховує кількість двоцифрових цілих чисел з сумою цифр, яка дорівнює S. (Цифра старшого розряду не повинна дорівнювати 0).
Розв'язання.
(найпростіший варіант - два вкладених цикли)
...
k:=0;
for i:=1 to 9 do
begin
for j:=0 to 9 do
if i+j=s then k:=k+1;
end;
...
(другий варіант - з одним циклом)
...
k:=0;
for i:=1 to 9 do
begin
j:=s-i           {Обчислюємо можливе значення другої цифри}
if (j>=0) and (j<=9)
then k:=k+1;
end;
...
Ще швидший алгоритм розв'язання задачі можна отримати після аналітичного дослідження розв'язків:
Сумма цифр        Варіанти чисел                             Кількість варіантів
0                                 -                                                                               0
1                                10                                                                              1
2                                11, 20                                                                        2
3                                12, 21, 30                                                                  3
4                                13, 22, 31, 40                                                            4
...                                ...                                                                              ...
9                                18, 27, 36, 45, 54, 63, 72, 81, 90                              9
10                              19, 28, 37, 46, 55, 64, 73, 82, 91                              9
11                              29, 38, 47, 56, 65, 74, 83, 92                                    8
12                              39, 48, 57, 66, 75, 84, 93                                          7
...                                ...                                                                            ...
17                              89, 98                                                                       2
18                              99                                                                             1
19                              -                                                                               0

Закономірність, виявлену під час аналізу задачі, можна подати алгоритмом:
...
if s<1 then k:=0 else
if s<10 then k:=s else
if s<19 then k:=19-s else k:=0;
...

19 листопада 2009 р.

Массивы (подготовка к олимпиаде по программированию)

Тема: Табличные величины. Однмерный массив.
Задача: Дан целочисленный массив А имеющий n элементов (n<=100) найти сумму элементов массива А и максимальный элемент.

program zadacha;

var a : array [1..100] of integer; { массив 100 элементов типа integer }
n,i,max,sum : integer;
begin
write('n=');
readln(n);
{ввод элементов массива}
for i:=1 to n do
begin
write('A[',i,']=');
readln(a[i]);
end;
{подсчёт суммы}
sum:=0;
for i:=1 to n do
sum:=sum+a[i];
{поиск максимального элемента}
max:=a[1];
for i:=2 to n do
if a[i]>max then max:=a[i];
{вывод результатов}
writeln('сумма=',sum);
writeln('максимальный элемент=',max);
readln;
end.