Создание двумерного массива C++

216
21 апреля 2018, 19:24
#include "stdlib.h" #include "time.h" #include "iostream" #include "conio.h" 
#include "ctime" 
using namespace std;

int fun_rund (int *mass) {
for( int a = 0; a < 5; a++)
{
    for(int b = 0; b < 5; b++)
    {
        mass[a*b] = (rand()%80)-10;
    }
}
}
int fun_out (int *mass){
int i,j;
for (i = 0; i < 5; i++)
{
    for (j = 0; j < 5; j++)
    {
        printf("%4d", mass[i*j]);
    }
    printf("\n");
}
}
int main(int argc, char * argv[]) {
srand((unsigned)time(NULL));
int *A = new int [5*5];
int *B = new int [5*5];
int *C = new int [5*5];

fun_rund(A);
fun_rund(B);
fun_rund(C);
fun_out(A);
return 0;
}

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

28 28 28 28 28

28 -1 28 -6 38

28 28 38 18 43

28 -6 18 12 32

28 38 43 32 36

Answer 1

У вас неправильно делается индексация двумерного массива, замените строчку:

 printf("%4d", mass[i*j]);

на:

 printf("%4d", mass[i*5 + j]);

В общем случае, если вы создаёте двумерный массив mas[m*n], то правильное обращение к ячейке с номерами i, j будет выглядеть как:

mas[i*n + j]

Вы сначала отсчитываете нужную строку (сдвигаетесь i раз на n), затем в найденной строке отсчитываете нужный по счёту элемент.

READ ALSO
Счётчик правильных ответов [требует правки]

Счётчик правильных ответов [требует правки]

У меня имеется программа - тестирование,в которой 10 вопросовКаждый вопрос в отдельной форме

180
Продлить жизнь конструктора

Продлить жизнь конструктора

В конструкторе инициализируются локальные переменныеХотелось бы использовать их в других методах класса, какие есть методы решения данной...

149
OpenGL переполнение VBO c++

OpenGL переполнение VBO c++

Есть функция:

288
Как сделать добивание корабля в морском бою на с++?

Как сделать добивание корабля в морском бою на с++?

Доброго времени сутокПишу сейчас консольный морской бой на С++ (можно даже сказать С поскольку без использования классов)ю Сделал расстановку...

165