Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 14 / 1
Регистрация: 29.05.2015
Сообщений: 61
1

Подскажите причину ошибки во фрагменте, аналогичный которому выше выполняется нормально

10.06.2015, 01:01. Просмотров 296. Ответов 6
Метки нет (Все метки)

Проблема в строке 116.
Вместо
C
1
if (kursor[i][j][2]==milkis[1][1][1]||(kursor[i][j][2]==milkis[1][1][2]))
должно быть
C
1
if (kursor[i][j][2]==milkis[1][1][1]||(kursor[i][j][2]==milkis[1][1][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
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
169
170
171
#include <iostream>
#include <conio.h>
#include <vector>
#include <string> 
using namespace std;
 
//---------------------------------------------------------------------------
int main()
{
    int g, q, f, yyy, i, j, found, neededj, hordim, verdim,domr1,domr2; 
    char  answer1[100]; 
    std::vector<std::vector<std::string> > stroka(hordim,std::vector<std::string>(verdim));
 
 cout << "Enter the string needed to transform\n";
       cin >> stroka[0][0];
 cout << "what's the horizontal dimension of Turing mashine's table?\n";
       cin >> hordim;
 cout << "Okay, and what's about vertical dimension?\n";
       cin >> verdim;
 
std::vector<std::vector<std::string> > array(hordim,std::vector<std::string>(verdim));
std::vector<std::vector<std::string> > kursor(hordim,std::vector<std::string>(verdim));
std::vector<std::vector<std::string> > mil(hordim,std::vector<std::string>(verdim));
std::vector<std::vector<std::string> > milkis(hordim,std::vector<std::string>(verdim));
std::vector<std::vector<std::string> > aero(hordim,std::vector<std::string>(verdim));
 
 cout << "Please enter the content to each cell. \n";
 cout << "Do you need an examle how to do this?\n";
      cin >> answer1;
 
if (strcmp("Y",answer1)==0||strcmp( "y",answer1)==0|| strcmp( "yes",answer1)==0 || strcmp("YES",answer1)==0||strcmp("Yes",answer1)==0)
{
 cout << "Attention!\n";
 cout << "First string of array must to contain all the symbols used in entered string\n";
 cout << "The cells of main table have to contain the bunch of 3 positions:\n";
 cout << "The number of next condition as first position;\n";
 cout << "The symbol for which it changes as second position;\n";
 cout << "The character of motion direction  as last position;\n";
 cout << "EXAMLE:\n";
 cout << "S: || 0 | M | Q | $ | 3 |\n";
 cout << "----------------------------" << endl;
 cout << "S0: |2QL 3Mr 2$R 33L 10l|\n";
 cout << "----------------------------" << endl;
 cout << "S1: |1QL 1Mr 2$R 33L 30l|\n";
 cout << "----------------------------" << endl;
 cout << "S2: |0QL 3Mr 2$R 03L 2Kl|\n";
 cout << "----------------------------" << endl;
 cout << "S3: |0QL 0Mr 1$R 33L 0Kl|\n";
 cout << endl << "----------------------------" << endl;
 }
 
for (i = 0; i < hordim; i++)
    {
        for (j = 0; j < verdim; j++)
        {cin >> array[i][j]; }
    }
         
for (j = 0; j < verdim; j++)
    {
    if (array[0][j].length()!=1)
    {cout<<"YOU VIOLATE ENTER CONDITIONS IN ["<<i<<"] ["<<j<<"] ARRAY'S ELEMENT!\n";}
    }    
 
for (j = 0; j < verdim; j++)
    {
    found=array[0][j].find(stroka[0][0][0]);
    if (found==0) 
    {neededj=j;}
    }  
 
q=0; 
i=0; 
j=0; 
 
 cout<<"neededj = "<<neededj<<"\n";
kursor[i][j]="";
 cout<<"kursor[i][j] = "<<kursor[i][j]<<"\n";
 cout<<"array[1][neededj] = "<<array[1][neededj]<<"\n";
kursor[i][j]=array[1][neededj];
 cout<<"kursor[i][j] = "<<kursor[i][j]<<"\n";
 
mil[1][1]="Ll";
milkis[1][1]="Rr"; 
aero[0][0] ="---"; 
 
if(kursor[i][j]!=aero[0][0])
{
    stroka[0][0][q]=kursor[i][j][0];
    cout<<stroka[0][0]<<"\n";
 
    if(kursor[i][j][2]==mil[1][1][1]||(kursor[i][j][2]==mil[1][1][0])) 
    {q--;}
 
    if(kursor[i][j][2]==milkis[1][1][1]||(kursor[i][j][2]==milkis[1][1][0]))
    {q++;}
 
    i=kursor[i][j][1];
    if (i==48) {i=0;}; if (i==49) {i=1;}; if (i==50) {i=2;}; if (i==51) {i=3;}; if (i==52) {i=4;};
    if (i==53) {i=6;}; if (i==54) {i=7;}; if (i==55) {i=8;}; if (i==56) {i=9;};
 
    cout<<i<<"\n";
    cout<<q<<"\n";
 
    if(kursor[i][j][2]==mil[1][1][1]||(kursor[i][j][2]==mil[1][1][0])) 
      { 
      for (yyy = 0; yyy < verdim; yyy++)
           {
            found=array[0][yyy].find(stroka[0][0][q+1]);
            if (found==0) {j=yyy;}
            } 
      cout<<j<<"\n";
      }   
 
     else
 
     if (kursor[i][j][2]==milkis[1][1][1]||(kursor[i][j][2]==milkis[1][1][2]))
    { 
    for (yyy = 0; yyy < verdim; yyy++)
        {
        found=array[0][yyy].find(stroka[0][0][q-1]);
        if (found==0) {j=yyy;}
         } 
    cout<<j<<"\n";}   
    }  
 
  
if (kursor[i][j]!=aero[0][0])
   {   
    cout<<array[i][j]<<"\n";
    stroka[0][0][q]=array[i][j][0];
    cout<<stroka[0][0]<<"\n";
 
    if (array[i][j][2]==mil[1][1][1]||(array[i][j][1]==mil[1][1][2])) 
    {q--;}
    if (array[i][j][2]==milkis[1][1][1]||(array[i][j][1]==milkis[1][1][2]))
    {q++;}
 
    i=array[i][j][1];
    if (i==48) {i=0;}; if (i==49) {i=1;}; if (i==50) {i=2;}; if (i==51) {i=3;}; if (i==52) {i=4;};
    if (i==53) {i=6;}; if (i==54) {i=7;}; if (i==55) {i=8;}; if (i==56) {i=9;};
 
    cout<<i<<"\n";
    cout<<q<<"\n";
 
    if (array[i][j][2]==mil[1][1][1]||(array[i][j][1]==mil[1][1][2])) 
      { 
        for (yyy = 0; yyy < verdim; yyy++)
            {
            found=array[0][yyy].find(stroka[0][0][q+1]);
            if (found==0){j=yyy;}
             } 
        cout<<j<<"\n";
       }   
 
 else
 
    if (array[i][j][2]==milkis[1][1][1]||(array[i][j][1]==milkis[1][1][2]))
       { 
       for (yyy = 0; yyy < verdim; yyy++)
            {
            found=array[0][yyy].find(stroka[0][0][q-1]);
            if (found==0) {j=yyy;}
        } 
  cout<<j<<"\n";}    
}    
    
//---------------------------------------------------------------------------
getch();
return 0;
}
//--------------------------------------------------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2015, 01:01
Ответы с готовыми решениями:

Подскажите причину ошибки System.IndexOutRangeException
Здравстуйте. Задача подключиться в SQL серверу и вывести результат в &quot;TreeView&quot; Вот код: using...

Подскажите пожалуйста причину синтаксической ошибки в запросе
Произвел подключение к серверу mysql через jdbc драйвер. При отправке запросов create database,...

Что выполняется в фрагменте кода?
кто может прокомментировать последовательность команд: xor eax, eax mov ebp, eax Синтаксис...

Что выполняется в фрагменте кода?
foo: cmp $0, %edi jg calc mov $1, %eax jmp exit calc: push %edi sub $1, %edi call...

6
lss
935 / 863 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
10.06.2015, 01:08 2
У тебя компилятор ничего не пишет насчёт этого:
C++
1
2
3
int g, q, f, yyy, i, j, found, neededj, hordim, verdim,domr1,domr2; 
char  answer1[100]; 
std::vector<std::vector<std::string> > stroka(hordim,std::vector<std::string>(verdim)); // какие значения у hordim и verdim?
0
0 / 14 / 1
Регистрация: 29.05.2015
Сообщений: 61
10.06.2015, 01:13  [ТС] 3
lss, нет, Dev-c++ молчит
0
lss
935 / 863 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
10.06.2015, 01:29 4
Цитата Сообщение от Tranquilllity Посмотреть сообщение
Dev-c++ молчит
В параметрах проекта, Компилятор, Code Warnings, установи Show most warnings (-Wall).
1
0 / 14 / 1
Регистрация: 29.05.2015
Сообщений: 61
10.06.2015, 01:33  [ТС] 5
Даже не знаю, изменила, конечно, на
C
1
2
3
4
5
6
7
8
9
 cout << "what's the horizontal dimension of Turing mashine's table?\n";
       cin >> hordim;
 cout << "Okay, and what's about vertical dimension?\n";
       cin >> verdim;
       
           std::vector<std::vector<std::string> > stroka(hordim,std::vector<std::string>(verdim));   
                           
 cout << "Enter the string needed to transform\n";
       cin >> stroka[0][0];
от греха подальше, но за три дня работы со stroka у меня проблем не возникало
0
lss
935 / 863 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
10.06.2015, 01:41 6
Цитата Сообщение от Tranquilllity Посмотреть сообщение
но за три дня работы со stroka у меня проблем не возникало
Из этого не следует правильность написанного кода.
0
0 / 14 / 1
Регистрация: 29.05.2015
Сообщений: 61
10.06.2015, 01:47  [ТС] 7
Не спорю.
Благодарю за совет, буду иметь ввиду в будущем.
Но это все равно оффтоп, - а из ситуации я как то так выкрутилась
C
1
2
3
4
5
6
7
8
9
10
if(kursor[i][j][2]==mil[1][1][1]||(kursor[i][j][2]==mil[1][1][0])) 
      {l=q+1;} 
      else {l=q-1;}
      for (yyy = 0; yyy < verdim; yyy++)
           {
            found=array[0][yyy].find(stroka[0][0][l]);
            if (found==0) {j=yyy;}
            } 
      cout<<j<<"\n";
      }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2015, 01:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Что выполняется в данном фрагменте кода
print: ;вывод массива на экран push n push offset array push offset messageString...

Сколько раз выполняется цикл в данном фрагменте программы?
Сколько раз выполняется цикл в данном фрагменте программы? f=1. m=5 n=1 ...

Что выполняется в приведённом фрагменте кода (дизассемблирование программы на C++)
Подскажите, пожалуйста, что делает данный ASM-код. 0x4019df: c7 45 fc 01 00 00 00 ...


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

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

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