Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите решить задачи на Паскале (http://www.tehnari.ru/f41/t24921/)

Ксюха 28.05.2009 10:19

Помогите решить задачи на Паскале
 
1 Даны действительные числа S,T.
Получить H(S,T)+H(S-T,S*T)-H(2.5, S/T),
где H(A,B)= A / (1+B²) + B/ (1+A²) -(A-B)³ описать в программе как функцию.


2. Описать процедуру, которая в том из векторов А, В или С, где больше всего отрицательных элементов (считать, что такой вектор один), все его положительные элементы заменяет на их кубы — если это вектор А или вектор В, и на обратные величины — если это вектор С.

Vladimir_S 28.05.2009 15:04

Цитата:

Сообщение от Ксюха (Сообщение 207386)
1 Даны действительные числа S,T.
Получить H(S,T)+H(S-T,S*T)-H(2.5, S/T),
где H(A,B)= A / (1+B²) + B/ (1+A²) -(A-B)³ описать в программе как функцию.


2. Описать процедуру, которая в том из векторов А, В или С, где больше всего отрицательных элементов (считать, что такой вектор один), все его положительные элементы заменяет на их кубы — если это вектор А или вектор В, и на обратные величины — если это вектор С.

Пожалуйста:

1.
VAR
S, T:REAL;

FUNCTION H(A,B:REAL):REAL;
BEGIN
H:=A/(1+SQR(B))+B/(1+SQR(A))-(A-B)*SQR(A-B);
END;

BEGIN
Write('S = '); ReadLn(S);
Write('T = '); ReadLn(T);
Writeln('Result = ', H(S,T)+H(S-T,S*T)-H(2.5, S/T));
ReadLn;
END.

2.
CONST
N=10;

TYPE
AR=ARRAY [1..N] of REAL;

PROCEDURE CHANGE_VECTOR(A_in, B_in, C_in:AR; VAR A_out:AR; VAR B_out:AR; VAR C_out:AR);
VAR
p_A, p_B, p_C, i:INTEGER;

BEGIN
p_A:=0;
p_B:=0;
p_C:=0;
FOR i:=1 TO N DO
BEGIN
IF A_in[i]<0 THEN INC(p_A);
IF B_in[i]<0 THEN INC(p_B);
IF C_in[i]<0 THEN INC(p_C);
END;

IF (p_A>p_B) AND (p_A>p_C) THEN
BEGIN
B_out:=B_in;
C_out:=C_in;
FOR i:=1 TO N DO
IF A_in[i]>0 THEN A_out[i]:=A_in[i]*A_in[i]*A_in[i]
ELSE
A_out[i]:=A_in[i];
END;

IF (p_B>p_A) AND (p_B>p_C) THEN
BEGIN
A_out:=A_in;
C_out:=C_in;
FOR i:=1 TO N DO
IF B_in[i]>0 THEN B_out[i]:=B_in[i]*B_in[i]*B_in[i]
ELSE
B_out[i]:=B_in[i];
END;

IF (p_C>p_A) AND (p_C>p_B) THEN
BEGIN
A_out:=A_in;
B_out:=B_in;
FOR i:=1 TO N DO
IF C_in[i]>0 THEN C_out[i]:=1/C_in[i]
ELSE
C_out[i]:=C_in[i];
END;

END;

Ксюха 28.05.2009 18:38

Большое спасибо.:D

Boginy 20.10.2009 19:06

А можно и мне помощи в этом же направлении?)))Пожалуйста)))Нужно решить парочку задачек,а я ни чего не понимаю....

1) Даны целое число n и целочисленный одномерный массив a1,a2,..., an. Поучить двухмерный массив, элементы которого вычисляются по формуле bij = ai + 3aj , где i = 1, 2,...., n
2) В массиве целых чисел А1,..., An обнулить все отрицательные числа
3)Задан массив целых чисел размера Р. Напечатать числа, которые входят в массив более одного раза.

AlexZir 20.10.2009 19:15

Цитата:

Сообщение от Boginy (Сообщение 252722)
2) В массиве целых чисел А1,..., An обнулить все отрицательные числа

Код:

uses crt;
var a: array[1..100] of integer;
    i, n: integer;
begin
write('Введите количество элементов массива');
read(n);
writeln('Заполните массив целыми числами');
for i:=1 to n do
readln(a[i]);

for i:=1 to n do
if a[i]<0 then a[i]:=0

writeln('получившийся массив после обработки:');
for i:=1 to n do
writeln(a[i]);

readln
end.


Boginy 20.10.2009 19:24

Ограменное спасибо)))))

у меня тут еще задачки есть)))поможешь?)))

В зрительном зале размера N * M половина мест продана. Посетитель просит продать k подряд расположенных мест. Выдать всевозможные комбинации выполнения этого выполнения этого запроса, для того, чтобы посетитель смог сделать свой окончательный выбор. Занятые места вводите датчиком случайных чисел.

Boginy 20.10.2009 19:31

1) Даны два массива A и В, состоящие из N целых элементов. Соединить их в один массив С=(А1,В1,А2,В2,...., An, Bn)
2) Заданы два одномерных целых массива: массив А размера М и массив В размера N. Объединить их в один массив, включив второй массив между К - ым и К + 1 - м элементами первого (К - задано)

AlexZir 20.10.2009 19:46

Цитата:

Сообщение от Boginy (Сообщение 252722)
1) Даны целое число n и целочисленный одномерный массив a1,a2,..., an. Поучить двухмерный массив, элементы которого вычисляются по формуле bij = ai + 3aj , где i = 1, 2,...., n

Допущение: пусть максимальное количество элементов массива а будет равно 100 (для проверки достаточно и 10).
Код:

uses crt;
var a: array[1..100] of integer;
    b: array[1..100,1..100] of integer;
    i, j,n: integer;
begin
write('введите размерность массива а');
readln(n);
writeln('Заполните элементы массива а значениями');
for i:=1 to n do
readln (a[i]);

for i:=1 to n do begin
for j:=1 to n do begin
b[i,j]:=a[i]+3*a[j];
write(b[i,j],' '); end;
writeln; end;

readln
end.


AlexZir 20.10.2009 20:26

Цитата:

Сообщение от Boginy (Сообщение 252731)
1) Даны два массива A и В, состоящие из N целых элементов. Соединить их в один массив С=(А1,В1,А2,В2,...., An, Bn)

Код:

uses crt;
var a: array[1..100] of integer;
    b: array[1..100] of integer;
    c: array[1..200] of integer;
    i, n: integer;
begin
write('введите размерность массива');
readln(n);
writeln('Заполните элементы массива а значениями');
for i:=1 to n do
readln (a[i]);
writeln('Заполните элементы массива b значениями');
for i:=1 to n do
readln (b[i]);

for i:=1 to n*2 do
if i mod 2=1 then c[i]:=a[i div 2+1] else c[i]:=b[i div 2]

for i:=1 to n*2 do
wtite (c[i],' ');

readln
end.


Boginy 20.10.2009 20:37

вот был бы ты рядом прям незнаю чтоб с тобой сделала))))))Спасибо:D


Часовой пояс GMT +4, время: 21:56.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.