С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
1

Из Pasacal в C++

23.10.2016, 13:32. Показов 1007. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане. Выручите пожалуйста кодиком. Есть код на Pascal надо его переписать на С++. Я с паскалем не дружу. Прошу Вашей помощи:

Pascal
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CONST
    CMaxInp     = 20;
    CMaxOut     = 10;
    CMaxImages  = 200;
    CEta        = 0.75;
  
TYPE
    TMatrix     = ARRAY[0..CMaxInp,1..CMaxOut] OF REAL;
                    (* Нулевой столбец содержит значения порогов *)
    TInpVector  = ARRAY[1..CMaxInp] OF REAL;
    TOutVector  = ARRAY[1..CMaxOut] OF REAL;
 
    TPerceptron = RECORD   
        NInp : INTEGER;     (* Число входов *)
        NOut : INTEGER;     (* Число выходов *)
        Inp  : TInpVector;  (* Текущий вектор входов *)
        Out  : TOutVector;  (* Текущий вектор выходов *)
        W    : Tmatrix;     (* Матрица связей *)
    END;
 
    TBaseRecord = RECORD
        X    : TInpVector;
        Y    : TOutVector;
    END;
Начало то понятно:
C++
1
2
3
4
5
6
7
8
9
const int CMaxInp = 20;
const int CMaxOut = 10; 
const int CMaxImages = 200; 
const double CEta = 0.75;
int main()
{
    
    return 0;
}
А как дальше?
0
Лучшие ответы (1)
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
23.10.2016, 13:43 2
Лучший ответ Сообщение было отмечено Виктор27 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    const int CMaxInp      = 20;
    const int CMaxOut     = 10;
    const int CMaxImages = 200;
    const double CEta       = 0.75;
  
using TMatrix = double[CMaxInp+1][CMaxOut];
using TInpVector = double[CMaxInp];
using TOutVector = double[CMaxOut];
 
struct TPerceptron
{
        int            NInp;    // Число входов
        int            NOut;    // Число выходов
        TInpVector Inp;     // Текущий вектор входов
        TOutVector Out;     // Текущий вектор выходов
        Tmatrix     W;       // Матрица связей
};
 
struct TBaseRecor
{
        TInpVector X;
        TOutVector Y ;
};
1
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
23.10.2016, 14:52  [ТС] 3
Selot, Спасибо))) А ка быть с этим?
Pascal
1
2
3
4
 TBase = RECORD
        NImages : INTEGER;  (* Число обучающих образов *)
        Images  : ARRAY[1..CMaxImages] OF TBaseRecord;
    END;
Если так:
C++
1
2
3
4
5
6
using TBaseRecord = double[CMaxImages];
struct TBase
{
    int NImages;
    TBaseRecord Images;
};
то компилятор говорит: error C2371: TBaseRecord: переопределение; различные базовые типы
0
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
23.10.2016, 15:04 4
Виктор27, тип TBaseRecord уже где-то определен. Попробуйте изменить имя TBaseRecord. К примеру на TBaseRecord1.
1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.10.2016, 15:06 5
C++
1
2
3
4
5
struct TBase
{
    int NImages;
    TBaseRecord Images[CMaxImages];
};
1
13 / 13 / 6
Регистрация: 21.11.2013
Сообщений: 365
23.10.2016, 15:53  [ТС] 6
Я опять застрял
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PROCEDURE InitAll;
VAR
    Li, Lj, Lk : INTEGER;
BEGIN
    WITH VNet, VBase DO
    BEGIN
        NInp := 10;
        NOut := 1;
        FOR Li := 0 TO NInp DO
            FOR Lj := 1 TO NOut DO
                 W[Li,Lj] := CInitWeight*(RANDOM-0.5);
    END;
    VOK := TRUE;
END;
Помогите пожалуйста.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
23.10.2016, 17:09 7
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
void InitAll()
{
    //...
 
    for (int Li = 0; Li <= NInp; ++Li)
        for (int Lj = 0; Lj < NOut; ++Lj)
            W[Li][Lj] = CInitWeight * (static_cast<double>(rand()) / RAND_MAX - 0.5);
 
    VOK = true;
}
Индексы проверь и допиши строки 7-8. Не видно, к чему эти поля относятся.
1
23.10.2016, 17:09
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru