crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Передача массива как аргумента
Гость_vovan_*
сообщение 19.3.2011, 20:44
Сообщение #1





Гости








    


#include <iostream>
#include <time.h>
//#include <math.h>
#include <stdlib.h>

using namespace std;


#define N 4
#define M 5


int colCount( int **a);

int main()
{
  int a[N][M], i, j, temp;
  for(i=0; i<N; i++)
    {
      for(j=0; j<5; j++)
        {
          a[i][j] =  (20*rand()) / (RAND_MAX-10);
          cout << a[i][j] << '\t';
        }
    }
  temp = colCount(a);
  cout << temp;
  return 0;
}

int colCount( int **a)
{
  int i,j,retval;
  for(i=0; i< N; i++)
    {
      for(j=0; j<5; j++)
        {
          if(a[i][j] != 0)
            retval++;
          else retval--;
        }
    }
  return retval;
}


ошибка:
main.cpp:26:17: error: cannot convert 'int (*)[4][5]' to 'int**' in initialization

Объясните/направьте в чем проблема? :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 19.3.2011, 20:45
Сообщение #2





Гости








    


я не прав - ошибка main.cpp:26:20: error: cannot convert 'int (*)[5]' to 'int**' for argument '1' to 'int colCount(int**)'
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.3.2011, 20:53
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


temp = colCount((int**)a);

или

int colCount( int a[M][]);


насчёт прототипа - точно не помню, как синтаксис, а сейчас проверять лень :) У меня в таком виде просто никогда не бывает, это же жуть
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 19.3.2011, 20:55
Сообщение #4





Гости








    


Если не трудно, можно поподробней про "жуть"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.3.2011, 20:59
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


статический двумерный массив - это, может быть, наглядно для новичка (хотя, тут сомнения насчёт полезности такой наглядности), но у него есть все минусы одномерного статического массива, а также негибкость, опасность уязвимости с переполнением стека, ну и сам видишь, какой весёлый синтаксис указателя
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 19.3.2011, 21:01
Сообщение #6





Гости








    


Спасибо за помощь, огромное на самом деле.
Но можно ли это как-нибудь сделать более эстетично в Вашем понимании, желательно без ++ .
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.3.2011, 21:19
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Гость_Гость_* @ 19.3.2011, 23:01) *
желательно без ++ .


в чём подвох ? :) какая платформа ? Какая ОС ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 19.3.2011, 21:22
Сообщение #8





Гости








    


не понял про подвох.
pc, windows, mingw.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 19.3.2011, 21:30
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


нуу, я уж подумал было про контроллеры

Ну и поведай теперь, почему отказ от C++ в пользу C ? Мне просто интересно


Цитата(Гость_Гость_* @ 19.3.2011, 23:01) *
Но можно ли это как-нибудь сделать более эстетично в Вашем понимании, желательно без ++ .


в этом случае у меня был бы одномерный динамический массив и набор функций для доступа к определённому индексу
если платформа не позволяет динамический массив, сойдёт и одномерный статический
на C++ это был бы вектор
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 19.3.2011, 21:36
Сообщение #10





Гости








    


Цитата(Алексей1153 @ 19.3.2011, 21:30) *
Ну и поведай теперь, почему отказ от C++ в пользу C ? Мне просто интересно

потому что я пока не уверен, что мне следует лезть в дебри C++, если я не совсем понимаю как сделать что-либо на Си.

Цитата(Алексей1153 @ 19.3.2011, 21:30) *
в этом случае у меня был бы одномерный динамический массив и набор функций для доступа к определённому индексу
если платформа не позволяет динамический массив, сойдёт и одномерный статический

спасибо, буду учиться дальше :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 15:03