Доброго времени суток.
Первую можно так. Объявляем переменные и константы.
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);
Остальное сами.
Удачи!
Другие языки программирования и технологии
Помогите с задачами на паскале кто может. пожалуста очень нужно...
ты пиши сюда описание задачи, умельцы наклепают, ну или оновоной алгоритм хотябы напишут
Похожие вопросы
- ПОМОГИТЕ С ЗАДАЧАМИ В ПАСКАЛЕ
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- ПОМОГИТЕ НАПИСАТЬ ЗАДАЧИ НА ПАСКАЛЕ
- Помогите написать задачи в паскале!!!!
- Помогите решить задачу в паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Помогите решить задачи в паскаль ABC!!Буду очень благодарна
- Уважаемые!Помогите решить задачу по Паскалю,пожайлуста!
- Помогите с задачей на паскале