С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 15
1

Быстрая сортировка fork и pipe

08.10.2012, 17:14. Показов 1736. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите переделать данный код в быструю сортировку
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
 
void bubble(char *items, int count);
 
int main(void)
{
        int     fd[2], nbytes;
        pid_t   childpid;
        char    string[80] ;
        char    readbuffer[80];
 
        pipe(fd);
        
        if((childpid = fork()) == -1)
        {
                perror("fork");
                exit(1);
        }
 
        if(childpid == 0)
        {
                /* потомок .закрываем входной поток pipe */
                close(fd[0]);
 
                printf("input string \n");
                gets(string);
                bubble(string,strlen(string));//сортировка
 
                /* Отправляем строку через выходной поток pipe */
                write(fd[1], string, (strlen(string)+1));
                exit(0);
                
        }
        else
        {    
            
                /* Родительский процесс закрывает выходной поток  pipe */
                close(fd[1]);
 
                /* Чтение строки из  pipe */
                nbytes = read(fd[0], readbuffer, sizeof(readbuffer));
                printf("Received sorted string: %s\n", readbuffer);
 
                printf("nbytes :%d\n",nbytes);
         /* Родительский процесс закрывает входной поток  pipe */
                close(fd[0]);
                
        }
        
        return(0);
}
void bubble(char *items, int count)//сортировка пузырёком
{
  int a, b;
  char t;
 
  for(a=1; a < count; ++a)
    for(b=count-1; b >= a; --b) {
      if(items[b-1] > items[b]) {
        /* exchange elements */
        t = items[b-1];
        items[b-1] = items[b];
        items[b] = t;
      }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
08.10.2012, 17:14
Ответы с готовыми решениями:

Сортировка строки, используя fork() и pipe
Дали задание используя системный вызов fork() и pipe. Решить какую-то задачу. Я решил сделать...

Pipe, fork, shared memory
Доброго времени суток. Помогите пожалуйста написать программу: Процесс читает с клавиатуры и пишет...

Пустые строки в файле с использованием pipe, fork, exec, dup
Всем привет, для написания сабжа задумал использовать такую команду : grep -e '^$' argv | wc...

Распараллелить задачу, ипользуя при системный вызов fork (), и трубу pipe
Дали задание распараллелить какую то задачу, ипользуя при этом системный вызов fork(), и трубу...

1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
13.10.2012, 12:33 2
А в чем проблема? qsort из cstdlib тебе в помощь.
0
13.10.2012, 12:33
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
13.10.2012, 12:33
Помогаю со студенческими работами здесь

Отправка сообщений между дочерними и родительским процессами (fork,pipe,write,read)
Здравствуйте, помогите реализовать отправку сообщений по следующей схеме: Попытался...

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка...

Fork() и сортировка столбцов матрицы
В общем такая беда. Целый день не могу понять что не так в моем коде. Задание такое. Мне нужно...

Быстрая сортировка, ситуация, при которой сортировка работает не корректно
Procedure sort(m, l: Integer); Var i, j, x, w: Integer; Begin i := m; j := l; x...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru