Примеры решаемых задач

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

Пояснение: составим три программы, т.е. решим данную задачу с использованием трех различных циклических конструкций.

Цикл с предусловием Цикл с постусловием Цикл со счетчиком
Program Numbers; Uses Crt; Var k, n: Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); k:=1; While k<=n do Begin Writeln(k); k:=k+1 End; Readln End. Program Numbers; Uses Crt; Var k, n: Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); k:=1; Repeat Writeln(k); k:=k+1 Until k=n+1; Readln End. Program Numbers; Uses Crt; Var k, n: Integer; Begin Clrscr; Write(‘Введите N ’); Readln(n); For k:=1 To n Do Writeln(k); Readln End.

Пример 2. Составить программу, которая будет запрашивать пароль до тех пор, пока не будет введен верный ответ.

Программа:

Program Password;

Uses Crt;

Const Pass=’паскаль’; { верный ответ }

Var S: String;

Begin

Clrscr;

Repeat

Write (‘Пароль ’);

Readln (S); { вводим пароль }

If S <> Pass Then Writeln(‘Неверно!’)

Until S=Pass; { цикл закончен, если ввели верный пароль }

Writeln (‘Верно!’);

Readln

End.

Пример 3. Составить программу, которая выведет на экран все положительные члены арифметической прогрессии с разностью D= -1.5 и первым членом A.

Программа:

Program Progress;

Uses Crt;

Const D= -1.5; { Константа – разность прогрессии }

Var A: Real; { В А будут храниться по очереди все члены прогрессии }

Begin

Clrscr;

Write (‘Введите первый член прогрессии ’);

Readln (A);

While A > 0 Do {пока очередной член прогрессии положителен}

Begin

Writeln(A); { печатаем число – член прогрессии }

A:= A + D { вычисляем следующий член прогрессии и записываем его в ту же переменную А }

End;

Readln

End.

Пример 4. Составить программу, которая вычислит общее количество «5», «4», «3» и «2», полученных студентами группы за экзамен по программированию, а также средний балл за экзамен, если известны количество студентов в группе и отметки каждого из них.

Программа:

Program Students;

Uses Crt;

Var N, K, K5, K4, K3, K2, S, M: Integer;

{ N – количество студентов в группе,

K – счетчик всех студентов,

K5 – счетчик «5»,

K4 – счетчик «4»,

K3 – счетчик «3»,

K2 – счетчик «2»,

S – сумма всех отметок,

M – отметка очередного студента }

Sb: Real; { Sb – средний балл за экзамен }

Begin

Clrscr;

Write (‘Сколько студентов в группе? ’);

Readln (N);

For K:= 1 To N Do { перебираем всех студентов }

Begin

Writeln (‘введите отметку ’, K, ‘студента ’);

Readln (M); {В переменную М вводим все отметки по очереди}

S:= S+M; { В переменной S накапливается сумма всех отметок}

Case M Of { Увеличиваем нужный счетчик }

5: K5:= K5 + 1;

4: K4:= K4 + 1;

3: K3:= K3 + 1;

2: K2:= K2 + 1

End

End;

Sb:= S / N; { Вычисляем средний балл }

Writeln (‘Количество «5» ’, К5);

Writeln (‘Количество «4» ’, К4);

Writeln (‘Количество «3» ’, К3);

Writeln (‘Количество «2» ’, К2);

Writeln (‘Средний балл группы за экзамен ’, Sb:5:2);

Readln

End.

Пример 5. Составить программу, которая определит наибольшее из N вводимых чисел.

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

Программа:

Program Maximum;

Uses Crt;

Var Max, X: Real;

K, N: Integer;

Begin

Clrscr;

Write (‘Сколько чисел? ’);

Readln (N);

Write (‘Введите первое число ’);

Readln (Max);

For K:= 2 To N Do

Begin

Writeln (‘Введите ’, K, ‘ число ’);

Readln (X);

If X > Max Then Max:= X

End;

Writeln (‘Наибольшее из введенных чисел ’, Max);

Readln

End.

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

Указание: Для решения данной задачи необходимо использовать специальную функцию – датчик случайных чисел. Она вызывается следующим образом: Random (N). Датчик случайных чисел возвращает случайное целое число из интервала от 0 до N-1. Таким образом, после выполнения команды

A:= Random (10);

значением переменной А будет какое-то число (неизвестное заранее) из интервала от 0 до 9. Для того, чтобы при каждом запуске программы генерировалась новая последовательность случайных чисел, необходимо перед вызовом функции Random выполнить инициализацию датчика случайных чисел. Она выполняется командой Randomize (т.е. вызывается процедура с таким именем).

Кроме того, для решения данной задачи может потребоваться использование следующих процедур из модуля CRT:

1. ClrScr; - очистка экрана;

2. TextColor(c); - цвет выводимого текста, 0 £ с £ 15. Параметр С – это номер цвета (см. Приложение 1).

3. TextBackGround(c); - цвет фона, 0 £ с £ 7. Параметр С – это номер цвета (см. Приложение 1).

