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

cannot convert parameter 1 from - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Tw3ak
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 15
25.10.2012, 00:37     cannot convert parameter 1 from #1
Доброй ночи, вот написал програмку, не пойму почему ругается?
Если не ошибаюсь нужно выделить память под массив? Но как это правильно сделать? Если не сложно исправьте ошибку плиз.
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
#include <iostream>
#include <vector>
#include <iomanip>
#include <cstdlib>
using namespace std;
void dno(int **Matrix,int n,int m)
{int Check = 0;int collNumber = 0;
    cout << "First coll's number with zero element: ";
    for(int j = 0; j < n; j++)
            for(int i = 0; i < m; i++)
            {
                    if(!Check)
                              if(!Matrix[i][j])
                              {
                                               Check = 1;
                                               collNumber = j;
                              }
            }
    cout << collNumber + 1 << endl;
}
void sort(int **Matrix, int n,int m)
{int i;
    for(i=0; i<n-1; i++)
    {vector<int> A(n, 0);
int i_min = i;
        for(int j=i+1; j<m; j++)
            if(A[i_min]<A[j])
                i_min=j;
        swap(A[i_min], A[i]);
        for(j=0; j<n; j++)
            swap(Matrix[i_min][j], Matrix[i][j]);
    }
   cout << "New matrix: " << std::endl;
    for(i = 0; i < n; i++)
    {
            for(int j = 0; j < n; j++)
            {
                    cout << setw(4) << Matrix[i][j]<< " ";
            }
            cout << endl;
    }   
}
int main ()
{
    const int n = 5;
    const int m =5;
    int Matrix[n][m],  A[n]={0}, i_min;
    
    cout << "Matrix: " << endl;
    for(int i = 0; i < n; i++)
    {
            for(int j = 0; j < n; j++)
            {
                    cout << setw(4) << (Matrix[i][j] = rand() % 4-3);
                    if(Matrix[i][j]<0 && Matrix[i][j]%2==0)
                        A[i]+=Matrix[i][j];
            }
            cout <<endl;
    }
    dno(Matrix,n,m);
    sort(Matrix,n,m);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2012, 00:37     cannot convert parameter 1 from
Посмотрите здесь:

Cannot convert C++
C++ cannot convert parameter 1 from 'char' to 'char []'
C++ Ошибка: cannot convert parameter
Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' C++
C++ cannot convert parameter 1 from 'int' to 'std::string &'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
25.10.2012, 00:50     cannot convert parameter 1 from #2
Цитата Сообщение от Tw3ak Посмотреть сообщение
cannot convert parameter 1 from
int (*)[5] to int ** ?
Tw3ak
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 15
25.10.2012, 00:58  [ТС]     cannot convert parameter 1 from #3
Цитата Сообщение от gray_fox Посмотреть сообщение
int (*)[5] to int ** ?
Cannot convert parameter 1 from 'int [5][5]' to 'int ** '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Вот полная ошибка
Ошибки в строчках 60-61
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.10.2012, 01:00     cannot convert parameter 1 from #4
C++
1
2
template<class M>
void dno(M Matrix,int n,int m)
Tw3ak
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 15
25.10.2012, 01:04  [ТС]     cannot convert parameter 1 from #5
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
template<class M>
void dno(M Matrix,int n,int m)
Нене, шаблон нельзя, нужно пока что только Функция. В шаблон уже сам переделаю, потом.

Добавлено через 1 минуту
Даже если из програмы убрать m, т.к. квадратная матрица, и все сделать через n, та же ошибка будет
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
25.10.2012, 01:05     cannot convert parameter 1 from #6
Tw3ak, просто формальные и фактические аргументы у ф-ий не совпадают, массив и указатель не оно и то же. Меняйте тип переменной Matrix или или тип в ф-ии:
C++
1
2
template<int n, int m>
void dno(int (&Matrix)[n][m])
Tw3ak
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 15
25.10.2012, 01:08  [ТС]     cannot convert parameter 1 from #7
Цитата Сообщение от gray_fox Посмотреть сообщение
Tw3ak, просто формальные и фактические аргументы у ф-ий не совпадают, массив и указатель не оно и то же. Меняйте тип переменной Matrix или или тип в ф-ии:
C++
1
2
template<int n, int m>
void dno(int Matrix[n][m])
Я пробовал меня тип переменной Matrix На Double, не помогло, я не могу использовать шаблон вместо функции, т.к. это 2 разные лабораторные работы...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
25.10.2012, 01:10     cannot convert parameter 1 from #8
Тогда выделяйте Matrix динамически в main:
C++
1
2
3
4
    int ** Matrix;
    Matrix=new int*[n];
     for(int i=0;i<n;++i)
         Matrix[i]=new int[m];
потом только не забудьте
C++
1
2
3
     for(int i=0;i<n;++i)
         delete Matrix[i];
     delete Matrix;
Tw3ak
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 15
25.10.2012, 01:14  [ТС]     cannot convert parameter 1 from #9
Цитата Сообщение от Croessmah Посмотреть сообщение
Тогда выделяйте Matrix динамически в main:
C++
1
2
3
4
    int ** Matrix;
    Matrix=new int*[n];
     for(int i=0;i<n;++i)
         Matrix[i]=new int[m];
потом только не забудьте
C++
1
2
3
     for(int i=0;i<n;++i)
         delete Matrix[i];
     delete Matrix;
я ничего не соображаю уже, оформил через шаблоны, может препод не заметит, сдам обе лабы через шаблоны, а скажу что это ф-ия и шаблон, тем более что она не смотрит.
Всем спасибо.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
25.10.2012, 01:15     cannot convert parameter 1 from #10
Тогда можно попробывать так вызывать:
C++
1
2
int * p = &Matrix[0][0];
dno(&p, n, m);
но я вообще не уверен, что это корректно. Лучше выделить память под Matrix на куче.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2012, 01:17     cannot convert parameter 1 from
Еще ссылки по теме:

C++ Ошибка missing default parameter for parameter
C++ convert
C++ Template non-type parameter

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

Или воспользуйтесь поиском по форуму:
Tw3ak
0 / 0 / 0
Регистрация: 27.07.2012
Сообщений: 15
25.10.2012, 01:17  [ТС]     cannot convert parameter 1 from #11
Цитата Сообщение от gray_fox Посмотреть сообщение
Тогда можно попробывать так вызывать:
C++
1
2
int * p = &Matrix[0][0];
dno(&p, n, m);
но я вообще не уверен, что это корректно. Лучше выделить память под Matrix на куче.
У мня еще в прошлом году была та же самая проблема с функцией, а с шаблонами все ок, универ убогий, прошел год, ставят опять те же лабы... идиоты
Yandex
Объявления
25.10.2012, 01:17     cannot convert parameter 1 from
Ответ Создать тему
Опции темы

Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru