Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Витя007
0 / 0 / 1
Регистрация: 06.10.2012
Сообщений: 29
1

Топологическая сортировка графа

03.06.2014, 05:52. Просмотров 747. Ответов 1
Метки нет (Все метки)

Здравствуйте, у меня есть код сортировки, но он слишком громоздкий, помогите его сделать более компактные, только не полузуя структурами.
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
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <stdlib.h>
#define N 10
 
int main()
{
int n,i,j,k,w,que_sk=0,q,mas[N][N],que[N],result[N];
int criteria,zero_count=0;
 
printf("Enter n: ");
scanf("%d",&n);   //сколько врачей
 
for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        mas[i][j]=0;  //обнуляем матрицу перед вводом
    }
    que[i]=-1;   //матрица врачей, которых еще не прошли. не пройденный врач = -1
}
 
for(i=0;i<n;i++)   //ввод критериев для всех врачей
{
criteria=-1;
while(criteria!=0)    //вводить можно не более n критериев, ввод заканчивается если ввели n критериев или введен 0
{                     //вводить критерии по одному
    printf("Enter %d doc: ",i+1);
    scanf("%d",&criteria);
        if(criteria!=0)
           mas[i][criteria-1]=1;  //пишем критерии в матрицу
}
}
 
 
 
for(q=0;q<n;q++)        //цикл по всем врачам (n врачей)
{
que_sk=0;       //счетчик врачей, которых можно посетить
 
for(i=0;i<n;i++)    //начинаем проход по матрице
{
    while(que[i]!=-1&&i<n)  //выбираем строку матрицы для врача, которого еще не посещали
       i++;
 
    zero_count=0;
    for(j=0;j<n;j++)     //считаем количество нулей в строке
    {
       if(mas[i][j]==0)
            zero_count++;
    }
    if(zero_count==n)   //если в строке все нули, то врача можно посетить
    {
    //   printf("%d\n",i);
       result[q]=i+1;   //пишем номер врача в матрицу результата
       que[i]=0;    //отмечаем врача как пройденного
       que_sk++;
    }
}
 
if(que_sk==0)       //если в какой-то момент количество врачей, которых можно посетить = 0, то выводим ощибку и завершаем прогу
    goto err;
 
for(k=0;k<n;k++)  // обнуляем колонки матрицы с номерами врачей, которых посетили (чтоб они стали доступны для посещения)
    {
 
       if(que[k]==0)
              for(w=0;w<n;w++)
                   mas[w][k]=0;
    }
}
 
printf("\nResult: ");
for(i=0;i<n;i++)        //печатаем результат
    printf("%d ",result[i]);
system("pause");
return 0;
 
err:        //печатаем ошибку в случае неудачи
    printf("Nevozmozhno sozdatj ocheredj");
    system("pause");
    return 0;
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 05:52
Ответы с готовыми решениями:

Топологическая сортировка на Си!!!!
Народ!Помогите хоть кто-нибудь с курсовой работой на Си!!! Мне нужно сделать программу на тему...

Топологическая сортировка графа
Задали задание, неделю пытаюсь сделать и все никак не выходит, топологическая сортировка из книгу...

Топологическая сортировка графа
Написал программу топологически сортирующую граф с помощью обхода в ширину. Сдал её на информатиксе...

Топологическая сортировка графа
Здравствуйте! Помогите, пожалуйста. Пишу программу для поиска путей на графах между всеми парами...

Задача топологическая сортировка графа
Добрый вечер,предположим задан взвешенный,ориентированный,ациклический граф в виде матрицы...

1
kasan
Чорумфанин
342 / 342 / 320
Регистрация: 06.03.2014
Сообщений: 898
03.06.2014, 12:54 2
откуда у Вас этот код?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 12:54

Топологическая сортировка
Здорова! Тут от вычитал новое понятие &quot;топологическая сортировка&quot;. Вообщем есть задачка нужно...

Топологическая сортировка
Ошибка в строке 34, подскажите как исправить: 'reverse' was not declared in this scope //...

Топологическая сортировка
Требуется организовать топологическую сортировку на примере списка изучаемых дисциплин.Список...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru