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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2011, 17:34   #1
veronik
Новичок
Джуниор
 
Регистрация: 27.09.2011
Сообщений: 2
Смущение ошибка в программе. работает неточно ???

задание звучит так: по заданной матрице смежности неориентированного графа найти все пути между двумя заданными вершинами.
входные данные: в файле in.txt
5 \\размерность матрицы
1 0 1 0 1 \\матрица смежности
0 1 1 0 0
1 1 1 1 1
0 0 1 1 0
1 0 1 0 1
0 \\начальная заданная вершина
2 \\конечная заданная вершина
выходные данные: в файл out.txt
02
042


Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int a[20][20];
int n;
int sp,ep;
int was[20],pom[20];
int *path,cpath;

int graf (int p,int q,int nom)
  {
     int res=0;
     was[p]=1;
     if (q==p) return 1;
     for (int i=0;i<n;i++)
          if (i!=p &&(a[p][i]||a[i][p]) && !was[i] && !pom[i])
              {
	         res=graf(i,q,nom+1);
	         if (res)
	             {
                        if (i!=sp && i!=q) pom[i]=1;   
                        path[nom]=q;            \\<- ошибка возникает при поиске пути, содержащей три вершины и более 
                        cpath++;
                        break;
	             }
              }
      return res;
   };
 
int main(int argc, char *argv[])
   {
      if (argc!=3) {exit (1);}
      int i,j;
      
      FILE *f1=fopen (argv[1],"r");
      fscanf (f1,"%d",&n);
      for (i=0;i<n;i++)
         {
            for (j=0;j<n;j++)
            fscanf(f1,"%d",&a[i][j]);
         }
      fscanf (f1,"%d",&sp);
      fscanf (f1,"%d",&ep);
      
      cpath=0;
      FILE *f2=fopen(argv[2],"w");
          if(a[sp][ep] || a[ep][sp])
             {
                a[ep][sp]=0;
                a[sp][ep]=0;
                fprintf(f2,"%d%d\n",sp,ep);
             }

        while (graf(sp,ep,0))
             {
                for (i=0;i<n;i++) was[i]=0;
                for (j=0;j<cpath;j++)
	            {
	                fprintf (f2,"%d",path[j]);
	            }
      fprintf(f2,"%d\n",ep,cpath);
      cpath=0;
    }
 fclose (f2);
 printf ("\n File: out.txt");
 return 0;
}

Последний раз редактировалось veronik; 28.09.2011 в 16:52.
veronik вне форума Ответить с цитированием
Старый 27.09.2011, 17:39   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

veronik, что не работает? Что должна делать программа? Какие входные данные? Что должно получиться на вы ходе?
И оформите код, как положено. Кнопочка "редактировать", внизу справа.
Я хоть и экстрасенс, но не настолько, что-бы читать мысли на таком расстоянии .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2011, 21:27   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

под path память не выделили
onewho вне форума Ответить с цитированием
Старый 05.11.2011, 14:22   #4
veronik
Новичок
Джуниор
 
Регистрация: 27.09.2011
Сообщений: 2
По умолчанию

еще одна проблема: выводит не все пути, а лишь некоторые из них. не могу разобраться почему?
допустим входные данные:
5
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 0 1 1 1
0
2
тогда выходные такие:
02
012
032
042
0132
0312
0432
0342
01342
но выводит лишь:
02
012
0432
veronik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает команда в программе на ассемблере sunny_alice Помощь студентам 4 11.05.2011 20:25
Авторизация на сайте, в HTTP Analyzer работает в программе нет. Человек_Борща Работа с сетью в Delphi 6 06.12.2010 15:40
не могу разобраться в программе, как она работает SK-Mentos Общие вопросы C/C++ 3 25.11.2010 15:11
Помогите пожалуйста библиотека #include <fstream.h> в программе не работает((( bunya Общие вопросы C/C++ 19 14.01.2009 21:53
не работает удаление и поиск в программе про бинарное дерево Барби Общие вопросы C/C++ 6 24.12.2008 22:20