0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
||||||
1 | ||||||
Параллельное программирование. Замена кириллицы латиницей19.09.2016, 00:41. Показов 2772. Ответов 25
Метки нет Все метки)
(
Требуется написать программу, сначала последовательно, затем с использованием технологии OpenMP, которая реализует следующие действия: фрагмент текста поместить в двумерный массив, русские буквы заменить на латиницу.
При этом вычислить максимальное, минимальное и среднее время выполнения программы. Провести анализ при различных вариантах распараллеливания (по строкам, столбцам и блокам) и с различными значениями параметра schedule. P.S. Поясняю насчет заполнения матрицы текстом - я использую следующий оператор:
Хотелось бы узнать, как можно заполнить ее из файла. Ну и подскажите способ, как можно заменить алфавит, не прописывая каждый символ. Я думаю, такой вариант существует. С последовательным способом решения разберусь, если подскажете вышесказанное, а вот с параллельным не дружу вообще ![]() Выручайте.
0
|
|
19.09.2016, 00:41 | |
Ответы с готовыми решениями:
25
Замена букв в предложении. Не работает замена кириллицы Параллельное программирование Параллельное программирование в С++ Параллельное программирование |
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
19.09.2016, 01:06 | 2 |
Транслит?
Зависит от того, что на что конкретно ты хочешь менять.
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
|
19.09.2016, 01:12 [ТС] | 3 |
Да, обычный транслит
Ф = F Ж = Zh Ш = Sh ... и так далее По-моему, где-то видел похожий пример, где меняли раскладку клавиатуры. Там все буквы были прописаны в одну строку. Возможно ли тут так?
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
19.09.2016, 09:04 | 4 |
Noob1875, в общих словах - нет.
У тебя каждой русской букве соответствует разное число латинских букв. Так что нужно тебе написать некоторое подобие словаря (либо map<string, string>, либо массив русских символов с массивом латинских строк...)
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
||||||
22.09.2016, 20:11 [ТС] | 5 | |||||
Теперь бы разобраться с распараллеливанием..
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
22.09.2016, 22:43 | 6 |
Noob1875, достаточно взять твой самый внешний цикл "for (int i = 0; i < n; i++)" и дописать одну единственную строчку на OpenMP, которая его распараллелит.
Уж как включить OpenMP и как распараллелить один единственный цикл for ты сможешь найти самостоятельно. =)
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
|
28.09.2016, 20:06 [ТС] | 7 |
Подскажи, как переделать строки в массивы.
У меня сейчас через string, а нужно через char переобъявить. Не совсем догоняю, как. Проблема двойных букв будет решаться, когда задам три английских массива. И в результирующую матрицу буду просто складывать значения из него, у обычных букв понятно, второй и третий элемент - пробелы, Ш представлю, как s+h и т.д. Со словарем разберусь, а вот как в коде грамотно поменять string, не знаю(
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
||||||
01.10.2016, 20:33 [ТС] | 8 | |||||
Жалуется на пробелы в словаре, а если это проигнорить, не записывает матрицы в файлы. Что не так?
0
|
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
|
||||||
01.10.2016, 20:43 | 9 | |||||
Noob1875, я тут мимо проходил...
и на 110 */ убери
1
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
||||||
01.10.2016, 20:45 [ТС] | 10 | |||||
32 строка - это только часть проблемы.
Разобраться бы с выводом в файлы..
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
||||||
10.10.2016, 21:44 [ТС] | 11 | |||||
Успех! У меня есть рабочий код.
Но проблема в том, что он работает только при n<=500. Объясните, пожалуйста, что нужно поменять, чтобы он считал и более крупные матрицы? В идеале 5000*5000
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
10.10.2016, 21:55 | 12 |
Noob1875, в строчке 25 у тебя массив выделяется на стеке.
Размер стека сильно ограничен, так что много выделить у тебя не выйдет. Попробуй выделить массив в куче (Через new, malloc и прочее).
1
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
|
10.10.2016, 22:01 [ТС] | 13 |
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|||||||||||
10.10.2016, 22:04 | 14 | ||||||||||
Noob1875,
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
|
10.10.2016, 22:09 [ТС] | 15 |
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
10.10.2016, 22:14 | 16 |
Noob1875, в каком виде тебе отказывают?
Добавлено через 2 минуты Т.е. на 500 работает, а на 501 уже нет?
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
|
10.10.2016, 22:44 [ТС] | 17 |
На 582 работает нормально, на 583 при запуске вылетает с окошком Прекращена работа программы.
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
10.10.2016, 22:49 | 18 |
Noob1875, у меня на твоем коде на 583 вылетает переполнение стека.
Удалил твое "char arr[n][n];", поставил свое из поста выше - стало все ок.
0
|
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
|
|
10.10.2016, 23:01 [ТС] | 19 |
Есть ли разница куда ставить удаление массива? Хотя, уверен, проблема не в этом.
0
|
1389 / 1019 / 323
Регистрация: 28.07.2012
Сообщений: 2,805
|
|
10.10.2016, 23:32 | 20 |
Без разницы. Можешь вообще его не ставить.
Если совсем ничего не работает, то скинь сюда сообщение об ошибке вместе со своим кодом.
0
|
10.10.2016, 23:32 | |
Помогаю со студенческими работами здесь
20
Параллельное программирование Параллельное программирование Параллельное программирование Параллельное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |