Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2008, 15:36   #1
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию из двух заданных массивов В и С одинаковой длины построить новый массив

вроде все правильно, но она почему то не работает!!

составить процедуру, которая из двух заданных массивов В и С одинаковой длины строит новый массив Т по правилу
F1(Bi) Bi>=Ci
Ti= - это система
F2(Ci) Bi<Ci
используя в качестве F1 синус, а в качестве F2 косинус, сформировать новую матрицу Е по правилу: первая строка формируется с помощью процедуры из двух первых строк матрицы А, вторая строка- из третьей и четвертой строк матрицы А и т.д


program Project43210;

{$APPTYPE CONSOLE}

uses
SysUtils;
const n=4;
type
mas=array[1..n] of real;
matr=array[1..n,1..n] of real;
fun=function(x:real):real;
VAR A,E:matr; C,B,t:mas; i,j,k:integer;
procedure p1( b:mas;c:mas; g1:fun; g2:fun; var t:mas);
var i,j:integer;
begin
i:=1;
for j:=1 to n do
if b[i]>=c[i] then
t[i]:=g1(b[i]) else
t[i]:=g2(c[i]) ;
end;

{$F+} function G1(x:real):real;
{$F-} begin G1:= sin(x); end;
{$F+} function G2(x:real):real;
{$F-} begin G2:=cos(x); end;

BEGIN
{ TODO -oUser -cConsole Main : Insert code here }
writeln('Vvedite matr a');
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
writeln ('vvedite b');
for i:=1 to n do read (b[i]);
writeln ('vvedite c');
for i:=1 to n do read (c[i]);

i:=1;
repeat
for j:=1 to n do


b[j]:=a[i,j];
c[j]:=a[I+1,J];

p1(b,c,g1,g2,t);
begin
k:=1;
E[k,j]:=t[j];
k:=k+1;
i:=i+2;
end;
until i<=6;
writeln ('E[',k,',',j,']',E[k,j]);
readln
END.
Absent вне форума Ответить с цитированием
Старый 10.03.2008, 17:11   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
вроде все правильно, но она почему то не работает!!
Правильного процентов 10-15. Приведи полное условие задачи, хотя бы размерность матрицы А.
puporev вне форума Ответить с цитированием
Старый 10.03.2008, 23:06   #3
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

составить процедуру, которая из двух заданных массивов В и С одинаковой длины строит новый массив Т по правилу

F2(Ci) Bi<Ci
Ti= (фигурная скобка)
F1(Bi) Bi>=Ci


используя в качестве F1 синус, а в качестве F2 косинус, сформировать новую матрицу Е по правилу: первая строка формируется с помощью процедуры из двух первых строк матрицы А, вторая строка- из третьей и четвертой строк матрицы А и т.д

матрица размером 6*6
Absent вне форума Ответить с цитированием
Старый 11.03.2008, 15:40   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Добрался до твоей задачи. Поправлять себе дороже, поэтому слегка переделал. Работает нормально, синусы, косинусы проверял на калькуляторе, сходится.
Код:
uses
  SysUtils;
type Tmass=array[1..50]of real;
     Tmatr=array[1..50]of Tmass;
var a,e:Tmatr;
    d1,d2,c:Tmass;
    n,i,j,k:integer;
//Процедура по условию
procedure NewMas(n:integer;a,b:Tmass;var c:Tmass);
var j:integer;
begin
for j:=1 to n do
   begin
     if a[j]>=b[j] then
     c[j]:=sin(a[j])
     else if a[j]<b[j] then c[j]:=cos(b[j]);
   end;
end;
begin
randomize;
write('n=');readln(n);
writeln('Ishodnaia matrica:');
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(10)+random;
        write(a[i,j]:6:2 );
      end;
    writeln;
  end;
readln;
i:=1;k:=0;
while i<=n-1 do
   begin
    k:=k+1;
    for j:=1 to n do
      begin
        d1[j]:=a[i,j];//вектор нечетной строки
        d2[j]:=a[i+1,j];//вектор четной строки
      end;
    NewMas(n,d1,d2,c);  //новый вектор
    for j:=1 to n do
    e[k,j]:=c[j];     //записываем его строкой в новую матрицу
    i:=i+2;
   end;
writeln('Novaia matrica:');
for i:=1 to k do
   begin
     for j:=1 to n do
       begin
         write(e[i,j]:6:2);//выводим ее на экран
       end;
     writeln;
  end;
readln;
end.
puporev вне форума Ответить с цитированием
Старый 11.03.2008, 21:38   #5
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

Спасибо большое
Absent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив неопределённой длины Влажимир Общие вопросы Delphi 2 01.04.2008 10:14
Построить одномерный массив Alter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 29.03.2008 01:42
Выбрать из двух массивов совпадение. *Иван* Microsoft Office Excel 7 22.11.2007 21:10
одномерный массив, элементы которого собраны в возрастающем порядке из двух начальных массивов Scudetto Общие вопросы C/C++ 7 21.10.2007 20:46
как из двух отсортированных по возрастанию одномерных массивов сформировать третий Тоха Рыжов Общие вопросы C/C++ 1 07.10.2007 01:43