C#

Программирование C# . Length

Всем привет! Я изучаю c# по учебнику Герберта Шилдта и не давно столкнулся с проблемой. В общем, код то я списал, но полностью понять как он работает не смог. Решил оставить комментарии в тех местах, где мне не понятно и где бы я хотел попросить у вас помощи. Надеюсь на ваше понимание! (под словом "помощь" , я бы хотел услышать ,как получилась эта строка , из чего вышла и что она означает.) Спасибо за понимание!
using System;

namespace std

{

class NwoD

{

static void Main()

{

int i, j;//создаем 2 переменные типа инт

int[] num1 = new int[10];//создаем 1-ый массив(типа инт) с 10-ю значениями

int [] num2 = new int [10];//создаем 2-ой массив(типа инт) с 10-ю значениями

for ( i = 0; i < num1.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"

{

num1[i] = i;//не понятно

}

Console.Write("Исходное содержимое массива :");

for (i = 0; i < num2.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"

{

Console.Write(num1[i] + "");//то что выводим - я понял, но что выводим не понятно

}

Console.WriteLine();

if(num2.Length >= num1.Length)// задаем условие : (если величина 2-го массива >= величине первого массива, то выполняем условие)

{

for (i = 0, j = num1.Length-1; i < num1.Length; i++,j--)// создаем цикл : ( пока "i" меньше величине первого массива, инкрементируем "i"

// декрементируем "j"

{

num2[j] = num1[i];//не понятно

}



}

Console.Write("Содержимое массива в обратном порядке :");

for( i = 0; i<num2.Length; i++)// создаем цикл: ( пока "i" меньше величине 2-го массива, икрементируем "i"

{

Console.Write(num2[i] + "");//то что выводим - я понял, но что выводим не понятно

}

Console.WriteLine();

}

}



}
Ihar Zanimon
Ihar Zanimon
324
>for ( i = 0; i < num1.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
>{
>num1[i] = i;//не понятно
>}
массив num1 инициализируется значениями вида 0, 1, 2, ..., т.е. num1[0] = 0, num1[1] = 1

Console.Write("Исходное содержимое массива :");
for (i = 0; i < num2.Length; i++)//создаем цикл for ( пока "i" меньше 10, инкрементировать "i"
...
Здесь ошибка, должно быть num1.Length, либо программист должен гарантировать, что длина num2 всегда меньше или равна длине num1. В задаче обе длины == 10, так что ок.

> Console.Write(num1[i] + "");//то что выводим - я понял, но что выводим не понятно
Выводятся значения массива num1, в кавычках какой-то разделитель, который возможно проглотили ответы. Т.е. без него будет выведено "0123456789"; с ним - "0 1 2 3 4 5 6 7 8 9" или наподобие

>for (i = 0, j = num1.Length-1; i < num1.Length; i++,j--)// создаем цикл : ( пока "i" меньше величине первого массива, инкрементируем "i"
> // декрементируем "j"
> {
> num2[j] = num1[i];//не понятно
> }

заполняем массив num2 значениями из num1 в обратном порядке. Т.е. на первом проходе
i = 0, j = 9, num2[9] = num1[0] (т.е. num2[9] = 0), на втором
i = 1, j = 8, num2[8] = num1[1] (т.е. num2[8] = 1) и так далее

>Console.Write(num2[i] + "");//то что выводим - я понял, но что выводим не понятно
Выводится содержимое массива num2 с каким-то разделителем, аналогично тому что выше
Вктор Мщук
Вктор Мщук
30 155
Лучший ответ
Ihar Zanimon Теперь понял, спасибо!
Массив - набор переменных с общим именем, отличающихся индексом. Все, что тебе непонятно - это адресация элементов массива по их индексам. Уясни себе это каким-то образом и все станет понятно.
РС
Рая Сахневич
77 874
Тяжело вам будет, если у вас проблемы с массивами и индексацией.
num1[i] = i - на каждой итерации тут происходит присваивание каждому элементу массива, то есть элементу с индексом 0 присваивается 0, потом элементу с индексом 1 присваивается 1... и т.д.
Я конечно понимаю, что учебник Шилдта по C# морально устарел, но не настолько что бы потеряться в изучении массивов.
Серик Елюбаев
Серик Елюбаев
20 187