Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 11:45   #1
Soul_fly
Новичок
Джуниор
 
Регистрация: 18.12.2010
Сообщений: 2
По умолчанию Задача, паскаль. =)

Задачка нужна для допуска на сессию, а я совсем не знаю Pascal'a. Буду вам очень признательна. =). Условие ниже. =).
Изображения
Тип файла: jpg 181220101556.jpg (118.0 Кб, 143 просмотров)

Последний раз редактировалось Soul_fly; 18.12.2010 в 13:49.
Soul_fly вне форума Ответить с цитированием
Старый 18.12.2010, 13:22   #2
Soul_fly
Новичок
Джуниор
 
Регистрация: 18.12.2010
Сообщений: 2
По умолчанию

Напечатать картинку, изображающую умножение "cтолбиком" двух заданных целых чисел: например
39624
*
8503
--------
118872
198120
316992
---------
336922872
Soul_fly вне форума Ответить с цитированием
Старый 18.12.2010, 14:07   #3
NioTo
Пользователь
 
Регистрация: 17.12.2007
Сообщений: 32
По умолчанию

Что значит "напечатать картинку"?
NioTo вне форума Ответить с цитированием
Старый 18.12.2010, 14:16   #4
stck
Пользователь
 
Аватар для stck
 
Регистрация: 14.06.2010
Сообщений: 84
Счастье

Код:
var num1,num2,c:integer;
snum1,snum2,snum3:string;
err,i,length_full,increm:integer;
begin
 writeln('Произведение.');
 write('Введите первое число');
 readln(snum1); val(snum1, num1, err);
 write('Введите второе число');
 readln(snum2); val(snum2, num2, err);
 length_full:=length(num1*num2);
 if length(snum1)>length(snum2)
  then 
   begin
    repeat
     snum2:=' '+snum2;
    until length(snum2)=length(snum1);
   end
 else 
 if length(snum2)>length(snum1)
 then 
  begin
   snum3:=snum2;
   snum2:=snum1;
   snum1:=snum3;
   snum3:=' ';
   repeat
    snum2:=' '+snum2;
   until length(snum2)=length(snum1);
  end;
 snum1:=' '+snum1;
 snum2:=' '+snum2;
 snum3:='x';
 repeat
  snum1:=' '+snum1;
  snum2:=' '+snum2;
  snum3:=' '+snum3;
 until length(snum3)=length(length_full);
 writeln(snum1);
 writeln('x');
 writeln(snum2)
 repeat
  snum3:=snum3+'-';
 until length(snum3)=length(snum2);
 writeln(snum3);
 increm:=0;
 for i:=length(num2) down to 1 do
  begin
   snum3:=copy(snum2,length(snum2)-1,1);
   delete(snum2,length(snum2)-1,1);
   val(snum3,c,err);
   c:=c*num1;
   str(c,num3);
   repeat
    snum3:=' '+snum3;
   until length(snum3)=length_full-increm;
   inc(increm);
   writeln(snum3);
   snum3:=''; 
  end;
 snum3:='-';
 repeat
  snum3:=snum3+'-';
 until length(snum3)=length_full;
 c:=num1*num2;
 writeln(c);
end.

Последний раз редактировалось stck; 18.12.2010 в 14:20.
stck вне форума Ответить с цитированием
Старый 18.12.2010, 14:19   #5
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

делается это через форматированный вывод
только часть:
Код:
  writeln(a:p);
  writeln('x',:p-maxdl);
  writeln(b:p);
и т.д.
единственное, что нужно подсчитать p. maxdl - длина наибольшего из множителей
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 18.12.2010, 16:15   #6
NioTo
Пользователь
 
Регистрация: 17.12.2007
Сообщений: 32
По умолчанию

Код:
program LongMultiplication;

var
  Num1, Num2: LongInt;
  sNum1, sNum2: String;
  Product: LongInt;
  sProduct: String;
  i: Integer;
  Figure: Integer;

begin
  Write('Введите первое число: ');
  ReadLn(Num1);
  Write('Введите второе число: ');
  ReadLn(Num2);

  if Num1 < Num2 then begin
    Num1 := Num1 + Num2;
    Num2 := Num1 - Num2;
    Num1 := Num1 - Num2;
  end;

  Product := Num1 * Num2;
  Str(Num1, sNum1);
  Str(Num2, sNum2);
  Str(Product, sProduct);
  
  WriteLn(Num1:Length(sProduct));
  WriteLn('X':Length(sProduct) - Length(sNum1));
  WriteLn(Num2:Length(sProduct));
  WriteLn(StringOfChar('-', Length(sNum1)): Length(sProduct));
  for i := 0 to Length(sNum2) - 1 do begin
    Figure := Num2 mod 10;
    Num2 := Num2 div 10;

    if Figure = 0 then
      Continue;

    WriteLn(Figure * Num1:Length(sProduct) - i)
  end;
  WriteLn(StringOfChar('-', Length(sProduct)));
  WriteLn(Product);
end.
NioTo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Паскаль Лешка Помощь студентам 0 10.12.2010 20:35
Задача на паскаль Олюха Помощь студентам 1 01.12.2010 13:39
Паскаль задача. sulsher Помощь студентам 1 09.11.2010 08:23
Задача на Паскаль Mitti Помощь студентам 3 14.01.2010 21:33
ПАСКАЛЬ задача gotex Помощь студентам 3 04.06.2008 21:08