Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program LAB2_2;
- Uses
- System.SysUtils;
- Const
- MIN = 0;
- MAX = 9;
- MINSIZE = 1;
- MAXSIZE = 10;
- Type
- TArrOI = Array Of Integer;
- Procedure NumInput(Number: Integer; Var Num: Integer);
- Var
- IsCorrect: Boolean;
- Begin
- Repeat
- IsCorrect := True;
- Write('Введите количество цифр в ', Number, ' числе (от 1 до 10): ');
- Try
- Read(Num);
- Except
- Writeln('Введенные данные не соответствуют условию. Повторите попытку.');
- IsCorrect := False;
- End;
- If IsCorrect And ((Num < MINSIZE) Or (Num > MAXSIZE)) Then
- Begin
- Writeln('Введенные данные не соответствуют условию. Повторите попытку.');
- IsCorrect := False;
- End;
- Until IsCorrect;
- End;
- Procedure ArrayInput(Var Arr: TArrOI);
- Var
- I: Integer;
- IsCorrect: Boolean;
- Begin
- For I := Low(Arr) To High(Arr) Do
- Repeat
- IsCorrect := True;
- Write('Введите ', I + 1, ' цифру: '); // я так и не смогла сделать норм проверку через пробел(
- Try
- Readln(Arr[I]);
- Except
- Writeln('Введенные данные не соответствуют условию. Повторите попытку.');
- IsCorrect := False;
- End;
- If IsCorrect And ((Arr[I] < MIN) Or (Arr[I] > MAX)) Then
- Begin
- Writeln('Введенные данные не соответствуют условию. Повторите попытку.');
- IsCorrect := False;
- End;
- Until IsCorrect;
- End;
- Procedure Summa(BiggerSize, SmallerSize: Integer; BiggerNum, SmallerNum: TArrOI;
- Var Sum: TArrOI); // норм название процедуры?
- Var
- I: Integer;
- Begin
- SetLength(Sum, BiggerSize);
- For I := High(Sum) Downto 0 Do
- Begin
- If (I > (BiggerSize - SmallerSize - 1)) Then
- Sum[I] := BiggerNum[I] + SmallerNum[I - (BiggerSize - SmallerSize)]
- Else
- Sum[I] := BiggerNum[I];
- End;
- End;
- Procedure AddingOnes(Var Sum: TArrOI);
- Var
- I, One: Integer;
- Begin
- One := 0;
- For I := High(Sum) Downto 1 Do
- Begin
- Sum[I] := Sum[I] + One;
- If Sum[I] > MAX Then
- Begin
- One := 1;
- Sum[I] := Sum[I] - 10;
- End
- Else
- One := 0;
- End;
- Sum[0] := Sum[0] + One;
- End;
- Procedure AddingPosition(Var Sum: TArrOI);
- Var
- I: Integer;
- Begin
- If Sum[0] > MAX Then
- Begin
- SetLength(Sum, (High(Sum) + 2));
- For I := (High(Sum) - 1) Downto 0 Do
- Sum[I + 1] := Sum[I];
- Sum[1] := Sum[0] - 10;
- Sum[0] := 1;
- End;
- End;
- Procedure ArrayOutput(Arr: TArrOI);
- Var
- I: Integer;
- Begin
- For I := Low(Arr) To High(Arr) Do
- Write(Arr[I], ' ');
- End;
- Var
- FstSize, I, SecSize: Integer;
- FstNum, SecNum: TArrOI;
- Sum: TArrOI;
- Iscorrect: Boolean;
- Begin
- Writeln('Данная программа считает сумму двух чисел, заданных последовательностями своих цифр.');
- NumInput(1, FstSize);
- NumInput(2, SecSize);
- SetLength(FstNum, FstSize);
- SetLength(SecNum, SecSize);
- Writeln('Введите цифры первого числа.');
- ArrayInput(FstNum);
- Writeln('Введите цифры второго числа.');
- ArrayInput(SecNum);
- ArrayOutput(FstNum);
- Write(' + ');
- ArrayOutput(SecNum);
- Writeln;
- If (FstSize > SecSize) Then
- Summa(FstSize, SecSize, FstNum, SecNum, Sum)
- Else
- Summa(SecSize, FstSize, SecNum, FstNum, Sum);
- AddingOnes(Sum);
- AddingPosition(Sum);
- Write('Последовательность суммарного числа: ');
- ArrayOutput(Sum);
- Readln(FstSize);
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement