Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
1

при заполнении Memo1 у меня получилась ошибка...и немогу испраить её(((

08.06.2011, 17:08. Показов 1907. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне надо "Показать результаты: последовательности перемещения и величины кратчайших путей", т.е.
заполнить memRes (это у меня Memo1). Написала код,но у меня выводит ошибки.... Помогите, пожалуйста исправить)))))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::ShowResults(TObject *Sender)
{
 int k, last;
 String str;
 int i, j;
 
  memRes->Lines->Clear();
  for (k=0; k<=towncount-1; k++){
 
    str = lbTowns->Items->Count(k)+" ("+IntToStr(Paths[k])+")"; //[C++ Error] Unit1.cpp(242): E2314 Call of nonfunction
    last = Nodes[k];
    }
    while (last!=first) {
 
      str = lbTowns->Items->Count(last)+" => "+str; //[C++ Error] Unit1.cpp(247): E2314 Call of nonfunction
      last = Nodes[last];
    }
    str = lbTowns->Items->Count[first]+" => "+str; //[C++ Error] Unit1.cpp(250): E2062 Invalid indirection
    memRes->Lines->Add(str);
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2011, 17:08
Ответы с готовыми решениями:

У меня ошибка при заполнении таблицы через интерфейс
У меня на сайте уже есть БД с таблицей dbhv. Сам сайт состоит из 6 страниц, где есть 1 страница...

Не знаю как переделать программу которая у меня получилась написанной с использованием синглтона
Здравствуйте. Я написал программу(это клиентское приложение почтовик) и вдруг обнаружилось что я...

Ошибка при заполнении
Почему выбивает ошибку &quot;Индекс находился вне границ массива.&quot; ???? using System; using...

Ошибка при заполнении
Помогите определить где ошибка, так как какое число я не ввожу выводится в конце именно оно. Как...

20
LK
Заблокирован
08.06.2011, 17:35 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
void __fastcall TForm1::ShowResults(TObject *Sender)
{
 int k, last;
 String str;
 int i, j;
 
  memRes->Lines->Clear();
  for (k=0; k<=towncount-1; k++){
 
    str = lbTowns->Items->Count+ // может lbTowns->Items-Strings[k]
          " ("+
          IntToStr(Paths[k])+
          ")";
    //[C++ Error] Unit1.cpp(242): E2314 Call of nonfunction
    last = Nodes[k];
    }
    while (last!=first) {
 
      str = lbTowns->Items->Count(last)+ // может lbTowns->Items-Strings[last]
            " => "
            +str; //[C++ Error] Unit1.cpp(247): E2314 Call of nonfunction
      last = Nodes[last];
    }
    str = lbTowns->Items->Count[first]+ // может lbTowns->Items-Strings[first]
          " => "
          +str;
    //[C++ Error] Unit1.cpp(250): E2062 Invalid indirection
    memRes->Lines->Add(str);
 
}
lbTowns->Items->Count - это просто общее количество строк в листбоксп
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 17:55  [ТС] 3
Li
, помогите!!! У меня не заполняется шапка StrinGrid городами.....Код для заполнения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::btnSetTownsClick(TObject *Sender)
{
int i;
  sgWeights->ColCount = lbTowns->Items->Count+1;
  sgWeights->RowCount = lbTowns->Items->Count+1;
  for (i=0; lbTowns->Items->Count-1;i++){
 
    sgWeights->Cells[i+1][0] = lbTowns->Items->Strings[i];
    sgWeights->Cells[0][i+1] = lbTowns->Items->Strings[i];
   }
 
}
Помогите, пожалуйста.....

Добавлено через 3 минуты
Только подчеркивает єту строчку синенькой полосочкой
C++
1
sgWeights->Cells[i+1][0] = lbTowns->Items->Strings[i];
0
LK
Заблокирован
08.06.2011, 17:58 4
C++
1
2
sgWeights->Cells[i][0] = lbTowns->Items->Strings[i]; // строки
sgWeights->Cells[0][i] = lbTowns->Items->Strings[i]; // столбики
ошибок нет?
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 18:00  [ТС] 5
Всё равно не заполняет и подчеркивает єту строчку
sgWeights->Cells[i][0] = lbTowns->Items->Strings[i]; // строки
0
LK
Заблокирован
08.06.2011, 18:00 6
блин!!
C++
1
for (i=0; lbTowns->Items->Count-1;i++){
==
for (i=0; i <= lbTowns->Items->Count-1;i++){
N@dyush@, больше такое исправлять не буду, или будьте внимательней, или - в детский сад, там есть няни .
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 18:18  [ТС] 7
И еще, последнее)))
При нажатии на кнопку btnGoClick у меня не віполняется функция
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::btnGoClick(TObject *Sender)
{
towncount = lbTowns->Items->Count();
  GetWeightsMatrix(); // перебрасываем пути в матрицу
  FirstCountStep(); // инициализируем расчет
  GoCount(); // запускаем расчет
  ShowResults(); // результаты - в мемо
}
Все эти перечисленніе процедурки я в h. загнала.....
0
LK
Заблокирован
08.06.2011, 18:25 8
а самі функціїї, крім прототипів і застосування , у ває є ? визначені, описані, з "тілами" ?
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 18:25  [ТС] 9
Есть....
0
LK
Заблокирован
08.06.2011, 18:27 10
показівайте ...
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 18:29  [ТС] 11
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
 void __fastcall TForm1::FirstCountStep(TObject *Sender)
{
 
 int i;
  first = -1;
  for (i=0; i<=towncount-1; i++){
 
    if (lbTowns->Selected[i]) {
      first = i;
      }
  if (first==-1) {
 
    MessageDlg("Ошибка: вы не выбрали начальный город в списке!",
      mtError,TMsgDlgButtons()<<mbOK, 0);
    exit;
    }
 
  lblFirstTown->Caption = lbTowns->Items->Count; {
  for (i=0; i<=towncount-1; i++){
 
    Ready[i] = false; // еще ничего не посчитано
    Nodes[i] = first; // все как будто напрямую
 
    Paths[i] = Weights[first][i]; // прямые пути
   }
  }
 }
}
 void __fastcall TForm1::GoCount(TObject *Sender)
{
 int k, cur;
  while (k!=AllAreReady()){
    cur = GetMinPath();
    Ready[cur] = true;
    for (k=0; k<=towncount-1; k++) {
 
      if ((Ready[k]==false)&&(Paths[k]>(Paths[cur]+Weights[cur][k]))){
 
        Paths[k] = Paths[cur]+Weights[cur][k];
        Nodes[k] = cur;
       }
     }
    }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ShowResults(TObject *Sender)
{
 int k, last;
 String str;
 int i, j;
 
  memRes->Lines->Clear();
  for (k=0; k<=towncount-1; k++){
 
    str = lbTowns->Items->Count+" ("+IntToStr(Paths[k])+")";
    last = Nodes[k];
    }
    while (last!=first) {
 
      str = lbTowns->Items->Count+" => "+str;
      last = Nodes[last];
    }
    str = lbTowns->Items->Count+" => "+str;
    memRes->Lines->Add(str);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetWeightsMatrix(TObject *Sender)
{
 int i,j,MAXPATH;
    for (i=0;i<=towncount-1;i++){
    Weights[i][i] = '0'; // из города в сам себя
 
    for (i=0; i<=towncount-1; i++){
    for (j=i+1; j<=towncount-1; j++) {
 
      if (sgWeights->Cells[i+1][j+1]=="") {
 
        Weights[i][j]=MAXPATH+1; // считаем, что это бесконечность
        Weights[j][i]=MAXPATH+1; // симметрия
        }
 
 
      else
          {
          Weights[i][j]=StrToInt(sgWeights->Cells[i+1][j+1]);
        }
 
          MessageDlg("Ошибка: значение в таблице не является целым числои!",mtError,
           TMsgDlgButtons()<<mbOK, 0);
          exit;  // неотрицательное?
          }
       if (Weights[i][j]<0){
          MessageDlg("Ошибка: значение в таблице не является неотрицательным!",
            mtError,TMsgDlgButtons()<<mbOK, 0);
          exit;
        // симметричная матрица
 
        Weights[j][i] = Weights[i][j];
        } // else
      }
 
  }
 
}
//---------------------------------------------------------------------------
0
LK
Заблокирован
08.06.2011, 18:54 12
сначала смотрите и сравниваете, я посмотрел только синтасис, в логику ваших функций особо не вникал, мои исправления обозначены // !!!
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
 void __fastcall TForm1::FirstCountStep(TObject *Sender)
{
  int i;
  first = -1;
  for (i=0; i<=towncount-1; i++) {
    if (lbTowns->Selected[i]) {
      first = i;
    }
    if (first == -1) {
      MessageDlg("Ошибка: вы не выбрали начальный город в списке!",
                 mtError,TMsgDlgButtons()<<mbOK, 0);
      return; // !!! исправлено
    }
    lblFirstTown->Caption = lbTowns->Items->Count; // !!! убрал скобку
    for (i=0; i<=towncount-1; i++){
      Ready[i] = false; // еще ничего не посчитано
      Nodes[i] = first; // все как будто напрямую
      Paths[i] = Weights[first][i]; // прямые пути
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GoCount(TObject *Sender)
{
  int k, cur;
  while (k!=AllAreReady()) {
    cur = GetMinPath();
    Ready[cur] = true;
    for (k=0; k<=towncount-1; k++) {
      if ((Ready[k]==false) && (Paths[k] > (Paths[cur]+Weights[cur][k]) ) ) {
        Paths[k] = Paths[cur] + Weights[cur][k];
        Nodes[k] = cur;
      }
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ShowResults(TObject *Sender)
{
  int i, j, k, last;
  String str;
//  int i, j;
  memRes->Lines->Clear(); // !!! - это что ? Мемо ?
  // Если Мемо, можно просто memRes->Clear(); , не существенно
  for (k=0; k<=towncount-1; k++) {
    str = IntToStr(lbTowns->Items->Count) + // добавил IntToStr
          // может в данном и ниже случаях вместо
          // lbTowns->Items->Count должно быть
          // lbTowns->Items->КакаяТоСтрока ?
          " (" + IntToStr(Paths[k]) + ")";
    last = Nodes[k];
  }
  while (last!=first) {
    str = IntToStr(lbTowns->Items->Count)+ // добавил IntToStr
          " => "+str; 
    last = Nodes[last];
  }
  str = IntToStr(lbTowns->Items->Count)+" => "+str; // добавил IntToStr
  memRes->Lines->Add(str);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetWeightsMatrix(TObject *Sender)
{
  int i,j;
      // MAXPATH; // !!! зачем MAXPATH - оно у вас
      // должно уже быть в самом верху
      // int MAXPATH = 1000; , по-моему
  for (i=0; i<=towncount-1; i++) {
    Weights[i][i] = 0; // !!! исправлено на 0 , из города в сам себя
//    for (i=0; i<=towncount-1; i++) { // !!! для чего второй
    // аналогичный цикл ??? 
    for (j=i+1; j<=towncount-1; j++) {
       if (sgWeights->Cells[i+1][j+1]=="") {
        Weights[i][j]=MAXPATH+1; // считаем, что это бесконечность
        Weights[j][i]=MAXPATH+1; // симметрия
      }
      else { // !!! исправил
        Weights[i][j]=StrToInt(sgWeights->Cells[i+1][j+1]);
        MessageDlg("Ошибка: значение в таблице не является целым числои!",mtError,
                   TMsgDlgButtons()<<mbOK, 0);
        return;  // !!! исправил exit;  // неотрицательное?
      } // !!! исправил
    }
    if (Weights[i][j]<0){
      MessageDlg("Ошибка: значение в таблице не является неотрицательным!",
                 mtError,TMsgDlgButtons()<<mbOK, 0);
      return; // !!! исправил exit;
     }  // !!! исправил
    // симметричная матрица
    Weights[j][i] = Weights[i][j];
//        } // else
//  } // второй аналогичный
  } // конец for(i=0;i<=towncount-1;i++)
}    
//---------------------------------------------------------------------------
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 19:30  [ТС] 13
А что Вы здесь изменили?

Добавлено через 50 секунд
Ой, извините, уже вижу))

Добавлено через 14 минут
Я поисправляла, но оно всё равно не считает(((
0
LK
Заблокирован
08.06.2011, 19:32 14
ошибки, предупреждения ?
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 19:37  [ТС] 15
Вы сказали, что можно вместо
Count
в строке
C++
1
 str = IntToStr(lbTowns->Items->Count) +
поставить какую-то другую строку..... Какою Вы имели ввиду?

Добавлено через 4 минуты
Одно предупреждение:
[C++ Warning] Unit1.cpp(126): W8066 Unreachable code
в строке
C++
1
Weights[j][i] = Weights[i][j];
функции void __fastcall TForm1::GetWeightsMatrix(TObject *Sender)
0
LK
Заблокирован
08.06.2011, 20:07 16
вы читаете не все сообщения, и не всё в сообщениях?
Цитата Сообщение от LK Посмотреть сообщение
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
void __fastcall TForm1::ShowResults(TObject *Sender)
{
 int k, last;
 String str;
 int i, j;
 
  memRes->Lines->Clear();
  for (k=0; k<=towncount-1; k++){
 
    str = lbTowns->Items->Count+
          // !!! может lbTowns->Items-Strings[k]
          " ("+
          IntToStr(Paths[k])+
          ")";
    //[C++ Error] Unit1.cpp(242): E2314 Call of nonfunction
    last = Nodes[k];
    }
    while (last!=first) {
 
      str = lbTowns->Items->Count(last)+
              // !!! может lbTowns->Items-Strings[last]
              " => "
            +str; //[C++ Error] Unit1.cpp(247): E2314 Call of nonfunction
      last = Nodes[last];
    }
    str = lbTowns->Items->Count[first]+
          // !!! может lbTowns->Items-Strings[first]
          " => "
          +str;
    //[C++ Error] Unit1.cpp(250): E2062 Invalid indirection
    memRes->Lines->Add(str);
 
}
lbTowns->Items->Count - это просто общее количество строк в листбоксп
Добавлено через 5 минут
C++
1
2
3
4
5
6
7
    if (Weights[i][j]<0){
      MessageDlg("Ошибка: значение в таблице не является неотрицательным!",
                 mtError,TMsgDlgButtons()<<mbOK, 0);
      return; // !!! исправил exit;
     }  // !!! исправил
    // симметричная матрица
    else Weights[j][i] = Weights[i][j];
Добавлено через 20 минут
или (потому как 2 = 5 это нонсенс)
C++
1
2
3
    else 
      int tmp = Weights[i][j];
      Weights[j][i] = tmp;
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 20:10  [ТС] 17
Всё равно не рассчитывает(((
0
LK
Заблокирован
08.06.2011, 20:12 18
печально
0
7 / 7 / 0
Регистрация: 04.06.2010
Сообщений: 194
08.06.2011, 20:13  [ТС] 19
А как мне печально..... Завтра надо сдать эту работу, а она не работает((((((((((
0
LK
Заблокирован
08.06.2011, 20:24 20
а вы из оригинала ничего не забыли - массивы пообъявлять , переменные на свои места поставить , функции-прототипы и .т.д., а то я ночью смотрел полный делфи код и ваш - увы, у вас отсебятины достаточно
0
08.06.2011, 20:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2011, 20:24
Помогаю со студенческими работами здесь

Ошибка при заполнении массива
Помогите пожалуйста решить проблему: Это программа для игры в крестики нолики. В первой функции...

Ошибка при заполнении массива
Нужно заполнить массив в четных индексах 1-цей , а в нечетных значением i / 5; using System;...

Ошибка при заполнении DataGridView
Всем привет! Вроде все просто заполнить базу в форме 2 тексбухстами из 3 формы! Ошибка! В чем...

Ошибка при заполнении массива
Есть код: Random r = new Random(); int k = r.Next(0, 10000); int kk = { k }; for (int i = 0; i...

Ошибка при заполнении полей
Доброго времени) Delphi7+Access Ошибка &quot;...не может содержать значение Null, так как свойство...

Ошибка при заполнении ListBox
Всем привет! Заполняю ListBox из базы данных следующим способом: var i: integer; begin...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru