Практическая работа
Необходимо спроектировать, протестировать и разработать систему, соответствующую нижеописанному сценарию. Любая написанная программа должна включать подсказку для ввода данных, сообщение об ошибке и другую необходимую введённую ясную и понятную информацию.
Любые переменные, константы и другие используемые идентификаторы должны быть обозначены.
Вычислить площади S1 и S2 двух окружностей с общим центром и радиусами R1 и R2 (R1>=R2), а так же площадь S3 с внешним радиусом R1 и внутренним радиусом R2.
S1=π*R12
S2=π*R22
S3 = S1 - S2
1. Опишите модель решения поставленной задачи.
a) Входные данные программы
b) Выходные данные программы
c) Цель проектирования программы
d) Назначение программы
e) Область применения программы
2. Какой тип алгоритма используется в программе? Почему? Начертите блок-схему к практической работе.
3. Укажите название, тип данных, а также строку программного кода, обеспечивающую проверку корректности отображения переменной, описывающей выходные данные.
1) Наименование: ………………………………………………………………..
2) Тип данных: ………………………………………………………………..
3) Программный код для проверки корректности отображения:
………………………………………………………………………………………………..
………………………………………………………………………………………………..
4. Заполните ячейки трассировочной таблицы, используя данные из проекта.
Название переменной
Значение переменной
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):=ReadInteger2('Количество строк и столбцов в массиве:');
Writeln('*** Исходный массив [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var s:=a.Rows.SelectMany(t->t).Where(t->t mod 8=0);
Writeln(s.Sum,' - сумма ',s.Count,' чисел(числа), кратных 8')
end.
Пример
Количество строк и столбцов в массиве: 6 9
*** Исходный массив [6,9] ***
-66 98 -73 -10 -14 -86 -63 -91 -79
-36 -2 -22 -3 51 59 93 36 -75
72 20 77 12 17 72 71 -41 -73
56 -33 2 -38 -60 17 -14 84 58
10 -99 -8 58 -62 -87 -15 -33 62
-94 -82 93 82 -41 -74 35 94 -84
192 - сумма 4 чисел(числа), кратных 8
На 1 файл: 480*320*24 бит = 480*320*3 байт = 450 Кбайт
var f,r,x,n,k1,k2:integer;
begin
f:=450;
r:=1024*1024;
x:=2;
while x<=r do begin
n:=r div x;
k1:=Ceil(f/x); k2:=Ceil(f/(2*x));
if (n div k1) = ((n div 2) div k2+40)
then begin
writeln('1 разбиение: блок = ',x,' Кбайт, блоков на файл ',k1,', файлов ',n div k1);
writeln('2 разбиение: блок = ',2*x,' Кбайт, блоков на файл ',k2,', файлов ',(n div 2) div k2);
end;
x:=2*x;
end;
end.
Результат:
1 разбиение: блок = 8 Кбайт, блоков на файл 57, файлов 2299
2 разбиение: блок = 16 Кбайт, блоков на файл 29, файлов 2259