4. GotoXY(x,y); - позиционирование курсора в точку с координатами (x,y): 1 £ x £ 80, 1 £ y £ 25 (или 1 £ y £ 40 в зависимости от установленного максимального количества строк в алфавитно-цифровом режиме).

5. Delay(n); - приостановка (задержка) работы программы на n миллисекунд.

Программа:

Program Sky;

Uses Crt;

Var n, i, x, y, c: Integer;

Begin

ClrScr;

Write (‘Сколько звезд будет на небе? ’);

Readln (n);

ClrScr;

Randomize;

For i:= 1 To n Do

Begin

x:= random (80) + 1;

y:= random (24) + 1;

c:= random (15) + 1;

TextColor (c);

Gotoxy (x, y);

Write (‘ * ’)

end;

Readln

End.

Контрольные задания

3.1. Составить программу, которая позволяет вводить пароль до тех пор, пока не будет введен верный ответ, либо количество попыток превысит 5.

3.2. Составить программу, которая выведет на экран все члены убывающей геометрической последовательности с первым членом B и знаменателем q = 0.3, большие числа 1.

3.3. Задана функция и ее разложение в ряд. Численно убедиться в справедливости равенства, для чего для заданного значения аргумента вычислить значение функции при помощи стандартной функции языка и разложение с заданной погрешностью. Вывести число итераций, необходимых для достижения заданной точности.

3.4. Задана функция и ее разложение в ряд. Численно убедиться в справедливости равенства, для чего для заданного значения аргумента вычислить значение функции при помощи стандартной функции языка и разложение с заданной погрешностью. Вывести число итераций, необходимых для достижения заданной точности.

3.5. Составить программу нахождения НОД (наибольшего общего делителя) двух чисел. Используйте алгоритм Евклида: большее из двух чисел заменяется их разностью до тех пор, пока числа не станут равными – это и есть НОД.

3.6. «Тренажер». Составить программу, проверяющую знание таблицы умножения. Программа должна выводить примеры вида «a*b=», вводить ответ пользователя, проверять его и выводить одно из сообщений «Верно» или «Неверно». В конце работы пользователя должно выводиться количество правильно решенных примеров и количество сделанных пользователем ошибок, а также выставляться отметка.

3.7. Изменить программу «Тренажер» так, чтобы в случае неверного ответа программа предоставляла пользователю сделать еще несколько попыток (например, три). Если же правильный ответ так и не был получен, программа должна сама вывести его на экран.

3.8. «Расписание звонков». В учебном заведении задается начало учебного дня, продолжительность «пары» или урока, продолжительность перемены, количество «пар» (уроков). Получить расписание звонков на весь учебный день.

3.9. «Расписание». Известно время начала и окончания работы некоторого пригородного автобусного маршрута с одним автобусом на линии, а также протяженность маршрута в минутах (в один конец) и время отдыха на конечных остановках. Составить суточное расписание этого маршрута (т.е. время отправления с конечных пунктов).

3.10. На склад поступают груза на машинах различной грузоподъемности. Одновременно на компьютер, обслуживающий склад, поступает информация о весе груза на каждой машине. Составить программу, определяющую количество машин, прибывших с грузом до полного заполнения склада, если известно, что склад вмещает 1000 тонн груза.

3.11. Составить программу, которая выведет на экран таблицу умножения на заданное число.

3.12. «Бегущая строка». Составить программу, которая изобразит в нижней части экрана строку, «бегущую» справа налево. Строка должна менять свой цвет.

3.13. Составить программу, которая выведет на экран таблицу Пифагора размера M x N.

3.14. Составить программу, которая выведет на экран четные числа из интервала от 1 до N, а также вычислит их сумму.

3.15. Составить программу, которая выведет на экран нечетные числа из интервала от 1 до N, а также вычислит их произведение.

3.16. Составить программу, которая выведет на экран все числа из заданного интервала, кратные введенному числу.

3.17. Составить программу, которая вводит сумму баллов, набранных каждым участником шахматного турнира, и определяет победителя, а также количество баллов, на которое он оторвался от самого слабого участника.

3.18. Составить программу, которая определит, является ли введенное число простым (число называется простым, если оно не имеет других делителей, кроме 1 и самого себя).

3.19. Составить программу, которая выведет на экран все простые числа из заданного интервала.

3.20. «Гуси и кролики». У гусей и кроликов вместе 2n лап. Сколько может быть гусей и кроликов (вывести все возможные сочетания).

3.21. Составить программу, которая формирует случайным образом числовую последовательность и определяет количество в ней отрицательных чисел, сумму положительных, а также наименьшее по модулю число.

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

3.23. Составить игровую программу «Угадайка». Программа должна «загадывать» число из заданного пользователем интервала. Пользователь угадывает это число, вводя свои варианты ответа, а программа выдает подсказки «Больше» или «Меньше» и ведет подсчет сделанных попыток. После того, как число отгадано, игру можно повторить.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: