Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
#1

выводит не все пути - C++

01.01.2012, 22:24. Просмотров 533. Ответов 10
Метки нет (Все метки)

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
84
85
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int a[20][20];
int n;
int sp,ep;
int *was,*pom,*path,cpath;
 
FILE *f1;
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]=p;
         cpath++;
         break;
        }
       }
    return res;
};
 
int main(int argc, char *argv[])
{
if (argc!=3) {exit (1);}
 
int i,j,c;
cpath=0;
 
f1=fopen (argv[1],"r");
 
fscanf (f1,"%d",&n);
 
was=new int[n];
pom=new int[n];
path=new int[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);
 
for (i=0;i<n;i++)
{
    was[i]=0;
    pom[i]=0;
}
 
FILE *f2=fopen(argv[2],"w");
 
 if(a[sp][ep] || a[ep][sp])
    {
      c=1;
      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;
    }
if (c==1) {c=0;a[ep][sp]=1;a[sp][ep]=1;}
 
 fclose (f2);
 printf ("\n File: out.txt");
 return 0;
}
входные данные:
5 /размерность
1 0 1 1 0
0 1 1 1 1
1 1 1 0 1
1 1 0 1 1
0 1 1 1 1
2 / начальная вершина
4 /конечная вершина

выходные данные должны быть такими:
24
214
2134
2034
20314
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2012, 22:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос выводит не все пути (C++):

Путь с пробелами не принимается. Не выводит список файлов в пути к которым пробелы(студия 2013, консоль) - C++
Здравствуйте, товарищи! Помогите разобраться, пожалуйста. :) Программа не принимает путь, который содержит пробел. Если ввожу C:\\* –...

