Привет, мне нужна помощь с домашней работой. Мое домашнее задание во вложениях.
Ответы
1. Что будет выведенно
1) 1 2 3 4 5 6 7 8 9 10
2) N=2 N=4 N=6
3) 0 1 2 2 6 3 12 4 20 5
2. Определите значение переменной S
1) 15
2) 1.5
3. Решите задачу
Pogram Mult;
Uses Crt;
var j:integer;
s:longint;
begin
s:=1;
clrscr;
for j:=0 to 100 do
begin
if ((j mod 3)>0) or ((j mod 7)>0) then s:=s*j;
end;
write('S:',s);
readkey;
end.
Но так как при произведении чисел на таком интервале получается слишком большое число, приходиться прибегать к арифметике длинных чисел в итоге прграмма принимает вид
Program DlMul;
Const NMax = 2000;
Type Digit = 0..9; DlChislo = Array[1..Nmax] Of Digit;
Var S : String;
M, N, R, F : DlChislo;
I, MaxF : Word;
Logic : Boolean;
i:integer;
p:longint;
{Процедура обнуления длинного числа}
Procedure Zero(Var A : DlChislo);
Var I : Integer;
Begin
For I := 1 To NMax Do A[I] := 0;
End;
{Функция определения количества цифр в записи длинного числа}
Function Dlina(C : DlChislo) : Integer;
Var I : Integer;
Begin
I := NMax;
While (I > 1) And (C[I] = 0) Do I := I - 1;
Dlina := I
End;
{Процедура печати длинного числа}
Procedure Print(A : DlChislo);
Var I : Integer;
Begin
For I := Dlina(A) DownTo 1 Do Write(A[I] : 1);
WriteLn
End;
{Процедура преобразования длинного числа в массив цифр}
Procedure Translate(S : String; Var A : DlChislo;
Var OK : Boolean);
Var I : Word;
Begin
Zero(A); I := Length(S); OK := True;
While (I >= 1) And OK Do
Begin
If S[I] In ['0'..'9']
Then A[Length(S) - I+ 1] := Ord(S[I]) - 48
Else OK := False;
I := I - 1
End
End;
Procedure Multiplication(A, B : DlChislo; Var C : DlChislo);
Var I, J : Integer; P : Digit; VspRez : 0..99;
Begin
Zero(C);
For I := 1 To Dlina(A) Do
Begin P := 0;
For J := 1 To Dlina(B) Do
Begin
VspRez := A[I] * B[J] + P + C[I + J - 1];
C[I + J - 1] := VspRez Mod 10;
P := VspRez Div 10
End;
C[I + J] := P
End
End;
{Основная программа}
Begin
p:=1;
clrscr;
for i:=0 to 100 do
if ((i mod 3)>0) or ((i mod 7)>0) then
begin
Translate(i,M,true);
Translate(p,N,true);
Multiplication(M, N, R);
end;
Print(R);
End.