Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Переписать прогу с С++ на паскаль

20K
07 мая 2007 года
STALK3R
5 / / 04.11.2006
Друг попросил написать программу на паскале, а я на нём кодил ну года 3 назад, и уже всё забыл, написал прогу по-быстрому на с++,
если кому не сложно перегоните её на паскаль (можно это сделать даже не вникая в суть)))
Код:
/**********************************************************\
|* Программа для совершения некоторых действий с матрицей *|
\**********************************************************/

// размер
const int SIZE = 5;
// непосредственно матрица
double matrix[SIZE][SIZE];
// результирующая матрица
double res[SIZE][SIZE];
// построение матрицы по некоторому условию
void m_init(){
    for (int i = 0; i < SIZE; i++)
        for (int j = 0; j < SIZE; j++)
            matrix[j] = (i == j) ? (1.5 * i * i + j * j) : ((i * i - j * j) / 2.1);
}

// нахождение максимального элемента в матрице
double m_max()
{   double max = 0;
    for (int i = 0; i < SIZE; i++)
        for (int j = 0; j < SIZE; j++)
            if (matrix[j] > max)
                max = matrix[j];
    return max;

}

// поэлементное перемножение строк. именно строк, а не строки и столбца,
// т.к. матрица умножается на саму себя в транспонированном виде
double str_comp_t(int n1, int n2)
{
    double ret = 0;
    for (int i = 0; i < SIZE; i++)
        ret += matrix[n1] * matrix[n2];
    return ret;
}

// перемножение матрицы на саму себя в транспонированном виде
void m_comp_t()
{
    for (int i = 0; i < SIZE; i++)
        for (int j = 0; j < SIZE; j++)
            res[j] = str_comp_t(i, j);
}

// умножение матрицы на константу
void m_comp_c(int c)
{
    for (int i = 0; i < SIZE; i++)
        for (int j = 0; j < SIZE; j++)
            res[j] = matrix[j] * c;
}

int main()
{
    double max;
    m_init();
    max = m_max();
    (max > 10) ? m_comp_t() : m_comp_c(max);
    return 0;
}
366
08 мая 2007 года
int
668 / / 30.03.2005
За работосопсобность не ручаюсь, но ошибок при компиляции не выдаёт вроде :) Сам паскалем не пользовался уж неизвестно сколько
Код:
(**********************************************************\
|* Программа для совершения некоторых действий с матрицей *|
\**********************************************************)

const
{ размер }
SIZE = 5;
var
{ непосредственно матрица и результирующая матрица}
matrix,res:array[0..SIZE-1,0..SIZE-1] of real;

{ построение матрицы по некоторому условию }
procedure m_init;
var i,j:integer;
begin
 for i := 0 to SIZE-1 do
  for j := 0 to SIZE-1 do
   if i=j then matrix[i,j]:=1.5*i*i+j*j
   else
   matrix[i,j]:=(i*i-j*j)/2.1;
end;

{ нахождение максимального элемента в матрице }
function m_max:real;
const  max:real=0;
var i,j:integer;
begin
 for i := 0 to SIZE-1 do
  for j := 0 to SIZE-1 do
   if matrix[i,j] > max then max:=matrix[i,j];
 m_max:=max;
end;

{ поэлементное перемножение строк. именно строк, а не строки и столбца,
 т.к. матрица умножается на саму себя в транспонированном виде}

function str_comp_t(n1,n2:integer):real;
const ret:real=0;
var i:integer;
begin
 for i := 0 to SIZE-1 do
  ret := ret+matrix[n1,i]*matrix[n2,i];
 str_comp_t:=ret;
end;

{ перемножение матрицы на саму себя в транспонированном виде }
procedure m_comp_t;
var i,j:integer;
begin
 for i := 0 to SIZE-1 do
   for j := 0 to SIZE do
    res[i,j] := str_comp_t(i, j);
end;

{ умножение матрицы на константу}
procedure m_comp_c(c:real);
var i,j:integer;
begin
 for i := 0 to SIZE-1 do
  for j := 0 to SIZE-1 do
   res[i,j] := matrix[i,j] * c;
end;

var max:real;

begin
 m_init;
 max := m_max;
 if max > 10 then m_comp_t
 else m_comp_c(max);
end.
/COLOR]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог