Другие языки программирования и технологии

Помогите с задачами на паскале кто может. пожалуста очень нужно...

Доброго времени суток.

Первую можно так. Объявляем переменные и константы.

const N = 10;

var
S : array[1..N] of Char;
i, M : integer;
begin
Randomize;
for i:=1 to N do S[ i ] := Chr(i + Ord('a')); {заполняем последовательность символами}
S[Random(N)+1] := ','; {в случайном месте поставили запятую}
i:=1;
while (S[ i ] <> ',') and (i < N) do i := i + 1; {ищем позицию первой запятой в масиве}
M := i+1; {увеличиваем i на 1}
WriteLn('Последовательность S',M, 'содержит первую запятую');
ReadLn;
end.

Вторая может выглядеть так.
uses Crt;
const
m = 4;
n = 3;

type TMatrix = array[1..m,1..n] of Integer;

var
A, B, C : TMatrix;
i, j : Integer;

function SumColAfter1stNeg(A: TMatrix; Col: Integer): Integer;
var S, i, j : Integer;
begin
S := 0;
i := 1;
while (A[i,Col] >= 0) and (i < m) do Inc(i);
for j:=i+1 to m do S := S + A[j, Col];
SumColAfter1stNeg := S;
end;

begin
Randomize;
{заполняем матрицу случайными числами}
for i:=1 to m do
for j:=1 to n do A[i,j] := Random(11)-5;

ClrScr;
{выводим на экран для контроля}
for i:=1 to m do begin
for j:=1 to n do Write(A[i,j]:4);
WriteLn;
end;
WriteLn;

{подсчитываем сумму элементов столбцов и выводим под столбцами}
for i:=1 to n do Write(SumColAfter1stNeg(A,i):4);

{с остальными матрицами аналогично}
ReadLn;
end.

Подозреваю, что в третьей ошибочка в условии. Должно быть так z = max(f(a), f(a+b)) и далее по тексту. Дело в том, что функция f есть функция от одного аргумента, а max, наоборот, от двух. С учетом сказанного можно поступить так.

function Max(a,b: Real): Real;
begin
if a > b then Max := a else Max := b;
end;

function F(x: Real; var Err: Boolean): Real;
begin
Err := False; {предположим, что ошибки нет}
if x = 1.0 then begin {функция не определена}
Err := True;
F := 0;
Exit;
end;
F := Sqr(x + 1) / (x * Sqr(x) - 1); {вычисляем значение}
end;

А теперь, когда имеем эти кирпичики, можно строить ответ.

ReadLn(a, b, c);
N1 := F(a, Code); {вычисляем первое значение функции}
if Code then WriteLn('Error a=', a) else begin {при ошибке выводим сообщение}
N2 := F(a+b, Code); {иначе вычисляем второе значение}
if Code then WriteLn('Error a+b=', a+b) else begin
z := Max(N1, N2); {находим максимум двух функций}
end;
end;
{повторяем еще раз для других аргументов функций}
N1 := F(c, Code);
if Code then WriteLn('Error c=', c) else begin
N2 := F(c+b/a, Code);
if Code then WriteLn('Error b/a+c=', c+b/a) else begin
z := z - Max(N1, N2);
WriteLn('Z=', z:10:4); {выводим результат}
end;
end;

В принципе, можно было бы так не заморачиваться, а реализовать функцию F по-простому

function F(x: Real): Real;
begin
F := Sqr(x + 1) / (x * Sqr(x) - 1); {вычисляем значение}
end;

А перед обращением к ней проверять аргументы и выводить ответ только при удовлетворении всех условий.

if (a<> 1.0) and (a+b <> 1.0) and (c <> 1.0) and (a <> 0.0) and (b/a+с <> 1) then
Z := Max(F(a), F(a+b)) - Max(F(c), F(b/a+c);

Остальное сами.

Удачи!
АП
Александр Пикунов
59 613
Лучший ответ
ты пиши сюда описание задачи, умельцы наклепают, ну или оновоной алгоритм хотябы напишут
D_
Did@rbek _________
55 589