1+1=10 (ноль пишем, 1 - переходит в старший разряд) Вообще все можно представить так - 1-самая старшая цифра в двоичной с.с. (В десятичной - это 9. При прибавлении в десятичной с.с. к 9 мы получаем 10, так происходит во всех с.с. Только в двоичной самая старшая 1 и, при прибавлении к ней 1 мы получаем также 10) 101011 +101010 1010101 Аналогично при вычитании. Представим число в десятичной с.с, например,1000. Если из него нужно вычесть 1, то мы заберем нужный нам разряд у 1. Тогда последний 0 превратится в 10, а все остальные 0 в 1. 11101 - 1111 1110 Ну, а умножение - это тот же процесс сложения. 10110 1111 10110 + 10110 10110 10110 101001010
Program KDSUP_1; uses crt; Var f: File of Integer; i,n,x,sum : Integer; begin write('Введите количество чисел: '); readln(n); assign(f,'1.dat'); rewrite(f); for i:=1 to n do write(f,Random(100)+1); reset(f); writeln('Исходный файл:'); while not Eof(f) do begin read(f,x); write(x,' '); end; writeln; sum:=0; For i:=0 to FileSize(f)-1 do begin Seek(f,i); Read(f,x); if (x mod 5=0) and (x mod 10<>0) then begin sum:=sum+x; end; end; Close(f); writeln('Сумма: ',sum); end.
Program KDSUP_2; uses crt; Type Eda=Record prod:string; ugl,bel,fat:real; end; ps=File of eda; Var f:ps; i,n,m:Integer; z:eda; Begin assign(f,'1.dat'); rewrite(f); writeln('Ввести количество продуктов'); readln(n); randomize; for i:=1 to n do begin z.prod:='Product_'+IntToStr(i); z.ugl:=random(100); z.bel:=random(100); z.fat:=random(100); write(f,z); end; Close(f); writeln(''); writeln('* М Е Н Ю *'); writeln('* продукты с содержанием *'); writeln('* белки: меньше 20 *'); writeln('* жиры: больше 10 *'); writeln('* углеводы: больше 30 *'); writeln(''); assign(f,'1.dat'); reset(f); while not(eof(f)) do begin read(f,z); if (z.ugl>30) and (z.bel<20) and (z.fat>10) then writeln(' ',z.prod); end; close(f); end.
Вообще все можно представить так - 1-самая старшая цифра в двоичной с.с. (В десятичной - это 9. При прибавлении в десятичной с.с. к 9 мы получаем 10, так происходит во всех с.с. Только в двоичной самая старшая 1 и, при прибавлении к ней 1 мы получаем также 10)
101011
+101010
1010101
Аналогично при вычитании. Представим число в десятичной с.с, например,1000. Если из него нужно вычесть 1, то мы заберем нужный нам разряд у 1. Тогда последний 0 превратится в 10, а все остальные 0 в 1.
11101
- 1111
1110
Ну, а умножение - это тот же процесс сложения.
10110
1111
10110
+ 10110
10110
10110
101001010
Program KDSUP_1;
uses crt;
Var
f: File of Integer;
i,n,x,sum : Integer;
begin
write('Введите количество чисел: ');
readln(n);
assign(f,'1.dat');
rewrite(f);
for i:=1 to n do
write(f,Random(100)+1);
reset(f);
writeln('Исходный файл:');
while not Eof(f) do
begin
read(f,x);
write(x,' ');
end;
writeln;
sum:=0;
For i:=0 to FileSize(f)-1 do
begin
Seek(f,i);
Read(f,x);
if (x mod 5=0) and (x mod 10<>0) then
begin
sum:=sum+x;
end;
end;
Close(f);
writeln('Сумма: ',sum);
end.
Program KDSUP_2;
uses crt;
Type
Eda=Record
prod:string;
ugl,bel,fat:real;
end;
ps=File of eda;
Var f:ps;
i,n,m:Integer;
z:eda;
Begin
assign(f,'1.dat');
rewrite(f);
writeln('Ввести количество продуктов');
readln(n);
randomize;
for i:=1 to n do
begin
z.prod:='Product_'+IntToStr(i);
z.ugl:=random(100);
z.bel:=random(100);
z.fat:=random(100);
write(f,z);
end;
Close(f);
writeln('');
writeln('* М Е Н Ю *');
writeln('* продукты с содержанием *');
writeln('* белки: меньше 20 *');
writeln('* жиры: больше 10 *');
writeln('* углеводы: больше 30 *');
writeln('');
assign(f,'1.dat');
reset(f);
while not(eof(f)) do
begin
read(f,z);
if (z.ugl>30) and (z.bel<20) and (z.fat>10) then
writeln(' ',z.prod);
end;
close(f);
end.