Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ 2 задачи на массивы.Задача на определён. интеграл.

Автор: Troy 17.12.2004 21:03

Люди добрые, я здесь первый раз, но очень надеюсь на вашу помощь!В общем в универе завал: по причине болезни накопился долг по информатике в 4 лабы...Лабы, как вы наверно уже поняли по Borland Pascal.Если вам не трудно не могли бы вы мне помочь?Может для вас эти задачи и покажутся простыми, но так как я пропустил 2 недели занятий, мне написать код этих программ не по силам...

Вот условия задач:



1)Обработка одномерных массивов:

Переписать подряд в массив А положительные элементы, а в массив Z отрицательные элементы массива В.

Массив В(20)



2)Обработка двумерных массивов:

В массиве В(4,4) найти произведение кубов главной диагонали.



3)Вычисление определённого интеграла приближёнными методами:

Подинтегральная функция: lnx (x в квадрате)

Метод численного решения: прямоугольников

Число отрезков: 50

Интервал интегрирования [1;2,5]





Заранее всем откликнувшимся огромное спасибо!

Автор: volvo 17.12.2004 21:11

Troy
Вот что выдал поиск:
http://forum.pascal.net.ru/index.php?showtopic=1121&hl=%E8%ED%F2%E5%E3%F0%E0%EB

Автор: volvo 17.12.2004 21:19

Цитата
Переписать подряд в массив А положительные элементы, а в массив Z отрицательные элементы массива В.

Делаем вот так:
Код

const
 n = 20;
 b: array[1 .. n] of integer =
   (1, 2, 3, 4, -5, 6, 7, -8, -9, -10,
    11, -12, 13, 14, -15, 16, -17, -18, 19, 20);

var
 i: integer;
 a, z: array[1 .. n] of integer;
 ia, iz: integer;
begin
 ia :=0; iz := 0;
 for i := 1 to n do
   if b[i] >= 0 then
     begin inc(ia); a[ia] := b[i] end
   else
     begin inc(iz); z[iz] := b[i] end;

 writeln('positive:');
 for i := 1 to ia do write(a[i]:4);
 writeln;

 writeln('negative:');
 for i := 1 to iz do write(z[i]:4);
 writeln;
end.


Цитата
В массиве В(4,4) найти произведение кубов главной диагонали.

Код
const
 n = 4;
 b: array[1 .. n, 1 .. n] of integer =
   ((1, 2, 3, 4), (3, 4, 5, 6), (5, 6, 7, 8), (7, 8, 9, 10));
var
 i: integer;
 p: longint;
begin
 p := 1;
 for i := 1 to n do
   p := p * sqr(b[i, i])*b[i, i];

 writeln('p = ', p);
end.

Автор: Troy 18.12.2004 19:55

volvo Огромное спасибо!Не представляешь,как выручил меня!

Автор: Troy 19.12.2004 21:41

volvo
Слушай, а с блок-схемами к этим программам не поможешь? :p2:

Автор: Troy 21.12.2004 6:04

volvo, слушай,скомпилировал программы...первые 2 вылетают при запуске, а третья всегда выдаёт значение интеграла равным 0...

Автор: Troy 21.12.2004 6:07

вот какой код получился у меня к 3 программе:

Цитата
Program lab_6;
Uses crt;
Var
a,b,dx,s,x,y:real;
n,i:integer;
begin
writeln ('v a');
readln (a);
writeln ('v b');
readln(dx);
n:=Round((b-a)/dx);
x:=a;
s:=0;
for i:=1 to n do
begin
y:=ln(x*x)/x*x;
s:=s+y*dx;
x:=x+dx;
end;
writeln('Znachenie integrala:',s:9:3);
readln;
end.


По-моему неправильно...
Всё, писец,кажись сегодня я завалюсь на сдаче лаб...

Автор: volvo 21.12.2004 13:07

Troy
Я перед тем, как запостить программы, проверяю их...

Может, просто стоит добавить в конец моих программ Readln, чтобы ты успел увидеть результаты?

Автор: klem4 21.12.2004 13:45

Цитата(volvo @ 17.12.04 17:19)
Делаем вот так:
Код


   if b[i] >= 0 then
     begin inc(ia); a[ia] := b[i] end
   else
     begin inc(iz); z[iz] := b[i] end;
end.

Мне кажется там вот так надо :
Код

if b[i]>0 then
 begin
      inc(ai);
      a[ai]=b[i];
 end
  else
 if b[i]<0 then
   begin
        inc(iz);
        z[iz]:=b[i];
   end;
       


Там же ведь условие строгое : записать положительные и отрицательные а с теми которые = 0 ничего делать не надо :D МОжет я и неправ конечно.