Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2016, 07:46   #1
kate859
 
Регистрация: 03.03.2016
Сообщений: 5
Восклицание параллельное програмирование openmp

Помогите!!! очень нужно!! Создать программу, которая должна реализовать следующие действия:
1. Создать матрицу А размером m * n, элементы которой заполняются рандомно, m задает количество строк и количество потоков, которые будут выполнять параллельную область программы, n задает количество столбцов. Переменные могут задаваться в коде или вводиться с клавиатуры.
2. В параллельной области с помощью директивы single или master вывести следующие данные: номер лабораторной работы; ФИО студента; номер варианта; Задание.
3. Обработать параллельным способом матрицу по своему варианту. Каждый поток должен возделывать свой строка матрицы. Результаты обработки записать в массив В.
4. Вывести результат обработки массива параллельным способом. При работе потока на экран должна выводиться информация о номере потока и номер строки матрицы, которую обрабатывает поток.
5. Последовательно обработать матрицу по своему варианту. Результаты обработки записать в массив С.
*6. Вывести результат обработки матрицы последовательным способом. Определить время, которое было затраченное на обработку параллельным и последовательным способом.
Сравнить полученные результаты на наличие идентичности

вариант 4. Посчитать количество нулевых элементов в каждой строке матрицы
вот мой код, подскажите, что не так\

Код:
#include "stdafx.h"
#include <iostream>
#include <ctime> 
#include <stdio.h> 
#include <fstream>
#include <iomanip> 
#include <omp.h>

using namespace std;
int main()
{
	setlocale(LC_ALL, "RUS");
	srand(time(NULL));

	int i, j, k, N, M;
	double a[50][50];
	int b[50][50];
	{
		int n;
#pragma omp parallel 
		{
			n = 1;
		}
	cout << "Введите количество строк="; //ввод количества строк
		cin >> M;
	cout << "Введите количество столбцов="; //ввод количества столбцов
		cin >> N;
		cout << "matrix A \n";
		for (int i = 0; i < M; i++)
		{
		for (int j = 0; j < N; j++)
		{
		a[i][j] = rand() % 10;// Каждый элемент случайному числу от 0 до 9
		cout << a[i][j] << " "; // Вывести элементы на консольку
		}
		cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
		}
		int kolnul(double** b, int N, int M);
		{
		int i, j, k;
#pragma omp parallel for shared(a, b) private(i, j, k) 
		for (i = 0; i < M; i++)
		{	k = 0;
		{
		for (j = 0; j < N; j++)
		if (a[i][j] == 0)k = k++;
		b[M][N] = k;
		cout << "\n Количество нулевых элементов в " << i+1 << " строке=" << k << endl;			
			}
			}
#pragma omp master 

			printf("Лабораторная работа №\n");
			printf("ФИО\n");
			printf("вариант №10\n");
			printf("Задание: Подсчитать количество нулевых элементов в каждой строке матрицы\n");
#pragma omp barrier
		}
		system("pause");
		return 0;
	}
}

Последний раз редактировалось kate859; 03.03.2016 в 15:05.
kate859 вне форума Ответить с цитированием
Старый 03.03.2016, 08:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Помочь чем, а? Что не получается? Какие ошибки выдает?
p51x вне форума Ответить с цитированием
Старый 03.03.2016, 10:06   #3
kate859
 
Регистрация: 03.03.2016
Сообщений: 5
По умолчанию

проблема состоит в распараллеливании...

Последний раз редактировалось kate859; 03.03.2016 в 10:09.
kate859 вне форума Ответить с цитированием
Старый 03.03.2016, 11:28   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если вы не хотите задавать более конкретные вопросы, показывать свой код и т.д., то вряд ли кто-то сможет помочь, кроме раздела Фриланс за вознаграждение.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.03.2016, 15:10   #5
kate859
 
Регистрация: 03.03.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Если вы не хотите задавать более конкретные вопросы, показывать свой код и т.д., то вряд ли кто-то сможет помочь, кроме раздела Фриланс за вознаграждение.
добавила код моей программы, но конкретных вопросов до сих пор не могу придумать..так как в программировании я вообще "0"... делаю это задание уже дня 3-4 и все равно ничего не получается...

Последний раз редактировалось kate859; 03.03.2016 в 15:14.
kate859 вне форума Ответить с цитированием
Старый 03.03.2016, 15:11   #6
kate859
 
Регистрация: 03.03.2016
Сообщений: 5
По умолчанию


Последний раз редактировалось kate859; 03.03.2016 в 15:13.
kate859 вне форума Ответить с цитированием
Старый 05.03.2016, 01:22   #7
it_dog
Пользователь
 
Регистрация: 02.03.2015
Сообщений: 13
По умолчанию

???
int kolnul(double** b, int N, int M);
it_dog вне форума Ответить с цитированием
Старый 10.03.2016, 01:27   #8
kate859
 
Регистрация: 03.03.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от it_dog Посмотреть сообщение
???
int kolnul(double** b, int N, int M);
копировала программу для подсчета кол-ва нулевых элементов
kate859 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы For и OpenMP BrookBond Общие вопросы C/C++ 0 11.06.2013 16:26
OpenMP и while на С++ Brabus Помощь студентам 3 13.03.2013 14:47
openmp hunter03 Общие вопросы C/C++ 0 02.10.2012 17:54
OpenMP Timur1 Visual C++ 1 16.06.2012 15:40
OpenMP Алек Помощь студентам 2 14.10.2011 11:52