Понедельник, 22.07.2019, 02:09
Приветствую Вас Гость | RSS


Государственное бюджетное общеобразовательное учреждение

средняя общеобразовательная школа № 141  
Красногвардейского района Санкт-Петербурга
Адрес ОУ: 195030, Санкт-Петербург,  ул. Коммуны, дом 32, корпус 4, литер "А"
Посмотреть расположение на карте

 

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: pep-spb  
Школьный форум » Персональные страницы учителей » Попова Елена Петровна » Программирование на языке PASCAL (Основы программирования и задания для тренировки)
Программирование на языке PASCAL
pep-spbДата: Вторник, 19.02.2019, 19:58 | Сообщение # 1
Учитель
Группа: Модераторы
Сообщений: 208
Награды: 0
Репутация: 2
Статус: Offline
Типы данных на языке программирования Pascal

Сортировка методом Пузырька

program sortirovka;
const n=10;
var i,j,k:word;
a:array [1..n] of word;
begin
randomize;
for i:=1 to n do begin
a[i]:=random(100);
write(a[i],' ') end;
for i:=1 to n-1 do begin
for j:=1 to n-i do begin
if a[j]>a[j+1] then begin
k:=a[j];
a[j]:=a[j+1];
a[j+1]:=k end;
end;
end;
writeln;
for i:=1 to n do
write(a[i],' ')
end.
 
pep-spbДата: Вторник, 19.02.2019, 19:59 | Сообщение # 2
Учитель
Группа: Модераторы
Сообщений: 208
Награды: 0
Репутация: 2
Статус: Offline

Задания while по ссылке:
https://yadi.sk/d/j3PkMq6uVttKQw
 
pep-spbДата: Вторник, 19.02.2019, 20:04 | Сообщение # 3
Учитель
Группа: Модераторы
Сообщений: 208
Награды: 0
Репутация: 2
Статус: Offline
Вам предлагается два задания с похожими условиями: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Задание Б более сложное, его решение оценивается выше. Итоговая оценка выставляется как максимальная из оценок за задания А и Б.

Задание А. Имеется набор данных, состоящий из 6 пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 6 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.

Напишите программу для решения этой задачи. В этом варианте задания оценивается только правильность программы, время работы и размер использованной памяти не имеют значения.

Максимальная оценка за правильную программу – 2 балла.

Задание Б.Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 6 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.

Напишите программу для решения этой задачи.

Постарайтесь сделать программу эффективной по времени и по используемой памяти (или хотя бы по одной из этих характеристик).
Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т.е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.

Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.

Максимальная оценка за правильную программу, эффективную по времени и по памяти, – 4 балла.
Максимальная оценка за правильную программу, эффективную по времени, но не эффективную по памяти, – 3 балла.

Как в варианте А, так и в варианте Б программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи (или 0, если такую сумму получить нельзя).

НАПОМИНАЕМ! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ.

Перед текстом программы кратко опишите Ваш алгоритм решения, укажите использованный язык программирования и его версию (например, Free
Pascal 2.6.4).

Входные данные
Для варианта А на вход программе подаётся 6 строк, каждая из которых содержит два натуральных числа, не превышающих 10 000.
Пример входных данных для варианта А:

1 3
5 10
6 8
5 4
3 3
1 1

Для варианта Б на вход программе в первой строке подаётся количество пар N (1 ≤ N ≤ 100 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример входных данных для варианта Б:

6
1 3
5 10
6 8
5 4
3 3
1 1

Пример выходных данных для приведённых выше примеров входных данных:
29

Если с программой разобрались, то нужно написать комментарий к каждой строке, описав действия.
_________________________________________________
program p_4;
var i,x,y,max,sum, a,d,N: integer;
begin
readln(N);
sum:=0;
d:=100000;
for i:= 1 to N do begin
readln(x,y);
if (x>=y) then max:=x
else
max:=y;
sum:=sum+max;
a:=abs(x-y);
if (d>a) and (a<>0) then d:=a
end;
if (sum mod 6=0) then
sum:=sum - d;
if (sum mod 6=0) then
write('0')
else
writeln(sum);
end.
 
pep-spbДата: Вторник, 19.02.2019, 20:05 | Сообщение # 4
Учитель
Группа: Модераторы
Сообщений: 208
Награды: 0
Репутация: 2
Статус: Offline
На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 3 (разница в индексах элементов пары должна быть 3 или более, порядок элементов в паре неважен). Необходимо определить количество таких пар, для которых произведение элементов делится на 23.

Описание входных и выходных данных

В первой строке входных данных задаётся количество чисел N (3 ≤ N ≤ 1000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000.

В качестве результата программа должна вывести одно число: количество пар элементов, находящихся в последовательности на расстоянии не меньше чем 3, в которых произведение элементов кратно 23.

Пример входных данных:

6
46
2
3
5
4
23

Пример выходных данных для приведённого выше примера входных данных:

5

Пояснение. Из шести заданных элементов с учётом допустимых расстояний между ними можно составить 6 произведений: 46·5, 46·4, 46·23, 2·4, 2·23, 3·23. Из них на 23 делятся 5 произведений.

Требуется написать эффективную по времени и памяти программу для решения описанной задачи.

Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз.

Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайта
и не увеличивается с ростом N.

Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и памяти, – 4 балла.

Максимальная оценка за правильную программу, эффективную только по времени, – 3 балла.

Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла.

Вы можете сдать одну программу или две программы решения задачи (например, одна из программ может быть менее эффективна). Если Вы сдадите две программы, то каждая из них будет оцениваться независимо от другой, итоговой станет бόльшая из двух оценок.

Перед текстом программы обязательно кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.
__________________________________
const n = 3; {требуемое расстояние между элементами}
var
s: longint;
a: array[1..n] of longint; {хранение последних s значений}
ax: longint; {очередное значение}
s23: longint; {количество делящихся на 23 элементов, не считая n последних}
c: longint; {количество искомых пар}
i, j: longint;
begin
readln(s); {Ввод первых n чисел}
for i:=1 to n do
readln(a[i]); {Ввод остальных значений, подсчет искомых пар}
c := 0;
n23 := 0;
for i := n + 1 to s do
begin
if a[1] mod 23 = 0 then
n23 := n23 + 1;
readln(ax);
if ax mod 23 = 0 then
c := c + i - n
else
c := c + s23; {сдвигаем элементы вспомогательного массива влево}
for j := 1 to n - 1 do
a[j] := a[j + 1];
a[s] := ax {записываем текущий элемент в конец массива}
end;
writeln ©
end.
 
Школьный форум » Персональные страницы учителей » Попова Елена Петровна » Программирование на языке PASCAL (Основы программирования и задания для тренировки)
  • Страница 1 из 1
  • 1
Поиск:


                 


Copyright Alex Corp © 2019