• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите Найти Ошибку

  • Автор темы Rendall
  • Дата начала
R

Rendall

вроде бы все правильно написал, но при компиляции выбивает Снимок.PNG
C++:
#include "stdafx.h"
#include <clocale>
#include <iostream>
#include <ctime>
#include <cstdio>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0,"Rus");
int rows,cols;
cout<<"Введите количество строк\n";
cin>>rows;
cout<<"\nВведите количество столбцов";
cin>>cols;
//выделение памяти
int ** mas = new int * [rows];
for(int i=0; i<rows; ++i)
*mas = new int [cols];
//заполнение и вывод на экран
srand(time(0));
for(int i=0; i<rows; i++)
{
for(int j=0; j<cols; j++)
{
mas [i][j] = rand() %10;
cout<< mas [i][j]<<" ";
}
cout<<"\n";
}
//удаление массива из памяти
for (int i = 0; i < cols; i++)
{
delete [] mas[i];
}
delete [] mas;
return 0;
}
P.S visual studio 2012
 
E

Eleno4ka

а можно попросить в кратце объяснить суть кода, что надо получить?
 
R

rrrFer

как минимум 2 ошибки:
Код:
	for (int i = 0; i < rows; ++i)
[b]mas[i][/b] = new int [cols];
Код:
for (int i = 0; i < [b]rows[/b]; i++) {
delete [] mas[i];
 
R

Rendall

а можно попросить в кратце объяснить суть кода, что надо получить?
двумерный массив из случайных чисел от 0 до 9, количество строк и столбцов вводится пользователем


Добавлено:
как минимум 2 ошибки:
Код:
	for (int i = 0; i < rows; ++i)
[b]mas[i][/b] = new int [cols];
Код:
for (int i = 0; i < [b]rows[/b]; i++) {
delete [] mas[i];
не понял, где там ошибки объясните пожалуста
 
R

rrrFer

int ** mas = new int * [rows]; // память выделено под rows строк
for (int i = 0; i < cols; i++) // пытаемся освободить память из под cols строк

for(int i=0; i<rows; ++i) // в цикле указатель на mas не изменяется, память выделяется по одному и тому же адресу
*mas = new int [cols]; // всего по этому адресу будет доступно cols * sizeof(int) байт, а будет использоваться cols * rows * sizeof(int)
//т.е. будем выходить за пределы выделенной памяти, и получать ошибки.
 
R

Rendall

поправил, теперь, вроде бы, все работает как я хотел
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
C++:
#include "stdafx.h"
#include <clocale>
#include <iostream>
#include <ctime>
#include <cstdio>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0,"Rus");
int rows,cols;
cout<<"Введите количество строк : ";
cin>>rows;
cout<<"\nВведите количество столбцов : ";
cin>>cols;
cout<<"Сгенерированный массив :\n\n";
//выделение памяти
int ** mas = new int * [rows];
for(int i=0; i<rows; ++i)
mas[i] = new int [cols];
//заполнение и вывод на экран
srand(time(0));
for(int i=0; i<rows; ++i)
{
for(int j=0; j<cols; ++j)
{
mas [i][j] = rand() %10;
cout<< mas [i][j]<<" ";
}
cout<<"\n";
}
cout<<"Данный массив занимает "<<sizeof(int)*rows*cols<<" байт в памяти\n";
//удаление массива из памяти
for (int i = 0; i < cols; i++)
{
delete [] mas[i];
}
delete [] mas;
system("pause");
return 0;
}
 
R

rrrFer

не все, первую ошибку не исправил )
 
R

Rendall

так верно ?

C++:
//выделение памяти
int ** mas = new int * [rows];
for(int i=0; i<rows; ++i)
mas[i] = new int [rows];
 
R

rrrFer

комментарии к первой ошибке прочитай внимательно, не там правишь.
 
R

Rendall

комментарии к первой ошибке прочитай внимательно, не там правишь.
не понимаю(( вроде все правильно делаю
C++:
int ** mas = new int * [rows];
создал массив указателей
C++:
for(int i=0; i<rows; i++)
mas[i] = new int [cols];
каждому указателю присвоил адрес одномерного массива
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!