20 / 13 / 9
Регистрация: 05.12.2014
Сообщений: 124
1

Cannot convert int to int* и обратно

21.05.2015, 02:48. Показов 1906. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем есть код:
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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{int i,j,m,n,a;
cout<<"Input size of massive,NxM:"; cin>>n; ;cin>>m;
cout<<"select the type of input:"<<endl<<"1:random generation"<<endl<<"2:keyboard input"<<endl;
cin>>a;
if (a!=1 && a!=2){cout<<endl<<"Error!"<<endl; system("pause"); return 0;}
 
        int **mas=new int*[n];
        int **masel=new int*[n];
        int **masnom=new int*[n];
        for (i=0;i<n;i++) mas[i]=new int[m];
 
for (i=0;i<n;i++){
for (j=0;j<m;j++){
  if (a==1) {mas[i][j]=random(10);masel[i]+=mas[i][j];masnom[i]=i;}
  else {cin>>mas[i][j];masel[i]+=mas[i][j];masnom[i]=i;}}}
 
for (j=0;j<n;j++){
for (i=1;i<n;i++){
if (masel[i-1]>masel[i]){
a=masnom[i-1];
masnom[i-1]=masnom[i];
masnom[i]=a;
a=masel[i-1];
masel[i-1]=masel[i];
masel[i]=a;}} }
 
for (i=0;i<n;i++){
for (j=0;j<m;j++){
cout<<mas[masnom[i],j]<<' ';}cout<<endl;}
 
        system("pause");
        return 0;
}
//---------------------------------------------------------------------------
По задумке он должен "выводить массив по возрастанию суммы элементов строки"
Но. У меня как обычно "но".... В общем вот список ошибок:
[C++ Error] Unit1.cpp(23): E2034 Cannot convert 'int' to 'int *'
[C++ Error] Unit1.cpp(24): E2034 Cannot convert 'int' to 'int *'
[C++ Error] Unit1.cpp(29): E2034 Cannot convert 'int *' to 'int'
[C++ Error] Unit1.cpp(31): E2034 Cannot convert 'int' to 'int *'
[C++ Error] Unit1.cpp(32): E2034 Cannot convert 'int *' to 'int'
[C++ Error] Unit1.cpp(34): E2034 Cannot convert 'int' to 'int *'

Вижу, что ошибки идентичны.... Понять смысла - не могу. Помогите, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2015, 02:48
Ответы с готовыми решениями:

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5...

Сannot convert ‘int (*)[10]’ to ‘int*’ for argument ‘4’ to ‘int
Все вроде правильно..И в визуале работает а на линуксе(код блок) не работает.. #include &quot;mpi.h&quot;...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй...

E2034 Cannot convert 'int *' to 'int'
Помогите разобраться,почему вылазит ошибка Unit1.cpp(34): E2034 Cannot convert 'int' to 'int *'...

7
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
21.05.2015, 03:06 2
В комментах написал
C++
1
2
3
4
int **mas=new int*[n];
 int *masel=new int [n];//здесь наверное объявляется одномерный массив
 int *masnom=new int [n]; // и здесь тоже , убери лишние звездочки
 for (i=0;i<n;i++) mas[i]=new int[m];
0
20 / 13 / 9
Регистрация: 05.12.2014
Сообщений: 124
21.05.2015, 03:16  [ТС] 3
Stanis, спасибо, утром попробую.
Я правильно понял что количество * означает "мерность" массива?
0
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
21.05.2015, 03:21 4
Цитата Сообщение от 4ewka Посмотреть сообщение
Я правильно понял что количество * означает "мерность" массива?
Я 3-ех мерные и более массивы сам не создавал , но видел как другие делали , вроде бы точно таким же образом . Так что Да , грубо говоря кол-во звездочек задаст размерность массива . Просто если 3-ех мерный еще можно представить , то 4-ех уже как то не представляю )
0
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
21.05.2015, 07:32 5
4ewka, безотносительно вашего кода:
количество "звездочек" можете трактовать как количество выражений "указатель на" в названии типа, т.е.
C++
1
2
int *n; // указатель на int
int ***n; // указатель на указатель на указатель на int
Относительно вашего когда - каждое "указатель на" можно использовать как очередное измерение массива.
0
20 / 13 / 9
Регистрация: 05.12.2014
Сообщений: 124
21.05.2015, 10:34  [ТС] 6
Stanis, интерстеллар

XZentus, спасибо.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
21.05.2015, 11:43 7
Цитата Сообщение от Stanis Посмотреть сообщение
Просто если 3-ех мерный еще можно представить , то 4-ех уже как то не представляю )
Элементарно представляется.
0
Заблокирован
21.05.2015, 11:58 8
Цитата Сообщение от Stanis Посмотреть сообщение
Просто если 3-ех мерный еще можно представить , то 4-ех уже как то не представляю )
Одномерный массив - строка (массив букв)
Двумерный - страница (массив строк, которые являются массивами букв)
Трехмерный - книга (массив страниц, которые являются массивами строк, которые являются массивами букв)
Четырехмерный - полка с книгами (массив книг, которые являются массивами страниц, которые являются массивами строк, которые являются массивами букв)

Можно продолжить без особого напряга воображения
Пятимерный - книжный шкаф (массив полок, которые являются массивами книг, которые являются массивами страниц, которые являются массивами строк, которые являются массивами букв)
Шестимерный - ряд книжных шкафов (массив шкафов, которые являются массивами полок, которые являются массивами книг, которые являются массивами страниц, которые являются массивами строк, которые являются массивами букв)
Семимерный - несколько рядов книжных шкафов (массив рядов, которые являются массивами шкафов, которые являются массивами полок, которые являются массивами книг, которые являются массивами страниц, которые являются массивами строк, которые являются массивами букв)
Восьмимерный - несколько этажей, на каждом - несколько рядов книжных шкафов ...
1
21.05.2015, 11:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2015, 11:58
Помогаю со студенческими работами здесь

Ошибка: cannot convert 'int**' to 'int (*)[10]'
Мне выдаёт ошибку при вызове функции 50 cannot convert 'int**' to 'int (*)' for argument '1' to...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H ...

cannot convert 'int' to 'int*'
Дорогие форумчане, помогите, пожалуйста. В программе возникает ошибка cannot convert 'int' to...

cannot convert int(*)() to int . .
Доброго времени суток! Пытался создать массив из указателей на функции. typedef int...


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

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

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