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

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

SallahadDin 22.02.2014 03:40

Помогите решить задачу по Паскалю
 
Даны вещественные матрицы A, B, C размером 5x6. Вычислить величину (||A||+||B||+||C||)/(||A+B+C||+||A-B-C||), где ||D||= maxj |d1,j| + maxj |d2,j| +…+ maxj |d5,j|. Программа должна использовать функцию нахождения максимума в строке матрицы и функцию вычисления ||D||.

Vladimir_S 22.02.2014 11:43

Цитата:

Сообщение от SallahadDin (Сообщение 1007617)
Даны вещественные матрицы A, B, C размером 5x6. Вычислить величину (||A||+||B||+||C||)/(||A+B+C||+||A-B-C||), где ||D||= maxj |d1,j| + maxj |d2,j| +…+ maxj |d5,j|. Программа должна использовать функцию нахождения максимума в строке матрицы и функцию вычисления ||D||.

Прошу:
Код:

Type
 Vector=Array[1..6] of Real;
 Matrix=Array[1..5] of Vector;
 Ar_Mtr=Array[1..3] of Matrix;

Var
 A:Ar_Mtr;
 i,j,k:Byte;
 S,S1,S2,S3:Real;

Function Max_V(V:Vector):Real;
var
 m:Byte;
 Max:Real;
begin
 Max:=Abs(V[1]);
 for m:=2 to 6 do
  if Abs(V[m])>Max then Max:=Abs(V[m]);
 Max_V:=Max;
end;

Function Sum_V(M:Matrix):Real;
var
 q:byte;
 Sum:Real;
begin
 Sum:=0;
 for q:=1 to 5 do Sum:=Sum+Max_V(M[q]);
 Sum_V:=Sum;
end;

Function Sum_M_1(C:Ar_Mtr):Matrix;
var
 d,p,q:byte;
begin
 for p:=1 to 5 do
  for q:=1 to 6 do
  Sum_M_1[p][q]:=C[1][p][q]+C[2][p][q]+C[3][p][q];
end;

Function Sum_M_2(C:Ar_Mtr):Matrix;
var
 d,p,q:byte;
begin
 for p:=1 to 5 do
  for q:=1 to 6 do
  Sum_M_2[p][q]:=C[1][p][q]-C[2][p][q]-C[3][p][q];
end;

Begin
 Randomize;
 for k:=1 to 3 do
  for i:=1 to 5 do
  for j:=1 to 6 do
    A[k][i][j]:=Random*10-3.0;

 for k:=1 to 3 do
  begin
  for i:=1 to 5 do
    begin
    for j:=1 to 6 do write(A[k][i][j]:7:2);
    writeln;
    end;
  writeln;
  end;
 writeln;

 S1:=0;
 for k:=1 to 3 do S1:=S1+Sum_V(A[k]);
 S2:=Sum_V(Sum_M_1(A));
 S3:=Sum_V(Sum_M_2(A));
 S:=S1/(S2+S3);
 Writeln('Result: ', S:0:5);
 Readln
End.


SallahadDin 23.02.2014 04:50

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

SallahadDin 23.02.2014 05:03

Да все работает правильно)) не могли бы посмотреть вот эти задачи?) заранее спасибо огромное)
1. Создать текстовый файл с произвольным содержимым. Написать программу, которая после каждого слова записывает в файл количество символов в этом слове, а после этого дописывает в конец файла строку, в которой указывается количество слов в файле. Под словом понимается любая непустая последовательность символов, ограниченная символами пробе- ла, табуляции, конца строки или конца файла.
2. Написать программу, которая выполняет следующие действия по выбору пользователя: 1 – ввод с клавиатуры данных о товарах (данные об одном товаре: наименование, дата изготовления, цена в долларах), 2 – ввод данных о товарах из файла на диске, 3 – вывод данных о товарах в файл на диске, 4 – по заданному пользователем обменному курсу вывести на экран информацию о товарах с указанием цены как в долларах, так и в рублях, 5 – закончить работу. Максимальное количество товаров – 20. Для представления данных об одном товаре использовать тип данных record . Использовать типизированный файл, запись которого со- держит данные об одном товаре.

Vladimir_S 23.02.2014 10:52

Вложений: 2
Цитата:

Сообщение от SallahadDin (Сообщение 1008024)
1. Создать текстовый файл с произвольным содержимым. Написать программу, которая после каждого слова записывает в файл количество символов в этом слове, а после этого дописывает в конец файла строку, в которой указывается количество слов в файле. Под словом понимается любая непустая последовательность символов, ограниченная символами пробела, табуляции, конца строки или конца файла.

Легко. Только пути к файлам поправьте по своему усмотрению:
Код:

Var
 Lit:Set of Char;
 f1,f2:Text;
 W:String;
 C:Char;
 N_W:Integer;

Begin
 N_W:=0;
 Lit:=['a'..'z']+['A'..'Z']+['а'..'я']+['А'..'Я']+['0'..'9'];
 Assign(f1,'D:\inp.txt');
 Reset(f1);
 Assign(f2,'D:\outp.txt');
 Rewrite(f2);
 Repeat
  repeat
  read(f1,C);
  if Not(C in Lit) then write(f2,C);
  until (C in Lit) or EoF(f1);
  If C in Lit then
  begin
    W:=C;
    repeat
    read(f1,C);
    if C in Lit then W:=W+C;
    until Not(C in Lit) or Eof(f1);
    Inc(N_W);
    write(f2,W+'(',Length(W),')');
    if Not(EoF(f1)) then write(f2,C);
  end;
 Until EoF(f1);
 writeln(f2);
 writeln(f2,N_W,' words');
 Close(f1);
 Close(f2);
End.


Vladimir_S 23.02.2014 10:57

Цитата:

Сообщение от SallahadDin (Сообщение 1008024)
2. Написать программу, которая выполняет следующие действия по выбору пользователя: 1 – ввод с клавиатуры данных о товарах (данные об одном товаре: наименование, дата изготовления, цена в долларах), 2 – ввод данных о товарах из файла на диске, 3 – вывод данных о товарах в файл на диске, 4 – по заданному пользователем обменному курсу вывести на экран информацию о товарах с указанием цены как в долларах, так и в рублях, 5 – закончить работу. Максимальное количество товаров – 20. Для представления данных об одном товаре использовать тип данных record . Использовать типизированный файл, запись которого со- держит данные об одном товаре.

Этим, извините, заниматься на буду, ибо тыц!.

SallahadDin 25.02.2014 23:37

Спасибо добрый человек))))


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

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