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

Не верно возвращает массив - C++

Восстановить пароль Регистрация
 
mogtar
0 / 0 / 0
Регистрация: 08.11.2013
Сообщений: 51
08.11.2013, 22:42     Не верно возвращает массив #1
C++ (Qt)
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
int create(int *ar)
{   int m,n,g,size=0;
    cout <<"Введите рядок символов: ";  cin >> n;
    g=n;
 
    while(g>0){
    m=g%10;
    g=(g-m)/10;
    size++;}
 
    g=size;
 
    while(n>0){
    m=n%10;
    n=(n-m)/10;
    ar[g-1]=m;
    g--;}
return size;}
 
int main()
{
    int size,ar[]={};
    size=create(ar);
    cout<<"\nРозмiр масиву: ";
    cout<< size;
 
    cout<<"\nУтворений масив: ";
    for(int i=0;i<size;i++)
    {cout << ar[i] <<" ";}
 
    cin >> size;
}

Если вывести массив в функции то возвращает верный массив, если в main тогда-бред, верно возвращает лишь размер. Не могу понять свою ошибку.
пс: функция преобразовывает число в массив.
Миниатюры
Не верно возвращает массив   Не верно возвращает массив  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.11.2013, 22:49     Не верно возвращает массив #2
C++
1
ar[]={}
Массив из нуля элементов.
Запись в "него" внутри функции create -- запись в не выделенную область памяти.
Так с массивами нельзя работать.
mogtar
0 / 0 / 0
Регистрация: 08.11.2013
Сообщений: 51
08.11.2013, 22:52  [ТС]     Не верно возвращает массив #3
Цитата Сообщение от lemegeton Посмотреть сообщение
C++
1
ar[]={}
Массив из нуля элементов.
Запись в "него" внутри функции create -- запись в не выделенную область памяти.
Так с массивами нельзя работать.
А как тогда верно его обьявить? я кажется не верно понял лекцию, нам вроде сказали если так обьявить то автоматически размер определится.
С меня спасибо.
ssXXss
263 / 185 / 10
Регистрация: 15.01.2011
Сообщений: 668
08.11.2013, 22:55     Не верно возвращает массив #4
и не удивительно int size,ar[]={};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int create(int *ar)
{
....
  int n = 0;
  cin >> n;
  if(n < 0 || n >100)
    return -1;
  ....
}
 
 
void main()
{
   int size,ar[100] = {0};
   if(!create(ar))
   {
       // error
    return;
   }
 
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
08.11.2013, 22:56     Не верно возвращает массив #5
Безразмерный массив. Размер не указан. Для статических массивов размер должен всегда указываться при объявлении. Пустые скобки [] могут оставаться только если при объявлении массив тут же инициализируется (но опять же! Константным количеством константных значений!)
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.11.2013, 22:57     Не верно возвращает массив #6
Статически -- с положительным целым числом внутри квадратных скобок.

C++
1
int arr[ЧИСЛО];
Динамически -- выделив необходимую память.

C++
1
2
3
int *arr = new int[ЧИСЛО];
...
delete [] arr; // не забыть потом удалить
А при объявлении с инициализацией количество элементов определяется в момент компиляции.
C++
1
2
int arr[] = {1, 2, 3}; // в arr три элемента 0..2 и никогда больше
int barr[] = {}; // в barr ноль элементов и никогда больше
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 22:59     Не верно возвращает массив
Еще ссылки по теме:

C++ Верно ли,что все элементы массива B входят в массив A?
Создать функцию, в качестве параметра получает массив и количество его элементов, возвращает массив, упорядоченный по возрастанию C++
Функция, которая возвращает массив C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
08.11.2013, 22:59     Не верно возвращает массив #7
C++
1
int size, ar[256];
Yandex
Объявления
08.11.2013, 22:59     Не верно возвращает массив
Ответ Создать тему
Опции темы

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