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

Вывод массива - C++

Восстановить пароль Регистрация
 
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.02.2010, 22:28     Вывод массива #1
Здрасти, имеется заголовочный файл "matrix.h", в котором создается двумерный массив:
C++
1
2
3
4
5
6
int** CreateMatrix(int count_row,int count_col){
    int** pArray=new int*[count_col];
    for (int i=0; i<count_col; i++)
    pArray[i]=new int[count_row];
    return pArray;
}
и имеется файл *.cpp, в котором этот массив заполняется и выводится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    
    int count_row=0;
    int count_col=0;
    std::cout<<"Vvedite ramernost matrici: ";
    std::cin>>count_row>>count_col;
 
    int** pA=CreateMatrix(count_row,count_col);
    srand(time(NULL));
    for (int i=0; i<count_row; i++){
    for (int j=0; j<count_col; j++){
        pA[i][j]=rand()%7;
        std::cout<<pA[i][j];
    }
        std::cout<<std::endl;
    }

Когда вводиш размерность например 4 на 4, то все ок, а когда например 9 на 1 вылезает ошибка. В чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2010, 22:28     Вывод массива
Посмотрите здесь:

C++ Вывод массива
C++ Вывод массива
вывод массива C++
C++ Вывод массива.
Вывод определенного элемента массива из массива символов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
02.02.2010, 22:48     Вывод массива #2
CreateMatrix создает массив указателей а не двумерный массив. Использовать pA таким образом нельзя
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.02.2010, 22:52  [ТС]     Вывод массива #3
а как можно создать динам.массив в заголовочном файле и заполнить его в файле *.cpp???
insideone
Модератор
Автор FAQ
 Аватар для insideone
3623 / 901 / 48
Регистрация: 10.01.2010
Сообщений: 2,429
02.02.2010, 22:58     Вывод массива #4
Заголовочные файлы вообще то служат для объявления функций\классов\переменных а не для действий с ними, зачем с ними такое вытворять?)
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.02.2010, 23:01  [ТС]     Вывод массива #5
тоесть создавать массив лучше в *.cpp?
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
02.02.2010, 23:02     Вывод массива #6
Во, блин... Перепутал. Вы же его не в функцию передаете...
Вот подправил. У вас там столбцы со строками перепутаны были
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
int** CreateMatrix(int count_row,int count_col){
    int** pArray=new int*[count_row];
    for (int i=0; i<count_col; i++)
    pArray[i]=new int[count_row];
    return pArray;
}
 
 
int main(int argc, char* argv[])
{
    int count_row=0;
    int count_col=0;
    std::cout<<"Vvedite ramernost matrici: ";
    std::cin>>count_row>>count_col;
 
    int** pA=CreateMatrix(count_row,count_col);
    srand(time(NULL));
    for (int i=0; i<count_col; i++){
    for (int j=0; j<count_row; j++){
        pA[i][j]=rand()%7;
        std::cout<<pA[i][j];
    }
        std::cout<<std::endl;
    }
 
 
        getch();
    return 0;
}
Да какая разница, где его создавать....
У вас же просто ф-ция объявлена в h файле.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.02.2010, 23:15  [ТС]     Вывод массива #7
Зоти Сергей, такая же ошибка(( вот 4 и 4, 1 и 9 все работает, но когда вводиш 9 и 1 или тп то ошибка

Добавлено через 2 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
Зоти Сергей, такая же ошибка(( вот 4 и 4, 1 и 9 все работает, но когда вводиш 9 и 1 или тп то ошибка
Извиняюсь все работет, перепутал столбцы с строками. спасибо

Добавлено через 1 минуту
Вот и я думаю, правильно что эту функцию в h файл запихнул, тк читал книжку и там было сказано функции желательно помещать в h файл
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
03.02.2010, 00:19     Вывод массива #8
В книжке имелось ввиду, наверное, то объявление функций происходит в h вайле.
Тоесть, чаще в h фалы помещают прототипы функций. А их реализацию в cpp.
В вашем случае
в .h
C++
1
int** CreateMatrix(int count_row,int count_col);
а в cpp
C++
1
2
3
4
5
6
7
int** CreateMatrix(int count_row,int count_col)
{
    int** pArray=new int*[count_row];
    for (int i=0; i<count_col; i++)
    pArray[i]=new int[count_row];
    return pArray;
}
Это не обязательно, но облегчает чтение программы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2010, 00:45     Вывод массива
Еще ссылки по теме:

Вывод массива! C++
Вывод массива C++
C++ Вывод Массива

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

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.02.2010, 00:45  [ТС]     Вывод массива #9
точно
Yandex
Объявления
03.02.2010, 00:45     Вывод массива
Ответ Создать тему
Опции темы

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