Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
1

Ошибка E2062 Invalid indirection

09.04.2012, 11:02. Показов 5165. Ответов 3
Метки нет (Все метки)

необходимо создать в программе двумерный динамический массив любого типа и заданной с экрана размерности, заполнить его, обработать и освободить занятую массивом память. Для резервиро-вания памяти использовать системную функцию malloc(), а для освобождения - free(). Для этого в форму добавить кнопки «Создать», «Заполнить», «Обработать», «Вывести», «Освободить».
вот код:
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
#include <vcl.h>
#pragma hdrstop
#include<stdio.h>
#include "lab8Form.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm8 *Form8;
//---------------------------------------------------------------------------
         int*   data;
int         rows;
int         cols;
 
 
__fastcall TForm8::TForm8(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm8::create_btClick(TObject *Sender)
{
     sscanf(rows_fl->Text.c_str(),"%d", &rows);
   sscanf(cols_fl->Text.c_str(),"%d", &cols);
 
   data = (int*)malloc(sizeof(int)*rows*cols);
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm8::load_btClick(TObject *Sender)
{
      for(int i = 0; i < rows; i++)
      for(int j = 0; j < cols; j++)
      data[i*cols+j] = i*cols+j; //
}
//---------------------------------------------------------------------------
 
void __fastcall TForm8::calc_btClick(TObject *Sender)
{
  for(int i = 0; i < rows; i++)
  for(int j = 0; j < cols; j++)
  data[i*cols+j] *= 10;      //
}
//---------------------------------------------------------------------------
 
void __fastcall TForm8::convert_btClick(TObject *Sender)
{
   for(int i = 0; i < rows; i++)
      for(int j = 0; j < cols; j++)
          data[i][j] = (i+1)*10+(j+1)*0.01; //
 
   res_fl->Clear();
 
   for(int i = 0; i < rows; i++)
   {
      char line[256];
     strcpy(line, "");
 
      for(int j = 0; j < cols; j++)
      {
         char buf[32];
         sprintf(buf, "%d", data[i][j]);
        strcat(line, buf);
      }
 
      res_fl->Lines->Add(line);
   }
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm8::clear_btClick(TObject *Sender)
{
  free(data);
}
Ошибку выдает в sprintf(buf, "%d", data[i][j]); и в data[i][j] = (i+1)*10+(j+1)*0.01; //
Подскажите пожалуйста в чем дело
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2012, 11:02
Ответы с готовыми решениями:

Программа выдает ошибку [C++ Error] Unit1.cpp(23): E2062 Invalid indirection, объясните пожалуйста в чем причина и как можно исправить
Программа выдает ошибку Unit1.cpp(23): E2062 Invalid indirection, объясните пожалуйста в чем...

Ошибка invalid pointer
Приветствую всех! Сделал задание для универа, все компилилось и выполнялось так, как надо. Сижу с...

Error C2040: 'HSPRITE' : 'int' differs in levels of indirection from 'HSPRITE__ *'
Пытаюсь скомпилировать чужой проект но получаю ошибку из названия поста. Работаю на vs 2005 так как...

Ошибка 'invalid floating point operation'
Здравствуйте. сделал задачу, при вводе значения &quot;0&quot; выдает ошибку, и выкидывает с программы. с чем...

3
Модератор
3332 / 2113 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
09.04.2012, 13:51 2
что бы делать
C++
1
data[i][j]
оно должно быть
C++
1
int **data
а у вас оно
C++
1
int *data
1
4 / 4 / 0
Регистрация: 09.04.2012
Сообщений: 44
Записей в блоге: 1
09.04.2012, 23:21  [ТС] 3
выполнив то,что вы сказали появляются новые ошибки.
а именно
[C++ Error] lab8Form.cpp(27): E2034 Cannot convert 'int *' to 'int * *'
для строки
C++
1
data = (int*)malloc(sizeof(int)*rows*cols);
[C++ Error] lab8Form.cpp(36): E2034 Cannot convert 'int' to 'int *'
для строки
C++
1
data[i*cols+j] = i*cols+j; //
[C++ Error] lab8Form.cpp(44): E2034 Cannot convert 'int' to 'int *'
для строки
C++
1
data[i*cols+j] =* 10; //
0
1089 / 587 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
10.04.2012, 05:48 4
dim1993, вторую звездочку теперь мы должны везде за тебя проставлять?

C++
1
data = (int**)malloc(sizeof(int)*rows*cols);
ну и вместо data[] следует юзать data[][]
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2012, 05:48

Ошибка при выполнении (invalid pointer operation)
Надо рандомезировать массив, первый раз получается, но когда нажимаю на кнопку второй раз выдает...

Ошибка invalid floating point operation в cppWebBrowser
Добрый день! Столкнулся с появлением ошибки &quot;invalid floating point operation&quot; при выполнении кода ...

Компонент Label - ошибка Invalid pointer operation
Здравствуйте! Не подскажете, почему у меня косячат компоненты Label? Выдается ошибка Invalid...

Ошибка invalid floating point при нажатии на кнопку
Программа запускается, но при нажатии на кнопку появляется ошибка &quot;invalid floating point...


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

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

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