0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
||||||
1 | ||||||
Ошибка в компиляции05.04.2013, 17:40. Просмотров 982. Ответов 11
Метки нет Все метки)
(
Доброго дня.
Написал код, при компиляции выдает сообщения на ошибки в строках. Пытался сам разобраться, но не понимаю, что с ними не так. Взял пример из методички и переделал под свое задание. Вот код:
Код
gcc -Wall -o "lab4a" "lab4a.c" (в каталоге: /home/victor/Lab) Сборка завершилась с ошибкой. lab4a.c: В функции «main»: lab4a.c:49:14: ошибка: «sort» undeclared (first use in this function) lab4a.c:49:14: замечание: each undeclared identifier is reported only once for each function it appears in lab4a.c:49:20: ошибка: expected expression before «)» token lab4a.c:58:11: предупреждение: в присваивании указатель преобразуется в целое без приведения типа [по умолчанию включена]
0
|
|
05.04.2013, 17:40 | |
Ошибка при компиляции. Где ошибка? (Работа с классом)
При компиляции ошибка. Ошибка c++ C2678 Ошибка компиляции |
|
1000 / 787 / 306
Регистрация: 02.09.2012
Сообщений: 2,395
|
|
06.04.2013, 06:35 | 2 |
строка 49: нет такого типа данных sort, есть - struct sort.
Или замените на struct sort, или используйте typedef в объявлении struct.
1
|
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
|
06.04.2013, 11:08 [ТС] | 3 |
grgdvo, нет, все равно ругается
Код
gcc -Wall -o "lab4a" "lab4a.c" (в каталоге: /home/victor/Lab) lab4a.c: В функции «main»: lab4a.c:49:3: ошибка: expected expression before «mem_mas» lab4a.c:58:11: предупреждение: в присваивании указатель преобразуется в целое без приведения типа [по умолчанию включена] Сборка завершилась с ошибкой. Добавлено через 52 минуты Все забудьте, разобрался
0
|
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
||||||
08.04.2013, 21:44 [ТС] | 4 | |||||
Задача еще актуальна.
Теперь проблемы с выводом на экран или процессами fork().
0
|
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
|
13.04.2013, 17:40 [ТС] | 5 |
Что, никто не хочет помочь?
Ну хоть подскажите, что не так!
0
|
1000 / 787 / 306
Регистрация: 02.09.2012
Сообщений: 2,395
|
|
14.04.2013, 17:31 | 6 |
Ну что не так?! fork в цикле! что тут еще может быть не так...
прежде чем исправлять, скажите, какая задача у вас? что нужно сделать? отсортировать кажду строчку массива отдельным процессом?
0
|
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
|
14.04.2013, 21:43 [ТС] | 7 |
Задача
Понимаю, что проблемы связаны с fork'ом, но не знаю почему. В моей методичке есть похожий пример с использованием fork'а в цикле и там все работает(я лично проверял). Добавлено через 2 минуты А хотя нет, тут есть намек на построчную сортировку отдельными процессами.
0
|
1000 / 787 / 306
Регистрация: 02.09.2012
Сообщений: 2,395
|
||||||
15.04.2013, 17:20 | 8 | |||||
Для начала нужен алгоритм параллельной обработки:
Шаг1. Пока идет последовательно. Ввести n и k Шаг2. Выделить разделяему память размером n*k*sizeof(int). Зачем malloc делаете? Честно говоря вообще не могу представить, что вы получите после fork, когда в сегменте общей памяти лежит указатель на двумерный массив, созданный в динамической памяти. Такое ощущение, что фигня получится и процессы будут сортировать каждый свой кусок динамической памяти, а не общую память. Итак, должны получить корректный дескриптор сегмента общей памяти. Шаг3. Приатачиваем этот сегмент к текущему процессу (пока единственному) через shmat и заполняем массив начальными данными. Шаг4. (Разбиение на процессы) Создаем n процессов и запоминаем их идентификаторы примерно так как здесь:
Шаг5. (Слияние). Опять же используем как советуют люди по ссылке, дожидаемся всех процессов. Для случая 2x6 ждать будет уже не кого, но это проверка все равно нужна! Шаг6. Выводим на экран массив Как-то так
0
|
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
||||||
15.04.2013, 19:10 [ТС] | 9 | |||||
grgdvo, должно быть так?
0
|
1000 / 787 / 306
Регистрация: 02.09.2012
Сообщений: 2,395
|
|||||||||||
16.04.2013, 18:05 | 10 | ||||||||||
И еще показалось, что ошибка была в сортировке вставками... где-то было n, а надо было k. Вообщем все переименовал, чтобы было понятно что за что отвечает. Вроде работает
1
|
0 / 0 / 1
Регистрация: 14.02.2011
Сообщений: 153
|
|
17.04.2013, 00:12 [ТС] | 11 |
grgdvo, ОГРОМНОЕ СПАСИБО!
Только объясните пару строчек, 10 и 14. Что они делают? Добавлено через 4 часа 59 минут еще вопрос, это только мне кажется странным, что двумерные массивы заключаются в круглые скобки или так и должно быть?
0
|
1000 / 787 / 306
Регистрация: 02.09.2012
Сообщений: 2,395
|
|
18.04.2013, 00:54 | 12 |
Строчка 10, это макрос, подставляющий вместо выражения вида MATRIX(a,b) -> pMatrix[...]. Этим макросом я скрыл доступ к одномерному массиву как к двумерному, чтобы в программе можно было писать понятным языком, но теперь уже с круглыми скобками.
Строка 14, это указатель на будущий массив, размещенный в общей памяти.
1
|
18.04.2013, 00:54 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Ошибка компиляции Ошибка компиляции Ошибка компиляции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |