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

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

Войти
Регистрация
Восстановить пароль
 
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
#1

Ошибка, не видимая компилятором - C++

16.05.2013, 12:30. Просмотров 254. Ответов 4
Метки нет (Все метки)

Добрый день.

Написал программу:

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
 
const int n=7;
 
int b[n][n]=
{
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
}; 
 
int a[n][n]=
{
    0,1,0,1,0,0,0,
    1,0,1,0,0,0,1,
    0,1,0,0,0,1,0,
    1,0,0,0,1,0,1,
    0,0,0,1,0,1,0,
    0,0,1,0,1,0,1,
    0,1,0,1,0,1,0
}; 
int c[n], im[20][n];
int im2[30];
 
 
 
 
void max_ver2 (int k,int q)
{   
    int v = k;
    int s = 0;
    int i;
    for (i = 0;i<n;i++)
    {
        if ((a[v][i] == 1)&&(b[v][i]==22)) s++;
    }
    if (s>=3) b[q][k] = 11; else
    {
     for (i = 0;i<n;i++)
        if ((a[v][i] ==1)||(c[i]==11)) b[v][i] = 11; else b[v][i] = 22;
        
    if (b[v][i] == 22) max_ver2(i,v);
    
    }
    
 
    
}
 
void max_ver (int k)
{   
    int v = k;
    for (int i = 0;i<n;i++)
    {
        if (a[v][i] == 1)
        { b[v][i] = 11;
        c[i]=11;}
        else b[v][i] = 22;
    }
    for (int i = 0;i<n;i++) 
    if (b[v][i] == 22) max_ver2(i,v);
 
    
    
}
 
 
 
int main()
{
    for (int k = 0; k<30;k++)
        im2[k] = 0;
        
    int count = 0;
    int sr=0;
    bool f = false;
    int y,qw;
    int t,t1000;
    int i;
    
     for (t=0;t<n;t++)
        {
          //  if (t==0)
//  for (int y1=0;y1<n;y1++)
//  im[t][y1]=b[t][y1];
//
//          
//if (t==0) qw=1; else qw=0;  
 
t1000 = t;      
            
            for (int t1=0;t1<n;t1++)
                for (int t2=0;t2<n;t2++)
                    {
                        b[t2][t1] = 0;
                        c[t1] = 0;
                     }
                     
                     
        max_ver(t);
        
        
    
          
            
    
            
        for (i=qw;i<n;i++)
        {
             for(y = 0; y<=count;y++)
             {
            
                if (b[i][1]==im[y][1]&&b[i][2]==im[y][2]&&b[i][3]==im[y][3]&&b[i][4]==im[y][4]&&b[i][5]==im[y][5]&&b[i][0]==im[y][0])            
                     f = true;
                if (f==true)
                {
                    im2[y]++;
                    f = false;
                    }
                else
                    {
                        count++;
                        for (int u = 0;u<n;u++)
                            im[count][u] = b[i][u]; 
                     }
              }
        }
                
             for(int j=0;j<n;j++) 
             {
              for(int l=0;l<n;l++)
              printf("%d ",b[j][l]);
              
              printf("\n");
              }
              printf("\n");
              printf("\n");
        }   
                     for (int r1 = 0; r1<20;r1++)
                     printf("%d ",im2[r1]);
                     for (int r1 = 0; r1<20;r1++)
                     {
                     for (int r2 = 0; r2<n;r2++)
                        printf("%d ",im[r1][r2]);
                         printf("\n");
                        }
            getch();
}
В 96 строчке присваиваю значение t переменной t1000 - exe вылетает. По этой же причине закомментированы строчки 89-94. Код полностью компилируется. Компилятор - wxDev-C++.

Что за ошибка, подскажите, пожалуйста?

П.С. Пробовал пробивать через онлайн - компиляторы, то один зависает, другой не открывается.

Добавлено через 20 минут
Маразм крепчает: компилируется код

int t,t1000;
int i;

for (int t=0;t<n;t++)
{}
Это правильно, или я что-то не догоняю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2013, 12:30     Ошибка, не видимая компилятором
Посмотрите здесь:

что с Компилятором - C++
привет) я конечно понимаю что вопрос нубский но всетаки:p у меня есть 2 компилятора VC++ 5.0 VC++ 6.0 бывает я компилю ,а он раз и как-бы...

Помогите с компилятором - C++
Вечер добрый... Помогите советом. Не могу скопилировать программу. Использую для этого Dev C++. Когда пробую компилировать, выходит...

че-то случилось с компилятором - C++
&quot;NEW.exe&quot;: Загружено: &quot;C:\Users\ZETSU\Documents\Visual Studio 2010\Projects\NEW1\Debug\NEW.exe&quot;, Символы загружены. &quot;NEW.exe&quot;: Загружено:...

что-то с компилятором - C++
Кончилась пробная версия вижуал студио 2012, я не знал что можно продлить её и начал качать другую, устанавливал и прервал.. короче после...

IDE с компилятором поддерживающим C++11 - C++
Доброго времени суток. Подскажите, пожалуйста, IDE, в котором компилятор поддерживает стандарт C++11. Пытался поставить g++ 4.8 на...

Проблемка с компилятором (IDE) - C++
Всем привет! В эта тема у меня будет 2 в одном :) Слушайте. Я работаю в Dev C++ (Bloodshed Dev C++), до сих пор работало всё...

Что-то с компилятором... Наверное... - C++
# include &lt;iostream&gt; using namespace std; int main(){ int n,a=0,b=0,c=0,t=0; cin&gt;&gt;n; int j=n,i=n/2; while (j&gt;0){ ...

что то не так с компилятором? - C++
есть класс, который переписан с книги Лафоре Р. #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; class time { ...

Идентификатор не распознается компилятором - C++
В общем есть экземпляр указателя класса который называется Game_menu и расположен в файле class.h. Я этот файл подключил в другом файле...

Как разобраться с компилятором? - C++
Добрый вечер. Хочу попробовать себя в области программирования С ++, скачала книги для самостоятельного изучения, но в них подробно...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.05.2013, 14:42     Ошибка, не видимая компилятором #2
kkk008009kkk, для начала, у Вас переменная qw не инициализирована. А вылетает, вероятно, из-за бесконечной рекурсии. Код вообще жуткий, совершенно не понятно, что он должен делать.
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
16.05.2013, 15:08  [ТС]     Ошибка, не видимая компилятором #3
Tulosba переменная инициализирована: 83 строка.


В общем суть в том, мне нужно решить следующую задачу:

Имеется такой код:

C++
1
2
3
4
5
6
7
8
9
10
 for (t=0;t<n;t++)
{ 
            for (int t1=0;t1<n;t1++)
                for (int t2=0;t2<n;t2++)
                    {
                        b[t2][t1] = 0; //обнуляем глобальную матрицу
                     }
 
                      max_ver(t); //в этом функции глобальная матрица приобретает значения
}


Мне нужно создать новую матрицу и запихнуть туда все уникальные строки матрицы b[n][n] при условии, что номинально матриц b[n][n] n штук(n проходов). То-есть обработка должна идти в этом цикле, так как при каждом проходе старые значения матрицы b[n][n] затираются новыми. Я попробовал это сделать, ну и результат особо не получился.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.05.2013, 15:22     Ошибка, не видимая компилятором #4
Цитата Сообщение от kkk008009kkk Посмотреть сообщение
переменная инициализирована: 83 строка.
Вы путаете инициализацию с определением:
C++
1
2
3
int a; // определение, но без инициализации. Значение не задано.
a = 42; // инициализация. Установка значения.
int b = 100500; // определение и инициализация.
Добавлено через 4 минуты
Цитата Сообщение от kkk008009kkk Посмотреть сообщение
n штук(n проходов)
Предлагаю сначала разобраться с 1 штукой.
Т.е. max_ver() заполняет заполняет матрицу, так?
Какое должно быть правило заполнения?
Что за "магические" 11 и 22?
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
16.05.2013, 16:11  [ТС]     Ошибка, не видимая компилятором #5
Tulosba, Да, спасибо, запомнил.

Предлагаю сначала разобраться с 1 штукой.
Т.е. max_ver() заполняет заполняет матрицу, так?
Какое должно быть правило заполнения?
Что за "магические" 11 и 22?
матрица а - матрица смежности, матрица b - матрица глобальной несмежности для множества вершин(независимое множество вершин). Для каждой вершины в матрице b - строка это независимое множество вершин, которое выходит как множество 22-оек в каждой строке. За каждый проход берется каждая вершина за начальную и ведется поиск. Проблема в том, что алгоритм неоптимален, и получаются мусорные результаты. Все дело в том, что правильные множества встречаются за n проходов более 1 раза, поэтому мне нужно найти все уникальные строки(множества вершин) и посчитать, которые из них встречаются более 1 раза.

