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

Двумерные массивы и Random в диапозоне - C++

Восстановить пароль Регистрация
 
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
22.10.2013, 19:21     Двумерные массивы и Random в диапозоне #1
1. Определите функцию создания случайной матрицы заданных размеров с заданными пределами для значений элементов: int ** createRandomMatrix(int rows, int cols, int minValue , int maxValue );
2.Создайте функцию печати матрицы: void printMatrix(int ** mat, int rows, int cols);
3.Создайте функцию освобождения памяти матрицы: purgeMatrix(int ** mat, int rows);

Код ниже.Просьба найти ошибки.
1.Суть в том что когда матрица прямоугольная,, то выдает ошибку,как на скрине.
2. Random не всегда правильно работает.

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
int ** createRandomMatrix(int rows, int cols, int minValue, int maxValue ) {
    srand(unsigned(time(NULL)));
    int **matrix=new int *[rows];
 
    for(int i=0;i<cols;i++)
        matrix[i]=new int[cols];
 
    for (int i=0;i<rows;i++) 
        for (int j=0;j<cols;j++)
            matrix[i] [j]=minValue+rand()% maxValue;
 
return matrix;
}
 
void printMatrix(int ** mat, int rows, int cols) {
    for(int i=0;i<rows;i++) {
        for(int j=0;j<cols;j++)
            cout<<mat [i] [j]<<" ";
    cout<<endl;
    }
}
 
void purgeMatrix(int ** mat, int rows) {
    for(int i=0;i<rows;i++) 
        delete [] mat[i];
    delete [ ]mat;
 
}
C++
1
2
3
4
5
6
7
8
int rows,cols,minValue,maxValue;
    cout<<"Введите размеры матрицы n*m "<<endl;
    cin>>rows>>cols;
    cout<<"Введите диапозон из двух целых чисел для элементов матрицы "<<endl;
    cin>>minValue>>maxValue;
    int **matrix=createRandomMatrix(rows,cols,minValue,maxValue);
    printMatrix(matrix,rows,cols);
    purgeMatrix(matrix,rows);
Миниатюры
Двумерные массивы и Random в диапозоне  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 19:21     Двумерные массивы и Random в диапозоне
Посмотрите здесь:

Двумерные массивы C++
C++ двумерные массивы
C++ двумерные массивы
C++ ДВУМЕРНЫЕ МАССИВЫ СИ+++
Двумерные массивы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
22.10.2013, 20:28  [ТС]     Двумерные массивы и Random в диапозоне #2
C random разобрался
Остальное так же.


Проблема с чисткой памяти как я понял.



Проблема с чисткой памяти как я понял.[/QUOTE]

up~!
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
23.10.2013, 08:44     Двумерные массивы и Random в диапозоне #3
Вы пишите за пределы отведенной вам памяти. Системе это все не нравится и она это дело рубит. Пройдитесь отладчиком, пошагово каждую строку и посмотрите на какой именно строке и при каких параметрах происходит выход за пределы.
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
23.10.2013, 09:12  [ТС]     Двумерные массивы и Random в диапозоне #4
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Вы пишите за пределы отведенной вам памяти. Системе это все не нравится и она это дело рубит. Пройдитесь отладчиком, пошагово каждую строку и посмотрите на какой именно строке и при каких параметрах происходит выход за пределы.
Вопрос в том,как это сделать?
Во вторых дело скорее всего в очистке памяти,так как я закомментировал и все работает.
А в третьих не легче ли вам найти ошибку?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
23.10.2013, 09:34     Двумерные массивы и Random в диапозоне #5
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Вопрос в том,как это сделать?
Какая среда программирования?
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Во вторых дело скорее всего в очистке памяти
Как не называйте свои действия, но происходит именно ошибка записи (всего может быть только две ошибки с памятью - либо нельзя в нее записать, либо нельзя из нее считать). Ошибка говорит:
application wrote after end of heap of buffer
Цитата Сообщение от DmitryM5 Посмотреть сообщение
я закомментировал и все работает
Вот. Что закомментировали? Какие именно строки?
Цитата Сообщение от DmitryM5 Посмотреть сообщение
А в третьих не легче ли вам найти ошибку?
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
23.10.2013, 09:38  [ТС]     Двумерные массивы и Random в диапозоне #6
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Какая среда программирования?

Как не называйте свои действия, но происходит именно ошибка записи (всего может быть только две ошибки с памятью - либо нельзя в нее записать, либо нельзя из нее считать). Ошибка говорит:

Вот. Что закомментировали? Какие именно строки?

Visual Studio 12 C++

Ну я закомментировал очистку памяти в конце процедура.

Не знаю то ли я сделал,но жал f10 все время и ошибка на очистке памяти
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
23.10.2013, 09:54     Двумерные массивы и Random в диапозоне #7
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Visual Studio 12 C++
Кликните здесь для просмотра всего текста
http://professorweb.ru/my/ASP_NET/base/level1/1_9.php
http://www.realcoding.net/articles/o...-ostanova.html

Цитата Сообщение от DmitryM5 Посмотреть сообщение
все время и ошибка на очистке памяти
Двадцать пятая или двадцать шестая строка в первом посте?
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
23.10.2013, 18:32  [ТС]     Двумерные массивы и Random в диапозоне #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Кликните здесь для просмотра всего текста
http://professorweb.ru/my/ASP_NET/base/level1/1_9.php
http://www.realcoding.net/articles/o...-ostanova.html


Двадцать пятая или двадцать шестая строка в первом посте?
Блин,ну я по main жал f10 то есть ошибка в 8 строке 1-го поста 2-го кода.

Добавлено через 7 часов 55 минут
Ошибка найдена!
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
23.10.2013, 18:50     Двумерные массивы и Random в диапозоне #9
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Ошибка найдена!
Было бы неплохо если б вы ее расписали.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 21:59     Двумерные массивы и Random в диапозоне
Еще ссылки по теме:

C++ Двумерные массивы
Двумерные массивы C++
Random-массив с разными числами в заданном диапозоне C++

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

Или воспользуйтесь поиском по форуму:
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
23.10.2013, 21:59  [ТС]     Двумерные массивы и Random в диапозоне #10
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Было бы неплохо если б вы ее расписали.
В функции создания матрицы первый цикл должен быть таков:
C++
1
2
 for(int i=0;i<rows;i++)
        matrix[i]=new int[cols];
Yandex
Объявления
23.10.2013, 21:59     Двумерные массивы и Random в диапозоне
Ответ Создать тему
Опции темы

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