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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 21:03   #1
максим161
Новичок
Джуниор
 
Регистрация: 18.02.2013
Сообщений: 1
Радость Цикл в орграфе

Дан орграф в виде количества вершин n<=10 и матрицы смежности.Необходимо:проверить,суще ствует ли цикл,проходящий через заданную вершину А.Для хранения очередного пути при обходе графа использовать стек.
За вершину А я принял вершину 0(нулевую).Написал условие для частного случая,что у меня будет существовать цикл проходящий через вершины 0-1,1-2,2-0.Если условие выполниться,то х присвоиться 1(цикл существует),иначе цикла нет.После этого мы заносим наши значения в стек,после завершения стек должен вывестись на экран,но в программе выводиться лишь первый элемент матрицы смежности.
Прошу,помогите решить проблему,ошибка либо в цикле,либо еще где-то.Буду благодарен,если поможете усовершенствовать само условие,ибо я бессилен.



Код:
#include <stdio.h>
#include <conio.h>
#define NMAX 10
#define RMAX 10
#define N 100
 
/* Funkciya vvoda matrici smegnosti*/
 
void VVOD_MATR_SM(int g1[NMAX][NMAX],int n)
{int i,j;
printf("Vvedite matricu smegnosti:\n\n");
printf(" |");
for(j=0;j<n;j++) printf("%d ", j);
putchar('\n');
for(i=0;i<2*n+2;i++) putchar('-');
for(i=0;i<n;i++)
{printf("\n%d|",i);
for(j=0;j<n;j++) scanf("%d",g1[i][j]);
}
putchar('\n');
}
 
void Proverka(int g1[NMAX][NMAX],int n);
 
/*Glavnaya funkciya*/
 
void main()
{int g1[NMAX][NMAX];
int n;
int st[N];
int i,j;
printf("\n Vvedite kol-vo vershin:");
scanf("%d",&n);
VVOD_MATR_SM(g1,n);
printf("\n Stek:%d",st[N]);
getch();
}
 
/*Funkciya proverki vershin*/
 
void Proverka(int g1[NMAX][NMAX],int n)
{int i,j;
int st[N];
int ist;
int x;
ist=-1;
for(i=0;i<n;i++)
{for(j=0;j,n;j++)
{if(g1[i][j]==1 && g1[i+1][j+1]==1 && g1[i+2][j-1]==1)
(x=1);
else
(x=0);
if(ist<N-1)
{ist++;
st[ist]=x;}
else
printf("Stek perepolnen");
getch();
}
}
}
максим161 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Алгоритм] Игра на орграфе Rhianin Помощь студентам 1 11.04.2011 07:22
Поиск циклов в орграфе Usr Помощь студентам 0 14.01.2011 14:05
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34