Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи 21 к 8-й неделе.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
126.5 Кб
Скачать
  1. Заполнение и вывод двумерного массива

Напишите программы заполнения массива с помощью операторов WHILE и REPEAT... UNTIL. Приведите алгоритмы решения данной задачи с помощью обоих операторов цикла.

Program MASS-DV; var   mas:array[1..5,1..5] of integer;

  i ,j:integer; begin   for i:=1 to 5 do   for j:=1 to 5 do readln(mas[i,j]);

  for i:=1 to 5 do     begin        for j:=1 to 5 do        write(' ',mas[i,j]);        writeln;     end; end.

WHILE

REPEAT... UNTIL

8. Корни квадратного уравнения.

Классическая программа вычисления корней квадратного уравнения с контролем дискриминанта.

Program Sq1; Var A, B, C, D, X1, X2 : Real; Begin   Writeln ('Введите коэффициенты квадратного уравнения');   Readln (A,B,C);   D:=B*B-4*A*C;      If D<0 Then Writeln ('Корней нет! ')      Else         Begin            X1:=(-B+SQRT(D))/2/A;            X2:=(-B-SQRT(D))/2/A;            Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)        End;

End.

В программе проанализированы ситуации, когда какой либо из коэффищиентов равен 0.

Program Sq2; Var A, B, C, D, X, X1, X2 : Real; Begin   Writeln ('Введите коэффициенты уравнения (A, B, C) ');     If A=0 Then     If B=0 Then     If C=0 Then Writeln('X - любое число')       Else Writeln('Корней нет! ')       Else Begin X:=-C/B; Writeln('X=',X:8:3) End       Else          Begin End; End.

Program Sq3;

Написать программу поиска корней, в которой случай равенства нулю какого либо из коэффициентов (Program Sq2) описан отдельной процедурой, входящей в программу Sq1

  1. Напишите программу определения четности или нечетности целого числа, задаваемого в диапазоне 0..100 с помощью оператора CASE. Выход из программы осуществить набором любого отрицательного целого числа.

Пример немного похожей задачи приводится ниже.

Program Vibor; var i:integer; begin   write('Введите целое число: ');   readln(i);     case i of      0,2,4,6,8 : writeln('Четная цифра');      1,3,5,7,9 : writeln('Нечетная цифра');      10...100 : writeln('Число от 10 до 100);     else writeln('Число либо отрицательное, либо > 100'); end;   readln; end.

  1. Догнал ли Ахилл черепаху?  Реализация греческого философского опуса о том догонит ли Ахилл черепаху, если находится она от него в 100 шагах, а скорость Ахилла в 10 раз больше. Программа решения этой задачи приведена ниже. Решив эту задачу, вы получите одно из замечательных чисел (я не проверял, поверил авторам задачи на слово -ВШ). Но сначала найдите ошибку и нарисуйте алгоритм решения задачи.

Program AHILL; CONST    Vch=100/3600; {Скорость черепахи}     Va=1000/3600; {Скорость Ахилла} VAR    Sa, Sch : Real; Begin    Sa:=0; Sch:=100;      repeat          Sch:=Sch+Vch*1;          Sa:=Sa+Va*1;    Until Sa < Sch;    Writeln('Ахилл догнал черепаху на расстоянии =', Sch:8:7, ' - шагов.'); Readln; end.

  1. Для фрагмента схемы алгоритма напишите соответствующий ему фрагмент программы с вложенными в каждой ветви условными операторами.

12. Для фрагмента схемы алгоритма напишите соответствующий ему фрагмент программы с вложенным условным оператором и с помощью булевых операций.

13.Напишите фрагменты программ для каждого из фрагментов схем алгоритмов с использованием составного оператора

14. Напишите программу, соответствующую алгоритму, с использованием процедуры - функции. Принять, что F(x)=x3/4

15. Создать программу на Паскале, выводящую на экран таблицу умножения в системе счисления с основанием m= 5.

16.

program IntTypes;

var

NumByte: byte;

NumShort: shortint;

Numlnt: integer;

NumWord: word;

NumLong: longint;

begin

NumLong:= 100000;

NumWord:= NumLong div 3;

Numlnt := = $FF + 1;

NumShort:= NumLong mod 3;

NumByte : = Numlnt;

writeln('NumLong =’,NumLong);

writeln('NumWord =’,NumWord);

writeln('Numlnt = ', Numlnt);

writeln('NumShort = ', NumShort)

writeln('NumByte = ', NumByte);

end.

На экране появятся следующие сообщения,

NumLong = 100000

NumWord = 33333

Numlnt = 256

NumShort = 1

NumByte = 0

Почему NumByte = 0?

16.Что делает программа? В каком варианте может произойти зацикливание? Ответ объясните.

program WhileEx;

var

CharCode: integer;

begin

CharCode := 0;

while CharCode <= 255 do

begin

if Chr(CharCode) in ['0'..'9'] then

Writeln('Kofl символа '", Chr(CharCode), '" - *,CharCode)

Inc(CharCode);

end;

end.

program WhileEx;

var

CharCode: byte;

begin

CharCode := 0;

while CharCode <= 255 do

begin

if Chr(CharCode) in ['0'..'9'] then

Writeln('Kofl символа '", Chr(CharCode), '" - *,CharCode)

Inc(CharCode);

end;

end.

17.Что будет выведено на экран при выполнении следующей программы?

program ProcEx;

procedure SortABC(AscOrder: boolean);

var

c: char;

begin

if AscOrder

then for с:='A' to ' Z' do Write(c)

else for с:=' Z' downto 'A' do Write(c)

Writeln(‘ ' )

end;

begin

SortABC(True);

SortABC(False)

end.

18. Для приведенных фрагментов программ определите значения величин В и С для случаев А>B (A=250, B=150) и А<B (A=75, B=275)

if A > В then

begin

А := В;

С := 100;

end;

В := 200;

if A > В then

begin

А := В;

С := 100;

end else

begin

А := С;

С := 200;

end;

В := 200;

if A > В then

begin

if В > С then A := В;

end else A := С;

19. Пусть заголовок процедуры выглядит как

procedure Proc(a, b: integer; с: char);, где a, b,с- формальные параметры.

Какие из приведенных вызовов этой процедуры

Proc(Numl, Num2, Ch) ;

Proc(12, Numl + Num2, 'D');

Proc(Numl, Num2);

Proc(Ch, Numl, Num2);

Proc(12.3, Num2, Ch);

Proc(0, Ord('A'), Chr(Numl));

будут правильные, и какие неправильные, если принять, что в вызывающей программе переменные, используемые при обращении к процедуре как фактические параметры равны Numl := 1; Num2 := 2; Ch := 'А';

Ответы объясните.

20.Нарисовать блок-схему программы с циклом FOR и вычисления суммы ряда: 1/22 + 1/42 + ... + 1/(20*n+2) в цикле, организованном с помощью оператора FOR. Натуральное число n вводится с клавиатуры.