Вопрос № 75010: Здравствуйте, уважаемые эксперты. Помогите, пожалуйста, с этими задачами.
1) На двух прозрачных листах бумаги в клетку размерами 20х20 нарисовано по одной фигуре, состоящей из закрашенных клеток. Составить программу, которая отвечает на вопр...
Вопрос № 75.010
Здравствуйте, уважаемые эксперты. Помогите, пожалуйста, с этими задачами.
1) На двух прозрачных листах бумаги в клетку размерами 20х20 нарисовано по одной фигуре, состоящей из закрашенных клеток. Составить программу, которая отвечает на вопрос: конгруентны ли эти фигуры?
2) Составьте программу, которая изображает на экране «умножение столбиком» двух натуральных чисел, в каждом из которых не более 20 цифр.
Отвечает: Яна
Здравствуйте, Гусев Денис!
И чем тебе помочь? Написать программу, или алгоритм, или может подсказки нехватает? Конкретнее вопрос нужно задавать.
Умножение столбиком вообще сделать несложно: нужно лишь умножить первое число на все цифры второго, преобразовать в строку, добавить нужное количество пробелов и вывести в нужном порядке. Правда вот умножать двадцатизначное число на однозначное не так уж просто. Хотя если вспомнить таблицу умножения и алгоритм "переноса в уме" - то можно.
Ответ отправила: Яна (статус: 5-ый класс)
Ответ отправлен: 09.02.2007, 22:58
Отвечает: fsl
Здравствуйте, Гусев Денис!
uses crt;
var a,b:array[0..19] of integer; {20-значные числа}
p:array[0..41] of integer; {результат может оказаться 40- или 41-значным числом}
i,j,c,n:integer;
begin
{ввод 20-значных чисел в массивы}
n:=19;
for i:=0 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
for i:=0 to n do
begin
write('b[',i,']=');
readln(b[i]);
end;
{очистка экрана и вывод 20-значных чисел}
ClrScr;
for i:=0 to n do
begin
gotoxy(21+i,1);
write(a[i]);
end;
writeln();
for i:=0 to n do
begin
gotoxy(21+i,2);
write(b[i]);
end;
writeln('');
gotoxy(20,3);
writeln('-----------------------------------------');
for i:=0 to n do
begin
c:=0;
for j:=0 to n do
begin
c:=c+a[n-j]*b[n-i];
if c>9 then
begin
gotoxy(22+n-1-i-j,4+i);
write(c mod 10);
p[j+i]:=p[j+i]+(c mod 10);
p[j+1+i]:=p[j+1+i]+(c div 10);
c:=c div 10;
end
else
begin
gotoxy(22+n-1-j-i,4+i);
write(c);
p[j+i]:=p[j+i]+c;
c:=0;
end
end;
end;
gotoxy(1,5+n);
writeln('-------------------------------------------------------------');
{вывод ответа}
for i:=2*n+1 downto 0 do
begin
gotoxy(2*n+2-i,5+n+1);
write(p[i]);
end;
end.
Удачи!
--------- Ну, Вы спросили!
Ответ отправил: fsl (статус: Студент)
Ответ отправлен: 10.02.2007, 00:29