Program Task;
Const N = 499; M = 1;
Var A: Array [1..N, 1..N] of Boolean;
i, j, x, y, t: Integer;
b: Boolean;
Begin
Randomize;
While i < M Do
Begin
x := Random(N) + 1;
y := Random(N) + 1;
If A[x, y] = False Then
Begin
A[x, y] := True;
i := i + 1;
End;
End;
While b = False Do
Begin
b := True;
For i := 1 To N Do
For j := 1 To N Do
Begin
If A[i, j] = True Then
Begin
If (i + 1) <= N Then
A[i + 1, j] := True;
If (i - 1) > 0 Then
A[i - 1, j] := True;
If(j + 1) <= N Then
A[i, j + 1] := True;
If (j -1) > 0 Then
A[i, j - 1] := True;
End;
End;
For i := 1 To N Do
For j := 1 To N Do
If A[i, j] = False Then
b := False;
t := t + 1;
End;
WriteLn(t);
ReadLn;
<span>End.</span>
Этому есть несколько причин.
1. Если имеется требование объявлять ВСЕ переменные в программе, то это хранит программиста от искаженного указания имен переменных, например, xl вместо x1 или suma вместо summa.
2. Объявление переменных позволяет явно указать их типы, а использование типизированных переменных позволяет с меньшими усилиями добиться правильной записи алгоритма. Например, при типизации переменных последовательность команд c=5 a=3*c c=a/3 недопустима. В самом деле, присваивание необъявленной переменной "с" значения целочисленной константы 5 подразумевает, что она тоже становится целочисленной. Далее, по той же причине необъявленная переменная "а" также получает целый тип. И третий оператор выполняет деление. А такая операция деления дает вещественный результат и присваивание его целочисленной переменной "с" недопустимо, потом что приведет к потере дробной части. И мы получаем сообщение об ошибке, т.е. можем вовремя ошибку увидеть и исправить её.
3. Некоторые системы программирования независимо от того, объявлена переменная или нет, очищают её нулём (или делают пустой, если переменная символьная). А некоторые этого не делают. Появление в программе необъявленной переменной с таким неопределенным значением может вызывать неожиданное поведение этой программы. Многие системы, в которых объявление переменных обязательно, выдают сообщение, что переменной не было присвоено начальное значение, что также помогает избегать ошибок.
4. При объявлении переменных в одном месте, им всем отводится одна область памяти, что уменьшает затраты вычислительной системы на адресацию памяти и делает программу компактнее, а также ускоряет её работу. Особенно это важно при нехватке оперативной памяти, когда программа вынужденно использует виртуальную память, которая располагается на внешнем носителе.
Program srednee;
var
a, b, c:integer;
sa:real;
begin
write ('Введите а='); readln (a);
write ('Введите b='); readln (b);
write ('Введите c='); readln (c);
if (a mod 5 = 0) and (b mod 5 <> 0) and (c mod 5 = 0) then
begin
a:= sqr(a); writeln ('Квадрат а=', a);
b:= sqr(b); writeln ('Квадрат b=', b);
c:= sqr(c); writeln ('Квадрат c=', c);
end else begin
if (a mod 5 <> 0) and (b mod 5 = 0) and (c mod 5 <> 0) then
begin
a:= a+10; writeln ('а+10=', a);
b:= b+10; writeln ('b+10=', b);
c:= c+10; writeln ('c+10=', c);
end else begin
sa:=(a+b+c)/3;
write ('Среднее арифметическое =', sa);
end
end
end.
Ты когда-нибудь наливал воду в форму для льда? Допустим, в одной ячейке умещается 1 ложка воды, но тебе нужно залить полторы ложки. Естественно, в одной ячейке столько не уместится, и тогда половина ложки перельется в другую ячейку. Точно так же и в этой задаче: в одном блоке (образной ячейке) умещается 2 Кб данных, но файл весит 2500 байт, то есть чуть больше. Надеюсь, я все правильно понял и помог)
Смотрите решение ниже. Не забудьте перевести биты в байты.