Другие языки программирования и технологии
ПОМОГИТЕ ПОЖАЛУСТА составить программу на turbo pascal!
Составить программу решения задачи: Найти сумму и произведение всех трехзначных чисел, кратных 7.
Без ухищрений, как это решают в начальных классах школы (не используя формулу суммы членов арифметической прогрессии, с шагом изменения переменной цикла 1 и незатейливой проверкой делимости на 7):
{$N+,E-}
program N85571335;
const
s: longint = 0;
p: extended = 1;
var
i: word;
begin
for i := 100 to 999 do
if i mod 7 = 0 then
begin
s := s + i;
p := p * i
end;
writeln('Сумма = ', s);
writeln('Произведение = ', p);
readln
end.
Алексей Пилипенко, integer в Турбо Паскале 16-разрядный, и число 70336 (как раз требуемая сумма чисел) никак в него не поместится.
P.S. Extended пришлось использовать, потому что произведение этих же чисел даже в Double не помещается.
{$N+,E-}
program N85571335;
const
s: longint = 0;
p: extended = 1;
var
i: word;
begin
for i := 100 to 999 do
if i mod 7 = 0 then
begin
s := s + i;
p := p * i
end;
writeln('Сумма = ', s);
writeln('Произведение = ', p);
readln
end.
Алексей Пилипенко, integer в Турбо Паскале 16-разрядный, и число 70336 (как раз требуемая сумма чисел) никак в него не поместится.
P.S. Extended пришлось использовать, потому что произведение этих же чисел даже в Double не помещается.
— самое маленькое трёхзначное число кратное 7 равно 105
— следующие кратные 7 получаются прибавлением к предыдущему 7
var
N, S : Longint;
P : Extended;
begin
N := 105;
S := 0;
P := 1;
repeat
S := S + N;
P := P * N;
N := N + 7;
until N > 999;
WriteLn('Сумма = ', S);
WriteLn('Произведение = ', P);
end.
Если нужно получить целое число, которое в действительности являлось бы результатом произведения, то можно воспользоваться дополнительным массивом для накопления произведения:
const
PSize = 50;
var
N, S : Longint;
P : array [0..PSize] of Longint;
procedure ClearP;
var
i : Byte;
begin
P[ i ] := 0;
end;
procedure Proizv(N : Longint);
var
i : Byte;
D : Longint;
begin
D := 0;
for i := 0 to PSize do
begin
D := D + P[ i ] * N;
P[ i ] := D mod 1000;
D := D div 1000;
end;
end;
function PStr : String;
var
i, j : Byte;
S : String;
N : Longint;
begin
j := PSize;
while P[j] = 0 do
Dec(j);
S := '';
for i := 0 to j do
begin
N := P[ i ];
while (N > 0) or (Length(S) mod 3 > 0) do
begin
S := Chr(N mod 10 + 48) + S;
N := N div 10;
end;
end;
while S[1] = '0' do
Delete(S, 1, 1);
PStr := S;
end;
begin
N := 105;
S := 0;
ClearP; P[0] := 1;
repeat
S := S + N;
Proizv(N);
N := N + 7;
until N > 999;
WriteLn('Сумма = ', S);
WriteLn('Произведение = ', PStr);
end.
В таком случае получим вот такой результат:
Сумма = 70336
Произведение = 679492019701041793265588243534089096235780775993490896034913388459039239197513918977358996347410750791909489236141670400
— следующие кратные 7 получаются прибавлением к предыдущему 7
var
N, S : Longint;
P : Extended;
begin
N := 105;
S := 0;
P := 1;
repeat
S := S + N;
P := P * N;
N := N + 7;
until N > 999;
WriteLn('Сумма = ', S);
WriteLn('Произведение = ', P);
end.
Если нужно получить целое число, которое в действительности являлось бы результатом произведения, то можно воспользоваться дополнительным массивом для накопления произведения:
const
PSize = 50;
var
N, S : Longint;
P : array [0..PSize] of Longint;
procedure ClearP;
var
i : Byte;
begin
P[ i ] := 0;
end;
procedure Proizv(N : Longint);
var
i : Byte;
D : Longint;
begin
D := 0;
for i := 0 to PSize do
begin
D := D + P[ i ] * N;
P[ i ] := D mod 1000;
D := D div 1000;
end;
end;
function PStr : String;
var
i, j : Byte;
S : String;
N : Longint;
begin
j := PSize;
while P[j] = 0 do
Dec(j);
S := '';
for i := 0 to j do
begin
N := P[ i ];
while (N > 0) or (Length(S) mod 3 > 0) do
begin
S := Chr(N mod 10 + 48) + S;
N := N div 10;
end;
end;
while S[1] = '0' do
Delete(S, 1, 1);
PStr := S;
end;
begin
N := 105;
S := 0;
ClearP; P[0] := 1;
repeat
S := S + N;
Proizv(N);
N := N + 7;
until N > 999;
WriteLn('Сумма = ', S);
WriteLn('Произведение = ', PStr);
end.
В таком случае получим вот такой результат:
Сумма = 70336
Произведение = 679492019701041793265588243534089096235780775993490896034913388459039239197513918977358996347410750791909489236141670400
//Найти сумму трехзначных чисел, кратных 7.
function Krat(X:integer):boolean;
begin
if X mod 7 = 0 then Krat:=true else Krat:=false;
end;
var i,sum:integer;
begin
sum:=0;
for i:=100 To 999 do if Krat(i) then sum:=sum+i;
writeln;
writeln('Summa 3-znachnih chisel : ',sum);
end.
function Krat(X:integer):boolean;
begin
if X mod 7 = 0 then Krat:=true else Krat:=false;
end;
var i,sum:integer;
begin
sum:=0;
for i:=100 To 999 do if Krat(i) then sum:=sum+i;
writeln;
writeln('Summa 3-znachnih chisel : ',sum);
end.
сумма=0
произведение = 1
для и = от 100 до 999
если и делется на 7 без остатка, сумма=сумма+и, произведение = произведение * и.
ну а конкретно под паскаль уже сама...
произведение = 1
для и = от 100 до 999
если и делется на 7 без остатка, сумма=сумма+и, произведение = произведение * и.
ну а конкретно под паскаль уже сама...
Похожие вопросы
- Помогите составить программу на Turbo Pascal?
- Помогите с текстом программы на Turbo Pascal
- Помогите с программой в Turbo Pascal
- Информатика. Составить программу на языке Pascal
- Помогите составить программу на языке Pascal
- Помогите составить программу на языке Pascal
- Как написать программу в Turbo Pascal?
- Как можно составить программу на языке Pascal для вычисления 100!-2 в степени 100?
- Составить программу на языке pascal.
- Помогите пожалуйста составить программу на СИ++. Заранее всем БЛАГОДАРЕН!