1 Востаннє редагувалося Andrey2091 (08.10.2018 19:07:28)

Тема: Потрібно створити програму *На Паскалі, 100грн.

Написання програми множення двох великих чисел методом "в стовпчик" Pascal

2

Re: Потрібно створити програму *На Паскалі, 100грн.

Або пропонуйте ціну або забаню, ах да, ще можете напрацювання показати.
Пункт 3.5.

x
Подякували: koala1

3

Re: Потрібно створити програму *На Паскалі, 100грн.

Chemist-i написав:

Або пропонуйте ціну або забаню, ах да, ще можете напрацювання показати.
Пункт 3.5.

100 гривень влаштовуэ?

4 Востаннє редагувалося koala (07.10.2018 19:46:12)

Re: Потрібно створити програму *На Паскалі, 100грн.

Переніс тему сюди. Когось, може, і влаштує.

Тільки допишіть в заголовок "Паскаль".

5 Востаннє редагувалося vulyan (27.10.2018 19:23:43)

Re: Потрібно створити програму *На Паскалі, 100грн.

за 10 000 копійок влаштує? ;)

це ж класика, код можна перевірити тут: https://rextester.com/l/pascal_online_compiler

Program MnozStovpchykom;
Const NMax = 2000;
Type Digit = 0..9; DovChyslo = Array[1..Nmax] Of Digit;
Var S : String;
    M, N, R : DovChyslo;
    Logic : Boolean;
{Занулення довгого числа}
Procedure Zero(Var A : DovChyslo);
Var I : Integer;
  Begin
    For I := 1 To NMax Do A[i] := 0;
  End;
{Визначення к-ті цифр в записі довгого числа}
Function Dovzyna(C : DovChyslo) : Integer;
Var I : Integer;
 Begin
   I := NMax;
   While (I > 1) And (C[i] = 0) Do I := I - 1;
   Dovzyna := I
 End;
{Друк довгого числа}
Procedure Print(A : DovChyslo);
Var I : Integer;
 Begin
    For I := Dovzyna(A) DownTo 1 Do Write(A[i] : 1);
    WriteLn
 End;
{Перетворення довгого числа у масив цифр}
Procedure Translate(S : String; Var A : DovChyslo;
                    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 : DovChyslo; Var C : DovChyslo);
Var I, J : Integer; P : Digit; VspRez : 0..99;
 Begin
  Zero(C);
  For I := 1 To Dovzyna(A) Do
  Begin P := 0;
        For J := 1 To Dovzyna(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
   {Задайте перший множник}
     S:='1111111111111111111'; Translate(S, M, Logic);
   {Задайте другий множник}
     S:='2222222222222222222'; Translate(S, N, Logic);
   Multiplication(M, N, R); Print(R)
End.

6

Re: Потрібно створити програму *На Паскалі, 100грн.

адаптовано на українську з коду Шестакова А.П. https://bit.ly/2z8mPZZ