Берем первый проход - ищем несмежные для 1 вершины, запоминаем их в матрицу c[n]. Кидаем все см

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void max_ver (int k) // получили номер вершины
{   
    int v = k; // присвоили этот номер переменной v
 
    //ищем смежные вершины, помечаем их как 11, иначе помечаем как 22 и заносим информацию в матрицу С
    for (int i = 0;i<n;i++)
    {
        if (a[v][i] == 1)
        { b[v][i] = 11;
        c[i]=11;}
        else b[v][i] = 22;
    }
    //если вершина несмежна, то для этой вершины ищем не смежные через функцию мах_вер2. Матрица С помогает нам определить какие вершины не нужно смотреть. В идеале нужно составить независимое множество
    for (int i = 0;i<n;i++) 
    if (b[v][i] == 22) max_ver2(i,v);
 
    
    
}
Добавлено через 19 минут
В общем, решил задачу. Причем самое главное - я так и не понял, что делал не так.

Получившийся код:

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
 
const int n=7;
 
int b[n][n]=
{
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,
}; 
 
 int count = 0;
 bool tru;
int a[n][n]=
{
    0,1,0,1,0,0,0,
    1,0,1,0,0,0,1,
    0,1,0,0,0,1,0,
    1,0,0,0,1,0,1,
    0,0,0,1,0,1,0,
    0,0,1,0,1,0,1,
    0,1,0,1,0,1,0
}; 
int c[n], im[20][n];
int im2[100];
int sy=0;
 
 
 
 
void max_ver2 (int k,int q)
{   
    int v = k;
    int s = 0;
    int i;
    for (i = 0;i<n;i++)
    {
        if ((a[v][i] == 1)&&(b[v][i]==22)) s++;
    }
    if (s>=3) b[q][k] = 11; else
    {
     for (i = 0;i<n;i++)
        if ((a[v][i] ==1)||(c[i]==11)) b[v][i] = 11; else b[v][i] = 22;
        
    if (b[v][i] == 22) max_ver2(i,v);
    
    }
    
 
    
}
 
void max_ver (int k)
{   
    int v = k;
    for (int i = 0;i<n;i++)
    {
        if (a[v][i] == 1)
        { b[v][i] = 11;
        c[i]=11;}
        else b[v][i] = 22;
    }
    for (int i = 0;i<n;i++) 
    if (b[v][i] == 22) max_ver2(i,v);
 
    
    
}
 
void max_ver4 (int r[n][n], int t)
{   
int qw=0;
int i;
int y=0;
bool f;
        if (t==0)
  for (int y1=0;y1<n;y1++)
 im[t][y1]=b[t][y1];
 
         
if (t==0) qw=1; else qw=0;  
    
 
    
     for (i=qw;i<n;i++)
        {
             for(y = 0; y<=sy;y++)
             
            
                if ((b[i][1]==im[y][1])&&(b[i][2]==im[y][2])&&(b[i][3]==im[y][3])&&(b[i][4]==im[y][4])&&(b[i][5]==im[y][5])&&(b[i][0]==im[y][0]))            
                     f = true;
                if (f==true)
                {
                    im2[y]++;
                    f = false;
                    }
                else
                    {
                       sy++;
                       for (int u = 0;u<n;u++)
                           im[sy][u] = b[i][u]; 
                     }
                     
        }
    
}
 
 
int main()
{
    for (int k = 0; k<30;k++)
        im2[k] = 0;
        
   
    int sr=0;
    bool f = false;
    int y,qw;
   int t,t1000;
    int i;
    
     for (int t=0;t<n;t++)
        {
                      
                    
                   if (t==0)
                   {
          for (int y1=0;y1<n;y1++)
            im[t][y1]=b[t][y1];
        }
 
         if (t==0) qw=1; else qw=0;  
 
            for (int t1=0;t1<n;t1++)
                for (int t2=0;t2<n;t2++)
                    {
                        b[t2][t1] = 0;
                        c[t1] = 0;
                     }
    
        max_ver(t);
        max_ver4(b,t);
        
 
             for(int j=0;j<n;j++) 
             {
              for(int l=0;l<n;l++)
              printf("%d ",b[j][l]);
              
              printf("\n");
              }
              printf("\n");
              printf("\n");
        }   
                  for(int j=0;j<20;j++) 
             {
              for(int l=0;l<n;l++)
              printf("%d ",im[j][l]);
              printf("\n");
               printf("\n");
              
              }
            getch();
}
Yandex
Объявления
16.05.2013, 16:11     Ошибка, не видимая компилятором
Ответ Создать тему
Опции темы

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