Шаблонный класс очереди. Выводит сначала все индексы, потом все элементы - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; const int SIZE=100; template&lt;class X&gt; class queue{ X q; ...

Найти все пути между двумя любыми вершинами в графе - C++
Пожалуйста, очень нужна помощь. Найти все пути между двумя любыми вершинами в графе. В выводе ошибка. Помогите исправить спасибо.

Массив: Почему выводит все в строку? - C++
Почему выводит все в строку? #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; #define N 2 #define M 3 int A,...

Выводит все подряд, а не определенный элемент структуры - C++
void PoiskPoReting(Name NameFile, Auto &amp;Pauto, int flag, char rating) { if (flag) { file = fopen(NameFile, &quot;r+&quot;); while...

Найти все пути шахматного коня между двумя заданными полями, не содержащие повторяющихся полей - C++
Найти все пути шахматного коня между двумя заданными полями, не содержащие повторяющихся полей. ПОМОГИТЕЕЕЕ если кто напишет код...

10
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.01.2012, 05:00 #2
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int a[20][20];
int n;
int sp,ep;
int *was,*pom,*path,cpath;
 
FILE *f1;
void graf (int p, FILE *f2)
{
    int i;
    if(was[ep])
    {
        for(i=0; i<p; i++)
            fprintf(f2, "%d ", path[i]);
        fprintf(f2, "\n");
        return;
    }
    for(i=0; i<n; i++)
        if(a[path[p-1]][i] && !was[i])
        {
            was[i]=1;
            path[p]=i;
            graf(p+1, f2);
            was[i]=0;
        } 
}
 
int main(int argc, char *argv[])
{
if (argc!=3) {exit (1);}
 
int i,j,c;
cpath=0;
 
f1=fopen (argv[1],"r");
 
fscanf (f1,"%d",&n);
 
was=new int[n];
pom=new int[n];
path=new int[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);
 
for (i=0;i<n;i++)
{
        was[i]=0;
        pom[i]=0;
}
 
FILE *f2=fopen(argv[2],"w");
path[0]=sp; was[sp]=1;
for(i=0; i<n; i++)
    if(a[sp][i] && i!=sp)
    {
        was[i]=1;
        path[1]=i;
        graf(2, f2);
        was[i]=0;
    } 
 
 fclose (f2);
 printf ("\n File: out.txt");
 return 0;
}
1
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 13:35  [ТС] #3
LINK : LNK6004: Debug/1.exe not found or not built by the last incremental link; performing full link
что это за ошибка?
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.01.2012, 13:48 #4
geronik, А Ваш код нормально компилировался?
0
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 14:05  [ТС] #5
нет, эта ошибка выводилась изначально в моем коде. в чем проблема?
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.01.2012, 14:09 #6
geronik, компилятор какой? И откуда тогда Вы узнали что выводит не все пути?
0
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 14:54  [ТС] #7
компилятор Microsoft Visual C++ 6.0. программа сама по себе работала, и выводились пути в файл, но не все. так, например, с прошлыми данными выводится только
24
20314
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.01.2012, 15:00 #8
geronik, Специально для Вас проверил на Microsoft Visual C++ 6.0
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int a[20][20];
int n;
int sp,ep;
int *was,*pom,*path,cpath;
 
FILE *f1;
void graf (int p, FILE *f2)
{
        int i;
        if(was[ep])
        {
                for(i=0; i<p; i++)
                        fprintf(f2, "%d ", path[i]);
                fprintf(f2, "\n");
                return;
        }
        for(i=0; i<n; i++)
                if(a[path[p-1]][i] && !was[i])
                {
                        was[i]=1;
                        path[p]=i;
                        graf(p+1, f2);
                        was[i]=0;
                } 
}
 
int main(int argc, char *argv[])
{
if (argc!=3) {exit (1);}
 
int i,j,c;
cpath=0;
 
f1=fopen ("input.txt","r");
 
fscanf (f1,"%d",&n);
 
was=new int[n];
pom=new int[n];
path=new int[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);
 
for (i=0;i<n;i++)
{
        was[i]=0;
        pom[i]=0;
}
 
FILE *f2=fopen("output.txt","w");
path[0]=sp; was[sp]=1;
for(i=0; i<n; i++)
        if(a[sp][i] && i!=sp)
        {
                was[i]=1;
                path[1]=i;
                graf(2, f2);
                was[i]=0;
        } 
 
 fclose (f2);
 printf ("\n File: out.txt");
 return 0;
}
Создаете в папке с проектом файл input.txt
В нем записываете:
5
1 0 1 1 0
0 1 1 1 1
1 1 1 0 1
1 1 0 1 1
0 1 1 1 1
2
4
Запускаете. Файл output.txt в том же месте создаст сама программа, открываете и видите:
2 0 3 1 4
2 0 3 4
2 1 3 4
2 1 4
2 4
0
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 15:09  [ТС] #9
проблем с выводом данных нет и у меня. меня просто смущает запись об этой ошибке.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
02.01.2012, 15:12 #10
geronik, попробуйте создать новый проект, скопируйте туда код и запускайте.
1
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 15:14  [ТС] #11
спасибо. безумно благодарна
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 15:14
Привет! Вот еще темы с ответами:

Структура Trains, вывести все сведения о поездах, время пребывания в пути которых превышает 7 часов 10 мин - C++
Есть задание:&quot;Вывести все сведения о поездах,время пребывания в пути которых привышает 7ч 10.мин используя структуру Я начал писать...

Написать программу, которая выводит все числа Мерсенна - C++
Написать программу, которая выводит все числа Мерсенна от 1 до n. Простое число называется числом Мерсенна, если его можно представить в...

Все компилируется, ничего не работает, cout не выводит текст - C++
Приветствую! Проблема заключается в следующем: Ни разу не срабатывает строка из первого же цикла. cout &lt;&lt; &quot;Fibonacci_int(&quot; &lt;&lt; i &lt;&lt; &quot;) =...

вводит с клавиатуры все элементы массива а(10), а выводит только четные. - C++
Прошу помоч написать программу на языке С в борланде. Условие: Напишыте программу (полностью), которая вводит с клавиатуры все элементы...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
02.01.2012, 15:14
Ответ Создать тему
Опции темы

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