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

Язык Си
24.01.2017

(Всего голосов: 0)

Сейчас мы создадим двумерный массив (матрицу) вручную, без применения посторонних функций. При вводе значений массива необходимо самому соблюдать заданные границы. Предположим, задан массив вида 4х3, т.е. имеет 4 строки и 3 столбца. Значит мы вводим три числа, переходим на новую строку, снова три числа, и так заполняем четыре строки числами. Если Вы введете одну длинную строку, к примеру, из 20 чисел, то программа выберет из них первые 12 и воспримет как двумерный массив вида 4х3.

#include <cstdlib>
#include <stdio.h>

int main(int argc, char** argv) {
    int m, n;
    int mas[100][100];                    //задаем размеры матрицы
    printf("Input m, n:\n");                 
    scanf("%d%d", &m, &n);                //вводим m (число строк) и n (число столбцов)
    printf("You array:\n");
    for (int i = 0; i < m; i++) {         
        for (int j = 0; j < n; j++) {     
            scanf("%d", &mas[i][j]);      //заполняем матрицу
        }
    }
    return 0;
}

Как работают циклы? Сначала i = 0, т.е. идет заполнение нулевой строки. Мы заполняем mas[0][0], потом mas[0][1], ... , mas[0][j] за счет внутреннего цикла. Когда j достигает n, внутренний цикл закончен, т.е. активизируется внешний цикл. Теперь i = 1. Заполняем mas[1][0], mas[1][1], ... , mas[1][j]. И так далее, пока i не достигнет m.

Если не требуется вручную вводить матрицу, можно воспользоваться слабым генератором случайных чисел rand().

#include <cstdlib>
#include <stdio.h>

int main(int argc, char** argv) {
    int m, n;
    int mas[100][100];
    printf("Input m, n:\n");
    scanf("%d%d", &m, &n);
    printf("You array:\n");
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            mas[i][j] = rand() % 100;   //заполнение матрицы числами от 0 до 100
            printf("%4d ", mas[i][j]);  //вывод элементов матрицы на экран          
        }                               //%4d для пробелов между числами
      printf("\n");                     //в конце строки переход на новую
    }
    return 0;
}

 


Оставить комментарий