Страница 1 из 1

Паскаль. Разные типы задач

Добавлено: 03 июн 2009, 19:35
Geldor
Добрый день. Приступлю сразу к сути, есть 4 задачи, попытался их сделать но не выходит. А к преподу соваться рискованно %)
Подправьте где я неверно сделал:

1. разветвление

Типа система уравнений

{ln***(х)+х**/sqrt(x+a), если х<0.5
y={sqrt(x+a)+1/x , если х=0.5
{cosx-asin**x, если х>0.5

a=2.5, x є [0.2, 2], дельта х = 0.2

***- куб, ** квадрат) Не знаю как ln в кубе в паскаль перевести(

Вот что я сумел сделать:
program zadacha_1;
uses Crt;
const
a=2.5;
var
x, y: real;
begin
x:=0.2;
while x<2 do
begin
if x<-1 then y:=ln***(x)+sqr(x)/sqrt(x+a) else
if x:=0.5 then y:= sqrt(x+a)+1/x
else y:=cos-a*sqr(sin)*x;
x:=x+0.2;
end;
writeln ('y=', y:5:2);
end.
2. Наверно всем поднадоевшая, вычисление суммы N первых членов ряда с заданой точностью Е

1+x*x/2!+x*x*x*x/4!+x*x*x*x*x*x/6!+....
E=0.001

Определил,
Аn=exp(2nLn(x))/(2n)!
Путем нехитрых вычислений и преобразований:
An+1=An*(x/n+1)
Вот попытка, где неверно, поправьте пжлст
Program zadacha_2;
uses Crt;
const e=0.001;
var fact, s, a: real;
n: integer;
begin
clrscr;
writeln('vvedite x'); readln(x);
n:=1; s:=1; a:=1;
while abs(a)>e do
begin
n:=n+1;
a:=a*x/n+1;
s:=s+a;
end;
writeln('suma=', s:5:3);
readln;
end.
3. Одновымерные массивы чисел
Заданы целые числа а1..а20. Получить новую последовательность, исключив из заданой все члены с значением max

Никак не допру я тут(( Вот жалкая попытка:
program zadacha_3;
uses Crt;
var
x: array[1..20] of integer;
max: real;
n, i: integer;
begin
randomize;
max:=x[1];
for i:=1 to 20 do
if max<x then max:=x


дальше думал думал, как новую последовательность получить без max...

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

Не понимаю, помогите с этим...

Буду рад любой помощи.
С ув. Александр.

Re: Паскаль. Разные типы задач

Добавлено: 03 июн 2009, 20:13
Sheka
1.
Не знаю как ln в кубе в паскаль перевести
ln*ln*ln

3. запоминай места на которых назодятся мах елементы, а потом при выводе просто их не выводи или делай что там тебе надо.

4. используй дополнительный одномерный массив для сохранения промежуточных данных.
задача из серии поменять значение А на В, а В на А:
с:=а;
a:=b;
b;=c;
только с массивами.

Re: Паскаль. Разные типы задач

Добавлено: 04 июн 2009, 07:24
BHy4ok
Поискали бы на форуме, подобных задач хватает.

2) Пиши функцию, или ищи на форуме, уже было.

2Sheka: зачем запоминать позиции и делать совершенно лишние действия, когда можно просто поставить условие.

3) Массив задается рендомом, пробегаемся по массиву находим максимум. Затем снова пробегаемся по массиву и если a<>max, то выводим результат на экран. В итоге получаем массив без максимального элемента. Так-же можно создать второй массив с полученными значениями.

[syntax='Pascal']
uses
Crt;
var
a:array[1..20] of integer;
i,n,max:integer;
begin
ClrScr;
n:=20;
randomize;
writeln('Ishodnaya stroka');
for I := 1 to n do {задаем исходный массив}
begin
a:=random(30);
write(a,' ');
end;
writeln;
max:=a[1];
for I := 1 to n do {Ищем максимальный элемент в массиве}
if max<a then
max:=a;
writeln;
writeln('max: ',max);
writeln;
writeln('Polychennaya stroka');
for I := 1 to n do {Выводим новую последовательность без}
if a<>max then {максимального эелемента}
write(a,' ');
readln;
end.
[/syntax]
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
4. Ряд - это строка? ) Меняем местами минимальный элемент строки с максимальным. При решении используем второй массив, двумерный. Что значит: "Считается, что такие элементы равны" ?
Вообщем пробуйте.

[syntax='Pascal']
uses
Crt;
var
a,b:array[1..5,1..5] of integer;
i,j,n,m,max,min,ma1,ma2,mi1,mi2:integer;
begin
ClrScr;
n:=4;
m:=5;
randomize;
writeln('Ishodnaya matrix');
for I := 1 to n do {Заполняем массив случайными числами}
for j := 1 to m do
begin
a[i,j]:=random(20);
b[i,j]:=a[i,j];
end;
min:=a[1,1];
max:=a[1,1];
for I := 1 to n do {Выводим исходную матрицу}
begin
for j := 1 to m do
write(a[i,j]:5);
writeln;
end;
for I := 1 to n do {Ищем max и min, затем запоминаем их позиции}
for j := 1 to m do
begin
if min>a[i,j] then
begin
min:=a[i,j];
mi1:=i;
mi2:=j;
end;
if max<a[i,j] then
begin
max:=a[i,j];
ma1:=i;
ma2:=j;
end;
end;
writeln;
writeln('min[',mi1,',',mi2,'] = ',min);
writeln('max[',ma1,',',ma2,'] = ',max);
writeln;
if mi1=ma1 then {Если min и max элементы находятся в одной строке, }
writeln('ryad min = ryad max. Menyat nechego') {то выводим сообщение}
else begin
for i := 1 to m do {иначе, меняем строки местами}
begin
b[mi1,i]:=a[ma1,i];
b[ma1,i]:=a[mi1,i];
end;
writeln('Polychennaya matrix');
for I := 1 to n do
begin
for j := 1 to m do
write(b[i,j]:5);
writeln;
end;
end;
readln;
end.
[/syntax]

Re: Паскаль. Разные типы задач

Добавлено: 04 июн 2009, 16:26
Naeel Maqsudov
Мало того, что создали бестолковую тему, где всё свалено в одну кучу, так и еще и задачи поставлены, на которые уже есть готовые решения.
Господа, читайте правила раздела, прежде чем что-то писать в нём. И это касается в равной спени как создающих темы, так и отвечающих в них. Пользуйтесь кнопкой "Пожаловаться на сообщение". В самом начале я бы эту тему разделил на несколько, а теперь уже поздно :( Нужно слишком много правок. Тема закрыта.