Динамические массивы в С++
Нужна помощь и пояснения!
Вот мой говнокод: Код:
#include "stdafx.h" Компилю в 10 визуалке; |
Код:
for (int i = 0; i < m; i++) int** mas = new int*[n]; |
Цитата:
Даже если заменить на переменную n, все ровно происходит ошибка кучи, типо куча повреждена! И еще вопрос: как заполнить матрицу, что бы строки не повторялись? Я попробовал использовать srand(), но толку ноль! |
В современном состоянии языка с++ использовать в прикладных целях голые указатели - моветон!
В данном случае нужно использовать std::vector Твою программу можно переписать например так: Код:
#include <conio.h> Код:
srand((unsigned int)time(NULL)); Ошибка №1 Код:
int** mas = new int*[n]; Ошибка №2 Код:
mas[i,j] = (int*)(40 - (std::rand() % 31)); То что написал ты - это вызов оператора запятая. Собственно этот код эквивалентен следующему: Код:
mas[j] = (int*)(40 - (std::rand() % 31)); Ошибка №3 Код:
for (int i = 0; i < m; i++) Надо писать delete[] mas[i]; Ну и как уже заметили, цикл идет по m, хотя массив длиной n. Ну с учетом всех косяком, исправил твою прогу: Код:
int main() И напоследок, у тебя в программе смесь языков С и С++, все этим пережитки прошлого в виде printf и scanf... У С++ есть iostream для ввода вывода |
Спасибо за все. В моем случаи использовать вектор не надо.
Цитата:
Разберу код который вы написали и все осмыслю... П.С. Я тока изучаю с++ |
Цитата:
Цитата:
Кстати еще насчет динамических массивов: двумерный массив размерностью m на n можно создать так : Код:
int *mas = new int[m * n]; Код:
mas[i][j] = 1; |
Цитата:
|
Текущее время: 16:20. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS