Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Lab1_1;
- Type
- TPointer = ^TListElement;
- TListElement = record
- Power: Integer;
- Coef: Integer;
- NextElementPointer: TPointer;
- end;
- Var
- Choice, PolinomialMeaning, X: Integer;
- P, Q, R: TPointer;
- IsEquality: Boolean;
- Const
- MIN_NUM = -2000000000;
- MAX_NUM = 2000000000;
- Function ReadNum (Min: Integer; Max: Integer): Integer;
- Var
- Str: String;
- ResultNum, CheckNum, Code: Integer;
- IsCorrect: Boolean;
- Begin
- Repeat
- Readln(Str);
- Val(Str, CheckNum, Code);
- If(Code = 0) And (CheckNum >= Min) And (CheckNum <= Max) Then
- Begin
- ResultNum := CheckNum;
- IsCorrect := True;
- End
- Else
- Begin
- Writeln('Некорректный ввод! Попробуйте еще раз!');
- IsCorrect := False;
- End;
- Until IsCorrect;
- ReadNum := ResultNum;
- End;
- Procedure InputPolynomial(HeaderPointer: TPointer);
- Var
- N, I, A: Integer;
- Pointer: TPointer;
- Begin
- Write('Введите степень N многочлена: ');
- N := ReadNum(0, MAX_NUM);
- Writeln;
- Pointer := HeaderPointer;
- For I := N DownTo 0 Do
- Begin
- Write('Введите коэффициент многочлена при степени Х равной ', I, ': ');
- A := ReadNum(MIN_NUM, MAX_NUM);
- Writeln;
- If A <> 0 Then
- Begin
- New(Pointer^.NextElementPointer);
- Pointer := Pointer^.NextElementPointer;
- Pointer^.Power := I;
- Pointer^.Coef := A;
- End;
- End;
- Pointer^.NextElementPointer := nil;
- End;
- Procedure OutputPolynomial(HeaderPointer: TPointer);
- Var
- Pointer: TPointer;
- Begin
- Pointer := HeaderPointer;
- While(Pointer <> nil) Do
- Begin
- Pointer := Pointer^.NextElementPointer;
- Write(Pointer^.Coef, 'X^', Pointer^.Power, ' + ');
- End;
- End;
- Function Equality (PHeader: TPointer; QHeader: TPointer): Boolean;
- Begin
- End;
- Function Meaning (PHeader: TPointer; X: Integer): Integer;
- Begin
- End;
- Procedure Add (PHeader: TPointer; QHeader: TPointer; RHeader: TPointer);
- Begin
- End;
- Begin
- Writeln('Данная программа предлагает:');
- Writeln('1) Сравнить многочлены степени N на равенство между собой.');
- Writeln('2) Вычислить значение многочлена при аргументе X.');
- Writeln('3) Сложить два многочлена.');
- Writeln('Введите 0 если хотите выйти.');
- While True Do
- Begin
- Writeln;
- Writeln('Выберите желаемое действие! Введите 0, 1, 2 или 3.');
- Choice := ReadNum(0,3);
- Case Choice of
- 0: Break;
- 1:
- Begin
- Writeln('Введите многочлен P:');
- InputPolynomial(P);
- Writeln('Введите многочлен Q:');
- InputPolynomial(Q);
- Writeln('Введенные многочлены:');
- OutputPolynomial(P);
- OutputPolynomial(Q);
- IsEquality := Equality(P, Q);
- If IsEquality then
- Writeln('Многочлены эквивалентны!')
- Else
- Writeln('Многочлены НЕ эквивалентны!');
- End;
- 2:
- Begin
- Writeln('Введите многочлен P:');
- New(P);
- InputPolynomial(P);
- Writeln('Введите Х:');
- X := ReadNum(MIN_NUM, MAX_NUM);
- PolinomialMeaning := Meaning(P, X);
- Writeln('Введенный многочлен:');
- OutputPolynomial(P);
- Writeln('Значение многочлена: ', PolinomialMeaning);
- End;
- 3:
- Begin
- Writeln('Введите многочлен P:');
- InputPolynomial(P);
- Writeln('Введите многочлен Q:');
- InputPolynomial(Q);
- Add(P, Q, R);
- Writeln('Введенные многочлены:');
- OutputPolynomial(P);
- OutputPolynomial(Q);
- Writeln('Результат сложения многочленов:');
- OutputPolynomial(R);
- End;
- End;
- End;
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement