Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с динамической памятью 
V
    Опции темы
ioManip
Дата 25.8.2015, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



Здравствуйте! Скажите, пожалуйста, в чем моя проблема??
Пытаюсь транспонировать матрицу разной размерности
main.cpp
Код

int main()
{
    const size_t row = 3;
    const size_t column = 4;
    const size_t matrixSize = row * column;

    float *inMatrix = new float[matrixSize];
    float *outMatrix = new float[matrixSize];

    fillMatrix(inMatrix, row, column);
    printMatrix(inMatrix, row, column);
    transpose(inMatrix, outMatrix, row, column);
    printMatrix(outMatrix, column, row);


    delete[] inMatrix;
    delete[] outMatrix;

    getchar();

    return 0;
}

cpu.cpp
Код

void fillMatrix(float *matrix, const size_t row, const size_t column)
{
    std::srand(std::time(0));

    const float X = 100.0f;

    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < column; j++)
        {
            matrix[i * column + j] = static_cast<float>(std::rand() / static_cast<float>(RAND_MAX / X));
        }
    }
}

void printMatrix(float *matrix, const size_t row, const size_t column)
{
    std::cout << "\n";
    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < column; j++)
        {
            std::cout << std::setw(10) << matrix[i * column + j];
        }
        std::cout << "\n";
    }
}

void transpose(float *inMat, float *outMat, const size_t row, const size_t column)
{
    for (size_t i = 0; i < row; i++)
    {
        for (size_t j = 0; j < column; j++)
        {
            outMat[i * row + j] = inMat[j * column + i];
        }
    }
}

cpu.h
Код

void fillMatrix(float *matrix, const size_t row, const size_t column);
void printMatrix(float *matrix, const size_t row, const size_t column);
void transpose(float *inMat, float *outMat, const size_t row, const size_t column);


Результат программа выдает верный, но не до конца.
Например при размерности 3 на 4
Код

   24.6071   65.5538   64.5619   64.6474
   35.1207   75.3258   58.3666   72.6402
   66.5365   43.9955   76.3176    8.8229

   24.6071   35.1207   66.5365
   65.5538   75.3258   43.9955
   64.5619   58.3666   76.3176
-1.21979e-012-4.31602e+008-4.31602e+008

А при 4 на 3 вообще падает
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
volatile
Дата 25.8.2015, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Собака порылась в строке 35 файла cpu.cpp
Цитата(ioManip @  25.8.2015,  06:59 Найти цитируемый пост)
            outMat[i * row + j] = inMat[j * column + i];
            outMat[i + j * row] = inMat[i * column + j];

или что-то типа того, проверяйте.

PM MAIL   Вверх
ioManip
Дата 25.8.2015, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



volatile, Действительно, в этом и была ошибка! Спасибо за помощь!

--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.