1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

Умножение Матриц На Вектор

Тема в разделе "С и С++", создана пользователем proger2030, 26 ноя 2011.

  1. proger2030

    proger2030 Гость

    Репутация:
    0
    Задание
    Выполнить задачу распараллеливания алгоритма (на любом языке программирования.)
    Дано 100 матриц и 100 векторов, умножение каждой матрицы на каждый вектор.
    Пока решил так:
    Код:
    #include <iostream>
    #include <stdlib.h> 
    #include <conio.h> 
    #include <stdio.h> 
    #include <time.h>
    
    
    int main() 
    {
    const int straka = 2;
    const int stolbes = 2;	
    const int kordinat = 2;
    char AnswerForM;
    char AnswerForV;
    int MasA[straka][stolbes];
    int VectorB[straka];
    int Solution[straka];
    
    
    srand(time(NULL));
    
    for(int i = 0; i < straka; i++)
    {
    for(int j = 0; j < stolbes; j++)
    {
    MasA[i][j] = rand()%100 + 1;
    }
    
    }
    
    
    //Иницализация векторов
    
    for(int i = 0; i < straka; i++) {VectorB[i] = rand()%50 + 1;}
    
    //Вывод матриц
    
    std::cout << "Pokazat ishodnoi matrisu? (najmite y ili Y): ";
    std::cin >> AnswerForM;
    
    if(AnswerForM == 'y' || AnswerForM == 'Y')
    {
    std::cout << "Ishodnoi matrix: \n";
    
    for(int i = 0; i < straka; i++)
    {
    for(int j = 0; j < stolbes; j++)
    {
    std::cout << MasA[i][j] << ' ';
    }
    
    std::cout << std::endl;
    }
    
    }
    
    std::cout << "Pokazat kordinaty vectorov?: ";
    std::cin >> AnswerForV;
    
    if( AnswerForV == 'y' || AnswerForV == 'Y')
    {
    for(int i = 0; i < straka; i++)
    {
    std::cout << VectorB[i] << ' ';
    }
    
    std::cout << "Vector: "<< KolMas << "\)" << std::endl;
    std::cout << std::endl;
    }
    
    //Расчеты. Умнажаем матрицу на вектор
    
    for(int j = 0; j < straka; j++)
    {
    Solution[j] = 0;
    for(int i = 0; i < stolbes; i++)
    Solution[j] += MasA[j][i]*VectorB[i];
    }
    
    //Вывод решения
    for(int i = 0; i < straka; i++)
    std::cout << i << ' ' << Solution[i] << std::endl;
    
    return 0;
    Да тут последовательно но... Хотя бы это)
    У меня тут только умножает матрицу на вектор. А по заданию мне надо их по 100. Ребята помогите. Всем заранее спс.
     
  2. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    А под распараллеливанием ты что подразумеваешь? Умножение в несколько потоков?
     
  3. proger2030

    proger2030 Гость

    Репутация:
    0
    Вот как создать 100 двухмерных и одномерных массивов с разными значениями ???
     
  4. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    100 двумерных массивов, размером N строк и M столбцов типа int:
    Код:
    int A[100][N][M];
    100 одномерных массивов, размером N элементов типа int:
    Код:
    int A[100][N];
    Добавлено: Заполняй их как угодно.
     
  5. rrrFer

    rrrFer Гость

    Репутация:
    0
    погугли ОРС(Открытая Распараллеливающая Система), например.
    (ну это автоматическое распараллеливание, результат не очень, но зато максимально просто и быстро xD )
     
Загрузка...

Поделиться этой страницей